mysql 事务隔离级别

一、事务基本要素

1.原子性(Atomicity):事务开始所有操作后,要么全部做完,要么全部不做,不会停留在中间的某一个 环节。事务执行过程中失败,会回滚到原来的状态,就像什么都没有发生过一样。也就是所有的事务操作都是一个不可分割的整体,就像化学中基本元素单位一样。

2.一致性:事务开始和结束后,数据库完整性没有被破坏。例如A向B转账,不会出现A扣了钱,B没有收到。

3.隔离性:同一时间只允许一个事务请求同一个数据,不同事务之间互不干扰,比如A正在从银行卡取钱,在A取钱事务没有结束钱,B向A转账的事务不可以进行。

4.持久性:事务结束后事务操作数据会被保存在数据库中,不允许回滚。

二、事务的并发问题

1.脏读:事务A读到B更新的数据,B回滚,A读到的数据就是脏数据。

2.幻读:系统管理员A整理数据统计报表,管理员B向数据库库中插入一条数据,管理员A统计结束后发现有一条数据没有被统计进来就像产生了幻觉一样这就是幻读。

3.不可重复读:事务A再某一时刻重复读取某一数据,在事务A重复读取数据的过程中,事务B将A读取的数据更新修改并提交,这就导致事务A多次读取的数据不一致。

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

三、事务隔离级别

事务隔离级别脏读不可重复读幻读
读未提交(read-uncommitted)
不可重复读(read-committed)
可重复读(repeatable-read)
串行化(serializable)

mysql默认的事务隔离级别为repeatable-read

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值