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

mysql的事务隔离级别

2017-01-23 23:58 197 查看
SQL标准中定义了四种隔离级别,规定了事务之间操作相关影响的情况。

READ UNCOMMITTED 未提交读

事务A所做的修改在最终提交之前就可以在别的事务中可见,因此会产生所谓的“脏读”,几乎完全没有隔离性,因此实际中很少用到。

READ COMMITTED 提交读

事务所做的修改只有在提交之后,才对其它事务可见,这种级别不会读到脏数据。但是别的事务却又可能对该事务造成影响。

假设事务A在最开始和最后都要读取数据X,在两次读取的中间,另外一个事务B对X的值做了修改并最终提交,在该级别下,会导致事务A两次读取到的X值不同。

因此该级别也称为“不可重复读”

REPEATABLE READ 可重复读

该级别解决了重复读的问题,

SERIALIZABLE 串行化

强制事务串行执行,因此保证了完全的隔离性。

mysql默认的隔离性是可重复读,可以通过如下方式查看

select @@tx_isolation;

select @@global.tx_isolation;

改变mysql的事务隔离级别,可以采用

SET GLOBAL tx_isolation='READ-UNCOMMITTED';

SET GLOBAL tx_isolation='READ-COMMITTED';

需要注意的是mysql中支持事务的存储引擎有:innodb、NDB cluster
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: