MYSQL事务隔离级别

一、MYSQL事务隔离级别

MYSQL事务隔离级别支持:

read uncommitted(未提交读)

read committed(已提交读)

repeatable read(可重复读)

serializable(可串行化)

MYSQL默认的隔离级别是repeatable read。

二、隔离级别设置

查看MYSQL的隔离级别:

select @@tx_isolation;

设置MYSQL的隔离级别:

设置innodb的事务级别方法是:set 作用域 transaction isolation level 事务隔离级别;

其中,事务隔离级别,可选:

read uncommitted
read committed
repeatable read
serializable

例如:

set global transaction isolation level read committed; //全局的
set session transaction isolation level read committed; //当前会话

锁机制:
共享锁:由读表操作加上的锁,加锁后其他用户只能获取该表或行的共享锁,不能获取排它锁,也就是说只能读不能写

排它锁:由写表操作加上的锁,加锁后其他用户不能获取该表或行的任何锁,典型是mysql事务中

锁的范围:

行锁: 对某行记录加上锁

表锁: 对整个表加上锁

这样组合起来就有,行级共享锁,表级共享锁,行级排他锁,表级排他锁

read uncommitted隔离级别,当两个事务同时进行时,即使事务没有提交,所做的修改也会对事务内的查询做出影响,这种级别显然很不安全。但是在表对某行进行修改时,会对该行加上行共享锁;

read committed事务隔离级别,只有在事务提交后,才会对另一个事务产生影响,并且在对表进行修改时,会对表数据行加上行共享;

repeatable read事务隔离级别,当两个事务同时进行时,其中一个事务修改数据对另一个事务不会造成影响,即使修改的事务已经提交也不会对另一个事务造成影响。

在事务中对某条记录修改,会对记录加上行共享锁,直到事务结束才会释放。

serializable事务隔离级别最严厉,在进行查询时就会对表或行加上共享锁,其他事务对该表将只能进行读操作,而不能进行写操作。


参考:

MySQL数据库事务隔离级别(Transaction Isolation Level)

http://www.cnblogs.com/zemliu/archive/2012/06/17/2552301.html

Mysql事务隔离级别设置、详解和测试

http://blog.csdn.net/gukesdo/article/details/7350580


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值