事务的隔离级别
读未提交:read uncommitted(最低的隔离级别)(没有提交就能读到)
事务A可以读取到事务B未提交的数据。
这种隔离级别存在的问题就是:
脏读现象!(Dirty Read)
读已提交:read committed(提交之后才能读到)
事务A智能提取到事务B提交之后的数据
这种隔离解决了脏读的现象
存在问题:不可重复读取数据
在事务开启后,第一次读到的数据是3条,当前事务还没有结束,可能第二次再读取的时候,读到
的数据是4条,3不等于4称为不可重复读取
这种隔离级别是比较真实的数据,每一次读到的数据都是绝对的真实
可重复读:repeatable read(提交之后也读不到,永远读取到的都是刚开启事务是数据)
事务A开启之后,不管是多久,每一次在事务A中 读取的数据都是一致的。即使事务B将数据已经
修改,并且提交了,事务A读取到的数据还是没有发生改变,这就是可重复读。
可重复读解决了什么问题?
解决了不可重复读取数据
可重复读的问题?
可能会出现幻影读
每一次读到的数据都是幻象,不够真实。
序列化/串行化:serializable (最高的隔离级别)
这是最高隔离级别,效率最低,解决了所有的问题。
这种隔离级别表示事务排队,不能并发
synchronized,线程同步(事务同步)
每一次读取到的数据都是最真实的,并且效率是最低的
查看隔离级别
SEKECT@@session.tx_isolation;
SEKECT@@tx_isolation;