Gen*_*нин 5 t-sql sql-server locking transactions isolation-level
我试图重现问题[1]的情况.
在桌面上,采取并填充了来自wiki的"隔离(数据库系统)"[2]的数据,
在SQL Server 2008 R2 SSMS中,我执行了:
1)首先在SSMS的第一个标签(窗口)中
-- transaction isolation level in first window does not influence results (?)
-- initially I thought that second transaction in 2) runs at the level set in first window
begin transaction
INSERT INTO users VALUES ( 3, 'Bob', 27 )
waitfor delay '00:00:22'
rollback
Run Code Online (Sandbox Code Playgroud)
2)紧接着,在第二个窗口
-- this is what I commented/uncommented
-- set transaction isolation level SERIALIZABLE
-- set transaction isolation level READ REPEATABLE
-- set transaction isolation level READ COMMITTED
-- set transaction isolation level READ UNCOMMITTED
SELECT * FROM users --WITH(NOLOCK)
Run Code Online (Sandbox Code Playgroud)
更新:
抱歉,结果已更正.
我的结果取决于2)中设置的隔离级别,SELECT返回:
立即(读取未提交的插入行)
正在等待事务1)的完成(仅在 SELECT没有NOLOCK的情况下)和
这些结果与所讨论的情况相矛盾(并在答案中解释?)[1]
(例如,SELECT with NOCHECK等待完成1))等.
我的结果和[1]如何解释?
更新2:
这个问题实际上是我的问题的问题[3](或者他们没有回答的结果).
引用:
[1]
解释SQL Server中的锁定行为在SQL Server中
解释锁定行为
[2]
"隔离(数据库系统)"
Plz添加尾随)到链接.我无法在链接中设置保存它!
http://en.wikipedia.org/wiki/Isolation_(database_systems)[3
]
NOLOCK是SQL Server 2005中SELECT语句的默认值吗?
NOLOCK是SQL Server 2005中SELECT语句的默认值吗?
有一个有用的MSDN链接,她谈论 SQL 2008 中的锁定提示。也许在您的示例中,这是 SQL Server 2008 不利于表锁的情况?
(以下链接中的以下片段讨论了 SQL Server 2008 可能会忽略的锁)
如以下示例所示,如果事务隔离级别设置为 SERIALIZABLE,并且表级锁定提示 NOLOCK 与 SELECT 语句一起使用,则不会采用通常用于维护可序列化事务的键范围锁。
CopyUSE AdventureWorks2008R2;
GO
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
GO
BEGIN TRANSACTION;
GO
SELECT Title
FROM HumanResources.Employee WITH (NOLOCK);
GO
-- Get information about the locks held by
-- the transaction.
SELECT
resource_type,
resource_subtype,
request_mode
FROM sys.dm_tran_locks
WHERE request_session_id = @@spid;
-- End the transaction.
ROLLBACK;
GO
Run Code Online (Sandbox Code Playgroud)
引用 HumanResources.Employee 的唯一锁是架构稳定性(Sch-S) 锁。在这种情况下,不再保证可串行化。
在 SQL Server 2008 中,A LTER TABLE 的 LOCK_ESCALATION 选项可以不支持表锁,并在分区表上启用 HoBT 锁。此选项不是锁定提示,但可以用于减少锁定升级。有关详细信息,请参阅ALTER TABLE (Transact-SQL)。
归档时间: |
|
查看次数: |
3945 次 |
最近记录: |