首页  >  文章  >  数据库  >  [译]InnoDB官方博客:InnoDB Plugin的性能和可伸缩性

[译]InnoDB官方博客:InnoDB Plugin的性能和可伸缩性

WBOY
WBOY原创
2016-06-07 16:32:131262浏览

本文内容遵从CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.penglixun.com/tech/database/plug-in-for-performance-and-scalability.html 原文地址:http://blogs.innodb.com/wp/2009/03/plug-in-for-

本文内容遵从CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.penglixun.com/tech/database/plug-in-for-performance-and-scalability.html

原文地址:http://blogs.innodb.com/wp/2009/03/plug-in-for-performance-and-scalability/

Why should you care about the latest “early adopter” release of the InnoDB Plugin, version 1.0.3? ? One word:?performance! The release introduces these features:
为什么你应该关注最近的InnoDB Plugin 1.0.3版?一个词:性能!这个版本包括了这些特性

  • Enhanced concurrency & scalability: the “Google SMP patch” using atomic instructions for mutexing
  • 增强的并发可可伸缩性:”Google 多处理机 补丁” 为Mutext锁操作使用原子操作
  • More efficient memory allocation: ability to use more scalable platform memory allocator
  • 更有效的内存分配:可以使用更多的可扩展内存 分配器(例如tcmalloc)
  • Improved out-of-the-box scalability: unlimited concurrent thread execution by default
  • 改进的即装即用扩展性:默认无限制的线程并发
  • Dynamic tuning: at run-time, enable or disable insert buffering and adaptive hash indexing
  • 动态优化调整:在运行时,打开或者关闭插入缓 存和自适应哈希索引

These new performance features can yield?up to twice the throughput or more, depending on your workload, platform and other tuning considerations. In another post, we explore some details about these changes, but first, what do these enhancements mean for performance and scalability?
这些新的性能特新可以提升多大两倍甚至更多的的吞吐量,这依赖于你的负载,平台和其他调整事项。在另一篇文章中,我们会探 讨这些改变的一些细节,但首先,我们现探讨这些性能和可扩展性的增强是什么意思,包括哪些内容

In brief, we’ve tested three different workloads (joins, DBT2 OLTP and a modified sysbench) using a memory-resident database. In all cases, the InnoDB Plugin scales significantly better than the built-in InnoDB in MySQL 5.1. And in some cases, the absolute level of performance is dramatically higher too! The charts below illustrate the kinds of performance gains we’ve measured with release 1.0.3 of the InnoDB Plugin. Your mileage may vary, of course. See the?InnoDB website for all the details on these tests.
总之,我们已经使用内存驻留数据库(所有数据都载入在内存中)测试了三种不同的工作负载(关联,DBT2 OLTP和修改过的sysbench)。在所有的情况下,InnoDB Plugin的伸缩性明显优于MySQL 5.1内置的InnoDB。在一些场景中,性能提升的水平高的惊人。下面的图说明了InnoDB Plugin 1.0.3的性能提升。你的测试结果可能不同,当然可以在InnoDB网站看到所有测试的细节。

This release of the InnoDB Plugin incorporates a?patch made by Ben Handy and Mark Callaghan at Google to improve multi-core scalability by using more efficient synchronization methods (mutexing and rw-locks) to reduce cpu utilization and contention. We’re grateful for this contribution, and you will be too!
这个InnoDB Plugin版本包含了Google的Ben Handy和Mark Callaghan的补丁来提升多处理机扩展性,包括使用了更有效的同步机制(Mutexing和RW-Locks)来减少CPU利用和竞争。我们非常感 谢这个补丁的贡献,相信你也是。

Now to our test results …
现在来看我们的测试结果

连接:下图显示了执行连接时的性能提升,比较了 MySQL 中的内置 InnoDB(蓝色)与 InnoDB 插件 1.0.3(红色)。
关联:下图展示了执行Join操作时的性能提升,内置InnoDB(蓝)和InnoDB Plugin 1.0.3(红)的比较。

从上图中的蓝色条可以看出,使用内置InnoDB的MySQL 5.1,系统可以执行的Join总数随着并发用户数的增加而下降。相比之下,InnoDB Plugin 即使只有一个用户,性能也会略有提高,并且随着用户数量的增加而保持性能。这种性能提升很大程度上归功于 InnoDB 插件中使用原子进行互斥。
正如你在上面蓝柱上看到的速度,MySQL 5.1的内置InnoDB,随着并发数的增加系统的执行速度反而恢复了。与此相反,InnoDB Plugin随着并发数的提升处理甚至达到了提高,并且随着用户的增长保持这种性能。这种性能很大程度上是因为对互斥使用了原子操作。

事务处理 (DBT2): 下图展示了使用 OLTP 读/写 DBT2 基准测试的可扩展性改进,再次比较了 MySQL 中内置 InnoDB 的性能与? InnoDB 插件 1.0.3.
事务处理(DBT2):下入展示了用DBT2测试OLTP读写性能的提升,再次比较了内置InnoDB和InnoDB Plugin 1.0.3的性能。

这里,当遇到其他瓶颈或达到系统容量时,InnoDB 插件比内置 InnoDB 可以更好地从 16 个用户扩展到 32 个用户,并在 64 个并发用户下产生约 12% 的吞吐量。这种改进同样主要是由于互斥的变化。
这里,InnoDB Plugin伸缩性在16增加到32线程时表现更好,产生比64线程多大约12%的吞吐量。由于其他性能瓶颈或系统容量达到核心。这个提升仍然主要依赖于Mutexing的改变。

修改的 Sysbench: 此测试使用众所周知的 sysbench 工作负载的一个版本,并根据 Google 的 Mark Callaghan 的建议进行了修改,以包括基于二级索引的查询。
过的sysbench:本次测试使用了著名的sysbench,修改包括基于非主键索引的查询,由Google的Mark Callaghan建议修改。

这次,InnoDB 插件在 8 到 64 个用户的范围内显示出比 MySQL 中内置 InnoDB 更好的可扩展性,在 64 个用户时吞吐量提高了 60%。与前面的示例一样,这种改进很大程度上归功于使用原子进行互斥。
这次,InnoDB Plugin在8~64线程都表现出了明显的内置InnoDB的可伸缩性。在64并发时达到60%的性能提升!像之前的一个例子,这个提升依然主要靠Mutexing的原子性。

使用 tcmalloc 修改的 Sysbench: 此测试使用相同的修改后的 sysbench 工作负载,但显示了内置 InnoDB(使用内部 InnoDB 内存分配器)和 InnoDB 插件在使用更多内存时的差异。可扩展的内存分配器,在本例中是?tcmalloc。
使用 tcmalloc 的修改过的 sysbench:这种测试使用相同的 sysbench 场景,但是中间插入了 InnoDB 或 InnoDB Plugin 使用了 tcmalloc 作为内存分配器。

When the new configuration parameter?innodb_use_sys_malloc is set to enable use of the memory allocator tcmalloc, the InnoDB Plugin really shines! Transaction throughput continues to scale, and the actual throughput with 64 users has nearly doubled!
当设置innodb_user_sys_malloc变量为tcmalloc作为内存分配器时,InnoDB Plugin依然是亮点!事务吞吐量继续扩展,在64并发时吞吐量提升接近1倍(相对没有tcmalloc的)。

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn