首页 理论教育MySQL数据库:事务隔离级别简介

MySQL数据库:事务隔离级别简介

【摘要】:事务的隔离级别就是用来设置事务在读取数据时的隔离状态,提高数据并发使用效率的一种手段。事务的隔离级别由低到高可分为5个级别。MySQL默认级别,这种隔离级别可以避免“不可重复读取”,达到可重复读取。更改事务的隔离级别的语法代码如下:事务隔离级别的作用范围分为两种: 全局级:对所有的会话有效 会话级:只对当前的会话有效例如,设置会话级隔离级别为READ COMMITTED:或:设置全局级隔离级别为READ COMMITTED:

事务具有隔离性,因此事务中所有使用的数据必须要和其他的事务进行隔离,在同一时间可以由很多个事务同时处理数据,但是每个数据在同一时刻只能由一个事务进行操作。将数据锁定可以防止其他事务影响本事务操作的数据,但是这样一来,只要使用该数据的其他事务就必须要排队等待,从而会影响数据库的使用效率。甚至有可能因为几个事务同时锁定了相同的数据,同时又在等待其他事务释放数据,造成死锁。

事务的隔离级别就是用来设置事务在读取数据时的隔离状态,提高数据并发使用效率的一种手段。事务的隔离级别由低到高可分为5个级别。

(1) READ UNCOMMITTED:未提交读。事物A和事物B,事物A未提交的数据,事物B可以读取到。这种隔离级别最低,这种级别一般是在理论上存在,数据库隔离级别一般都高于该级别。

(2) READ COMMITTED:提交后读。事物A和事物B,事物A提交的数据,事物B才能读取到。Oracle默认隔离级别,这种隔离级别高于读未提交,种隔离级别会导致“不可重复读取”。

(3) REPEATABLE READ:可重读。事务A和事务B,事务A提交之后的数据,事务B读取不到。MySQL默认级别,这种隔离级别可以避免“不可重复读取”,达到可重复读取。

(4) SERIALIZABLE:序列化。事务A和事务B,事务A在操作数据库时,事务B只能排队等待。这种隔离级别很少使用,吞吐量太低,用户体验差这种级别可以避免“幻像读”,每一次读取的都是数据库中真实存在数据,事务A与事务B串行,而不并发。

更改事务的隔离级别的语法代码如下:(www.chuimin.cn)

事务隔离级别的作用范围分为两种:

➢ 全局级:对所有的会话有效

➢ 会话级:只对当前的会话有效

例如,设置会话级隔离级别为READ COMMITTED:

或:

设置全局级隔离级别为READ COMMITTED: