2009-01-18 65 views
2

我讀過很多次,MySQL會在插入過程中在MyISAM表上執行表級鎖。如果該鎖只適用於序列化插入/刪除命令,那我可以。插入在我的網站上很少出現。在MySQL插入過程中,表級鎖定會鎖定什麼?

但是,該鎖是否會阻止所有Select查詢,直到insert命令完成?

回答

2

的寫入鎖將阻止使用您已鎖定表中的所有選擇。

+0

myisam上的新記錄插入(到表的末尾)不會鎖定整個表。 – 2009-06-18 09:57:57

0

要在MySQL服務器中完成隔離級別,可以使用SET SESSION命令更改會話隔離模式。

SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; 
SELECT * FROM TABLE_NAME ; 
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ; 

上述語句的工作方式與WITH(nolock)即READ UNCOMMITTED數據類似。您還可以爲全部連接全局設置隔離級別。

SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ; 

在MySQL服務器中有兩個與隔離級別相關的系統變量。

SELECT @@global.tx_isolation; 
SELECT @@tx_isolation; 

第一條語句將返回全局隔離級別,第二條語句只返回當前會話。

在SQL Server中,您還可以像這樣在事務級別設置隔離級別。

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ 
GO 

裏德更多@:

+4

他正在使用MyISAM,它不是事務性的。所以這根本不起作用。 – derobert 2009-01-21 06:29:02