我有一个MySQL数据库,每个表包含数百万行,共有9个表。 数据库完全填充,我所做的只是读取,即没有插入或更新。 数据存储在MyISAM表中。
鉴于这种情况下,哪个Linux文件系统最好? 目前,我有xfs。 但是,我从某个地方看到xfs的阅读performance糟糕。 真的吗? 我应该将数据库转移到ext3文件系统吗?
谢谢
总的来说,最近两个体面的Linux FS都是XFS和EXT4,都是基于扩展的文件系统。
我没有看到两者之间有什么严重的区别,但是两者都比EXT3好得多。
可以做的最好的事情是:
notatime挂载选项) EXPLAIN SELECT ...validation您的索引 如果您对MySQL数据库的性能非常认真,我强烈build议在testing环境中自己做基准testing。 从一个内核版本到另一个内核版本,文件系统的性能可能会有很大的不同,而且select可能很大程度上取决于您的确切工作量
作为一个简单的比较,只需要build立一个与生产系统相同的内核版本的testing服务器,并使用sysbench来对xfs,ext3和ext4进行基准testing。
为了更好地查看,您可以在testing服务器上恢复最近的数据库备份,并创build一些脚本来生成类似于您的工作负载的负载。
而且,每当计划升级生产计算机上的内核时,都应该重新运行基准testing,以确定是否存在回归。 由于在这一点上不能轻松切换文件系统(当然,这取决于您的设置),您至less应确保在升级后性能不会降低。
编辑:
顺便说一下,你可以在MySQL性能博客上find很多很好的build议。
试试MySQLTuner只是想知道你的问题在哪里。 我会想象这是糟糕的索引性能或真正糟糕的caching命中率。 不知道更多信息,可能对于您的数据集太小。
wget mysqltuner.pl (redirect到实际脚本的波兰域名。)
和其他海报一样,我非常怀疑你的磁盘性能或文件系统的select是瓶颈。
实际的数据库有多大? 你提到了数百万行,但是并不是说每行有多大。 如果你不做任何更新,而且这只是一个只读数据库,那么考虑将它加载到内存中(假设它适合并假设你有足够的内存)。