0

我的数据库中有两个大表,对于测试,我已将表(使用 (NOLOCK) 从 online_table 选择 * 到 backup_table)复制到带有后缀 _backup 的同一个数据库中。在备份表上,我开始将 nvarchar(50) 列转换为日期时间格式。在他们之后,我设置了主键和一些索引。在开始复制、转换和设置索引之前,我将数据库备份设置为简单,然后在步骤返回完整备份模式之后。

问题是:在线表上的数据库非常慢。在两个表之间有连接的存储过程通常需要一分钟以上才能完成。通常他们在一秒钟或更短的时间内完成。在描述的步骤一小时后,存储过程的速度不再有问题。它们和以前一样工作,索引都很好,小于 1% 的碎片,我用 nolock 复制表,所以它应该对在线表没有影响。有人知道这个问题,也许有解决办法吗?或有其他方法来执行此步骤?

4

1 回答 1

0

这可能是由于内存中的缓存。SQL Server 使用 ram 来缓存存储过程。所以一旦存储的过程被缓存,它应该恢复正常。Brent 很好地解释了存储过程的缓存,http://www.brentozar.com/archive/2013/12/how-to-cache-stored-procedure-results/

于 2015-03-24T19:38:31.617 回答