事务的隔离级别

事务隔离级别

查看事务的级别

select @@tcx_isolation

 

读未提交

/*
事务A开启以后,可以读取到事务B还没有提交的数据(即事务还没有提交就读到了)
这种隔离级别存在的问题就是:
    脏读现象!
    这种隔离级别是理论上的,大多数的数据库隔离级别都是二档起步
*/

读已提交

读的时候事务还没有提交,后来事务B提交了,再读的结果不一样

就是前后不一致

意思不能动态读取

/*
事务A开启以后,只能读取事务B提交之后的数据
这种隔离级别解决了脏读的现象
​
但这种隔离级别存在不可重复读
​
*/

不可重复读

/*
在事务开启之后,第一次读到的数据是3条,当前事务还没有结束,
可能第二次再读取的时候,读到的是4条,3不等于4;
这种就是不可重复读
这种隔离级别是比较真实的数据,每一次读到的数据都是绝对真实,
oracle数据库默认的隔离级别是:read commited
*/

可重复读

MySQL默认就是这个隔离级别

repeatable read

读到的永远都是事务开启时,第一次读取到的数据

/*
repeatable read  《提交之后也读不到,永远读取的都是刚开启事务时的数据》
​
可重复读:
事务A开启事务之后,不管是多久,每一次在事务A中读取的数据都是一致的,
即使B事务将数据已经修改,并且提交了,事务A读取到的数据还是没有发生改变;
​
存在的问题:
可能会出现幻读,可能每一次读取的数据都是幻象,不够真实
​
例如:造成9点开始了A事务,只要事务A不结束,到晚上9点,读到的数据还是那样,读到是假象不够真实
*/

序列化/串行化:serializable

/*
这是最高的隔离级别,效率最低,解决了事务隔离的所有问题
这种隔离级别表示事务排队,不能并发,即:一个事务操作的同时,其它事务不能操作,只能等待
*/
posted @   无敌大牛牛  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示