复制数据库后SQL Server速度变慢

时间:2009-06-18 15:30:50

标签: sql sql-server database performance

由于数据库变得相当大,我最近将一堆表从现有数据库移动到新数据库中。在这样做之后,我注意到在针对新数据库运行时查询性能显着下降。

我重新创建新数据库的过程如下:

  1. 使用sql server自动脚本生成表CREATE脚本
    发电机。
  2. 运行create table scripts
  3. 将所有数据插入新数据库     使用INSERT INTO和select from     现有的数据库。
  4. 运行所有alter脚目以进行创建     外键和任何索引
  5. 有没有人对我的流程可能出现的问题有任何想法,或者我错过了导致此性能问题的一些关键步骤?

    感谢。

5 个答案:

答案 0 :(得分:5)

首先我会确保启用自动创建统计信息,您还可以将自动更新统计信息设置为true

之后我会通过运行

来更新统计数据
sp_updatestats

UPDATE STATISTICS

还要意识到,第一次点击查询时它会更慢,因为没有任何内容会缓存在RAM中。在第二次击中应该快得多

答案 1 :(得分:4)

您是否编写了原始数据库中表的索引?缺少索引肯定会导致性能不佳。

答案 2 :(得分:3)

在运行这些查询时,您是否尝试查看每台服务器上的执行计划 - 这应该可以让您轻松查看他们是否正在执行不同的操作,例如:因缺少索引,统计数据不佳等原因进行表扫描。

这两个数据库是否与同一驱动器阵列上的数据文件位于同一个盒子上?

答案 3 :(得分:2)

你能告诉那些有关这些查询的速度变慢了吗?新的访问计划?相同的计划,但他们表现较慢?他们执行更慢还是暂停更多? 所有查询都变得慢了还是只有一些?最后但并非最不重要的是,你怎么知道,即。你究竟测量了什么以及如何测量?

一些常见的嫌犯可能是:

  • 新存储速度慢得多(慢速磁盘上的.mdf或繁忙的磁盘上)。
  • 您在移动期间更改了数据结构(即某些索引未被移植)
  • 您更改了数据大小(即压缩选项),从而导致相同数据的更多页面
  • 其他任何内容是否同时发生变化,新的应用代码或其他类似内容?
  • 通过扩展数据大小(您没有提及删除旧表),您现在正在废弃缓冲池(性能计数器中的页面生命周期预期会减少吗?)

答案 4 :(得分:0)

了解如何设置初始大小和增长选项。如果你没有给它足够的空间开始,或者如果你在一个可能导致性能问题的时候增长1MB。