首页 文章

奇怪的mysql性能

提问于
浏览
2

我一直在进行一些mysql性能测试,结果非常奇怪 . 我正在运行以下mysql版本的查询:带有innodb-plugin的5.0.91,5.1.52,5.1.52和5.5.7 .

以下是每个版本的查询执行时间:

version            time
------------------------
5.0:               95s
5.1:               122s
5.1 innodb-plugin: 159s
5.5:               127s

我在Windows 2003上测试相同数据(一个表中的50M记录) . 数据库在所有版本上使用InnoDB引擎 .

我不明白MySQL 5.0是如何最快的,innodb-plugin如何产生比不使用时更糟糕的结果以及5.5在性能上如何与5.1如此相似 .

有人碰到这个吗?有人有建议吗?

这是my.ini配置:

  • query_cache_size = 0

  • table_cache = 256

  • tmp_table_size = 2000M

  • thread_cache_size = 32

  • innodb_additional_mem_pool_size = 128M

  • innodb_flush_log_at_trx_commit = 2

  • innodb_log_buffer_size = 4M

  • innodb_buffer_pool_size = 8G

  • innodb_log_file_size = 256M

  • innodb_thread_concurrency = 32

innodb-plugin具体:

  • ignore_builtin_innodb

  • 插件负载= innodb的= ha_innodb_plugin.dll; innodb_trx = ha_innodb_plugin.dll; innodb_locks = ha_innodb_plugin.dll; innodb_lock_waits = ha_innodb_plugin.dll; innodb_cmp = ha_innodb_plugin.dll; innodb_cmp_reset = ha_innodb_plugin.dll; innodb_cmpmem = ha_innodb_plugin.dll; innodb_cmpmem_reset = ha_innodb_plugin .DLL

  • innodb_file_format =梭子鱼

  • innodb_io_capacity = 400

2 回答

  • 2

    这些引擎都是一样的吗? (InnoDB或MyISAM?)是否在这些查询中刷新或使用了缓存?您已经用如此少的细节描述了您的测试,很难开始确定为什么您可能会看到奇怪的结果 .

    也许看一下这里使用的一些方法:Testing performance of queries in mysql

    我还要补充一点,mysql版本中的不同优化可能会导致它们之间的任何单个查询更慢或更快 . 出于这个原因,我通常不会看到依赖于单个查询的测试套件 .

  • 1

    我有一些建议:

    • 对于IO绑定基准测试,在每次测试运行之前,将整个数据从转储装载到服务器 . 然后关闭服务器并再次启动它 . 测试套件中的初始查询需要执行物理IO来读取块 . 后续的将受益于先前的页面进入缓存 .

    • 对于内存绑定基准测试,请执行相同操作,但不要在加载数据后关闭服务器 .

    我当然假设这样一个小的(50M行==小)表适合内存(你的8G缓冲池除以50M行=每行平均170字节) . 如果没有,请修改上述内容 .

    如果您对较新的innodb引擎感兴趣,请务必使用“Barracuda”文件格式(需要在配置文件中设置,在服务器启动时,在创建任何表之前)以利用新功能 . 然后,您可以在启用压缩的情况下进行测试(这将使数据更小,并且至少可以加快IO绑定测试的速度) .

    根据您的应用程序,您可能还想在大 table 上试用它 . 这当然需要更长的时间才能运行(假设加载50M行非常快) .

相关问题