posts - 339,  comments - 95,  views - 178万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

随笔分类 -  MySQL

MySQL Batch 与 Transaction
摘要:最近在数据库上经常遇到死锁问题. 表现的问题有1. 有一个查询为:1) 一个复杂的 select 查处一组大数据2) 使用事务 update 这组数据的状态为了让锁定的时间变短, 我将这整个大事务切分成了多个小事务, 也就是每次查询并更新 1W 数据变为了每次查询并更新 100 数据, 但是需要查询... 阅读全文
posted @ 2014-08-20 12:01 ZimZz 阅读(1777) 评论(0) 推荐(0) 编辑
MySQL global Log
摘要:mysql> show variables like "%general_log%";+------------------+------------------------------------+| Variable_name | Value |+------------------+------------------------------------+| general_log | ON || general_log_file | /usr/loc... 阅读全文
posted @ 2014-02-25 12:03 ZimZz 阅读(396) 评论(0) 推荐(0) 编辑
MySQL 锁模式
摘要:InnoDBimplements standard row-level locking where there are two types of locks,shared (S) locksandexclusive (X) locks. For information about record, gap, and next-key lock types, seeSection14.3.5.6, “InnoDBRecord, Gap, and Next-Key Locks”.InnoDB 实现了标准行级锁, 他又两种锁, 共享(S)锁和排他(X)锁. 需要看record, gap, next-k 阅读全文
posted @ 2014-01-02 19:16 ZimZz 阅读(6159) 评论(0) 推荐(1) 编辑
乐观锁与悲观锁
摘要:假如有一个购买行为事务,我们更需要去跟新数据库update item set amount = amount - 1 where item_id = 1;然而当amount只有1个的时候,同时有两个顾客进入了事务进行购买行为会如何,最后amount=-1,两个顾客都获得了这个商品,这显然不合理而使用乐观锁和悲观锁的解决方案可以如下:1. 乐观锁1) 概念: 在执行修改操作时不判断是否存在冲突,而是到了操作完成后再判断是否存在冲突,如有冲突则回滚2) 适用情况: 一般适用于回滚代价低,且冲突较少的情况.3) 优点: 执行操作时不会造成阻塞4) 缺点: 如果冲突较多,将造成较多的回滚操作5) 实现 阅读全文
posted @ 2013-09-02 02:28 ZimZz 阅读(734) 评论(0) 推荐(1) 编辑
MyBatis+Spring SQL效率测试报告
摘要:1. 数据库结构2. insert 测试insert 的测试包括1) 批量拼接values()插入2) 有事务for循环插入3) 无事务for循环插入测试 SQL: ( #{post.title}, #{post.content}, #{post.author}, #{post.status}, #{post.created} ) 测试代码... 阅读全文
posted @ 2013-08-26 23:27 ZimZz 阅读(4639) 评论(0) 推荐(0) 编辑
MyBatis-Spring 执行SQL语句的流程
摘要:1. 从SqlSessionDaoSupport开始通常我们使用MyBatis会让自己的DAO继承SqlSessionDaoSupport,那么SqlSessionDaoSupport是如何运作的呢,下面是SqlSessionDaoSupport的源代码/* * Copyright 2010 The myBatis Team * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the 阅读全文
posted @ 2013-08-03 23:24 ZimZz 阅读(15575) 评论(0) 推荐(2) 编辑
MySQL 查询缓存
摘要:MySQL查询缓存可以跳过SQL解析优化查询等阶段,直接返回缓存结果给用户,查询缓存的工作流程如下:命中条件缓存存在一个hash表中,通过查询SQL,查询数据库,客户端协议等作为key.在判断是否命中前,MySQL不会解析SQL,而是直接使用SQL去查询缓存,SQL任何字符上的不同,如空格,注释,都会导致缓存不命中.如果查询中有不确定数据,例如CURRENT_DATE()和NOW()函数,那么查询完毕后则不会被缓存.所以,包含不确定数据的查询是肯定不会找到可用缓存的工作流程1. 服务器接收SQL,以SQL和一些其他条件为key查找缓存表(额外性能消耗)2. 如果找到了缓存,则直接返回缓存(性能 阅读全文
posted @ 2013-08-03 11:02 ZimZz 阅读(26210) 评论(0) 推荐(3) 编辑
[转]linux下完全备份数据库mysql
摘要:#配置参数USER=vimer_admin #数据库用户名PASSWORD=dreamfly123 #数据库用户密码DATABASE=vimer #数据库名称WEBMASTER=290101401@qq.com #管理员邮箱地址,用以发送备份失败消息提醒BACKUP_DIR=/root/vimer_database_backup/ #备份文件存储路径LOGFILE=/root/vimer_database_backup/data_backup.log #日记文件路径DATE=`date '+%Y%m%d'` #日期格式(作为文件名)DUMPFILE=$DATE.sql #备份文 阅读全文
posted @ 2013-07-31 00:21 ZimZz 阅读(1871) 评论(0) 推荐(0) 编辑
mysqldump与source
摘要:mysqldump示例 mysqldump --default-character-set=utf8 -d --opt -hlocalhost -uroot -p123456 --where="id = 5" vimer_beta table1 table2 > /root/_backup_vime 阅读全文
posted @ 2013-07-31 00:20 ZimZz 阅读(4170) 评论(0) 推荐(0) 编辑
MySQL全文索引
摘要:MyISAM全文索引作用对象是"全文集合",它将需要索引的所有列拼接成字符串,然后进行索引.它是一类特殊的双BTree索引,共有两层,第一层是所有关键字,然后对于每一个关键字,是一组文档指针.全文索引的词语过滤规则:1. 停用词列表中的词不会被索引.默认停用词根据通用英语来设置,可以使用参数ft_s... 阅读全文
posted @ 2013-07-25 19:32 ZimZz 阅读(5121) 评论(0) 推荐(0) 编辑
关于JDBC PreparedStatement
摘要:PreparedStatement的执行步骤:1. 向数据库服务器发送SQL语句,数据库对SQL进行解析和优化(conn.preparedStatement(sql))2. 向数据库发送绑定的参数和值,并执行SQL(pstmt.setString(), pstmt.executeQuery())他的优势在于:1. 数据库仅需解析一次SQL(后面可以循环使用这个pstmt进行数据库操作)2. 数据库优化器仅需进行一次SQL优化,因为数据库可以缓存执行计划3. 无需处理SQL转义,更安全4. 以二进制的方式发送参数和句柄,节省内存,减少网络开销(不知道在JDBC中是不是这样)另外,可以使用pstm 阅读全文
posted @ 2013-07-22 23:49 ZimZz 阅读(479) 评论(0) 推荐(0) 编辑
MySQL外键
摘要:外键成本1.对子表进行插入操作时,需要约束父表中的外键行,也就是对父表的外建行加锁,以确保这个外键不会再子表插入事务结束前被更改,从而导致额外的锁等待2.Innodb强制外键使用索引,而如果外键的选择性很低(例如status列,或许一共只有3个值),那么索引对与查找来说几乎没有帮助,而且会占用很大的空间如果仅仅是使用外键作为约束,则使用触发器或者限制值(Enum)或者在程序里显式约束会更好 阅读全文
posted @ 2013-07-22 18:40 ZimZz 阅读(265) 评论(0) 推荐(0) 编辑
MySQL: load data infile
摘要:load的语法LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE] INTO TABLE tbl_name [FIELDS [TERMINATED... 阅读全文
posted @ 2013-07-21 20:38 ZimZz 阅读(5093) 评论(0) 推荐(1) 编辑
MySQL分区表
摘要:分区表是一种粗粒度,简易的索引策略,适用于大数据的过滤场景.最适合的场景是,没有合适的索引时,对其中几个分区表进行全表扫描.或者只有一个分区表和索引是热点,而且这个分区和索引能够全部存储在内存中.限制单表分区数不要超过150个,并且注意某些导致无法做分区过滤的细节,分区表对于单条记录的查询没有优势,需要注意这类查询的性能.分区表语法 分区表分为RANGE,LIST,HASH,KEY四种类型,并且分区表的索引是可以局部针对分区表建立的 创建分区表CREATE TABLE sales ( id INT AUTO_INCREMENT, amount DOUBLE NOT NULL, ... 阅读全文
posted @ 2013-07-21 11:13 ZimZz 阅读(56593) 评论(1) 推荐(2) 编辑
[转]MySQL Explain
摘要:Mysql Explain 详解一.语法explain 例如: explain select * from t3 where id=3952602;二.explain输出解释+----+-------------+-------+-------+-------------------+---------+---------+-------+------+-------+| id | select_type | table | type| possible_keys | key | key_len | ref | rows | Extra |+----+-------------+------- 阅读全文
posted @ 2013-07-17 09:36 ZimZz 阅读(296) 评论(0) 推荐(0) 编辑
JDBC 驱动加载过程
摘要:参见如下简单的程序package db;import java.sql.*;public class DBTest { private static final String USERNAME = "root"; private static final String PASSWD = "root"; private static final String DATABASE = "test"; private static final String DBMS = "mysql"; private static fi 阅读全文
posted @ 2012-11-01 21:51 ZimZz 阅读(3782) 评论(0) 推荐(1) 编辑
浅析 MySQL int char bit set enum 的优劣与运用
摘要:很多时候, int char bit set enum这几种类型都可以替换着用,下面对这几种类型的优劣稍作浅析以在数据库中建立用户表的性别(gender)字段为例,分别用以下几种类型各有什么优缺点1. int: gender tinyint unsigned not null可以这样定义gender列,好处是储存空间小( 1 Byte ),可扩展性好(range 0~255)坏处是没有强约束(可以在代码里控制),可读性不好,无从知道 0 1 2 到底什么意思2. char(1): gender char(1) not null优劣与int类似3. bit(1): gender bit(1) n 阅读全文
posted @ 2012-10-31 19:20 ZimZz 阅读(5715) 评论(0) 推荐(0) 编辑
从MySQL临时表谈到filesort
摘要:内部临时表的类型和产生时机相关,翻译自:http://dev.mysql.com/doc/refman/5.6/en/internal-temporary-tables.htmlIn some cases, the server creates internal temporary tables while processing queries. Such a table can be held in memory and processed by theMEMORYstorage engine, or stored on disk and processed by theMyISAMstor 阅读全文
posted @ 2012-10-29 16:09 ZimZz 阅读(3359) 评论(1) 推荐(0) 编辑
SQL 笔试题集锦
摘要:1.一道SQL语句面试题,关于group by表内容:info 表date result2005-05-09 win2005-05-09 lose2005-05-09 lose2005-05-09 lose2005-05-10 win2005-05-10 lose2005-05-10 lose如果要生成下列结果, 该如何写sql语句? win lose2005-05-09 2 22005-05-10 1 2答案:(1) select date, sum(case when result = "win" then 1 else 0 end) as "win" 阅读全文
posted @ 2012-10-09 23:49 ZimZz 阅读(9083) 评论(1) 推荐(1) 编辑
一条SQL查询访问记录表(visit_log)中某个类目(catalog_id)的访问量(visit)排前两名的记录行
摘要:原来看过一篇文章,如下----------------------------------------------------------------------------------------------------------------sql server查询每门课程的前两名的学生编号,课程编号,成绩并排序数据结构介绍:成绩表(编号,学号,科目编号,成绩)SQL基础了解:select * from 成绩表对于Sql Server它查询的过程是逐条查询的,也就是一条一条记录进行查询的;那么我们可以先思考下,当它查“成绩表”时,第一条成功后才查询第二条的;假设查特定的一门科目的最高分值前 阅读全文
posted @ 2012-09-26 01:26 ZimZz 阅读(1819) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示