8

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

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

话虽如此,我意识到我对此并不完全确定。事务日志驱动器的速度是否会对性能产生显着影响......如果带有数据库的驱动器速度很快?

4

4 回答 4

8

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

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

所以你说得对,日志吞吐量很关键。

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

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

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

简单来说,如果您谈论的是 OLTP 数据库,您的吞吐量取决于写入事务日志的速度。一旦达到此性能上限,所有其他相关操作必须等待提交以记录完成。

这是对事务日志内部的一个非常简单的看法,整本书都专门介绍了它,但基本的观点仍然存在。

现在,如果您使用的存储系统可以提供同时支持事务日志和数据库数据文件所需的 IOPS,那么共享驱动器/LUN 将足以满足您的需求。

为了向您提供具体的推荐行动方案,我需要更多地了解您的数据库工作负载以及您需要数据库服务器提供的性能。

获取标题SQL Server 2008 Internals以彻底了解 SQL Server 事务日志的内部结构,它是目前最好的 SQL Server 标题之一,它会在几分钟内从您从阅读中获得的价值中收回成本.

于 2010-11-24T19:29:22.543 回答
0

好吧,事务日志是提供 ACID 的主要结构,可能是性能的一大瓶颈,如果你定期进行备份,它所需的空间有上限,所以我会把它放在一个安全、快速且空间足够的驱动器中+ 一点余量。

于 2010-11-24T19:31:38.903 回答
0

事务日志应该在最快的驱动器上,如果它可以完成对日志的写入,它可以在内存中完成剩余的事务并让它稍后进入磁盘。

于 2010-11-24T19:33:19.237 回答