kider 发表于 2010-9-9 11:44:25

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

锁和多版本数据是InnoDB实现一致性读和ISO/ANSI SQL92隔离级别的手段,因此,在不同的隔离级别下,InnoDB处理SQL时采用的一致性读策略和需要的锁是不同的。同时,数据恢复和复制机制的特 点,也对一些SQL的一致性读策略和锁策略有很大影响。将这些特性归纳成如表20-16所示的内容,以便读者查阅。表20-16                                          InnoDB存储引擎中不同SQL在不同隔离级别下锁比较
隔离级别      一致性读和锁SQLRead UncommitedRead CommitedRepeatable ReadSerializable
SQL条件
select相等None locksConsisten read/None lockConsisten read/None lockShare locks
范围None locksConsisten read/None lockConsisten read/None lockShare Next-Key
update相等exclusive locksexclusive locksexclusive locksExclusive locks
范围exclusive next-keyexclusive next-keyexclusive next-keyexclusive next-key
InsertN/Aexclusive locksexclusive locksexclusive locksexclusive locks
replace无键冲突exclusive locksexclusive locksexclusive locksexclusive locks
键冲突exclusive next-keyexclusive next-keyexclusive next-keyexclusive next-key
delete相等exclusive locksexclusive locksexclusive locksexclusive locks
范围exclusive next-keyexclusive next-keyexclusive next-keyexclusive next-key
Select ... from ... Lock in share mode相等Share locksShare locksShare locksShare locks
范围Share locksShare locksShare Next-KeyShare Next-Key
Select * from ... For update相等exclusive locksexclusive locksexclusive locksexclusive locks
范围exclusive locksShare locksexclusive next-keyexclusive next-key
Insert into ... Select ...(指源表锁)innodb_locks_unsafe_for_binlog=offShare Next-KeyShare Next-KeyShare Next-KeyShare Next-Key
innodb_locks_unsafe_for_binlog=onNone locksConsisten read/None lockConsisten read/None lockShare Next-Key
create table ... Select ...(指源表锁)innodb_locks_unsafe_for_binlog=offShare Next-KeyShare Next-KeyShare Next-KeyShare Next-Key
innodb_locks_unsafe_for_binlog=onNone locksConsisten read/None lockConsisten read/None lockShare Next-Key
从表20-16可以看出:对于许多SQL,隔离级别越高,InnoDB给记录集加的锁就越严格(尤其是使用范 围条件的时候),产生锁冲突的可能性也就越高,从而对并发性事务处理性能的影响也就越大。因此,我们在应用中,应该尽量使用较低的隔离级别,以减少锁争用 的机率。实际上,通过优化事务逻辑,大部分应用使用Read Commited隔离级别就足够了。对于一些确实需要更高隔离级别的事务,可以通过在程序中执行SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ或SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE动态改变隔离级别的方式满足需求。

ve依赖你 发表于 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

生死相扶 发表于 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/
页: [1]
查看完整版本: InnoDB在不同隔离级别下的一致性读及锁的差异