事务日志驱动器是否需要与数据库驱动器一样快?

Cli*_*emi 7 sql-server performance drives transaction-log

我们告诉客户端将SQL Server数据库文件(mdf)放在与事务日志文件(ldf)不同的物理驱动器上.该技术公司(由我们的客户雇用)希望将事务日志放在比数据库驱动器更慢(例如更便宜)的驱动器上,因为使用事务日志,您只需按顺序写入日志文件.

我告诉他们我认为驱动器(实际上是RAID配置)也需要在快速驱动器上,因为每个数据更改调用数据库需要保存在那里,以及数据库本身.

在说完之后,我意识到我并不完全确定.事务日志驱动器的速度是否会在性能上产生显着差异...如果带有数据库的驱动器速度很快?

Rem*_*anu 5

日志驱动器的速度是写密集型数据库的最关键因素.没有更新可以比写入日志更快地发生,因此您的驱动器必须支持在峰值时遇到的最大更新速率.所有更新都会生成日志.由于两个因素,数据库文件(MDF/NDF)更新可以提供较慢的写入速率

  • 数据更新被懒惰地写出并在检查点上刷新.这意味着更新峰值可以在平均驱动器吞吐量上摊销
  • 多个更新可以在单个页面上累积,因此需要一次写入

因此,您认为日志吞吐量至关重要.

但与此同时,日志写入具有特定的顺序写入模式:始终在末尾附加日志.对于顺序操作,所有机械驱动器具有更高的读取和写入吞吐量,因为它们涉及磁盘头的物理移动较少.所以你的操作人员说慢速驱动器实际上可以提供足够的吞吐量也是如此.

但所有这些都伴随着一些重大警告:

  • 较慢的驱动器(或RAID组合)必须真正提供高顺序吞吐量
  • 驱动器必须看到来自一个且只有一个数据库的日志写入,而不是其他内容.任何可能干扰当前磁盘头位置的操作都会损坏您的写入吞吐量并导致数据库性能降低
  • 日志必须只写,不能读.请记住,某些组件需要从日志中读取,因此它们会将磁盘机制移动到其他位置,以便它们可以回读以前写入的日志:
    • 事务复制
    • 数据库镜像
    • 日志备份