事务的隔离级别
查看事务的级别
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
/*
这是最高的隔离级别,效率最低,解决了事务隔离的所有问题
这种隔离级别表示事务排队,不能并发,即:一个事务操作的同时,其它事务不能操作,只能等待
*/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示