【发布时间】:2009-06-19 09:50:09
【问题描述】:
我们正在使用带有大型 select 语句的 SQL Server 2005 数据库(无行版本控制),并且我们看到它阻止了其他语句的运行(使用 sp_who2 看到)。我没有意识到 SELECT 语句可能会导致阻塞 - 我能做些什么来缓解这种情况吗?
【问题讨论】:
-
您是否会使用更高的隔离级别,例如可重复读取或可序列化?一些 ADO 和 CLR 组件在未经您明确同意的情况下潜入可序列化... (key, range, table) 上的阻塞资源是什么?
-
我没有指定隔离级别。有没有办法找出正在使用的隔离级别?
-
是的,请查看 sys.dm_exec_sessions。 transaction_isolation_level 列。
-
对所涉及的表和数据进行一些描述会很有帮助。如果您可以优化查询,那么锁显然会保留更短的时间。如果它是只读事务,另一种选择是检索您需要对临时表进行操作的数据集,然后针对临时表进行查询。您可以在高隔离级别下填充所有临时表,以保证活动表的事务“快照”。
标签: sql-server performance blocking