您的位置:首页 > 数据库 > MySQL

MySQL: 并发数据访问以及事务隔离级别

2013-06-08 21:08 351 查看
并发数据访问经常导致的问题有脏读、不可重复读、幻读。脏读:是指一个事务正在访问数据,做了修改,但尚未提交,这时,另一个事务也访问并使用了这个数据。不可重复读 :是指在一个事务内,多次读同一数据,但期间由于数据被另外的事务所修改,导致读取结果不一致。幻读 : 是指一个事务对一个表中的所有数据进行了修改。同时,另外一个事务添加了表中数据,那么就产生了第一次操作未完全成功的幻觉。前面两种问题发生于数据更改时,幻读发生于数据增删时。
对于上述的并发数据访问问题,数据库有事务隔离级别来分别处理。
READ_UNCOMMITTED 会出现脏读、不可重复读、幻读 ( 隔离级别最低,并发性能高 )
READ_COMMITTED  会出现不可重复读、幻读(锁定正在读取的行)
REPEATABLE_READ 会出现幻读(锁定所读取的所有行)
SERIALIZABLE 无并发问题(锁表)
DEFAULT 数据库默认隔离级别

对于MySQL,可以详细阅读mysql manual:
http://dev.mysql.com/doc/refman/5.0/en/set-transaction.htmlMySQL InnoDB默认事务隔离级别是REPEATABLE_READ, MyISAM不支持事务。
参考链接:http://en.wikipedia.org/wiki/Isolation_(database_systems)#

by iefreer
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: