为什么最佳实践告诉您在 Azure VM 上的 SQL Server 日志驱动器上禁用缓存

Jos*_*uch 1 sql-server azure azure-storage

根据这篇文章和我发现的其他几篇文章: Performance bestpractices for SQL Server

最佳实践是禁用 SQL Server 日志磁盘的高级存储磁盘上的缓存。但是,我找不到任何地方可以解释原因。

有人有一些见解吗?

让我补充一点,我认为禁用日志驱动器上的只读缓存是一个问题,因为它使您必须在 VM 内设置两个单独的存储池,这使得在 Azure 内升级/降级 VM 的问题更加严重,并且大大减少表现出色。

例如,假设您从 DS V13 开始,它有 16 个驱动器限制,但在受到限制之前,其中大约 6 个驱动器可以达到最大值(25000 IOP)。由于最佳实践规定对数据进行只读缓存,对日志不进行缓存,因此您将其中 8 个驱动器分配给数据,将 8 个驱动器分配给日志。

现在,服务器需要升级,因此您将其升级到 DS V14。现在,在受到限制之前,您最多可以使用 12 个驱动器(50000 IOP)。但是,您的数据驱动器的存储空间列大小仅为 8,限制为 40000 IOP。所以您没有充分利用 IO 的潜力。

但是,如果您可以从 DS V13 开始,并将所有 16 个驱动器分配到一个存储池,然后将日志和数据都放在其中。您可以一路升级/降级至 DS V15,无需担心未充分发挥 IOP 的潜力。

另一种说法是:如果您为所有 16 个驱动器创建一个存储池,则在升级/降级 VM 方面将具有更大的灵活性。如果您必须创建两个存储池,则不必创建。

Aun*_*SFT 5

我们建议在托管日志文件的高级存储磁盘上配置 \xe2\x80\x9cNone\xe2\x80\x9d 缓存。日志文件主要进行大量写入操作,它们不会从只读缓存中受益。两个原因:

\n\n
    \n
  1. 合法的缓存内容将被日志中无用的数据驱逐。
  2. \n
  3. 日志写入也会消耗Cache BW/IOPS。如果在磁盘上启用了缓存(只读或读写),则该磁盘上的每次写入也会将该数据写入缓存中。每次读取也会访问/将数据放入缓存中。因此,如果缓存打开,每个 IO 都会命中缓存。
  4. \n
\n\n

谢谢,\n昂

\n