【问题标题】:MySQL InnoDB lockingMySQL InnoDB 锁定
【发布时间】:2012-12-27 03:10:36
【问题描述】:

我有 2 个连接。 第一个连接进行查询:

UPDATE table1 SET column1 = 5;

第二次连接:

SELECT t1.column1, t2.column2
FROM table2 t2
JOIN table1 t1 
     ON t1.column1 = t2.column1

table1 - InnoDB, table2 - MyISAM

MySQL 服务器在获得第一个查询后立即获得第二个查询。第二个连接中的查询会等到更新完成吗?

【问题讨论】:

  • 我觉得取决于隔离级别,第一有写锁,第二可以读一些脏数据或者等待,取决于设置(隔离级别)

标签: locking innodb myisam


【解决方案1】:

假设隔离级别不是SERIALIZABLE(默认为REPEATABLE READ),第二个查询不会等待第一个,而是从回滚日志中读取数据。

您可以通过启动事务、执行更新然后在一个线程中休眠几秒钟以及在第一个线程在另一个线程中休眠时执行第二个查询来验证这一点

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-01
    • 2011-10-03
    • 2017-11-14
    • 1970-01-01
    相关资源
    最近更新 更多