事务与事务的隔离级别有4种.
1.读未提交:read uncommitted(最低的隔离级别)(没有提交就读到了)
事务A可以读取到事务B未提交的数据.
这种隔离级别存在的问题就是:脏读现象(Dirty Read)
我们称读到了脏数据.
这种隔离级别一般都是理论上的,大多数的数据库隔离级别都是二档起步.
2.读已提交:read committed(提交之后才能读到)
事务A只能读取到事务B提交之后的数据.
这种隔离解决了脏读现象.
这种隔离级别存在的问题是:不可重复读取数据.
不可重复读取数据:在事务开启后,第一次读取到的数据是3条,当前事务还没有结束,可能第二次读到的数据就变成了4条,这样的现象就叫做不可重复读取数据.
这种隔离级别是比较真实的数据,每一次读取到的数据是绝对的真实.
3.可重复读:repeatable read(提交之后也读不到,永远读取的都是刚开启事务时的数据)
可重复读:事务A开启之后,每一次在事务A中读取到的数据都是一致的,即使事务B将数据已经修改,并且提交了,事务A读取到的数据还是没有发生变化,这就是可重复读.
可重读读解决了不可从夫读的问题.
这种隔离级别存在的问题是:每一次读取到的数据都是幻象,不够真实.
mysql中默认的事务隔离级别就是可重复读repeatable read.
4.序列化/串行化:serializable(最高的隔离级别)
最高隔离级别,效率最低,解决了所有的问题.
这种隔离级别表示事务排队,不能并发,每一次读取到的数据都是最真实的.
查看隔离级别的sql语句:select @@transaction_isolation;
mysql默认的隔离级别:可重复读.
设置事务的隔离级别的sql语句:set global transaction isolation level 事务隔离级别;
例如: