mysql事务隔离级别详解_mysql事务隔离级别详解
发布日期:2021-06-24 13:48:15 浏览次数:2 分类:技术文章

本文共 746 字,大约阅读时间需要 2 分钟。

当mysql同时执行多个事务时,就有可能出现脏读、幻读、不可重复读的现象,于是就有隔离级别的概念

一、隔离级别的分类

读未提交(RU):当一个事务还未提交时,他做的变更被其他事务看到(容易出现脏读)

读已提交(RC):一个事务已经提交,其他事务才能看到他的变更。(容易出现幻读)

可重复读(RR):一个事务在执行过程中看到的数据,总是跟执行前看到的数据是一致的,未提交时变更的内容其他事务也看不到(可防止幻读)

串行化(SR):对同一行记录,写会加写锁,读会加读锁,当发生锁冲突时,后执行的事务要等前面执行的事务执行完成后才能执行

举例说明:

6a740e2759594c55ae553eb79274b318.png

在实现上,数据库里面会创建一个视图,访问的时候以视图的逻辑结果为准。在“可重复读”隔离级别下,这个视图是在事务启动时创建的,整个事务存在期间都用这个视图。在“读提交”隔离级别下,这个视图是在每个SQL语句开始执行的时候创建的。这里需要注意的是,“读未提交”隔离界别下直接返回记录上的最新值,没有视图概念;而“串行化”隔离级别下直接用加锁的方式来避免并行访问。

脏读:一个事务读到了另一个事务未提交的数据

幻读:事务a按一定条件读取了该表的一些数据,然后事务b想该表插入了一些满足事务a查询条件的数据,当事务a再次以相同条件查询数据时,会发现多出来一些数据,就好像产生了幻觉一样,我们称为幻读

不可重复读:事务a读取了某条数据,事务a没有提交,然后事务b修改了该条数据,这时事务a再次读取该条数据,这样两次读取的数据不同,我们成为该条数据为不可重复读。概况一句话就是一个事务多次读取某条数据,发现读取的数据不完全相同。

参考文档:https://blog.csdn.net/xcy1193068639/article/details/85058641

转载地址:https://blog.csdn.net/weixin_33245447/article/details/113602818 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:python怎么统计多少字符_python统计中文字符数量的两种方法
下一篇:达梦数据库导入oracle数据_达梦数据库INI参数文件的修改,以支持oracle迁移

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年03月31日 01时04分09秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章