MySQL 性能比较测试:MySQL 5.6 GA -vs- MySQL 5.5 已翻译 100%

oschina 投递于 2013/02/07 10:53 (共 5 段, 翻译完成于 02-07)
阅读 23154
收藏 70
7
加载中

MySQL 5.6 GA 发布了,毫无疑问,这是 MySQL 最棒的一个版本。

如果你还不清楚 MySQL 5.6 版本一长串的新特性和改进内容,可以从这里获得了解。

而我这篇文章的主要目的则是性能的测试。

我使用 Sysbench workloads (Read-Only/Read-Write) 来测试。下面是我的测试环境:

硬件配置:

  • 服务器 : 32核 bi-thread (HT) Intel 2300Mhz, 128GB RAM
  • 操作系统 : Oracle Linux 6.2
  • 文件系统 : XFS mounted with "noatime,nodiratime,nobarrier,logbufs=8"
  • MySQL : 5.6-GA, latest 5.5
MySQL 配置:
#--------------------------------------------------
 max_connections = 4000

 key_buffer_size = 200M
 low_priority_updates = 1
 sort_buffer_size = 2097152
 back_log = 1500
 query_cache_type = 0

# files
 innodb_file_per_table
 innodb_log_file_size = 1024M
 innodb_log_files_in_group = 3
 innodb_open_files = 4000
 table_open_cache = 8000
 table_open_cache_instances = 16

# buffers
 innodb_buffer_pool_size = 32000M
 innodb_buffer_pool_instances = 32
 innodb_log_buffer_size = 64M
 join_buffer_size = 32K
 sort_buffer_size = 32K

# tune
 innodb_checksums = 0
 innodb_doublewrite = 0
 innodb_support_xa = 0
 innodb_thread_concurrency = 0
 innodb_flush_log_at_trx_commit = 2
 innodb_flush_method = O_DIRECT
 innodb_max_dirty_pages_pct = 50
 innodb_use_native_aio =1
 innodb_stats_persistent = 1
 innodb_spin_wait_delay = 6 / 96

# perf special
 innodb_adaptive_flushing = 1
 innodb_flush_neighbors = 0
 innodb_read_io_threads = 16
 innodb_write_io_threads = 4
 innodb_io_capacity = 2000
 innodb_purge_threads =1
 innodb_adaptive_hash_index =  1 / 0

# Monitoring
 innodb_monitor_enable = '%'
 performance_schema = ON
 performance_schema_instrument = '%=on'
#--------------------------------------------------
红薯
翻译于 2013/02/07 10:56
7
MySQL 调整:
  • 配置最主要的不同是 AHI (innodb_adaptive_hash_index) 和 Spin Delay (innodb_spin_wait_delay) -- 而其他的部分在这个测试过程中基本上已经足够好了。
  • 关于 AHI 的影响我之前已经写了很多文章。AHI 主要的困境在于“用还是不用”,在很多情况下它可以帮助因为锁导致的堵塞并加快索引的访问,但在高并发的情况下可能会因为其 btr_search_latch 导致 rw锁争用导致的瓶颈
  • 在 MySQL 5.6 中的 Spin Delay 设置需要特别的注意,因为它在管理内部互斥量和 rw 锁争用时扮演非常重要的角色,利用它可能会让你轻松的将性能提升一倍。(你可以通过这里来了解详情,但你应该知道,没有银弹,也没有什么固定的最优值是适合各种不同的环境,这个完全依赖于你的系统负载。因此其默认值跟 MySQL 5.5 一样都是 6)。
  • 因此,在我的测试中,我非常好奇想了解在不同的负载情况下最佳的 AHI 和 Spin Delay 设置的配置对。
  • 接下来要记住 MySQL 5.5 和 5.6 在可伸缩性方面的限制。我在 8、16、32 和 64 核的情况下重新进行测试(64核相当于开启和超线程的32核机器,其他的都没有开启超线程)
红薯
翻译于 2013/02/07 11:22
3

首先向你展示第一个有趣的比较,为了跟我以前的测试保持“兼容性”,我首先测试了 TPS (事务/秒),然后再是 QPS (查询/秒) ,我更喜欢这种方式。

首个测试是经典的 Sysbench OLTP_RO (只读):

Sysbench OLTP_RO:

接下来是同一个 OLTP_RO 测试,但在事务中不进行表的打开和关闭操作 (完整的解释请看 这里 )

Sysbench OLTP_RO-trx :

接下来是 "point-selects" ,这是一种读数据的方式,在以前的 MySQL 5.5 版本表现良好,但在 5.6 仍有一些不同。
红薯
翻译于 2013/02/07 11:03
7
Sysbench OLTP_RO Point-Selects :

这是最痛苦的测试,Simple-Ranges (你可以阅读 此文 了解为什么痛苦和令人沮丧)

Sysbench OLTP_RO Simple-Ranges :


下面是读写测试,这还不是负载最重的读写,但仍可说明问题:

Sysbench OLTP_RW :

TPS 从 256 个并发用户时就开始下降,期待这个有更高的水平。但仍然比 5.5 版本要高出 2 倍,相信我,下一个版本的 MySQL 表现会更好。这个阶段可通过调整 innodb 线程并发设置来得到更稳定和更高性能。
红薯
翻译于 2013/02/07 11:12
7
我很高兴的看到 MySQL 5.6 GA 发布,因为:
  • 这是 MySQL 史上最棒的版本
  • 在高负载下比 MySQL 5.5 快很多
  • 更好的设计
  • 更具可调节性
  • 性能分析更透明
  • 更好的仪表化
  • 这些方式比你以往看到的都要好
  • 包含很多新特性
因此,我唯一的问题是:你什么时候开始测试 MySQL 5.6 并制定数据库移植计划?

待续...

Rgds,
-Dimitri

红薯
翻译于 2013/02/07 11:06
14
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
加载中

评论(36)

vga
vga
我的测试中 发现,5.6 发生死锁 的几率 增大,不知为什么...
此帐号已注销
此帐号已注销

引用来自“nodesky”的评论

mysql 已经商业化,有社区版,确实有钱赚才能发现的更好,mysql威胁不到Oracle, 应用场景不同。

怎么就威胁不到。我所在项目组,一个电信厂商用不起Oracle就用开源的Mysql!
crossmix
crossmix
ada
crossmix
crossmix
ょし,good
taojinhuo
taojinhuo
我还在用5.1, 看来要尽快追赶潮流了
CheckStyle
CheckStyle

引用来自“jun4rui”的评论

开源社区都在抛弃MySQL了,很多著名的Linux发行版都用MariaDB替代MySQL了,今天刚pacman -Syu了一把,发现就把MySQL相关的都删了,换MariaDB了。

Oracle过去对开源界做的事情太令人发指,所以现在所有的开源软件都不看好MySQL的将来,用MariaDB这个开源的MySQL衍生版本来取代是大势所趋,大家换了吧。

MariaDB? 恩,Michael Widenius 和他的投资人都很乐意大家这么想. 这样他们到时候就能再被收购,然后再周而复始..
CheckStyle
CheckStyle

引用来自“stefen”的评论

有长远眼光的人都会清楚把用户量抓在手里远比赚眼前的钱有用。比如遍地盗版的微软,比如免费的客户端很多免费服务的腾讯QQ。结果哪一个都赚的盆满钵盂。只要把用户牢牢抓在手里钱早晚是你的。

你说的情况,适用于消费类软件/产品市场
stefen
stefen
有长远眼光的人都会清楚把用户量抓在手里远比赚眼前的钱有用。比如遍地盗版的微软,比如免费的客户端很多免费服务的腾讯QQ。结果哪一个都赚的盆满钵盂。只要把用户牢牢抓在手里钱早晚是你的。
jun4rui
jun4rui
开源社区都在抛弃MySQL了,很多著名的Linux发行版都用MariaDB替代MySQL了,今天刚pacman -Syu了一把,发现就把MySQL相关的都删了,换MariaDB了。

Oracle过去对开源界做的事情太令人发指,所以现在所有的开源软件都不看好MySQL的将来,用MariaDB这个开源的MySQL衍生版本来取代是大势所趋,大家换了吧。
水牛叔叔
水牛叔叔
改进的这么夸张?
返回顶部
顶部