当需要为数据库服务器提供更多、更快的存储硬件时,介绍配置存储设备的方法。有关优化an的信息InnoDB
配置以提高I/O性能,请参见第8.5.8节“优化InnoDB磁盘I/O”.
磁盘寻道是一个巨大的性能瓶颈。当数据量开始变得如此之大,以至于不可能进行有效的缓存时,这个问题就变得更加明显。对于随机访问数据的大型数据库,可以肯定至少需要一个磁盘寻道来读取数据,两个磁盘寻道来写入数据。要尽量减少这个问题,请使用寻道时间较低的磁盘。
通过将文件符号链接到不同的磁盘或将磁盘分条,增加可用磁盘主轴的数量(从而减少寻道开销):
使用符号链接
这意味着,对于
MyISAM
表,将索引文件和数据文件从数据目录中的通常位置符号链接到另一个磁盘(也可以是条带磁盘)。这使得查找和读取时间都更好,假设磁盘不用于其他目的。看到第8.12.2节“使用符号链接”.不支持使用符号链接
InnoDB
表。然而,它是可能的地方InnoDB
数据和日志文件在不同的物理磁盘上。有关更多信息,请参见第8.5.8节“优化InnoDB磁盘I/O”.分条意味着您有许多磁盘,并将第一个块放在第一个磁盘上,第二个块放在第二个磁盘上,然后
N
(上的第一个块
)磁盘,等等。这意味着,如果正常数据大小小于条带大小(或完全对齐),则可以获得更好的性能。分条非常依赖于操作系统和分条大小,因此要使用不同的分条大小对应用程序进行基准测试。看到第8.13.2节“使用自己的基准”.N
国防部number_of_disks
分条的速度差为非常取决于参数。根据您如何设置条带化参数和磁盘数量,您可能会得到以数量级衡量的差异。您必须选择为随机访问或顺序访问进行优化。
为了提高可靠性,您可能希望使用RAID 0+1(分条+镜像),但在本例中,您需要2 ×
N
开车去拿N
驱动器的数据。如果你有钱,这可能是最好的选择。然而,你可能还必须投资一些容量管理软件来有效地处理它。一个好的选择是根据一种数据类型的关键程度来改变RAID级别。例如,将可再生的半重要数据存储在RAID 0硬盘上,而将主机信息、日志等真正重要的数据存储在RAID 0+1或RAID上
N
磁盘。突袭N
如果有很多写操作,由于更新奇偶校验位需要时间,可能会出现问题。您还可以设置数据库使用的文件系统参数:
如果不需要知道最后一次访问文件的时间(这在数据库服务器上并不真正有用),则可以使用
- o减小
选择。这将跳过更新到文件系统上inode的最后访问时间,从而避免了一些磁盘寻址。类挂载文件系统,可以在许多操作系统上设置异步更新的文件系统
- o异步
选择。如果您的计算机相当稳定,这将为您提供更好的性能,而不会牺牲太多的可靠性。(这个标志在Linux上默认是打开的。)
在考虑是否在MySQL中使用NFS时,您应该谨慎。根据操作系统和NFS版本的不同,可能出现的问题包括:
存放在NFS卷上的MySQL数据和日志文件被锁定,无法使用。当多个MySQL实例访问相同的数据目录或MySQL不正确地关闭时(例如,由于停电),可能会发生锁定问题。NFS版本4通过引入咨询和基于租期的锁定来解决底层的锁定问题。但是,不建议在MySQL实例之间共享数据目录。
由于收到的消息顺序混乱或网络流量丢失而导致的数据不一致。为了避免这个问题,使用TCP
硬
而且intr
挂载选项。最大文件大小限制。NFS Version 2客户端只能访问文件中最低的2GB(带符号的32位偏移量)。NFS Version 3客户端支持更大的文件(最多64位偏移量)。支持的最大文件大小也取决于NFS服务器的本地文件系统。
在专业SAN环境或其他存储系统中使用NFS往往比在这种环境之外使用NFS提供更高的可靠性。但是,SAN环境中的NFS可能比直接连接或总线连接的非旋转存储慢。
如果选择使用NFS,建议使用NFS Version 4或更高版本,在将NFS设置部署到生产环境之前,需要对其进行全面测试。