我多次读过MySQL会在插入过程中对MyISAM表执行表级锁定。如果该锁仅用于序列化插入/删除命令,那么对我来说没关系。插件在我的网站上很少见。
但是,在insert命令完成之前,锁定是否会阻止所有Select查询?
答案 0 :(得分:3)
写锁定将阻止使用您锁定的表的所有选择。
答案 1 :(得分: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
reade more @:mysql with nolock