分类: Mysql/postgreSQL
2011-01-19 16:01:54
MySQL也支持SQL标准的四种隔离级别:
read uncommit; read commit; repeatable read; serializable;
以及会出现的数据不一致的情况:
脏读(dirty read); repeatable read; phantom read(幻读)
(Next-key):是为了防止事务处理中出现幻读的情况;
当数据进行条件,范围检索数据的时候,对其范围内也许并不存在的值也加锁.
select * from city where id>200 for update;
如上SQL,实际上也对id=201,202,300之类的值也都都加了锁,也许id=300,这个值根本不存在.
为什么要使用next-key.
如果不使用next-key,那也就会出现上诉的幻读,第二执行相同的SQL查询时候,id=300这样的值也许就出现在结果集中了.
next-key弊端:
间隙锁对并发插入的业务应用有较大的性能影响,可以通过适当的调节业务逻辑在提升性能.
chinaunix网友2011-03-09 11:57:37
很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com