mysql中 事务的隔离级别与MVCC
MySQL中的事务隔离级别与MVCC(Multi-Version Concurrency Control)机制是数据库管理中的两个重要概念。
事务隔离级别:
MySQL中的事务隔离级别定义了一个事务与其他并发事务的隔离程度。隔离级别从低到高依次是:
- READ UNCOMMITTED(未提交读):最低隔离级别,事务中的修改可以被其他事务看到。可能导致脏读、不可重复读、幻读。
- READ COMMITTED(提交读):一个事务只能看到其他事务已经提交的修改。可以避免脏读,但可能导致不可重复读、幻读。
- REPEATABLE READ(可重复读):默认隔离级别,在事务处理期间,使用户能够看到在事务开始时点的数据视图。可以避免脏读、不可重复读,但可能导致幻读。
- SERIALIZABLE(序列化):最高隔离级别,事务串行化执行,避免了脏读、不可重复读、幻读的问题。
查看当前的隔离级别:
SELECT @@TX_ISOLATION;
设置隔离级别:
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
MVCC(多版本并发控制):
MVCC 是一种并发控制机制,它允许在大多数情况下保持数据的乐观并发控制。在使用MVCC的系统中,读操作不会锁定数据行,写操作也不会锁定读操作。
在InnoDB存储引擎中,MVCC通过在每行记录后面保留旧版本信息实现。当执行插入、删除、更新操作时,不会锁定记录,而是通过一种机制生成新的版本号。
查询时,只会查找版本号小于或等于当前事务版本号的数据行,而超过当前事务版本号的数据行则被视为不可见。
注意:MVCC只在READ COMMITTED和REPEATABLE READ隔离级别下工作。
以上是MySQL中事务隔离级别和MVCC的基本概念和操作。
评论已关闭