【发布时间】:2010-10-02 01:29:04
【问题描述】:
我多次读到 MySQL 将在插入期间对 MyISAM 表执行表级锁定。如果该锁仅用于序列化插入/删除命令,我可以。无论如何,插入在我的网站上都很少见。
但是在插入命令完成之前,该锁是否也会阻止所有 Select 查询?
【问题讨论】:
我多次读到 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
阅读更多@:mysql with nolock
【讨论】:
写锁将阻止所有使用您锁定的表的选择。
【讨论】: