- 浏览: 203096 次
- 性别:
- 来自: 重庆
文章分类
最新评论
相关文章见:
http://dev.mysql.com/doc/refman/5.0/en/innodb-record-level-locks.html
http://hi.baidu.com/fishhust/blog/item/c4900b8bff4a2e1bc8fc7a81.html
http://dev.mysql.com/doc/refman/5.0/en/innodb-next-key-locking.html
对文章的总结如下:
(1)记录锁:在行相应的索引记录上的锁
(2)gap锁:是在索引记录间歇上的锁
(3)next-key锁:是记录锁和在此索引记录之前的gap上的锁的结合
(4)innodb行锁的加锁方式: 当根据innodb表的索引搜索时, 设置共享锁和排它锁在索引记录上
(5)行锁实际上是索引锁
(6)innodb_locks_unsafe_for_binlog:
当为0时 (disabled), 这个开启了gap锁;设置为1,关闭gap锁(这会导致幻读,引起主从同步不一致)。例子见http://book.51cto.com/art/200803/68129.htm
(7)开启这个选项innodb_locks_unsafe_for_binlog并不关闭gap锁在外键检查方面的作用
(8)在UPDATE和DELETE时,innodb首先对遇到的每一行加行锁;如果innodb_locks_unsafe_for_binlog开启,那么不匹配的行上的锁将被释放;如果未开启,不匹配的行上的锁也不释放,直到事务结束
(9)即使innodb表上没有索引,也会使用内部的clustered index来进行锁定;
(10)innodb除主键的索引之外的其他索引和clustered index在内部是建立一张索引对应表;当利用其他索引扫描记录时,对其他索引加的锁最后都转换为对clustered index加的锁
(11)在UPDATE模式下,对检索中遇到的记录加排它锁;在INSERT...SELECT模式下,对检索中遇到的记录加共享锁;在INSERT模式下,对检索中遇到的记录加排它锁;在DELETE模式下,对检索中遇到的记录加排它锁
(12)在使用unique index进行搜索,并且只返回一行时,不使用gap锁
(13)next-key锁举例:假设索引包括10,11,13,20,则next-key锁为:(negative infinity, 10], (10, 11], (11, 13], (13, 20], (20, positive infinity)
(14)使用next-key锁可以预防幻读
发表评论
-
分页,MySQL的SQL_CALC_FOUND_ROWS
2012-12-17 16:44 1346FOUND_ROWS() 函数 ,可以在调用包含LIMIT的 ... -
使用mysql的last_insert_id() 产生自增的id
2012-12-17 15:48 1086刚才查了下last_insert_id()相关资料,找到几篇不 ... -
MySQL Innodb表死锁情况分析与归纳(转载)
2012-12-14 16:22 1940案例描述 在定时脚本运行过程中,发现当 ... -
MySQL连接超时
2012-12-13 20:41 1113在负载较重的MySQL服务器上,有时你偶尔会看到一些 ... -
mysql优化索引 —— Using filesort
2012-12-11 12:13 820用Explain分析SQL语句的时候,经常发现有的语句在 ... -
IN条件结果顺序问题
2012-11-23 14:42 665项目中需要记录用户的浏览历史,我的意见是前端直接存cook ... -
mysql那点事(行锁+not null + varchar)
2012-10-12 15:08 1653一。not null vs DEAFUL value ... -
关于mysql auto_increment所带来的锁表操作
2012-09-01 14:00 1607以前内容主要是对官方文档中的意译,并加入了一些自己的理解 ... -
mysql 与unicode
2012-08-29 15:36 1682UTF8字符集(转换Unicode表示)是存储Unico ... -
深入Mysql字符集设置
2012-08-29 14:46 56105 Jan 08 深入Mysql字符集设置 ... -
关于set names
2012-08-29 14:37 809<?php$conn=mysql_connect( ... -
MYSQL索引优化和in or替换为union all
2012-08-22 17:16 4043一个文章库,里面有两个表:category和article。c ... -
mysql读写分离(PHP类)
2012-08-18 18:08 3609自己实现了php的读写 ... -
mysql分表的3种方法
2012-08-02 14:39 831当一张的数据达到几百万时,你查询一次所花的时间会变多,如 ... -
MySql BLOB类型
2012-08-02 13:42 711MySql的Bolb四种类型 MySQL中,BLOB是一个二进 ... -
MySQL 查询优化技巧
2012-07-18 20:26 756瓶颈 众所周知,几乎所有大型项目的最终效率瓶颈,都来自 ... -
mysql多表联合查询
2012-07-18 19:16 1638我在工作中天天研究zen cart的程序,那个叫人痛苦,最近比 ...
相关推荐
Record lock单条索引记录上加锁,record lock锁住的永远是索引,而非记录本身,即使该表上没有任何索引,那么innodb会在后台创建一个隐藏的聚集主键索引,那么锁住的就是这个隐藏的聚集主键索引。所以说当一条sql...
InnoDB事务-锁-MVCC.pdf
一、innodb行锁分类 record lock:记录锁,也就是仅仅锁着单独的一行 gap lock:区间锁,仅仅锁住一个区间(注意这里的区间都是开区间,也就是不包括边界值。 next-key lock:record lock+gap lock,所以next-key ...
Inside.MySQL_InnoDB.Storage.Engine_zh-CN[www.TopSage.com].part2
Inside.MySQL_InnoDB.Storage.Engine_zh-CN[www.TopSage.com].part1
MySQL InnoDB Java阅读器 innodb-java-reader是一个Java实现,用于直接访问MySQL InnoDB存储引擎文件。 使用库或命令行工具,它提供了只读功能,例如检查页面,通过主键,辅助键查找记录以及通过LSN或填充率生成页面...
percona-data-recovery-tool-for-innodb-0.5.tar.tar
yum install make gcc flex bison cd /root/undrop-for-innodb-master make 会产生三个文件c_parser innochecksum_changer stream_parser
(1)自增锁(Auto-inc Locks) (2)共享/排它锁(Shared and Exclusive Locks) (3)意向锁(Intention Locks) (4)插入意向锁(Insert Intention ...(5)记录锁(Record Locks) (6)间隙锁(Gap Locks) (7)临键锁(Next-key Locks)
MySQL的引擎简介,InnoDB的锁机制与事务隔离级别
mysql_innoDB 事务与锁详解
MySQL内核 INNODB存储引擎-卷1-高清-完整目录-2014年5月
MyISAM引擎与InnoDB引擎性能的对比
InnoDB事务、锁、多版本分析,希望对大家有用
MySQL Innodb锁解决并发问题.pdf
MySQL锁和事务、InnoDB架构分析.zipMySQL锁和事务、InnoDB架构分析.zipMySQL锁和事务、InnoDB架构分析.zipMySQL锁和事务、InnoDB架构分析.zipMySQL锁和事务、InnoDB架构分析.zipMySQL锁和事务、InnoDB架构分析....
Innodb-Architecture-Performance-Optimization
同时使用一种 -- next-key locking 的锁策略来避免幻读现象的产生,还提供了插入缓冲(insert buffer) 二次写(double write) 自适应哈希索引,预读(read ahead)等高性能和高可用的功能。对于表中的数据innodb...