MySQL的四种事务隔离级别

MySQL的四种事务隔离级别

注:http://www.cnblogs.com/huanongying/p/7021555.html

事务名称A事务B事务
读未提交修改未提交事务生效
不可重复读修改提交事务生效
可重复读修改提交事务未生效
串行化B有查询则A不能修改------
  1. 事务的基本要素(ACID)----- 原子性、一致性、隔离性、持久性
  2. 事务的并发问题 ----- 脏读、不可重复读、幻读
  3. 事务隔离级别 -----读未提交(read-uncommitted)、不可重复读(read-committed)、可重复读(repeatable-read)、串行化(serializable)
	--查看当前回话事务级别
	select @@tx_isolation
	--设置当前回话事务级别 
	set session transaction isolation level serializable
	--开始事务
	start transaction
	--提交事务
	COMMIT
	--回滚事务
	ROLLBACK

注意:

  1. 不可重复读的和幻读很容易混淆,不可重复读侧重于修改,幻读侧重于新增或删除。解决不可重复读的问题只需锁住满足条件的行,解决幻读需要锁表

  2. 可重复读的隔离级别下使用了MVCC机制,select操作不会更新版本号,是快照读(历史版本);insert、update和delete会更新版本号,是当前读(当前版本)。

  3. 不同事务对表和行的影响

  • 事务隔离级别为读提交时,写数据只会锁住相应的行
  • 事务隔离级别为可重复读时,如果检索条件有索引(包括主键索引) 的时候,默认加锁方式是next-key 锁;如果检索条件没有索引,更新数据时会锁住整张表。一个间隙被事务加了锁,其他事务是不能在这个间隙插入记录的,这样可以防止幻读。
  • 事务隔离级别为串行化时,读写数据都会锁住整张表
  1. 隔离级别越高,越能保证数据的完整性和一致性,但是对并发性能的影响也越大
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值