SQL Server 事务日志 RAID

SQL Server 事务日志 RAID

我们有三台 SQL Server 服务器,每台服务器上大约有五六个数据库。我们正在将这些服务器迁移到新的 SAN,我正在研究最佳 RAID 配置。目前,所有数据库的所有日志文件都共享一个 RAID 阵列,这个 RAID 阵列上除了日志文件外没有其他东西,但所有数据库都使用同一个阵列来存储日志文件。

我读到过最好将日志文件放在单独的磁盘上。但在我们的案例中,我不确定是否最好有一个包含大约 8 个驱动器的大型阵列,所有日志文件都放在其中。或者创建四个两磁盘阵列并为一些较大的数据库提供自己的专用磁盘来存放日志文件是否更好?

答案1

日志

日志是一种主要采用顺序访问的结构。简单地说,您可以将其视为一个环形缓冲区,其中包含“将此数据写入此块”的条目。当 DB 引擎发出写入时,它实际上会将其中一个条目写入日志。然后,日志读取器进程会异步跟进并将块写入磁盘。

由于磁盘头活动相对较少,因此日志相对较快。但是,如果日志写入活动与同一磁盘上的随机访问活动发生争用,则争用会严重影响日志写入性能,从而影响整体数据库性能。

此外,将日志写入单独的磁盘可以为您提供一定程度的冗余。如果您备份数据,则自备份以来的日志条目可以在恢复的数据库上前滚。这意味着灾难必须同时摧毁日志和数据卷才能导致数据丢失。

出于这些原因,您应该将日志放在与数据卷不同的阵列(不同的物理磁盘)上。如果没有争用,单个镜像对可以处理相当大量的日志流量,因此除非您的事务量非常大,否则您可能不需要更多。但是,请确保没有其他任何东西在日志卷上生成磁盘活动。

临时数据库

如果您的进程大量使用 TempDB,那么将其放在 RAID-10 卷上将带来性能优势,因为这比 RAID-5 提供了更好的写入性能。(请参阅下面关于写回缓存的说明)。如果您将数据和索引放在 RAID-5 卷上,并且进程大量使用 TempDB,那么将 TempDB 放在单独的 RAID-10 卷上可能会带来好处。如果您也在数据卷上使用 RAID-10,那么这无关紧要。

数据和索引

如果您的数据量非常大,您可以将数据放在 RAID 5、6、50(条带化 RAID-5 块)或 60 上。如果您的数据量较小,则可以使用 RAID-10。如果您的数据卷上有 RAID-5(或类似),您可能需要一个单独的 TempDB 卷,否则系统可能会在数据、索引和 TempDB 共享单个 RAID-10 卷的情况下正常工作。

回写缓存

如果 SAN 上的 RAID 控制器支持备用电池,则可以在其上设置写回缓存。这意味着控制器将写入缓存在 RAM 中并优化写回磁盘。写回缓存可以大大提高 RAID-5 卷的性能,但会给系统增加额外的故障模式。

如果电源断电,备用电池会将缓存数据保留几天。当您重新激活 SAN 时,它会写出缓存条目。理论上,这是相当可靠的,而且可能有效。然而,关于写回缓存失败的传闻很多。

如果您可以按卷激活写回缓存,请考虑在日志上将其设为非活动状态。这样,可以通过恢复数据库并前滚日志(如上所述)来恢复缓存故障,而不会损坏数据。对系统进行基准测试,以确保性能令人满意。

结论

分离日志和数据卷。如果您使用的是 RAID 4、5、6、40、50 或 60,并且 TempDB 中的活动较多,请考虑将 TempDB 放在单独的 RAID-10 卷上。除非您的数据量非常大,否则您可以在 RAID-10 卷上共享数据、索引和 TempDB。日志卷不应与磁盘活动较多的源共享磁盘。

答案2

事务日志阵列必须至少是 RAID 1(镜像),建议使用 1+0(镜像 + 条带),这需要至少 4 个物理驱动器。

RAID 5 绝对不应用于事务日志,仅应用于数据文件,这是由于事务日志的顺序写入模式的性质,并且为了提高性能,您应始终将日志和数据文件分离到不同的物理阵列上。

答案3

我只会将其拆分成 2 个阵列,否则您将浪费太多磁盘。如果您有一个包含 8 个驱动器的阵列,则应该有 7 个驱动器的容量。但是,如果您有 4 个阵列,则只有 4 个驱动器的容量。

需要考虑的另一件事是 RAID 1 相对于 RAID 5 的读写性能。理论上,RAID 1 为 1 次写入、2 次读取和 2 次寻道,而 RAID 5 为 (N-1) 次写入、N 次读取和 1 次寻道。这只是理论上的,实际上,您的读/写/缓存模式和控制器会产生影响。

答案4

虽然有点晚了,但将来会回答的。

所有先前的答复都是正确的,但对于本地驱动器来说除外;随着 SAN、NAS(那些大型商用 NAS,而不是家用 NAS)的出现,情况发生了变化。

请咨询您的供应商和您要购买的型号。原因是供应商说 RAID 对事务日志来说并不重要。供应商还说,事务日志和数据文件的整个独立驱动器会导致性能问题,它们应该放在一个卷上。

部分原因是,在 SAN 上,除非您获得完整的驱动器,否则另一个卷将移动磁头,从而失去性能提升,而且瓶颈将是 HBA 和网络,而不是驱动器。

因此,请查看供应商对硬件的建议,然后开始测试和监控。

相关内容