我想知道如果我们将 SQL Server 数据库日志文件放在tempdb
RAID 1 上,是否应该使用 64K 群集进行格式化以获得更好的性能?
当前数据库和日志文件位于 RAID5 上,我认为如果您进行大量插入,这对于数据库日志来说更糟糕,因为它会产生双重写入。
这是针对 SQL Server 2005 的
答案1
RAID 1 通常具有更好的读取性能,但写入性能较差,因此我不会将其用于写入量大的日志和 TempDB。理想情况下,如果可能,您应该为 SQL Server 使用 RAID 10。请参阅:RAID 级别和 SQL Server。
至于你的集群大小问题,请参阅SQL Server 的磁盘分区对齐最佳实践对所有应该考虑的事项进行了出色的讨论。文章说这是针对 SQL 2008 的,但它同样适用于 2005。以下是本文最重要的结论:
有两个相关性,满足这两个相关性是实现最佳磁盘 I/O 性能的基本前提条件。以下计算的结果必须为整数值:
分区偏移量 ÷ 条带单元大小
条带单元大小 ÷ 文件分配单元大小
在这两者中,第一个对于实现最佳性能而言是最重要的。以下演示了一种常见的错位情况:假设起始分区偏移量为 32,256 字节(31.5 KB),条带单元大小为 65,536 字节(64 KB),结果为 0.4921875。这不是一个整数;因此偏移量和条带单元大小不相关。这与错位一致。
但是,起始分区偏移量为 1,048,576 字节(1 MB),条带单元大小为 65,536 字节,则结果恰好为 8,即一个精确的整数,这与对齐一致。
答案2
这取决于(像其他所有事情一样)您的数据库。如果您主要进行较小的写入,则应使用与条带大小匹配的分配单元,并确保分区偏移量是条带大小的倍数。通常,条带越大速度越快。
RAID 1 和 RAID 10 在小写入时几乎总是比 RAID 5 更快(每次写入小于条带大小的内容时,RAID 5 都必须进行读写,当写入整个条带时,损失较小,因为具有奇偶校验的磁盘是唯一需要读写的磁盘,而写回缓冲区将处理它)。
乔的建议很好;除非你有充分的理由不这样做,否则我会采纳。
答案3
64K。日志需要放在专用主轴上。如果连续日志写入被其他活动中断,这将对性能产生不利影响。如果您需要优化性能,请不要将 tempdb 与日志放在同一个主轴上。