我们有三台 SQL Server 服务器,每台服务器上大约有五六个数据库。我们正在将这些服务器迁移到新的 SAN,我正在研究最佳 RAID 配置。当前,所有数据库的所有日志文件共享一个 RAID 阵列,该 RAID 阵列上除了日志文件外没有其他任何内容,但所有数据库都使用相同的阵列作为其日志文件。
我读过最好将日志文件放在不同的磁盘上。但在我们的例子中,我不确定是否最好拥有一个包含所有日志文件的大约 8 个驱动器的大阵列。还是创建四个两个磁盘阵列并为一些较大的数据库提供自己的日志文件专用磁盘会更好?
Con*_*lls 11
日志
日志主要是一种顺序访问结构。简单地说,您可以将它们视为条目的环形缓冲区,这些条目表示“将此数据写入此块”。当数据库引擎发出写入时,它实际上将这些条目之一写入日志。然后,日志读取器进程异步跟进并将块写入磁盘。
因为磁盘磁头活动相对较少,所以日志相对较快。但是,如果日志写入活动与同一磁盘上的随机访问活动发生争用,则争用会显着影响日志写入性能,从而影响整体数据库性能。
此外,将日志写入单独的磁盘可为您提供冗余措施。如果备份数据,则可以在恢复的数据库上前滚备份后的日志条目。这意味着灾难必须同时取出日志和数据卷才能导致数据丢失。
由于这些原因,您应该在单独的阵列(不同的物理磁盘)上将日志记录到数据卷。如果没有争用,单个镜像对可以处理相当多的日志流量,因此除非您有非常大的事务量,否则您可能不需要更多的东西。但是,请确保没有其他东西在日志卷上生成磁盘活动。
临时数据库
如果您有大量使用 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 卷,否则系统可能会与共享单个 RAID-10 卷的数据、索引和 TempDB 一起正常工作。
写回缓存
如果 SAN 上的 RAID 控制器支持电池备份,您可以在它们上设置回写缓存。这意味着控制器在 RAM 中缓存写入并优化写入回磁盘。回写缓存可以在 RAID-5 卷上获得相当大的性能优势,但会为系统增加额外的故障模式。
如果电源出现故障,备用电池会将缓存的数据保留几天。当您重新激活 SAN 时,它将写出缓存的条目。从理论上讲,这是相当可靠的,可能会奏效。然而,有很多关于回写缓存失败的轶事。
如果您可以在每个卷的基础上激活回写缓存,请考虑让它在日志中处于非活动状态。这样,通过恢复数据库和前滚日志,可以在不损坏数据的情况下恢复缓存故障,如上所述。对您的系统进行基准测试,以确保其性能令人满意。
结论
分离日志和数据卷。如果您使用 RAID 4、5、6、40、50 或 60 并且在 TempDB 中有大量活动,请考虑将 TempDB 放在单独的 RAID-10 卷上。除非您有非常大的数据量,否则您可以在 RAID-10 卷上共享数据、索引和 TempDB。日志卷不应与大量磁盘活动的来源共享磁盘。
数据路径分离得越多,争用就越少,因此,从性能角度来看,明智的做法是分离数组并为每个数据库(或最繁忙的数据库,而不是最大的数据库,而是每个数据库进行最多事务的数据库)分配数据。第二)自己的日志文件磁盘。
| 归档时间: |
|
| 查看次数: |
7531 次 |
| 最近记录: |