MySQL事务隔离级别

MySQL事务隔离级别

数据不一致的情况

  1. 脏读

    A修改某行数据后,B读取,后A回滚,B再读,前后两次不一致。

  2. 不可重复读

    A多次读取某行数据,中间B修改数据并提交,A再读,数据不一致。

  3. 幻读

    A读取或修改了多行或整张表的数据,中间B新插入或删除一条数据,A再读取时,不一致,不同于不可重复读,此时是由于插入或删除导致的数据集的不同。不可重复读则是由于修改数据。

事务隔离级别

隔离级别 脏读 不可重复读 幻读 并发性能
Read-Uncommited 读未提交 非常高
Read-Commited 读已提交 非常高
Repeatable-Read 可重复读 较高
Serialization 串行化

MySQL的事务默认隔离级别是Repeatable-Read,即可重复读,而实际使用中大多是Read-Commited,阿里云的RDS PolarDB等产中使用的隔离级别也多是Read-Commited,这个时候需要手动给要操作的数据行加上排他锁

Leave a Comment

豫ICP备19001387号-1