MariaDB社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3434|回复: 2
打印 上一主题 下一主题

InnoDB在不同隔离级别下的一致性读及锁的差异

[复制链接]
跳转到指定楼层
1#
发表于 2010-9-9 11:44:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
锁和多版本数据是InnoDB实现一致性读和ISO/ANSI SQL92隔离级别的手段,因此,在不同的隔离级别下,InnoDB处理SQL时采用的一致性读策略和需要的锁是不同的。同时,数据恢复和复制机制的特 点,也对一些SQL的一致性读策略和锁策略有很大影响。将这些特性归纳成如表20-16所示的内容,以便读者查阅。
表20-16                                          InnoDB存储引擎中不同SQL在不同隔离级别下锁比较
隔离级别
        一致性读和锁
SQL
Read Uncommited
Read Commited
Repeatable Read
Serializable
SQL
条件
select
相等
None locks
Consisten read/None lock
Consisten read/None lock
Share locks
范围
None locks
Consisten read/None lock
Consisten read/None lock
Share Next-Key
update
相等
exclusive locks
exclusive locks
exclusive locks
Exclusive locks
范围
exclusive next-key
exclusive next-key
exclusive next-key
exclusive next-key
Insert
N/A
exclusive locks
exclusive locks
exclusive locks
exclusive locks
replace
无键冲突
exclusive locks
exclusive locks
exclusive locks
exclusive locks
键冲突
exclusive next-key
exclusive next-key
exclusive next-key
exclusive next-key
delete
相等
exclusive locks
exclusive locks
exclusive locks
exclusive locks
范围
exclusive next-key
exclusive next-key
exclusive next-key
exclusive next-key
Select ... from ... Lock in share mode
相等
Share locks
Share locks
Share locks
Share locks
范围
Share locks
Share locks
Share Next-Key
Share Next-Key
Select * from ... For update
相等
exclusive locks
exclusive locks
exclusive locks
exclusive locks
范围
exclusive locks
Share locks
exclusive next-key
exclusive next-key
Insert into ... Select ...
(指源表锁)
innodb_locks_unsafe_for_binlog=off
Share Next-Key
Share Next-Key
Share Next-Key
Share Next-Key
innodb_locks_unsafe_for_binlog=on
None locks
Consisten read/None lock
Consisten read/None lock
Share Next-Key
create table ... Select ...
(指源表锁)
innodb_locks_unsafe_for_binlog=off
Share Next-Key
Share Next-Key
Share Next-Key
Share Next-Key
innodb_locks_unsafe_for_binlog=on
None locks
Consisten read/None lock
Consisten read/None lock
Share Next-Key
从表20-16可以看出:对于许多SQL,隔离级别越高,InnoDB给记录集加的锁就越严格(尤其是使用范 围条件的时候),产生锁冲突的可能性也就越高,从而对并发性事务处理性能的影响也就越大。因此,我们在应用中,应该尽量使用较低的隔离级别,以减少锁争用 的机率。实际上,通过优化事务逻辑,大部分应用使用Read Commited隔离级别就足够了。对于一些确实需要更高隔离级别的事务,可以通过在程序中执行SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ或SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE动态改变隔离级别的方式满足需求。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 顶 踩
2#
发表于 2016-1-20 16:44:56 | 只看该作者
癫痫病吃药能治愈吗 http://jiankang.zkxww.com/zym/10667130359.html
癫痫病吃什么药好 http://jiankang.zkxww.com/dxyw/10667130498.html
治疗癫痫病有哪几种方法 http://jiankang.zkxww.com/new/10667129260.html
治疗癫痫病有什么秘方吗 http://jiankang.zkxww.com/new/10667129029.html
治疗癫痫病有什么方法么 http://jiankang.zkxww.com/new/10667128220.html
治疗癫痫病有什么新疗法 http://jiankang.zkxww.com/new/10667128009.html
治疗癫痫病有什么偏方吗 http://jiankang.zkxww.com/new/10667127877.html
治疗癫痫病哪种方法最好 http://jiankang.zkxww.com/new/10667127607.html
癫痫病的早期症状有哪些 http://jiankang.zkxww.com/zqzz/10667126725.html
癫痫病的早期症状是什么 http://jiankang.zkxww.com/zqzz/10667126577.html
3#
发表于 2016-1-26 12:08:43 | 只看该作者
北京治疗癫痫病的医院 http://www.bjxiehe-guahao.com/
北京癫痫病医院排名 http://www.dxbhaodf.com/
北京癫痫医院排行榜 http://www.bj302yy.com/
北京儿童癫痫病医院 http://www.dxseowhy.com/
北京癫痫病专科医院 http://www.dxkepu.com/
北京儿童癫痫病医院 http://www.dianxian2006.com/
北京最好的癫痫医院 http://www.bjxwyy999.com/
中国最好的癫痫病医院 http://www.bjdxbapp.com/
北京哪家医院看癫痫最好 http://www.dxbmhealth.com/
北京治癫痫病最好的医院 http://www.dianxian2012.com/
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|MariaDB社区 ( 京ICP备07012489号    |
业务联系: QQ:48474881; 邮箱: 48474881@qq.com; 电话:13911732319
声明:本站部分文章是网友转载,若未经作者同意或署名有误,请联系网站管理员。

GMT+8, 2024-11-1 13:34 , Processed in 0.085634 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表