我讀過很多次,MySQL會在插入過程中在MyISAM表上執行表級鎖。如果該鎖只適用於序列化插入/刪除命令,那我可以。插入在我的網站上很少出現。在MySQL插入過程中,表級鎖定會鎖定什麼?
但是,該鎖是否會阻止所有Select查詢,直到insert命令完成?
我讀過很多次,MySQL會在插入過程中在MyISAM表上執行表級鎖。如果該鎖只適用於序列化插入/刪除命令,那我可以。插入在我的網站上很少出現。在MySQL插入過程中,表級鎖定會鎖定什麼?
但是,該鎖是否會阻止所有Select查詢,直到insert命令完成?
的寫入鎖將阻止使用您已鎖定表中的所有選擇。
要在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
裏德更多@:
他正在使用MyISAM,它不是事務性的。所以這根本不起作用。 – derobert 2009-01-21 06:29:02
myisam上的新記錄插入(到表的末尾)不會鎖定整個表。 – 2009-06-18 09:57:57