zoukankan      html  css  js  c++  java
  • MySQL实战03の事务隔离级别

    提到事务,就会想到ACID(Atomicity、Consistency、Isolation、Durability,即原子性,一致性,隔离性,持久性)。

    SQL标准的事务隔离级别包括:

    读未提交:一个事务还没提交时,它做的变更就能被别的事务看到。
    读提交:一个事务提交之后,它做的变更才会被其他事务看到。
    可重复读:一个事务执行过程中,从事务开始到事务提交看到的数据是一致的。
    串行化:对于同一条记录,串行访问,读写都会加锁。

    Oracle默认隔离级别就是读提交,迁移到MySQL,需要修改隔离级别为读提交。将启动参数transaction-isolation值设置为READ-COMMITTED。

    可重复读场景

    对账功能中判断上个月的余额和本月余额的差额,是否与本月账单明细一致。在校对过程中,即使有用户交易,也不影响校对结果。

    事务隔离实现

    在MySQL中,实际上每条记录在更新的时候都会同时记录一条回滚操作。通过回滚操作,都可以得到前一个状态的值。同一条记录在系统中可以存在多个版本,就是数据库的多版本并发控制(MVCC)。
    避免长事务:长事务意味着系统里会存在很老的事务视图,占用大量存储空间。

    原文出处:https://time.geekbang.org/column/article/68963(极客时间专栏)

  • 相关阅读:
    坦克大战
    java多线程应用场景
    java中的多线程(资料)
    设置线程名
    线程名称的设置及取得
    java调试
    文件上传细节处理
    Servlet生命周期
    java的动态绑定与静态绑定
    Mysql 连接池调用完成后close代理方法引出的设计模式
  • 原文地址:https://www.cnblogs.com/yangjiming/p/10318378.html
Copyright © 2011-2022 走看看