MySQL中默认的事务隔离级别研究(mysql默认事务隔离级别)
MySQL数据库引擎支持事务隔离级别,它通过允许你指定确切的规则来定义操作被隔离的水平,使得并发的查询线程在并发场景中不会互相影响。MySQL有多个事务隔离级别,但MySQL默认事务隔离级别是REPEATABLE READ,它可以防止脏读,不可重复读和虚读。
REPEATABLE READ事务隔离级别,它把一个事务视为一个完全独立的工作环境,对于其他事务完全不受任何影响,即某一事务内的查询,其他事务无法更新或删除这个事务所查询到的数据,而这也意味着,由于读取到的数据不会被其他事务改变,因而在这一事务中,重复的多次读取的操作,将一直获得一样的结果,我们把这种情况称为不可重复读。
REPEATABLE READ事务隔离级别还有一个特点:虚读。虚读指的是一个事务执行了一次查询后,其他事务在该查询结束后可能发生了更新和插入,但当前事务依然获取的是上一次的查询结果,从而产生读取的数据和期望的数据不一致的情况,这种情况不会在REPEATABLE READ事务隔离级别中发生。
MySQL数据库引擎中,可通过如下代码来查看当前事务隔离级别:
SHOW VARIABLES LIKE 'tx_isolation';
同样,只能通过如下代码可以改变当前MySQL服务器中的事务隔离级别:
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
总之,MySQL事务隔离级别是研究MySQL数据库最基本也是最关键的内容,开发者通过了解MySQL的各种事务隔离级别可以处理不同场景下的并发问题,MySQL默认的事务隔离级别(REPEATABLE READ)也可以保证在正常情况下无明显的并发问题。