为了获得最佳性能,Tempdb 的日志文件是否应该与数据文件放在不同的驱动器上?

为了获得最佳性能,Tempdb 的日志文件是否应该与数据文件放在不同的驱动器上?

为了提高性能,我们将 tempdb 放在自己的驱动器阵列上,并将其拆分成多个文件。我们将数据库日志文件放在非数据驱动器上。我们想知道是否应该将 tempDB 日志文件放在所有数据库的日志驱动器上或其他地方,但要与 temdb 数据文件分开。

答案1

我从来没有担心过这个。看一下 MS 的网站,上面说 tempdb 的日志记录已最小化。这对你来说可能不是什么问题。当然,过早优化并不是一个好主意 - 即在实际负载下测试当前环境之前。对于所有条件的 SQL 配置,没有单一的最佳实践。

答案2

我们谈论的是二进制事务日志还是纯文本应用程序日志文件?数据库工作负载的一般最佳实践是将事务日志保存在与数据存储不同的物理磁盘上;这可以使事务日志上的顺序写入保持顺序,并通过最大限度地减少缓存流失来提高两个卷上的缓存命中率。

答案3

传统观点认为,用户数据库的数据文件应该放在一个驱动器上,用户数据库的日志文件应该放在另一个驱动器上(这个驱动器确实需要具有快速延迟),而 TempDB 则放在单独的驱动器上。除了彼此隔离之外,日志和数据文件具有非常不同的 IO 特性。

随着 SAN 的出现,情况发生了变化,因为 SAN 管理员通常让 DBA 划分出大块磁盘的各个部分 - 性能差异并不那么明显。

虚拟化进一步改变了现状,DBA 可能认为他已经将数据文件与 TempDB 中的日志分开了,但 VM 管理员将所有这些不同的“驱动器”放在同一个物理驱动器上 - 在 VM 世界中,这些驱动器只是文件。

我的观点是,将数据文件、日志文件和 TempDB 的文件分开仍然是好的 - 如果其中一个文件膨胀,您希望有更多的时间来修复它 - 并且它不会破坏所有内容。

如果您能做到,最佳做法仍然是将数据文件和日志文件分开 - 如果您也能将 TempDB 分开,那就太好了。某些应用程序(尤其是使用读取已提交快照隔离的应用程序)大量使用 TempDB。

答案4

是的,您最好将 TempDB 日志和数据文件放在单独的驱动器中。像往常一样,我们将所有 DB 的数据文件和所有 DB 的日志文件放在单独的驱动器中,因为事务同时写入两个文件。所以同样的概念也适用于 TempDB 文件。

相关内容