抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

事务简介

事务是指一套操作,这些操作要么全部完成,要么全部不完成。

事务的四个特性

  • 原子性(Atomicity)
    • 这些操作要么全部执行成功,要么全部不执行。只要一个指令执行失败数据就要进行回滚到指令执行之前的状态
  • 一致性(Consistency)
    • 事务的执行使数据从一个状态转换为另一个状态,但是对于整个数据的完整性保持稳定
  • 隔离性(Isolation)
    • 当多个用户并发访问时,事务之间不能互相干扰。如执行一个事务执行完后才执行下一个
  • 持久性(Durability)
    • 当事务正确完成后,它对于数据的改变是永久性的

并发事务导致的问题

  • 第一类丢失更新
    • 撤销一个事务时,把其他事务已提交的更新数据覆盖
  • 第二类丢失更新
    • 两个事务同时读取,结果一个事务的提交被另一个事务的提交覆盖,导致丢失
  • 脏读
    • 一个事务读取另一个事务正在执行但未提交的数据
  • 幻读/虚读
    • 一个事务两次查询的结果不一致。因为另一个事务在两次查询之间执行了
  • 不可重复读
    • 一个事务两次读取的数据不一致。因为另一个事务在两次之间更新了数据

数据库事务的隔离级别

  • Read uncommitted,读未提交
    • 一个事务可以读取另一个未提交事务的数据
  • Read committed,读提交
    • 一个事务要等另一个事务提交后才能读取数据
    • 可以避免脏读
  • Repeatable read,重复读
    • 一个事务开始读取数据时,不再允许修改操作
    • 可以避免脏读,不可重复读
  • Serializable,序列化
    • 事物穿行化执行
    • 可以避免脏读、不可重复读与幻读。但效率低下

评论