2

我读过很多次,MySQL 将在插入期间对 MyISAM 表执行表级锁定。如果该锁仅用于序列化插入/删除命令,我可以。无论如何,插入在我的网站上非常罕见。

但是,在插入命令完成之前,该锁是否也会阻止所有 Select 查询?

4

2 回答 2

3

写锁将阻止所有使用您锁定的表的选择。

于 2009-01-21T06:30:07.910 回答
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

阅读更多@:带有 nolock 的 mysql

于 2009-01-18T04:19:02.207 回答