数据库的隔离级别:读未提交、读已提交、可重复读、串行化
每种隔离级别引发的问题:
读未提交:脏读、幻读、不可重复读
读已提交:幻读、不可重复读
可重复读:幻读
串行化:解决以上所有问题
问题解释:
脏读:一个事务读到另一个事务的未提交的数据
幻读:一个事务读到另一个事务insert的数据
不可重复读:一个事务读到另一个事务update的数据
设置隔离级别的步骤:
sql语句:
1)查看当前事物级别:
SELECT @@tx_isolation;
2)设置read uncommitted级别:
set session transaction isolation level read uncommitted;
3)设置read committed级别:
set session transaction isolation level read committed
4)设置repeatable read级别:
set session transaction isolation level repeatable read;
5)设置serializable级别:set session transaction isolation level serializable
1)read uncommitted : 读取尚未提交的数据 :就是脏读
2)read committed:读取已经提交的数据 :可以解决脏读
3)repeatable read:重读读取:可以解决脏读 和 不可重复读 ---mysql默认的
4)serializable:串行化:可以解决 脏读 不可重复读 和 虚读---相当于锁表