【发布时间】:2015-07-28 14:06:48
【问题描述】:
我有一个基本问题,但无法在网上找到准确的信息。
我打开了一个数据库事务(SQL Server)并进行了多次插入、更新、删除等;整个过程大约需要5个小时才能完成(由于数据量大;假设这是有效的)。
以上所有都发生在事务的范围内。这个较长的事务是否会调用同一服务器上的其他数据库等待或以任何方式干扰它们?我的理解是,这只会影响对相关数据库的调用,而不影响同一实例下的其他数据库。
PS:事务是从 C# 端发起的(即using TransactionScope)
【问题讨论】:
-
如果您进行 5 个小时的繁重操作,它肯定会对数据库之间共享的所有资源产生影响,例如 CPU、内存和可能的磁盘,具体取决于您的设置。此外,事务日志会因此变得非常庞大。
-
有一次,我尝试在单个事务中插入 600+ 百万行,由于它的 Ram 使用率,CPU 使用率非常高,甚至将磁盘上的可用空间从大约 200 GB 降至几 MB然后它在几个小时后未能给出“没有空间分配”的消息。由于此事务,对其他数据库的查询通常需要几秒钟;跑了很长时间。所以,我想我可以有把握地说,如果你的事务足够大,它会影响对同一实例下其他数据库的调用。
-
感谢 JamesZ、AbhayChauhan 的投入。
标签: sql-server transactions sql-server-2012 transactionscope sqltransaction