2012-12-27 130 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),則第二個查詢不會等待第一個查詢,而是會從回滾日誌中讀取數據。

您可以通過啓動一個事務,執行更新,然後在一個線程中沉睡了幾秒鐘,並執行,而首先是在另一個