数据库四大事务特性

数据库四大事务特性A 原子性 Atomic 一个事务作为一个最小执行单元 里面的 sql 要么全部执行要么全部失败或者回滚 C 一致性 Consistency 在一致性状态下 所有事务对一个数据的读取结果都是相同的 例 张三给李四转账 100 元 其他事务要么看到张三还没给李四转账的状态 要么张三已经给李四转账成功张三少 100 李四多 100 而在张三少 100 李四的 100 没有加上的中间状态是不可见的 I

大家好,我是讯享网,很高兴认识大家。
A:原子性(Atomic),一个事务作为一个最小执行单元,里面的sql要么全部执行要么全部失败或者回滚
C:一致性(Consistency),在一致性状态下,所有事务对一个数据的读取结果都是相同的,例:张三给李四转账100元,其他事务要么看到张三还没给李四转账的状态,要么张三已经给李四转账成功张三少100李四多100,而在张三少100李四的100没有加上的中间状态是不可见的
I:隔离性(Isolation)重点,多个事务并发执行时,一个事务执行不应该影响其他事务的执行
D:持久性(Durability),一个事务的提交应该永久的保存在数据库中,当系统发生故障时需要确保已提交的更新不能发生丢失
事务隔离级别:
  • 查询当前数据库事务隔离级别
  • 事务并发的问题
    • 脏读:
      • 事务b读到了事务a中已经修改但未提交的结果,这违背了一致性的条件,中间如果事务a有多步骤或者事务a回滚了,事情就大条了
      • 隔离级别read uncommitted 会出现
      • 隔离级别read committed 及以下可以避免
    • 不可重复读
      • 在事务b中几次读取了同一条数据的内容,事务a在事务b一次事务的时间提交了多次对该数据的修改,造成事务b读取到了结果不一致的内容
      • 隔离级别read committed 及以上会出现
      • 隔离级别 repeatable read 及以下可以避免
    • 幻读
      • 在事务b修改数据前查询要修改的数据为3条,但是另一个事务a新增或者删除了3条中范围内的数据,在事务b执行修改sql后返回修改的数据结果不是3条数据,造成修改多了或者少修改了,感觉就像发生了幻觉…
      • 隔离级别 repeatable read 及以上会出现
      • 隔离级别 serializable 可以避免
  • 隔离等级:
    • 1.read uncommitted:
      • 可以读取另一个事务中已修改但未提交的数据
    • 2.read committed

      • 解决脏读的问题
      • 相比第一条只能读取到另一个事务中已提交的数据
      • 可以避免脏读出现
    • 3.repeatable read
      • 解决可重复读及以上问题
      • 相比以上,可以保证在当前事务中多次读取到的相同行数据结果集相同
      • 可以解决不可重复读的问题
    • 4.serializable
      • 解决幻读及以上的问题
      • 串行事务,执行效率过低

事务的显式操作:

  • 查询当前事务隔离级别
    • select @@tx_isolation;
  • 开启一个事务
    • start transaction;
  • 提交一个事务
    • commit;
  • 回滚一个事务
    • rollback;
  • 设置事务的隔离级别
    • set sesstion transaction isolation level {隔离等级}
小讯
上一篇 2025-04-08 07:22
下一篇 2025-04-10 12:29

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/61482.html