此页面为机器翻译。请阅读英文原文。 English

IBSurgeon 文库

使用备份快速估算磁盘速度

Dmitry Kuzmenko,2019年5月30日,ib-aid.com

我们的技术支持团队会定期收到一个问题(论坛上也常有人问)–“看起来我们的磁盘很慢,如何确认这一点?”

这个问题通常由虚拟机的用户提出,在这些环境中,DBA无法访问磁盘子系统设置,甚至不知道其特性。

当然,磁盘速度可以通过不同的工具来测量,从简单的CrystalDiskMark到更复杂的IOMeter。但是,最纯粹的结果是在应用程序不访问磁盘时获得的。否则,结果可能会有所不同,在高负载下测试可能会降低系统性能。

此外,系统管理员可能会禁止安装第三方软件,即使是短时间安装也不行。

然而,备份通常会在所有这些系统上执行(除了那些使用虚拟机级别备份软件来备份Firebird的系统,这是错误的–请参见“备份数据库时的12个常见错误”中的第11条)。

备份(gbak -b -g)是从数据库中读取所有数据,并将这些数据(顺序地)写入备份文件。从读/写操作的角度来看,它是随机读取和顺序写入的组合。

备份文件的大小通常是数据库大小的60%-70%。而且,由于数据库的版本控制和页面结构,读取操作多于写入操作。

由于备份文件通常放在另一个物理驱动器上,整体备份速度将取决于数据库的随机读取速度和备份驱动器的顺序写入速度。当然,您可以将数据库放在HDD上,备份到SSD上,但这将非常低效,因此,我们认为备份驱动器的速度与数据库驱动器的速度大致相当,不会高出或低出太多。

为了简化速度评估,我们只取备份文件大小并除以备份时间。结果将以“兆字节每秒”为单位。但是,为了将获得的值与其他系统进行比较,需要某种参考测量。

我们以一台普通的台式计算机作为参考,数据库位于由2块SATA3 HDD组成的RAID1上,备份在单独的SATA3 HDD上(该RAID1的顺序读取速度约为180MB/秒,备份HDD约为150MB/秒)。

在这里,31GB数据库的备份大小为21GB,单用户模式(该计算机上无人工作)下的备份耗时18分钟,备份速度为19兆字节每秒。

因此,由于这不是一台强大的服务器,而只是一台台式机(2或3年前组装的),我们可以将此备份速度作为参考,将其视为正常速度,也许也是生产系统允许的最低速度。

接下来,我们分析了我们支持管理下的30台不同服务器的备份速度,这些服务器的备份文件大小不少于5GB。

性能 速度,MB/秒 评论和示例

| 快 | 50-70 | 有一些系统的备份大小从38GB到150GB不等。124GB数据库备份耗时42分钟–这很快。 | | 平均 | 20-50 | 这里的平均速度大约是80GB耗时30-40分钟。这是正常的,我们的台式机显示的结果可能符合这一范围。 | | 慢 | 10-20 | 463GB耗时11小时,80GB耗时2小时,293GB耗时5小时–这很慢,甚至我们的测试台式机都比这快。 | | 极慢 | 低于10 | 这就像8.5GB耗时1小时。非常慢。 |

很明显,在一些被研究的系统上,备份并非在服务器零负载时进行。但无论如何,它是在服务器最小负载时进行的。

为了了解低负载对备份速度的影响程度,我们在同一台台式机上同时运行了2个备份。两者都耗时19分钟,速度为18兆字节每秒。这是单用户备份的93%,对于单个HDD来说下降幅度不大(7%的降级)。如果您使用SSD,即使同时运行3-4个备份,您可能也不会注意到差异。

总的来说,备份速度为20兆字节每秒或更低可能值得关注。

在这种情况下,要么是备份磁盘太慢,而备份应该尽可能快地完成。要么是数据库磁盘太慢,整体系统性能比应有的水平差。

如何提高备份速度

许多人没有以全速使用gbak,有时可以通过单个开关-se service_mgr来提高备份速度,以便使用Firebird引擎内的服务管理器。

快速备份的推荐命令行如下,适用于Firebird 2.5和Firebird 3.0:

gbak -se localhost:service_mgr -b -g -user USERNAME -pass password Disk:\Path\Database.fdb Disk:\Path\backup.fbk

更多关于整体性能的技巧和窍门: