查看数据库当前隔离级别
select @@tx_isolation;
修改事务隔离级别
1、永久修改,修改配置文件 my.cnf
...
# 增加下面配置
transaction-isolation=READ-COMMITTED
...
2、临时修改,执行语句
set session transaction isolation level read uncommitted;
四种隔离级别
9e3df8dcd100baa1c6a33b1b9278221bc9fc2e70.jpeg
脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据
不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果 不一致。
幻读:管理员将表中所有数据进行统一修改,这时候插入一条新数据,管理员改完后发现有一条记录没改过来,就好像发生了幻觉一样,这就叫幻读。比如在A客户端事务中查询名字叫张三的所有记录有2条,这时候其它客户端插入一条新的记录,然后A客户端更新所有张三的记录,会显示更新了3条,但是查询只有2条
不可重复读的和幻读很容易混淆,不可重复读侧重于修改,幻读侧重于新增或删除。解决不可重复读的问题只需锁住满足条件的行,解决幻读需要锁表