SELECT xyz INTO #Temp from SSMS 在一种环境中比另一种环境长 5 倍

gee*_*ner 6 performance sql-server latch

第一次发帖,希望我做对了。

我是一个“偶然的 dba”,他正在学习很多东西,但不可否认还有很多东西要学。这是我的大脑转储:

  1. Prod 服务器有 500 万行。我将这些行复制到测试服务器。
  2. 使用 SNAPSHOT 或 READ UNCOMMITTED 会产生不同的经过时间,但 Prod 和 Test 之间的比率始终约为 5:1(SNAPSHOT 为 14 分钟:3 分钟,READ UNCOMMITTED 为 4 分钟:sub-1)
  3. 使用 STATISTICS IO ON 显示 Prod 上的大多数读取是逻辑的(~90%),而 Test 上的读取都不是逻辑的。我这应该意味着 Prod 会更快。
  4. 大多数时间似乎将等待“PAGEIOLATCH_SH”类型。
  5. 我不认为不同的统计数据无关紧要,因为不应在未过滤、未连接、未排序的查询上使用任何索引。
  6. 选择两台服务器上的前 n 行显示了一个非常线性的比例……比例总是 ~5:1。
  7. 比较不是一一对应,但我认为唯一相关的区别是活动和存储。
  8. 我在几乎没有活动时进行了比较,并看到了相同的结果。
  9. 我发现 autogrowth 设置为 1MB(呃),我已经改变了,但我想知道这是否导致文件系统级别的存储碎片化。
  10. 该数据库位于与 Windows 安装不同的卷上,但它确实与 tempdb 和 FILESTREAM 存储共享一个卷,我认为这也可能导致存储碎片化。
  11. “优化驱动器”Windows 实用程序表示该卷“正常(98% 空间效率)”,这似乎表明文件系统碎片可能不是问题。

问题:

  • 我上面的想法假设是否正确?
  • 在我的思考过程中有什么我公然忽视的吗?
  • 在此故障排除过程的后续步骤中,哪些是合适的候选者?
  • 我可以/应该提供哪些其他信息?
  • 感谢您的关注和帮助!

    编辑:在第二条语句中添加了剩余时间信息。

    Jān*_*nis 1

    对我来说,这听起来像是 tempdb 的问题。您可以做什么 - 检查每台服务器上有多少文件 - 您可以在此处查看建议。

    它们是否足够大并且在插入时不会增长?tempdb 的日志文件怎么样?如果它们正在增长,最好是在之前扩展它们(并保持这种状态)。

    您还可以检查一件事 - 如果它们正在增长,您可以通过使用即时文件初始化来使其更快。