临时提升 MSSQL 服务器的 IO 速度

临时提升 MSSQL 服务器的 IO 速度

我所在的公司正在考虑对数据库进行数据升级,以便从一个应用程序版本升级到另一个版本(从 Axapta 3 升级到 Ax 2009)。这个过程非常耗费 IO,按照我们目前的设置需要几天时间。我们目前有一个 HP Lefthand SAN,有 24 个 450GB 15k 磁盘。我们通过 iSCSI(2x 1gb 网卡)运行 SAN,这限制了我们的最大吞吐量约为 100MB/s。

我们目前正在寻找在升级期间提高 IO 性能的方法。将运行升级的服务器将是 HP DL360 G7,它有 8 个 SAS 端口和一个 HP p410i RAID 控制器。

我们只需要大约 400GB 的空间来存储数据和日志文件。

我们考虑买 8 个 SSD,将它们放入服务器中,然后为周末设置 RAID 10 阵列。我读到过,消费级 SSD 在执行大量写入操作时性能会下降。由于我们只需要此解决方案运行一个周末,如果我们购买消费级 SSD,我应该担心这个问题吗?英特尔 X25-M 系列磁盘可以吗,还是我们应该选择 X25-E。

答案1

对于密集的数据更改,瓶颈通常是数据库的日志文件。如果您在完整恢复模式下运行,您还应该预计日志文件的增长,而自动日志文件(和数据文件)的增长会降低性能。考虑在迁移期间切换到简单恢复,这样做将最大限度地减少日志空间需求。它还将使您不必运行频繁的事务日志备份,这需要读取日志文件、移动磁盘头并会降低速度。如果您有一个多步骤的迁移过程(“先运行这个程序,然后运行另一个程序,等等”),您可以在各个步骤之间进行差异备份(甚至完整备份)。

我建议您将日志文件从 SAN 移出,并将其放在 SAS 驱动器镜像对上,从而将日志文件与数据文件隔离开来。这样做的原因是日志文件的 I/O 是同步的,而数据文件的读取通常被缓存,写入大部分是异步的。这意味着日志文件的 I/O 比数据文件的 I/O 更具有时间紧迫性。移动日志文件将使部分 I/O 带宽需求从 Lefthand 移出,但更重要的是,它将允许日志写入连续进行,而驱动器磁头几乎不需要移动。对于日志写入,移动驱动器磁头会降低性能。

此外,一对 DAS 驱动器的延迟可能比通过 SAN 交换机更好。这对于同步日志写入来说也是一个优势。数据在服务器 RAM 和驱动器之间通过的小工具(交换机等)越多,延迟就越大。毕竟,SAN 中的 15K RPM 驱动器并不比您插入 DL360 中的 15K RPM 驱动器更快。

我知道 SAN 供应商会告诉您,SAN 中有大量写入缓存,因此这并不重要,并且所有对日志的写入都将被缓存并在稍后取消暂存,并且冗余计算(对于 RAID5 和类似的 RAID 类型)非常快,但 SAN 的性能似乎从未像您希望的那样好。我已经经历过十几次这样的事情,实际性能总是令人失望。希望最好,但计划最坏。

我建议使用一对镜像 SAS 驱动器来记录日志。如果您不介意在驱动器发生故障(不太可能)的情况下恢复并重新运行迁移,那么您可以使用 RAID 0 或仅使用 1 个驱动器(如果您非常绝望的话)。(如果您有 Lefthand,您可能并不绝望,并且有几个 72 GB 或 143 GB 的 SAS 驱动器闲置。)我只会在迁移期间暂时以这种方式运行。通常,日志驱动器的数据速率很低,可能为 10 MB/s 或更低,但许多小写入的延迟会阻碍一切。对于此任务,您肯定会更喜欢 15K RPM 驱动器,而不是转速较低但平均吞吐量可能更高的驱动器。

此外,您可能希望提前手动扩展该日志文件,或者密切监视日志文件中的可用空间。如果日志文件开始接近满,请手动扩展日志文件。如果您手动执行此操作,迁移过程将继续进行。如果您依赖自动增长,则该过程将在增长期间被搁置,并且自动将文件增长 1 GB 似乎总是比手动将其增长 1 GB 花费更长的时间。完成该过程后,您可以将日志文件缩小到迁移之前的大小,并将其移回 Lefthand。

根据供应商编写迁移代码的方式,您可能还想从 tempdb 中得到很多好处。如果不在测试服务器上尝试一次,很难知道结果。如果是这样,您还可以通过将 tempdb 数据文件移动到它们自己的一组本地驱动器上来获得改进。为此,我绝对想要 RAID10(而不是 RAID5)。如果您想冒险一个周末,您可以选择 RAID0,但同样有一个警告,如果出现“问题”,您必须恢复数据库并从头开始重新运行迁移。迁移后不要依赖 RAID0。

另外,在空驱动器上创建分区时,请确保对齐分区。这是一种廉价的性能改进。

无论你做什么,不要忘记将所有数据从 Lefthand 复制并放回原处将花费大量时间。我经常需要在服务器之间和通过 1 Gb NICS 推送 1 TB 左右的数据。这将花费数小时。使用一两个 10 GB 文件进行测试,确定预期的数据速率,并计算移动大文件需要多长时间。Robocopy 工作得很好,我已经用了至少 16 年了。

另外 0.02 美元(如果您已经读到这里):我对 Lefthands 了解不多。如果这些 NIC 负载平衡正确,我预计会超过 175 MB/s。我可以在 1 Gb/s NIC 上的 TCP 以太网上达到 115 MB/s 左右,而无需任何特殊魔法。我预计 iSCSI 会稍快一些。如果您只能以 100 MB/s 或更低的速度为 Lefthand 供电,并且这些 SQL Server 文件是其上唯一的内容,那么 Lefthand 单元似乎有点矫枉过正。您可能可以从 2 或 4 个消费级 7200 RPM SATA 磁盘中获得该数据速率。DL360 应该能够使用一组直接连接的 10K SAS 驱动器轻松达到最佳数据速率。

答案2

您正在通过(毫无意义的)组合 iSCSI 链接运行 MSSQL 盒?难怪您正在寻找额外的性能 - 我真的不明白您为什么要这样做。无论如何,是的,转向 DAS 将大大提高您的整体性能,但转向非 HP SSD 可能根本不起作用,他们的卡以仅适用于 HP 固件驱动器而闻名,我会考虑只使用常规的“旋转”磁盘,也许是他们的 146GB 15krpm 2.5 磁盘,他们自己的 SSD 非常昂贵(虽然很好)。如果您绝对想尝试非 HP SSD,那么我建议您先购买一个,试用一下,如果它被识别,再购买更多,是的 - 繁重的 DB 写入确实会减慢速度并最终杀死最好的 SSD。

相关内容