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 · 6136 views
    This topic created in 4195 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   ·   Solana   ·   3024 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 13:50 · PVG 21:50 · LAX 06:50 · JFK 09:50
    ♥ Do have faith in what you're doing.