MySQL InnoDB 存储引擎的默认支持的隔离级别是 REPEATABLE-READ(可重读)。
命令SELECT @@transaction_isolation;
查看数据库隔离级别。
![](https://img.haomeiwen.com/i14949955/97be00ebcf661bbd.png)
InnoDB可以通过应用加锁读(例如 select * from table for update
语句)来保证不会产生幻读,而这个加锁度使用到的机制就是 Next-Key Lock 锁算法。从而达到了 SQL 标准的 SERIALIZABLE(可串行化) 隔离级别。
如何显示的开启事务:
START TARNSACTION
|BEGIN
显示开启一个事务
COMMIT
提交事务
ROLLBACK
回滚,撤销为提交的操作
READ-UNCOMMITTED(读取未提交):
设置数据库事务的隔离级别为read uncommited
![](https://img.haomeiwen.com/i14949955/ab1d4a57305161b8.png)
![](https://img.haomeiwen.com/i14949955/f9972cf16bc47ec4.png)
READ-COMMITTED(读取已提交):
设置数据库隔离级别:
![](https://img.haomeiwen.com/i14949955/b71c44ea37775586.png)
![](https://img.haomeiwen.com/i14949955/432b0465ebd1a6b7.png)
这样就会发生不可重复的问题,即在同一个事务里读取到的数据不一样
REPEATABLE-READ(可重复读):
设置数据库隔离级别
![](https://img.haomeiwen.com/i14949955/58d1a122f7be3c3d.png)
![](https://img.haomeiwen.com/i14949955/2fd778dbe291986e.png)
网友评论