我读过很多次,MySQL 将在插入期间对 MyISAM 表执行表级锁定。如果该锁仅用于序列化插入/删除命令,我可以。无论如何,插入在我的网站上非常罕见。
但是,在插入命令完成之前,该锁是否也会阻止所有 Select 查询?
写锁将阻止所有使用您锁定的表的选择。
要在 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
阅读更多@:带有 nolock 的 mysql