2011-03-18 58 views
19

如何確定給定查詢使用的隔離級別?在執行查詢(由第三方應用程序)後,我想知道使用了哪個隔離級別(例如,未提交讀取)。查看mysql中查詢的隔離級別

要清楚,我目前正在使用針對mysql 5.1運行的EF4的應用程序。我嘗試測試不同的編碼模式以更改特定EF4查詢的隔離級別。我需要能夠測試並確保正確設置隔離級別。

回答

31
SHOW VARIABLES LIKE 'tx_isolation'; 

,或者如果你有MySQL的5.1+

SELECT * FROM information_schema.session_variables 
WHERE variable_name = 'tx_isolation'; 

如果你想知道什麼服務器已在全球配置,上述更改爲以下:

SHOW GLOBAL VARIABLES LIKE 'tx_isolation'; 

,或者如果您有MySQL 5.1+

SELECT * FROM information_schema.global_variables 
WHERE variable_name = 'tx_isolation'; 

如果你想查詢顯示正在使用的事務隔離,運行此:

SELECT variable_value IsolationLevel 
FROM information_schema.session_variables 
WHERE variable_name = 'tx_isolation';** 

免責聲明:我不知道EF4

如果你被允許嵌入子查詢有關的SQL由EF4運行,您可能必須將此查詢作爲子查詢嵌入(或嵌入查詢作爲子查詢),並顯示變量IsolationLevel以及實際查詢的結果。

+0

如何將查詢結果映射到具有該隔離級別的實際查詢? – manu08 2011-03-18 03:28:14

+0

在啓動相同數據庫連接內的實際查詢之前運行此查詢 – RolandoMySQLDBA 2011-03-18 03:32:33

+0

第三方應用程序正在運行我試圖測試的查詢。所以我不能在同一個數據庫連接中這樣做。 – manu08 2011-03-18 03:33:48