数据库事务


一、什么是事务?

事务是指数据库执行的最小逻辑单位,即保证一组操作的顺利执行,或者失败回滚为原来的状态。

二、数据库四大特性ACID

  1. 原子性( Atomicity )描述的是数据库的逻辑工作单位,一个事务包含的左右操作都要完成,或者所有操作统一做回滚操作
  2. 一致性( Consistency )描述的是数据库的的数据在事务操作前后必须要满足业务规则约束,比如说转账前后的金额总和一致,贩卖商品数量不可能为负数等
  3. 隔离性( Isolation )描述的是在并发执行过程,事务之间操作的数据是相互隔离的,并发事务之间互不干扰,这也是数据库事务隔离级别需要解决的问题
  4. 持久性( Durability )描述的是一个事务提交后,操作结果会被保存到系统磁盘中,即使中途发生宕机,也能通过事务日志完成数据的恢复,日志主要包括回滚日志(undo)和重做日志(redo)

三、事务隔离级别

英文中文描述事务影响
READ UNCOMMITTED读未提交一个事务未提交的数据对其它事务可见脏读、不可重复读、幻读有可能发生
READ COMMITTED读已提交一个已提交的更新、删除事务对其它事务可见可避免脏读的发生,但不可重复读、幻读有可能发生
REPEATABLE READ可重复读在一个事务中多次读取同样的数据结果是一致 的可避免脏读、不可重复读的发生,但幻读有可能发生(INNODB为发生幻读)
SERIALIZABLE串行化不存在并性行为,强制事务串行执行可避免脏读、不可重复读、幻读的发生,但性能会影响比较大

四、事务隔离级别解决方案

  1. 在读数据之前,对其加锁,组织其它事务对数据的修改
  2. 生成一个数据请求时间点的一致性数据快照,并利用这个快照来提供一定给级别(语句级或者事务级版本控制)的一致性读取(MVCC)

五、MVCC多版本并发控制

INNODB为每行创建了三个字段

  1. DB_ROW_IID 行标识
  2. DB_TRX_ID 插入或更新行的最后一个事务的事务ID,自动递增
  3. DB_ROLL_PTR 回滚指针

原因:

  1. 只能查找创建时间小于等于当前事务ID的数据和删除时间大于当前事务ID的行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值