Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  Optimizing Disk I/O

10.12.1 磁盘I/O优化

本节描述了当您可以将更多和更快的存储硬件专门用于数据库服务器时的存储设备配置方法。有关优化InnoDB配置以提高I/O性能的信息,请参阅第10.5.8节,“Optimizing InnoDB Disk I/O”

  • 磁盘寻道是巨大的性能瓶颈。当数据量变得非常大时,有效的缓存变得不可能。在大型数据库中,您可以确定需要至少一个磁盘寻道来读取和几个磁盘寻道来写入数据。为了最小化这个问题,请使用低寻道时间的磁盘。

  • 通过符号链接文件到不同的磁盘或磁盘条带化来增加可用的磁盘轴数(从而减少寻道开销):

    • 使用符号链接

      这意味着,对于MyISAM表,您可以将索引文件和数据文件从数据目录中的通常位置符号链接到另一个磁盘(可能也是条带化的)。这使得寻道和读取时间都变得更好,假设磁盘不用于其他目的。请参阅第10.12.2节,“使用符号链接”

      符号链接不支持用于InnoDB表。然而,可以将InnoDB数据和日志文件放在不同的物理磁盘上。有关更多信息,请参阅第10.5.8节,“Optimizing InnoDB Disk I/O”

    • 条带化

      条带化意味着您有多个磁盘,并将第一个块放在第一个磁盘上,将第二个块放在第二个磁盘上,将第N块放在(N MOD number_of_disks)磁盘上,以此类推。这意味着,如果您的正常数据大小小于条带大小(或完全对齐),您将获得更好的性能。条带化非常依赖于操作系统和条带大小,因此请使用不同的条带大小对应用程序进行基准测试。请参阅第10.13.2节,“使用您自己的基准测试”

      条带化的速度差异非常依赖于参数。根据您设置的条带参数和磁盘数量,您可能会看到数量级的差异。您需要选择优化随机或顺序访问。

  • 为了可靠性,您可能想使用RAID 0+1(条带化加镜像),但是在这种情况下,您需要2 × N磁盘来持有N磁盘的数据。这可能是最好的选择,如果您有足够的钱来投资。但是,您也需要投资一些卷管理软件来高效地处理它。

  • 一个不错的选择是根据数据类型的重要性来选择RAID级别。例如,存储半重要数据的RAID 0磁盘,可以重新生成的数据,而将真正重要的数据,如主机信息和日志,存储在RAID 0+1或RAID N磁盘上。RAID N可能会在写入很多时出现问题,因为需要更新奇偶校验位。

  • 您也可以设置数据库使用的文件系统参数:

    如果您不需要知道文件的最后访问时间(这在数据库服务器上不是非常有用),您可以使用-o noatime选项挂载文件系统。这将跳过文件系统中的最后访问时间更新,从而避免了一些磁盘寻道。

    在许多操作系统上,您可以通过使用-o async选项挂载文件系统来异步更新文件系统。如果您的计算机相当稳定,这应该会提高性能,而不会牺牲太多可靠性。(这个标志在Linux上默认启用。)

使用NFS与MySQL

您应该在考虑使用NFS与MySQL时保持警惕。可能的问题包括:

  • MySQL数据和日志文件被锁定并变得不可用。锁定问题可能出现在多个MySQL实例访问同一个数据目录或MySQL在断电等情况下关闭时。NFS版本4解决了锁定问题,引入了建议锁定和租赁锁定。然而,不建议在多个MySQL实例之间共享数据目录。

  • 由于消息乱序或网络流量丢失引起的数据不一致。要避免这个问题,请使用TCP和hardintr挂载选项。

  • 最大文件大小限制。NFS版本2客户端只能访问文件的最低2GB(signed 32 bit偏移)。NFS版本3客户端支持更大的文件(高达64 bit偏移)。最大支持的文件大小也取决于NFS服务器的本地文件系统。

在专业的SAN环境或其他存储系统中使用NFS往往比在其他环境中使用NFS更可靠。然而,在SAN环境中使用NFS可能比直接附加或总线附加的非旋转存储慢。

如果您选择使用NFS,建议使用NFS版本4或更高,并在生产环境中部署之前彻底测试NFS设置。