开源中国

我们不支持 IE 10 及以下版本浏览器

It appears you’re using an unsupported browser

为了获得更好的浏览体验,我们强烈建议您使用较新版本的 Chrome、 Firefox、 Safari 等,或者升级到最新版本的IE浏览器。 如果您使用的是 IE 11 或以上版本,请关闭“兼容性视图”。
MySQL 单查询性能比较的真相 - 技术翻译 - 开源中国社区

MySQL 单查询性能比较的真相 【已翻译100%】

oschina 推荐于 4年前 (共 5 段, 翻译完成于 12-15) 评论 21
收藏  
96

根据morgo的建议suggested by morgo我对 Impact of column types on MySQL JOIN performance一文中提到的查询及数据集做了一些小测试,但是却发现另一个层面的问题:响应时间 (aka MySQL versions). 

The answer

简单的说。作为名优秀的咨询师,这些结论都是有前提的 :-)

The test

查询语句如下:

SELECT *
  FROM a
  JOIN b ON b.a_id = a.id
 WHERE a.id BETWEEN 10000 AND 15000
;

以下所有测试都基于相同的查询语句

MySQL相关的参数设置如下。我还需要考虑 join buffer或是其他的单会话的buffers (read_buffer_size,read_rnd_buffer_size,join_buffer_size)么?

innodb_buffer_pool_size        = 768M
innodb_buffer_pool_instances   = 1
innodb_file_per_table          = 1

The results

The Graph

the_truth.png

petert
 翻译得不错哦!

结论

不要相信基准指标。它们对你特定的工作负荷及纯粹的营销活动来说大多是没有意义的…,包括以上提到的!;-)

数据库供应商(Oracle、MySQL,Percona,MariaDB)主要关注吞吐量和特性。基本上基准指标表述的都是单次查询的性能成本。
Facebook、LinkedIn、Google、Wikpedia、Booking.com、Yahoo!等MySQL用户相比单次查询的性能对吞吐量更感兴趣(我是这么认为的)。但大多数的MySQL用户(95%)不会有吞吐量的问题,但会有查询性能问题(在这我假定对Oracle,DB2,MS-SQL Server,PostgreSQL等也是这样)。

所以数据库供应商的产品主要不是服务于大众,而是为某些特定的用户/客户(他们才可能为之付钱)。

Garfielt
 翻译得不错哦!

让我回到关于数据的讨论:

第一个假设:“过去的时光总是更好”是绝对不正确的。 MySQL的4.0和4.1只是个特例。基于MySQL5.0粗略估计的趋势是:随着时间的推移(新版本)单一的查询性能会变得更差。我想这也适用于其他数据库...

像一些声称:“我们拥有最快的MySQL”或“我们已经聘请了整个优化团队”并不需要反映在单一查询的性能上。至少不会为了某一个特定的查询。

因此,概要的说:如果您升级(MySQL的< - > Percona的< - > MariaDB的),则需要很小心的测试!其中陷阱是不可预测的。较新的MySQL版本或许可以增加你的应用程序的性能。孩子,不要太相信市场。

黄劼
 翻译得不错哦!

一些假象

我们这个小小的测试过程中已经发现了一些假象:

在MySQL 5.0中引入的优化(不是在优化!?!),大大加快单一特定的查询。

MariaDB的5.2和5.3在这个特定的查询表现很糟糕。

我不知道为什么Galera集群已经显示出5.5是最好的那个版本。这不是故意的或操纵的!这结果真是运气不佳。但我喜欢它! :-)

MySQL的5.6在这些查询上似乎有一些问题。可能由Oracle给MySQL带来了太多的改善的原因?(╯‵□′)╯︵┻━┻

Percona版本的5.6这些查询上比普通的MySQL有时会表现更好,但有时候什么Oracle优化使得Percona的速度大幅放缓。因此,显示出特别坏的结果。我不知道为什么。我第一反应是外部的影响。但我有能力重现这种糟搞情况(一次)。所以我认为这一定有什么在Percona的内部(例如AHI?)。

黄劼
 翻译得不错哦!

最后

两国交战不斩来使!

如果您不满意这里已经发布的计算结果想重新计算。或者这里遗漏了什么,烦请告知本人。

如果您对这个结论不认同也请告诉我。我也好温故而知新

今天的这个测试很有趣。我的MyEnv对于这个测试也提供了很多帮助。

如果您需要我们为您做这个测试,请联系我们。我们的咨询团队consulting将非常乐意为您提供各种问题的解答。

petert
 翻译得不错哦!
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们
评论(21)
Ctrl/CMD+Enter

本文论据,仅供参考
占座

引用来自“南湖船老大”的评论

本文论据,仅供参考

你妹,快我2秒
有意思,顶一把。

引用来自“百度下枫桥居”的评论

引用来自“南湖船老大”的评论

本文论据,仅供参考

你妹,快我2秒

两分钟
表示没看懂·····
呵呵呵呵……这种特定的查询其实可以在实现业务的时候去避开它………就像人不会飞一样……可以造飞机飞嘛……
有没有人告诉我那个柱形图的插件是什么,3q

引用来自“孔乙己”的评论

有没有人告诉我那个柱形图的插件是什么,3q

flot
有参考
怎么看,像是MySQL的软文?

引用来自“jefferywu”的评论

@宏哥

宏哥不屑于这种文章

引用来自“zhjx922”的评论

引用来自“百度下枫桥居”的评论

引用来自“南湖船老大”的评论

本文论据,仅供参考

你妹,快我2秒

两分钟

两小时

引用来自“anjero”的评论

引用来自“zhjx922”的评论

引用来自“百度下枫桥居”的评论

引用来自“南湖船老大”的评论

本文论据,仅供参考

你妹,快我2秒

两分钟

两小时

快我 15 分钟

引用来自“vietor”的评论

怎么看,像是MySQL的软文?

MySQL火多少年了,还需要软文?
谁项目中需要一次取出5000条记录,PM直接开除就对了。

引用来自“刘子玄”的评论

引用来自“vietor”的评论

怎么看,像是MySQL的软文?

MySQL火多少年了,还需要软文?

软在:MySQL与MariaDB等衍生版的对比
嗯,这个结果非常有趣. 学习了.
@宏哥 速速现身···
顶部