XFS、ZFS和ext3这3个文件系统哪个能够与MySQL产生最佳的性能?对此,来自Facebook的资深数据库专家Domas Mituzas给出了自己的解答
来自国外问答SNS网站Quora的一个问题:XFS、ZFS和ext3这3个文件系统哪个能够与MySQL产生最佳的性能?对此,来自Facebook的资深数据库专家Domas Mituzas给出了自己的解答,他认为MySQL最适合XFS文件系统。
在XFS文件系统的Linux版本发布之前,选择适合的Linux文件系统很简单,追求原始性能通常倾向于使用ReiserFS,而重视数据完整性则首 选ext3。XFS Linux版本出现后,这一情况发生了改变。一项比较XFS、ReiserFS和ext3在原始性能方面优劣的测试显示,在大文件操作方面,XFS在所有 测试中一直处于领先地位。
Domas Mituzas分析MySQL数据库系统有几个主要的访问模式,如下:
a)同步读取InnoDB存储引擎页面输入;
b)异步写入InnoDB存储引擎页面输出;
c)同步改写InnoDB存储引擎事务日志;
d)同步添加MySQL数据库二进制日志。
在高性能环境中,重要的是选择一个在以上四种访问模式下都能提高效率的文件系统。如果这是一个读写密集型系统,要求XFS能够有效的刷新页面,就像支持挂起每个索引节点(或文件)的写操作。XFS的元数据效率能够使同步写操作的速度高于其他文件系统。
直到最近,XFS成为唯一的大型Linux文件系统,支持文件对齐。InnoDB数据文件块大小是固定的,条纹边界上对齐可能会增加额外的5%以上的 I/O性能。一般来说,XFS能够使大多数工程支持并行工作负载,多个分配组允许元数据操作的并行方式,而不仅数据。另外,生产系统还有其他的操作问题, 例如如果表文件被使用,想要尽快断开链接,DROP TABLE和其他文件remoavls(如TRUNCATE)才不会使整个操作拖延太久。XFS文件系统是更好的选择。
从中可以看出降 低I/O延迟的方式是使用XFS文件系统,这是生产系统比吞吐量为导向的评测更重要的方式。所以,一般来说实际成本,并行和OLTP访问模式的效率组成更 为重要。评测并不是全部,因为测试结果忽略了I/O延迟,这在生产环境中极其重要。如果你要正确评测 OLTP系统,XFS将是最快的。
最后是为开发者提供的支持。XFS有活跃的开发社区,可以为提供帮助,如果给他们足够好的问题描述。
XFS 最初是由Silicon Graphics,Inc.于90年代初开发的。那时,SGI发现他们的现有文件系统(existing filesystem,EFS)正在迅速变得不适应当时激烈的计算竞争。为解决这个问题,SGI决定设计一种全新的高性能64位文件系统,而不是试图调整 EFS在先天设计上的某些缺陷。这就是XFS文件系统,它至今仍作为SGI基于IRIX的产品( 工作站到超级计算机)的底层文件系统来使用。现在,XFS也可以用于Linux,它为 Linux 社区提供了一种健壮的、优秀的以及功能丰富的文件系统,并且这种文件系统所具有的可伸缩性能够满足最苛刻的存储需求。
XFS的主要特性包括:
数据完全性
采用XFS文件系统,当意想不到的宕机发生后,,首先,由于文件系统开启了日志功能,所以你磁盘上的文件不再会意外宕机而遭到破坏了。不论目前文件系统上存储的文件与数据有多少,文件系统都可以根据所记录的日志在很短的时间内迅速恢复磁盘文件内容。
传输特性
XFS文件系统采用优化算法,日志记录对整体文件操作影响非常小。XFS查询与分配存储空间非常快。xfs文件系统能连续提供快速的反应时间。笔者曾经对XFS、JFS、Ext3、ReiserFS文件系统进行过测试,XFS文件文件系统的性能表现相当出众。
可扩展性
XFS 是一个全64-bit的文件系统,它可以支持上百万T字节的存储空间。对特大文件及小尺寸文件的支持都表现出众,支持特大数量的目录。最大可支持的文件大 小为263 = 9 x 1018 = 9 exabytes,最大文件系统尺寸为18 exabytes。
XFS使用高的表结构(B+树),保证了文件系统可以快速搜索与快速空间分配。XFS能够持续提供高速操作,文件系统的性能不受目录中目录及文件数量的限制。
传输带宽
XFS 能以接近裸设备I/O的性能存储数据。在单个文件系统的测试中,其吞吐量最高可达7GB每秒,对单个文件的读写操作,其吞吐量可达4GB每秒。