我知道 SQL Server 中数据量的常见建议是使用 64 KB 块/条带,因为 I/O 通常由整个扩展区完成。但是,我找不到任何关于日志文件 I/O 的好信息。
我已经在 Process Monitor 中观察了一段时间的 I/O 活动,看起来日志文件 I/O 大小从 512 字节到略低于 64 KB 不等。我猜这取决于记录的事务的大小,而大的事务会使用多个 ~64 KB 写入进行拆分。
所以,假设我的分区与 RAID 条带对齐,假设 64 KB 块/条带将产生最佳性能,在所有其他条件相同的情况下是否安全?我预计较小的事务,即具有 512 字节写入的事务,并不足以使大块大小的损失产生重大影响,而快速连续写入大量 64 KB 块的较大事务将更重要的是要调整。
64k 块通常是最好的。日志写入实际上应该最大大约为 60k,但在 64k 时,您与磁盘上物理块的大小对齐。
请记住,有两种不同类型的对齐方式:块大小和偏移量。这两种对齐类型都关注操作系统分区/格式化和底层存储阵列分区/格式化之间的差异。
具有块对齐的磁盘意味着操作系统和底层存储阵列被格式化为相同的块大小。可以在这里获得一些性能提升,但一般来说这些提升可以忽略不计。Microsoft SQL 建议将日志和数据驱动器格式化为 64k 块。
偏移对齐是性能的无声杀手。如果偏移量未配置为正确对齐,则 OS 层的单个块可能会与存储层的两个或多个块重叠。当操作系统请求单个块时,它会触发存储层拉取并返回所有存储层块。如果您更正未对齐的偏移量,您将看到性能提升。
此图显示了如何在各个级别上关闭磁盘对齐以包括操作系统、vmware 层和存储阵列。如果您在物理服务器上运行,那么您只需关注图表中的第一行和最后一行。
也可以看看: