我读过很多次,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