READ UNCOMMITTED: 本文地址:http://www.04007.cn/article/113.html,未经许可,不得转载.
最低级别的隔离,通常又称为dirty read,它允许一个事务读取还没commit的数据,这样可能会提高性能,但是dirty read可能不是我们想要的 本文地址:http://www.04007.cn/article/113.html,未经许可,不得转载.
READ COMMITTED: 本文地址:http://www.04007.cn/article/113.html,未经许可,不得转载.
在一个事务中只允许已经commit的记录可见,如果session中select还在查询中,另一session此时insert一条记录,则新添加的数据不可见 本文地址:http://www.04007.cn/article/113.html,未经许可,不得转载.
REPEATABLE READ: 本文地址:http://www.04007.cn/article/113.html,未经许可,不得转载.
在一个事务开始后,其他session对数据库的修改在本事务中不可见,直到本事务commit或rollback。在一个事务中重复select的结果一样,除非本事务中update数据库。 本文地址:http://www.04007.cn/article/113.html,未经许可,不得转载.
SERIALIZABLE: 本文地址:http://www.04007.cn/article/113.html,未经许可,不得转载.
最高级别的隔离,只允许事务串行执行。为了达到此目的,数据库会锁住每行已经读取的记录,其他session不能修改数据直到前一事务结束,事务commit或取消时才释放锁。 本文地址:http://www.04007.cn/article/113.html,未经许可,不得转载.
---------------------- 本文地址:http://www.04007.cn/article/113.html,未经许可,不得转载.
MySQL默认的隔离级别是REPEATABLE READ: 本文地址:http://www.04007.cn/article/113.html,未经许可,不得转载.
在设置隔离级别为READ UNCOMMITTED或SERIALIZABLE时要小心,READ UNCOMMITTED会导致数据完整性的严重问题,而SERIALIZABLE会导致性能问题并增加死锁的机率。 本文地址:http://www.04007.cn/article/113.html,未经许可,不得转载.
可以使用如下语句设置MySQL的session隔离级别:
SET TRANSACTION ISOLATION LEVEL {READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE}
本文地址:http://www.04007.cn/article/113.html,未经许可,不得转载.
本文地址:http://www.04007.cn/article/113.html 未经许可,不得转载. 手机访问本页请扫描右下方二维码.
![]() |
![]() |
手机扫码直接打开本页面 |