事务隔离级别

事务并发导致的问题

1.脏读:事务A读取了事务B(未提交)更新的数据,然而B事务回滚了。
2.不可重复读:事务A多次读取同一数据时,事务B(已提交)对这一数据进行了修改,导致事务A读取数据前后不一致。
3.幻读:事务A读取某个特定条件的数据行数为n,此时事务B插入了几行新的数据后,事务A重新读取数据行数为m(m != n)

事务隔离级别

事务隔离级别 脏读 不可重复读 幻读
读未提交(read-uncommitted)
读已提交 (read-committed)
可重复读(repeatable-read)
串行化 (serializable)

RC

数据的读取都是不加锁的,但是数据的写入、修改和删除是需要加锁

RR

通过MVCC实现,通过在每行数据中添加额外的隐藏值(数据版本号,删除时间,指向undo log的指针)。事务开始时生成版本号,在读取数据时,只能读取到小于等于改版本号的数据

串行化

通过悲观锁(读加共享锁,写加排他锁,读写互斥)来实现

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容