数据库事务隔离级别

来源:互联网 发布:汉朝士兵有多强悍知乎 编辑:程序博客网 时间:2024/05/20 10:15

mysql设置隔离级别命令

用户可以用SET TRANSACTION语句改变单个会话或者所有新进连接的隔离级别。它的语法如下:
SET [SESSION | GLOBAL] TRANSACTION ISOLATION LEVEL {READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE}
注意:默认的行为(不带session和global)是为下一个(未开始)事务设置隔离级别。如果你使用GLOBAL关键字,语句在全局对从那点开始创建的所有新连接(除了不存在的连接)设置默认事务级别。你需要SUPER权限来做这个。使用SESSION 关键字为将来在当前连接上执行的事务设置默认事务级别。 任何客户端都能自由改变会话隔离级别(甚至在事务的中间),或者为下一个事务设置隔离级别。

你可以用下列语句查询全局和会话事务隔离级别:
SELECT @@global.tx_isolation;
SELECT @@session.tx_isolation;
SELECT @@tx_isolation;

隔离级别说明

Read Uncommitted(读取未提交内容)
A事物可以读取B事物未提交的数据.

Read Committed(读取提交内容)
A事物只能读取B事物提交的数据.

Repeatable Read(可重读)
A事物只能读取事物开始之前的数据,但是可以对B事物的数据进行更新操作,更新后便可看到这条数据

Serializable(可串行化)
A事物的增删改查都会锁定影响的数据,B事物对这些数据操作时会进行等待,直到A事物执行commit为止.(执行select * from table 会锁定全表)

以上用mysql得出的结论,不一定完全正确


引用http://xm-king.iteye.com/blog/770721

0 0
原创粉丝点击