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

Sql server 事务日志驱动器是否需要与数据库驱动器一样快?,sql-server,performance,transaction-log,drives,Sql Server,Performance,Transaction Log,Drives,我们告诉客户机将SQL Server数据库文件(mdf)放在与事务日志文件(ldf)不同的物理驱动器上。技术公司(由我们的客户雇佣)希望将事务日志放在比数据库驱动器慢(例如更便宜)的驱动器上,因为使用事务日志,您只需依次写入日志文件 我告诉他们,我认为驱动器(实际上是RAID配置)也需要在快速驱动器上,因为对数据库的每次数据更改调用都需要保存在那里,以及数据库本身 说了这句话之后,我意识到我并不完全确定这一点。事务日志驱动器的速度是否会对性能产生显著影响。。。如果带数据库的驱动器速度快?简单地说

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

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


说了这句话之后,我意识到我并不完全确定这一点。事务日志驱动器的速度是否会对性能产生显著影响。。。如果带数据库的驱动器速度快?

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

这是对事务日志内部的一种非常简单的理解,整个书籍都致力于事务日志,但基本要点仍然存在

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

为了向您提供具体的建议操作过程,我需要更多地了解您的数据库工作负载以及您需要数据库服务器提供的性能


获取标题以全面了解SQL Server事务日志的内部内容,它是最好的SQL Server标题之一,从阅读中获得的价值可以在几分钟内收回成本。

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

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

对于写密集型数据库来说,日志驱动器的速度是最关键的因素。任何更新的速度都不能超过写入日志的速度,因此您的驱动器必须支持峰值时的最大更新速率。所有更新都会生成日志。由于两个因素,数据库文件(MDF/NDF)更新可以承受较慢的写入速率

  • 数据更新被延迟地写出来,并在检查点上刷新。这意味着更新峰值可以在平均驱动器吞吐量上摊销
  • 多个更新可以累积在一个页面上,因此需要一次写入
因此,日志吞吐量至关重要,这一点您是对的

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

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

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

+1:关于“读取”事务日志的SQL组件,这是一个很好的观点,因为它经常被忽略。谢谢,您的信息(以及其他响应)会让事情变得更清楚。我们将在这个驱动器上有多个日志-尽管到目前为止,其中一个日志拥有最多的事务流量。还将定期进行事务日志备份。我认为快速驱动器是最安全的选择。在部署之前,您始终可以使用SQLIOSIM.EXE测试各种配置:+1:Kalen Delaney的书是获取所有详细信息的来源。