2012-12-27 102 views
1

我有2个连接。 第一次连接使得查询:MySQL InnoDB锁定

UPDATE table1 SET column1 = 5; 

第二连接:

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

表1 - InnoDB的,表2 - 的MyISAM

MySQL服务器获得第一次查询后immidiatly得到第二次查询。第二个连接中的查询是否等到更新完成?

+1

我认为这取决于隔离级别睡第二查询验证这一点,首先有写入锁定,第二个可以读取一些脏数据或等待,取决于设置(隔离级别) – 2012-12-27 03:32:38

回答

0

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

您可以通过启动一个事务,执行更新,然后在一个线程中沉睡了几秒钟,并执行,而首先是在另一个