数据库 A 上的大型事务将数据库 B 锁定在同一台服务器上

Posted

技术标签:

【中文标题】数据库 A 上的大型事务将数据库 B 锁定在同一台服务器上【英文标题】:Large transaction on database A locks database B on the same server 【发布时间】:2013-10-17 07:07:12 【问题描述】:

我在 Sql Server 2012 上运行了多个数据库。

我必须在此服务器上运行一个大型导入脚本。导入脚本包装了一个事务。它还调用链接的 Sql Server 2008 服务器以提取数据。

当我运行此导入脚本时,其他数据库对所有请求都超时。

调试此问题的最佳方法是什么?

【问题讨论】:

【参考方案1】:

所有请求的其他数据库超时

SQL Server 不会使请求超时。您的客户端是否中止,通常是因为SqlCommand.CommandTimeout 默认为 30 秒。话虽如此,您仍然有性能问题,因此请将其作为性能问题进行调查。阅读Waits and Queues,了解如何识别 SQL Server 中的瓶颈。阅读The Data Loading PErformance Guid 以了解如何正确导入(提示:它不会是“交易中的大量导入”)。

这与“锁定”无关。

【讨论】:

【参考方案2】:

将问题追溯到服务器的 RAM 非常低。添加了更多 RAM,导入可以正常完成,所有其他数据库都可以运行而不会受到影响。

【讨论】:

以上是关于数据库 A 上的大型事务将数据库 B 锁定在同一台服务器上的主要内容,如果未能解决你的问题,请参考以下文章

怎么避免mysql死锁

事务锁兼容性

如何减少SQLServer死锁发生

数据库事务介绍

MySql 的事务隔离级别

MySQL的事务隔离级别