1

在许多 SQL Server 文章中提到,最佳实践是在物理磁盘上使用多个文件组以避免磁盘争用和磁盘主轴问题。所以我的查询是:

1:拥有多个文件组的相同理论是否适用于虚拟机?
2:我是否仍应将我的临时数据库创建到不同的磁盘,我是否还应该创建多个临时数据库文件以避免在我的生产环境的虚拟机设置中对同一临时数据库文件进行大型读/写操作

您的建议和推理将有助于确定最佳实践。谢谢。

4

2 回答 2

1
  1. 是的,它仍然适用于虚拟服务器。争用问题的一部分是访问全局分配映射 (GAM) 或共享全局分配映射 (SGAM),它存在于每个数据库文件中,并且一次只能由一个进程或线程访问。这就是“闩锁等待”问题。
  2. 如果您的第二个磁盘实际上位于不同的主轴上,那么可以。如果数据库文件位于不同的逻辑磁盘但相同的主轴上,那么这并不重要。

MS 建议您应该为服务器上的每个逻辑处理器创建一个数据库文件,最多 8 个。在添加超过 8 个数据库文件之前,您应该测试是否发现 tempdb 上的闩锁争用问题。

您不需要(通常也不应该)创建多个 tempdb日志文件,因为它们是按顺序使用的。您总是在序列中写入下一页,因此无法拆分磁盘争用。

于 2016-09-12T03:41:52.857 回答
0

该问题需要有关您的环境的更多信息。如果 VM 的驱动器托管在某个 SAN 上,并且提供给 VM 的驱动器都分布在 SAN 上的相同物理磁盘上,那么您将无法避免争用。但是,如果驱动器不在同一个物理驱动器上,那么您可能会看到改进。您的 SAN 团队将不得不就此向您提供建议。

话虽如此,我仍然更喜欢将日志文件从数据文件中拆分出来,并将 tempDB 放在它自己的驱动器上。原因是如果查询没有按计划进行,那么它可以填充日志文件驱动器,这可能会使该数据库脱机,但其他数据库可能仍然能够继续运行(假设它们的日志文件中有足够的空白空间) .

再次使用 tempDB,如果它确实被填满,那么事务将出错,其他一切都应该在没有干预的情况下继续运行。

于 2016-09-12T03:39:03.300 回答