在我的测试环境中,在我的 4GB 生产数据库的副本上,我归档了大约 20% 的数据,然后从 SSMS 对其进行缩减,建议最大可用空间为 20%。
结果是一个性能糟糕的 2.7GB 数据库。一个特定的查询在生产中大约是 0.5 秒,现在在测试中大约是 11 秒。如果我在测试中删除查询的全文部分,执行时间约为 2 秒。
生产和测试之间的实际执行计划是相同的。
我重建了所有索引和全文索引。性能还是差不多的。自复制以来,测试数据库中的实际内容没有改变。
关于我在哪里寻找罪魁祸首的任何想法(除了键盘后面?:)
编辑:好的,重复该过程三次,每次结果相同......但是,在我运行收缩之前,性能会降低 - 一旦我归档非活动记录。存档前 0 秒,之后 18 秒。重建一些索引后返回 7 秒。归档过程:
- 创建一个新的“存档”数据库
- 标识要删除的 3 种类型的键,将它们存储在表变量中
- 对 20 个表中的这三个键执行“归档”数据库的选择
- 从这三个键的 20 个“实时”表中删除了行。
而已。归档后,当我查看执行计划时,40% 的时间花在第一个操作上,即聚集索引扫描。
我将删除此内容并在 SQL 站点上重新发布问题。