我目前正在从硬盘驱动器上运行的MyISAM InnoDB的SSD上交换我的服务器。
我有一个3,800,000行(16GB)表为基准表。
我的服务器设置:
- Ubuntu的64 +的Nginx + MySQL的5.5 + ...
我想到两两件事,我会测试非常:
- 如何从硬盘到固态硬盘的开关会影响并发
- 如何从的MyISAM InnoDB的开关会影响并发
我有一个关于这两个工具和策略的问题:
- 因为我在并发有兴趣, 我应该用什么工具做测试? 我已经打了围攻 ,我发现它真的很容易玩。 但我认为,应该有充足能更好地满足我的需求更强大的Linux软件的。
- 什么做的测试策略是什么样子? 据我所知,策略的选择可能有,我选择使用该工具的紧密关系。 例如,攻城玩的时候,我需要编写一个执行一些重型的MySQL操作的PHP脚本,把它上传到服务器,通过脚本URL作为参数传递给围困(这是安装在我的本地笔记本电脑),让围城模拟并发流量我。
通用测试是好的,但只有真正的负载会告诉你软件和硬件配置之间的差异。 也许尝试:
- 转储从生产服务器数据库
- 捕获来自生产服务器的所有查询(使用慢查询日志到,long_query_time时间设定= 0)
- 加载数据库到测试配置和它玩慢查询记录(使用PT-LOG-播放器)。
- 再次捕获与long_query_time时间= 0测试服务器的所有查询。
- 用PT-查询消化分析从慢查询日志的结果。
我这里引用从工具Percona的工具包为MySQL(虽然有些工具可能需要的Percona Server中,我不知道)。
需要记住的重要事情时,在Linux中标杆MySQL存储性能的缓存。 我很好奇相同的测试情况下我自己。 它总是有趣,当用户抱怨一个缓慢的查询。 他们打电话给你,然后再次运行才发现自己现在50多分钟的查询,因为查询缓存30秒完成。 始终运行
mysql> reset query cache;
在MySQL当试图优化查询。 这就是说,有一个更SSD相比传统的主轴时步:磁盘缓存。 这很难比较,在OS在自身内存缓存的磁盘访问时间或IOPS。 要清除磁盘高速缓存,运行从shell执行以下操作:
$ sync && sysctl -w vm.drop_caches=3
每个基准查询前运行这些命令将帮助您实现相比7K2 SATA SLOWPOKE你有你的SSD的潜力。 通过运行相同的查询两次,而不必将缓存和观察查询时间验证这一点。 在这一点上,这是一个好主意,尝试一些查询使用和不使用索引,以及一些可能的话加入。 使用EXPLAIN每个查询计划,以验证使用索引。 的索引和数据文件之间读取随机访问将暴露在速度较慢的磁盘瓶颈。 确保您的my.cnf是你的SSD基准和您的盘片之间是一致的。 我测试了一个简单的桌面OCZ SSD上的一些东西,发现查询性能提升10倍左右快,我每分钟7200转的SATA硬盘。 在基于SSD的事务数据库,我会使用OPTIMIZE TABLE频繁的数据库压缩与SSD TRIM合并可能会影响硬盘寿命时要小心。 这是理论上的,虽然,我还没有看到证据支持这一点。
希望这可以帮助! 我不能等待的日子,当磁HDS取代磁带作为备份介质,并发现自己完全被SSD在大多数硬件更换。
SSD的类型和质量产生很大的差别。 如果你有一个繁忙的服务器不使用台式机SATA SSD为MySQL。 你不会得到你认为你会在性能提升。
这里有一些伟大的文章: http://www.mysqlperformanceblog.com/search/innodb+log+file+ssd/