Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SSD上的基准MySQL:工具和策略_Mysql_Sql_Database_Linux - Fatal编程技术网

SSD上的基准MySQL:工具和策略

SSD上的基准MySQL:工具和策略,mysql,sql,database,linux,Mysql,Sql,Database,Linux,我目前正在将我的服务器从硬盘上运行MyISAM切换到SSD上的InnoDB 我有一个3800000行(16GB)表作为基准表 我的服务器设置: Ubuntu 64+Nginx+MySQL 5.5+ 我有两件事要做,我非常想测试: 从硬盘驱动器切换到SSD将如何影响并发性 从MyISAM到InnoDB的切换将如何影响并发性 我对工具和策略都有疑问: 由于我最感兴趣的是并发性,我应该使用什么工具来进行测试?我已经玩过围城,我发现它非常容易玩。但我认为应该有很多功能更强大的linux软件更适

我目前正在将我的服务器从硬盘上运行MyISAM切换到SSD上的InnoDB

我有一个3800000行(16GB)表作为基准表

我的服务器设置:

  • Ubuntu 64+Nginx+MySQL 5.5+
我有两件事要做,我非常想测试:

  • 从硬盘驱动器切换到SSD将如何影响并发性
  • 从MyISAM到InnoDB的切换将如何影响并发性
我对工具和策略都有疑问:

  • 由于我最感兴趣的是并发性,我应该使用什么工具来进行测试?我已经玩过围城,我发现它非常容易玩。但我认为应该有很多功能更强大的linux软件更适合我的需要
  • 测试策略是什么样的?我知道策略的选择可能与我选择使用的工具有密切关系。例如,在玩围城游戏时,我需要编写一个PHP脚本,执行一些繁重的MySQL操作,将其上传到服务器,将脚本URL作为参数传递给围城(安装在我的本地笔记本电脑中),并让围城为我模拟并发流量

一般测试是可以的,但只有真实负载才能告诉您软件和硬件配置之间的差异。也许可以尝试:

  • 从生产服务器转储数据库
  • 从生产服务器捕获所有查询(使用慢速查询日志,将long\u query\u time设置为0)
  • 将数据库加载到测试配置中,并在其上播放慢速查询日志(使用pt log player)
  • 再次从测试服务器捕获所有查询,长查询时间=0
  • 使用pt查询摘要分析慢速查询日志的结果

  • 我在这里引用了MySQL的工具(虽然有些工具可能需要Percona服务器,但我不确定)

    SSD的类型和质量差异很大。如果您的服务器很忙,请不要使用桌面SATA SSD for mysql。你不会得到你认为会得到的性能提升


    这里有一些很棒的文章:

    在Linux中对MySQL存储性能进行基准测试时,需要记住的一件重要事情是缓存。我自己也对同样的测试用例感到好奇。当用户抱怨查询速度慢时,这总是很有趣的。他们会打电话给您并再次运行,结果发现由于查询缓存的原因,50分钟以上的查询现在在30秒内完成。总是开玩笑

    mysql> reset query cache;
    
    在MySQL中尝试优化查询时。也就是说,将SSD与传统主轴进行比较时,还有一个步骤:磁盘缓存。当操作系统单独在内存中缓存磁盘时,很难比较访问时间或IOps。要清除磁盘缓存,请从shell运行以下操作:

    $ sync && sysctl -w vm.drop_caches=3
    
    在每次基准测试查询之前运行这些命令将帮助您认识到SSD相对于7k2 SATA slowpoke的潜力。通过在不刷新缓存和观察查询时间的情况下运行同一查询两次来验证这一点。在这一点上,最好尝试一些带索引和不带索引的查询,以及一些可能的连接。对每个查询使用EXPLAIN PLAN来验证是否使用了索引。在索引和数据文件之间随机读取将暴露较慢磁盘上的瓶颈。确保您的my.cnf在SSD基准测试和磁盘之间保持一致。我在一个简单的桌面OCZ SSD上测试了一些东西,发现查询性能的提高速度大约是我的7200rpm SATA磁盘的10倍。在基于SSD的事务性数据库中,我在使用OPTIMIZE TABLE时会非常小心,因为频繁的数据库压缩和SSD修剪可能会影响磁盘寿命。这只是理论上的,我还没有看到支持这一点的证据


    希望这有帮助!我迫不及待地想,当硬盘取代磁带作为备份介质时,在大多数硬件中都会发现自己完全被SSD所取代。

    16GB/380K行::您的平均行大小>32K。也许你应该重新设计你的数据模型?@wildplasser抱歉应该是3800000。我刚刚更新了我的问题。谢谢你指出这一点!!