首先可查询mysql自动提交状态
select @@autocommit;
结果如下:
+----------------------+
| @@autocommit |
+----------------------+
| 1 |
+---------------------+
可通过命令将数据库事务修改为不自动提交
set autocommit =0;
Mysql四种事务隔离级别:
1. 读未提交(read uncommitted)也叫脏读(助记肮脏)
设置事务隔离级别为:读未提交
set session transaction isolation level read uncommitted;
脏读:分别开启了事务A,B,事务A修改了表数据还未commit,事务B却读到了事务A未提交的数据。
2. 读已提交 (read committed) 也叫不可重复读
设置事务隔离级别为:读已提交
set session transaction isolation level read committed;
不可重复读:分别开启了事务A,B,事务B先读取数据,过程中事务A修改了并提交了数据,事务B再次读取,发现和第一次读取数据不一样
3. 可重复读(repeatable-read)
set session transaction isolation level repeatable read;
幻读:分开开启事务A,B,事务A插入一条记录并提交,B此时不能查到那条记录,但是B同样插入该条记录时,会报出duplicate entry key primary,这种现象称为幻读。
4. 可串行化(serializable)
同一个事务操作中,每次查询结果都应该相同,也就是可重复读
事务隔离性:4种隔离级别
隔离级别 可能出现的异常
读未提交 脏读 不可重复读 幻读
读已提交 不可重复读 幻读
可重复读 幻读
可串行化
网友评论