› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
npc0der
V2EX  ›  MySQL

两个事务先后进行数据更新 出现查询出的数据是在事务发生之前?

  •  
  •   npc0der · Feb 3, 2015 · 6268 views
    This topic created in 4286 days ago, the information mentioned may be changed or developed.

    事务A 事务B 对 某一账户进行更新

    具体逻辑就是
    先执行事务 A
    开启事务
    获取账户余额 查询得到 x
    更新账户余额为 x + 1
    事务提交

    再执行事务B

    事务B 里面 也是按照这个逻辑来 但是 获取账户余额查询得到的是 x 而不是 x + 1

    7 replies  •  2015-02-04 12:57:57 +08:00
    lilydjwg
        1
    lilydjwg  
       Feb 3, 2015
    lilydjwg
        2
    lilydjwg  
       Feb 3, 2015   ❤️ 1
    对了,你的事务 B 应该是在事务 A 提交前开启的吧?不然就真说不过去了。
    summic
        3
    summic  
       Feb 3, 2015   ❤️ 1
    仔细看看4个事务隔离解别,看哪个适合你的业务场景
    dingyaguang117
        4
    dingyaguang117  
       Feb 3, 2015
    这种应该加锁, select for update
    npc0der
        5
    npc0der  
    OP
       Feb 4, 2015
    @lilydjwg 我是在循环里面 做的 事务 A B C 这样的 理论上 B 应该是在 A commit 之后进行的

    PHP 所以我很不解。

    SELECT @@GLOBAL.tx_isolation, @@tx_isolation; 都是

    REPEATABLE-READ
    yanze0613
        6
    yanze0613  
       Feb 4, 2015
    和数据库隔离级别有关系
    npc0der
        7
    npc0der  
    OP
       Feb 4, 2015
    具体原因知道了 可能是因为重复提交导致的 并发了 如果只提交一次 逻辑上是不会有这个事情出现的。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3861 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 00:56 · PVG 08:56 · LAX 17:56 · JFK 20:56
    ♥ Do have faith in what you're doing.