{"id":4240,"date":"2014-12-26T09:18:38","date_gmt":"2014-12-26T08:18:38","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/mysql-versions-performance-comparison\/"},"modified":"2014-12-26T09:18:38","modified_gmt":"2014-12-26T08:18:38","slug":"mysql-versions-performance-comparison","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/mysql-versions-performance-comparison\/","title":{"rendered":"MySQL versions performance comparison"},"content":{"rendered":"<p>This blog aims to make a performance comparison between the different MySQL versions\/editions and also comparing the differents MySQL forks such as Percona Server and MariaDB.\u00a0 Indeed number of improvements as been done to innodb storage engine in the last MySQL versions. You can find below some of the performance improvements applied to InnoDB these last years (non exhaustive list):<\/p>\n<h2>MySQL 5.0<\/h2>\n<p>1. New compact storage format which can save up to 20% of the disk space required in previous MySQL\/InnoDB versions.<br \/>\n2. Faster recovery from a failed or aborted ALTER TABLE.<br \/>\n3. Faster implementation of TRUNCATE TABLE.<\/p>\n<h2>MySQL 5.5<\/h2>\n<p>1. MySQL Enterprise Thread Pool, As of MySQL 5.5.16, MySQL Enterprise Edition distributions include a thread pool plugin that provides an alternative thread-handling model designed to reduce overhead and improve performance.<br \/>\n2. Changes to the InnoDB I\/O subsystem enable more effective use of available I\/O capacity. The changes also provide more control over configuration of the I\/O subsystem.<\/p>\n<h2>MySQL 5.6<\/h2>\n<p>1. Improvements to the algorithms for adaptive flushing make I\/O operations more efficient and consistent under a variety of workloads. The new algorithm and default configuration values are expected to improve performance and concurrency for most users. Advanced users can fine-tune their I\/O responsiveness through several configuration options.<br \/>\n2. InnoDB has several internal performance enhancements, including reducing contention by splitting the kernel mutex, moving flushing operations from the main thread to a separate thread, enabling multiple purge threads, and reducing contention for the buffer pool on large-memory systems.<br \/>\n3. You can now set the InnoDB page size for uncompressed tables to 8KB or 4KB, as an alternative to the default 16KB. This setting is controlled by the innodb_page_size configuration option. You specify the size when creating the MySQL instance. All InnoDB tablespaces within an instance share the same page size. Smaller page sizes can help to avoid redundant or inefficient I\/O for certain combinations of workload and storage devices, particularly SSD devices with small block sizes.<\/p>\n<h2>MySQL 5.7<\/h2>\n<p>1. In MySQL 5.7.2, InnoDB buffer pool dump and load operations are enhanced. A new system variable, innodb_buffer_pool_dump_pct, allows you to specify the percentage of most recently used pages in each buffer pool to read out and dump. When there is other I\/O activity being performed by InnoDB background tasks, InnoDB attempts to limit the number of buffer pool load operations per second using the innodb_io_capacity setting.<\/p>\n<p>2. As of MySQL 5.7.4, InnoDB supports multiple page cleaner threads for flushing dirty pages from buffer pool instances. A new system variable, innodb_page_cleaners, is used to specify the number of page cleaner threads. The default value of 1 maintains the pre-MySQL 5.7.4 configuration in which there is a single page cleaner thread. This enhancement builds on work completed in MySQL 5.6, which introduced a single page cleaner thread to offload buffer pool flushing work from the InnoDB master thread.<\/p>\n<p>You can find an exhaustive performance improvement list on:<\/p>\n<p><a href=\"http:\/\/dev.mysql.com\/doc\/refman\/5.1\/en\/mysql-nutshell.html\" target=\"_blank\">http:\/\/dev.mysql.com\/doc\/refman\/5.1\/en\/mysql-nutshell.html<\/a><\/p>\n<p><a href=\"http:\/\/dev.mysql.com\/doc\/refman\/5.5\/en\/mysql-nutshell.html\" target=\"_blank\">http:\/\/dev.mysql.com\/doc\/refman\/5.5\/en\/mysql-nutshell.html<\/a><\/p>\n<p><a href=\"http:\/\/dev.mysql.com\/doc\/refman\/5.6\/en\/mysql-nutshell.html\" target=\"_blank\">http:\/\/dev.mysql.com\/doc\/refman\/5.6\/en\/mysql-nutshell.html<\/a><\/p>\n<p><a href=\"http:\/\/dev.mysql.com\/doc\/refman\/5.7\/en\/mysql-nutshell.html\" target=\"_blank\">http:\/\/dev.mysql.com\/doc\/refman\/5.7\/en\/mysql-nutshell.html<\/a><\/p>\n<h4><\/h4>\n<h2>Test limitations<\/h2>\n<p>This test won&#8217;t take into consideration all new possible optimizations provided through new variables and functionnalities. The aim of this one is simply to demonstrate the performance improvement with a non optimized but consistent configuration. In this context, a limited set of variables available in all MySQL versions (since version 5.0) have been set up.<\/p>\n<p>This test is obvisously not representative of your own environnement (hardware, queries, database schema, storage engine, data type, etc..). Therefore you probably won&#8217;t have the same performance behavior.<\/p>\n<h2>MySQL performance test<\/h2>\n<h3>Hardware configuration<\/h3>\n<p>This test has been done with sysbench 0.5, it has been run on a laptop equiped with a Processor Intel(R) Core(TM) i7-4700MQ CPU @ 2.40GH and 16Go RAM. The data are stored on a Samsung SSD 840 PRO Series.<\/p>\n<h3>First step: Installation<\/h3>\n<p>The first step consists in installing several different MySQL versions. Thanks to mysql_multi I&#8217;ve been able to run the following versions in parallel:<\/p>\n<table style=\"width: 643px;\" cellspacing=\"0\" cellpadding=\"4\">\n<colgroup>\n<col width=\"119\" \/>\n<col width=\"120\" \/>\n<col width=\"121\" \/>\n<col width=\"120\" \/>\n<col width=\"120\" \/> <\/colgroup>\n<tbody>\n<tr valign=\"top\">\n<td style=\"border-width: 1px medium 1px 1px; border-style: solid none solid solid; border-color: #000000 -moz-use-text-color #000000 #000000; padding: 0.04in 0in 0.04in 0.04in;\" width=\"119\">\n<p class=\"western\"><strong>Editor\/Provider<\/strong><\/p>\n<\/td>\n<td style=\"border-width: 1px medium 1px 1px; border-style: solid none solid solid; border-color: #000000 -moz-use-text-color #000000 #000000; padding: 0.04in 0in 0.04in 0.04in;\" width=\"120\">\n<p class=\"western\"><strong>MySQL Server<\/strong><\/p>\n<\/td>\n<td style=\"border-width: 1px medium 1px 1px; border-style: solid none solid solid; border-color: #000000 -moz-use-text-color #000000 #000000; padding: 0.04in 0in 0.04in 0.04in;\" width=\"121\">\n<p class=\"western\"><strong>Version<\/strong><\/p>\n<\/td>\n<td style=\"border-width: 1px medium 1px 1px; border-style: solid none solid solid; border-color: #000000 -moz-use-text-color #000000 #000000; padding: 0.04in 0in 0.04in 0.04in;\" width=\"120\">\n<p class=\"western\"><strong>Port<\/strong><\/p>\n<\/td>\n<td style=\"border: 1px solid #000000; padding: 0.04in;\" width=\"120\">\n<p class=\"western\"><strong>Edition<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr valign=\"top\">\n<td style=\"border-width: medium medium 1px 1px; border-style: none none solid solid; border-color: -moz-use-text-color -moz-use-text-color #000000 #000000; padding: 0in 0in 0.04in 0.04in;\" width=\"119\">\n<p class=\"western\">Oracle<\/p>\n<\/td>\n<td style=\"border-width: medium medium 1px 1px; border-style: none none solid solid; border-color: -moz-use-text-color -moz-use-text-color #000000 #000000; padding: 0in 0in 0.04in 0.04in;\" width=\"120\">\n<p class=\"western\">mysqld1<\/p>\n<\/td>\n<td style=\"border-width: medium medium 1px 1px; border-style: none none solid solid; border-color: -moz-use-text-color -moz-use-text-color #000000 #000000; padding: 0in 0in 0.04in 0.04in;\" width=\"121\">\n<p class=\"western\">5.0.15<\/p>\n<\/td>\n<td style=\"border-width: medium medium 1px 1px; border-style: none none solid solid; border-color: -moz-use-text-color -moz-use-text-color #000000 #000000; padding: 0in 0in 0.04in 0.04in;\" width=\"120\">\n<p class=\"western\">33001<\/p>\n<\/td>\n<td style=\"border-width: medium 1px 1px; border-style: none solid solid; border-color: -moz-use-text-color #000000 #000000; padding: 0in 0.04in 0.04in;\" width=\"120\">\n<p class=\"western\">Community Edition<\/p>\n<\/td>\n<\/tr>\n<tr valign=\"top\">\n<td style=\"border-width: medium medium 1px 1px; border-style: none none solid solid; border-color: -moz-use-text-color -moz-use-text-color #000000 #000000; padding: 0in 0in 0.04in 0.04in;\" width=\"119\">\n<p class=\"western\">Oracle<\/p>\n<\/td>\n<td style=\"border-width: medium medium 1px 1px; border-style: none none solid solid; border-color: -moz-use-text-color -moz-use-text-color #000000 #000000; padding: 0in 0in 0.04in 0.04in;\" width=\"120\">\n<p class=\"western\">mysqld2<\/p>\n<\/td>\n<td style=\"border-width: medium medium 1px 1px; border-style: none none solid solid; border-color: -moz-use-text-color -moz-use-text-color #000000 #000000; padding: 0in 0in 0.04in 0.04in;\" width=\"121\">\n<p class=\"western\">5.1.73<\/p>\n<\/td>\n<td style=\"border-width: medium medium 1px 1px; border-style: none none solid solid; border-color: -moz-use-text-color -moz-use-text-color #000000 #000000; padding: 0in 0in 0.04in 0.04in;\" width=\"120\">\n<p class=\"western\">33002<\/p>\n<\/td>\n<td style=\"border-width: medium 1px 1px; border-style: none solid solid; border-color: -moz-use-text-color #000000 #000000; padding: 0in 0.04in 0.04in;\" width=\"120\">\n<p class=\"western\">Community Edition<\/p>\n<\/td>\n<\/tr>\n<tr valign=\"top\">\n<td style=\"border-width: medium medium 1px 1px; border-style: none none solid solid; border-color: -moz-use-text-color -moz-use-text-color #000000 #000000; padding: 0in 0in 0.04in 0.04in;\" width=\"119\">\n<p class=\"western\">Oracle<\/p>\n<\/td>\n<td style=\"border-width: medium medium 1px 1px; border-style: none none solid solid; border-color: -moz-use-text-color -moz-use-text-color #000000 #000000; padding: 0in 0in 0.04in 0.04in;\" width=\"120\">\n<p class=\"western\">mysqld3<\/p>\n<\/td>\n<td style=\"border-width: medium medium 1px 1px; border-style: none none solid solid; border-color: -moz-use-text-color -moz-use-text-color #000000 #000000; padding: 0in 0in 0.04in 0.04in;\" width=\"121\">\n<p class=\"western\">5.5.39<\/p>\n<\/td>\n<td style=\"border-width: medium medium 1px 1px; border-style: none none solid solid; border-color: -moz-use-text-color -moz-use-text-color #000000 #000000; padding: 0in 0in 0.04in 0.04in;\" width=\"120\">\n<p class=\"western\">33003<\/p>\n<\/td>\n<td style=\"border-width: medium 1px 1px; border-style: none solid solid; border-color: -moz-use-text-color #000000 #000000; padding: 0in 0.04in 0.04in;\" width=\"120\">\n<p class=\"western\">Community Edition<\/p>\n<\/td>\n<\/tr>\n<tr valign=\"top\">\n<td style=\"border-width: medium medium 1px 1px; border-style: none none solid solid; border-color: -moz-use-text-color -moz-use-text-color #000000 #000000; padding: 0in 0in 0.04in 0.04in;\" width=\"119\" height=\"22\">\n<p class=\"western\">Oracle<\/p>\n<\/td>\n<td style=\"border-width: medium medium 1px 1px; border-style: none none solid solid; border-color: -moz-use-text-color -moz-use-text-color #000000 #000000; padding: 0in 0in 0.04in 0.04in;\" width=\"120\">\n<p class=\"western\">mysqld4<\/p>\n<\/td>\n<td style=\"border-width: medium medium 1px 1px; border-style: none none solid solid; border-color: -moz-use-text-color -moz-use-text-color #000000 #000000; padding: 0in 0in 0.04in 0.04in;\" width=\"121\">\n<p class=\"western\">5.6.20<\/p>\n<\/td>\n<td style=\"border-width: medium medium 1px 1px; border-style: none none solid solid; border-color: -moz-use-text-color -moz-use-text-color #000000 #000000; padding: 0in 0in 0.04in 0.04in;\" width=\"120\">\n<p class=\"western\">33004<\/p>\n<\/td>\n<td style=\"border-width: medium 1px 1px; border-style: none solid solid; border-color: -moz-use-text-color #000000 #000000; padding: 0in 0.04in 0.04in;\" width=\"120\">\n<p class=\"western\">Community Edition<\/p>\n<\/td>\n<\/tr>\n<tr valign=\"top\">\n<td style=\"border-width: medium medium 1px 1px; border-style: none none solid solid; border-color: -moz-use-text-color -moz-use-text-color #000000 #000000; padding: 0in 0in 0.04in 0.04in;\" width=\"119\" height=\"22\">\n<p class=\"western\">Oracle<\/p>\n<\/td>\n<td style=\"border-width: medium medium 1px 1px; border-style: none none solid solid; border-color: -moz-use-text-color -moz-use-text-color #000000 #000000; padding: 0in 0in 0.04in 0.04in;\" width=\"120\">\n<p class=\"western\">mysqld5<\/p>\n<\/td>\n<td style=\"border-width: medium medium 1px 1px; border-style: none none solid solid; border-color: -moz-use-text-color -moz-use-text-color #000000 #000000; padding: 0in 0in 0.04in 0.04in;\" width=\"121\">\n<p class=\"western\">5.7.4<\/p>\n<\/td>\n<td style=\"border-width: medium medium 1px 1px; border-style: none none solid solid; border-color: -moz-use-text-color -moz-use-text-color #000000 #000000; padding: 0in 0in 0.04in 0.04in;\" width=\"120\">\n<p class=\"western\">33005<\/p>\n<\/td>\n<td style=\"border-width: medium 1px 1px; border-style: none solid solid; border-color: -moz-use-text-color #000000 #000000; padding: 0in 0.04in 0.04in;\" width=\"120\">\n<p class=\"western\">Community Edition<\/p>\n<\/td>\n<\/tr>\n<tr valign=\"top\">\n<td style=\"border-width: medium medium 1px 1px; border-style: none none solid solid; border-color: -moz-use-text-color -moz-use-text-color #000000 #000000; padding: 0in 0in 0.04in 0.04in;\" width=\"119\" height=\"22\">\n<p class=\"western\">Oracle<\/p>\n<\/td>\n<td style=\"border-width: medium medium 1px 1px; border-style: none none solid solid; border-color: -moz-use-text-color -moz-use-text-color #000000 #000000; padding: 0in 0in 0.04in 0.04in;\" width=\"120\">\n<p class=\"western\">mysqld6<\/p>\n<\/td>\n<td style=\"border-width: medium medium 1px 1px; border-style: none none solid solid; border-color: -moz-use-text-color -moz-use-text-color #000000 #000000; padding: 0in 0in 0.04in 0.04in;\" width=\"121\">\n<p class=\"western\">5.6.21<\/p>\n<\/td>\n<td style=\"border-width: medium medium 1px 1px; border-style: none none solid solid; border-color: -moz-use-text-color -moz-use-text-color #000000 #000000; padding: 0in 0in 0.04in 0.04in;\" width=\"120\">\n<p class=\"western\">33006<\/p>\n<\/td>\n<td style=\"border-width: medium 1px 1px; border-style: none solid solid; border-color: -moz-use-text-color #000000 #000000; padding: 0in 0.04in 0.04in;\" width=\"120\">\n<p class=\"western\">Enterprise Edition<\/p>\n<\/td>\n<\/tr>\n<tr valign=\"top\">\n<td style=\"border-width: medium medium 1px 1px; border-style: none none solid solid; border-color: -moz-use-text-color -moz-use-text-color #000000 #000000; padding: 0in 0in 0.04in 0.04in;\" width=\"119\" height=\"22\">\n<p class=\"western\">Percona<\/p>\n<\/td>\n<td style=\"border-width: medium medium 1px 1px; border-style: none none solid solid; border-color: -moz-use-text-color -moz-use-text-color #000000 #000000; padding: 0in 0in 0.04in 0.04in;\" width=\"120\">\n<p class=\"western\">mysqld7<\/p>\n<\/td>\n<td style=\"border-width: medium medium 1px 1px; border-style: none none solid solid; border-color: -moz-use-text-color -moz-use-text-color #000000 #000000; padding: 0in 0in 0.04in 0.04in;\" width=\"121\">\n<p class=\"western\">5.6.20<\/p>\n<\/td>\n<td style=\"border-width: medium medium 1px 1px; border-style: none none solid solid; border-color: -moz-use-text-color -moz-use-text-color #000000 #000000; padding: 0in 0in 0.04in 0.04in;\" width=\"120\">\n<p class=\"western\">33007<\/p>\n<\/td>\n<td style=\"border-width: medium 1px 1px; border-style: none solid solid; border-color: -moz-use-text-color #000000 #000000; padding: 0in 0.04in 0.04in;\" width=\"120\">\n<p class=\"western\">N\/A<\/p>\n<\/td>\n<\/tr>\n<tr valign=\"top\">\n<td style=\"border-width: medium medium 1px 1px; border-style: none none solid solid; border-color: -moz-use-text-color -moz-use-text-color #000000 #000000; padding: 0in 0in 0.04in 0.04in;\" width=\"119\" height=\"21\">\n<p class=\"western\">Mariadb<\/p>\n<\/td>\n<td style=\"border-width: medium medium 1px 1px; border-style: none none solid solid; border-color: -moz-use-text-color -moz-use-text-color #000000 #000000; padding: 0in 0in 0.04in 0.04in;\" width=\"120\">\n<p class=\"western\">mysqld8<\/p>\n<\/td>\n<td style=\"border-width: medium medium 1px 1px; border-style: none none solid solid; border-color: -moz-use-text-color -moz-use-text-color #000000 #000000; padding: 0in 0in 0.04in 0.04in;\" width=\"121\">\n<p class=\"western\">10.0.15<\/p>\n<\/td>\n<td style=\"border-width: medium medium 1px 1px; border-style: none none solid solid; border-color: -moz-use-text-color -moz-use-text-color #000000 #000000; padding: 0in 0in 0.04in 0.04in;\" width=\"120\">\n<p class=\"western\">33008<\/p>\n<\/td>\n<td style=\"border-width: medium 1px 1px; border-style: none solid solid; border-color: -moz-use-text-color #000000 #000000; padding: 0in 0.04in 0.04in;\" width=\"120\">\n<p class=\"western\">N\/A<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>These servers have been setup with the same settings. However depending on the MySQL version, the default MySQL settings are different. For instance, on MySQL 5.0.15 the default value for global variable innodb_buffer_pool_size is 8388608 wheras on MySQL 5.1.73 the default value is 134217728. The default MySQL version settings have not been changed.<\/p>\n<p>The only variables which have been set up are the following:<\/p>\n<ul>\n<li>max_connections = 8000<\/li>\n<li>table_open_cache=8000<\/li>\n<li>open_files_limit = 8192<\/li>\n<\/ul>\n<p><strong>max_connections<\/strong>: The maximum permitted number of simultaneous client connections<br \/>\n<strong>table_open_cache<\/strong>: (or table_cache): The number of open tables for all threads:<br \/>\n<strong>open_files_limit<\/strong>: The number of files that the operating system permits mysqld to open. The value of this variable at runtime is the real value permitted by the system and might be different from the value you specify at server startup.<\/p>\n<p>The OFA (Optimal Flexible Architecture) directory structure has been used to install the MySQL Servers.<\/p>\n<p>You can find below an example of this structure:<\/p>\n<p>port\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = 33001<br \/>\nmysqladmin\u00a0\u00a0\u00a0\u00a0 = \/u00\/app\/mysql\/product\/mysql-5.0.15\/bin\/mysqladmin<br \/>\nmysqld\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = \/u00\/app\/mysql\/product\/mysql-5.0.15\/bin\/mysqld<br \/>\nsocket\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = \/u00\/app\/mysql\/admin\/mysqld1\/socket\/mysqld1.sock<br \/>\npid-file\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = \/u00\/app\/mysql\/admin\/mysqld1\/socket\/mysqld1.pid<br \/>\nlog-error\u00a0\u00a0\u00a0\u00a0\u00a0 = \/u00\/app\/mysql\/admin\/mysqld1\/log\/mysqld1.err<br \/>\ndatadir\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = \/u01\/mysqldata\/mysqld1<br \/>\nbasedir\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 = \/u00\/app\/mysql\/product\/mysql-5.0.15<\/p>\n<h3>Second step: Test preparation<\/h3>\n<p>Once all MySQL Server installed and running, the second step is to prepare the table containing the records where the queries will be performed. In this test I decided to create only one table. This one is automatically named sbtest1 by sysbench. Notice that it is possible to create several tables by using \u201coltp-table-count\u201d parameter.<\/p>\n<p>The number of rows in this table is specified by the parameter \u201coltp-table-size\u201d. This test table will contain 20&#8217;000&#8217;000 rows. The test mode is OLTP. According to sysbench documentation, this test mode was written to benchmark a real database performance.<\/p>\n<p>At the prepare stage the following table is created:<\/p>\n<p><code><br \/>\nmysql&gt; desc sbtest1;<br \/>\n+-------+------------------+------+-----+---------+----------------+<br \/>\n| Field | Type\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | Null | Key | Default | Extra\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<br \/>\n+-------+------------------+------+-----+---------+----------------+<br \/>\n| id\u00a0\u00a0\u00a0 | int(10) unsigned | NO\u00a0\u00a0 | PRI | NULL\u00a0\u00a0\u00a0 | auto_increment |<br \/>\n| k\u00a0\u00a0\u00a0\u00a0 | int(10) unsigned | NO\u00a0\u00a0 | MUL | 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<br \/>\n| c\u00a0\u00a0\u00a0\u00a0 | char(120)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | NO\u00a0\u00a0 |\u00a0\u00a0\u00a0\u00a0 |\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<br \/>\n| pad\u00a0\u00a0 | char(60)\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | NO\u00a0\u00a0 |\u00a0\u00a0\u00a0\u00a0 |\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<br \/>\n+-------+------------------+------+-----+---------+----------------+<\/code><br \/>\nEach record contains random strings in the fields c and pad and random integers between 1 and oltp-table-size in the field k as presented in the following picture:<\/p>\n<p><a class=\"easyblog-thumb-preview\" title=\"sbtest.png\" href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/sbtest.png\"><img decoding=\"async\" title=\"sbtest.png\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/sbtest.png\" alt=\"sbtest.png\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Sysbench prepare script:<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">sysbench \n--db-driver=mysql \n--mysql-table-engine=innodb \n--oltp-table-size=20000000 \n--mysql-socket=\/u00\/app\/mysql\/admin\/mysqld1\/socket\/mysqld1.sock \n--mysql-port=33301 \n--mysql-db=sysbench \n--mysql-user=sbtest \n--mysql-password=sbtest \n--test=\/home\/mysql\/sysbench\/oltp.lua \nprepare<\/pre>\n<p>In order to be sure to have the same set of data on each server a MySQL dump has been done on the server after the first load. This dump has been imported on each server.<\/p>\n<h3>Third step: Running the test<\/h3>\n<p>The test has been run with different number of threads in order to understand how the different version\/edition and fork of MySQL scale depending on the number of threads. The parameter max-request limits the total number of requests. The OLTP test mode (oltp.lua) has been written to improve performance&#8217;s benchmarking of database servers by providing a realistic scenario of an OLTP database.<\/p>\n<p>&nbsp;<\/p>\n<p><code>sysbench<br \/>\n--db-driver=mysql<br \/>\n--test=oltp<br \/>\n--num-threads=1<br \/>\n--mysql-user=sbtest<br \/>\n--mysql-password=sbtest<br \/>\n--mysql-db=sysbench<br \/>\n--max-requests=10000<br \/>\n--oltp-test-mode=complex<br \/>\n--test=\/home\/mysql\/sysbench\/oltp.lua<br \/>\n--mysql-socket=\/u00\/app\/mysql\/admin\/mysqld1\/socket\/mysqld1.sock<br \/>\n--oltp-table-name=sbtest1<br \/>\nrun<\/code><\/p>\n<p>&nbsp;<\/p>\n<p>In order to ensure correct results, avoiding any side effects due to external process and ensuring consistent results over time, the benchmark has been run twice.<\/p>\n<h3>Fourth step: Collecting results<\/h3>\n<p>All the results have been collected in an excel sheet and the following graph directly comes from these results:<\/p>\n<p><a class=\"easyblog-thumb-preview\" title=\"MySQLPerformanceComparison_20141226-105949_1.png\" href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/MySQLPerformanceComparison_20141226-105949_1.png\"><img decoding=\"async\" title=\"MySQLPerformanceComparison_20141226-105949_1.png\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/MySQLPerformanceComparison_20141226-105949_1.png\" alt=\"MySQLPerformanceComparison_20141226-105949_1.png\" \/><\/a><\/p>\n<p>System Summary (MySQL 5.6.21 and Percona 5.6.21 are configured with Thread pool enabled):<\/p>\n<p><a title=\"Screenshot-from-2015-01-27-194843.png\" href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Screenshot-from-2015-01-27-194843.png\"><img decoding=\"async\" title=\"Screenshot-from-2015-01-27-194843.png\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Screenshot-from-2015-01-27-194843.png\" alt=\"Screenshot-from-2015-01-27-194843.png\" \/><\/a><\/p>\n<p>disk Total KB\/s:<\/p>\n<p><a class=\"easyblog-thumb-preview\" title=\"disk.png\" href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/disk.png\"><img decoding=\"async\" title=\"disk.png\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/disk.png\" alt=\"disk.png\" \/><\/a><\/p>\n<h3>Fifth step: results analysis<\/h3>\n<p>1. innodb has been improved over time in regards of scalability and the tests results tempt to proove that. The performance with 64 threads are radically different depending on the MySQL Version:<\/p>\n<p>MySQL 5.0.15 \u2013 1237 tps<br \/>\nMySQL 5.1.73 \u2013 1818 tps<br \/>\nMySQL 5.5.39 &#8211;\u00a0 2978 tps<br \/>\nMySQL 5.6.20 \u2013 2801 tps<br \/>\nMySQL 5.6.21 \u2013 2830 tps<br \/>\nMySQL 5.7.4 \u2013 2725 tps<br \/>\nPercona 5.6.21 \u2013 2853 tps<br \/>\nMariadb 10.0.15 \u2013 2941 tps<\/p>\n<p>2. For application using only one thread the peformance between MySQL version (with default settings) is more or less equivalent (+\/-10%):<\/p>\n<p>MySQL 5.0.15 \u2013 163 tps<br \/>\nMySQL 5.1.73 \u2013 158 tps<br \/>\nMySQL 5.5.39 &#8211;\u00a0 150 tps<br \/>\nMySQL 5.6.20 \u2013 145 tps<br \/>\nMySQL 5.6.21 \u2013 149 tps<br \/>\nMySQL 5.7.4 \u2013 145 tps<br \/>\nPercona 5.6.21 \u2013 145 tps<br \/>\nMariadb 10.0.15 \u2013 143 tps<\/p>\n<p>3. For large number of threads it definitively worth to use pool of threads plugin from Percona. During these tests a improvement factor of x30 has been observed. Unfortunately I didn&#8217;t see any performance improvement with MySQL 5.6.21 with the thread_pool plugin and thread_pool_size parameter set to 36 ( Best performances with Sysbench according to <a href=\"http:\/\/dev.mysql.com\/doc\/refman\/5.6\/en\/thread-pool-tuning.html\" target=\"_blank\">http:\/\/dev.mysql.com\/doc\/refman\/5.6\/en\/thread-pool-tuning.html<\/a>) . Regarding Percona I set up the parameter thread_pool_high_prio_mode to transactions. You can find below the results with 4096 thread:<\/p>\n<p>MySQL 5.0.15 \u2013 error<br \/>\nMySQL 5.1.73 \u2013 3.97 tps<br \/>\nMySQL 5.5.39 &#8211;\u00a0 9.05 tps<br \/>\nMySQL 5.6.20 \u2013 9.29 tps<br \/>\nMySQL 5.6.21 \u2013 9.07 tps<br \/>\nMySQL 5.6.21 pool of thread plugin \u2013 8.75<br \/>\nMySQL 5.7.4 \u2013 5.64 tps<br \/>\nPercona 5.6.21 \u2013 9.83 tps<br \/>\nPercona 5.6.21 pool of thread plugin \u2013 295.4 tps<br \/>\nMariadb 10.0.15 \u2013 8.04 tps<\/p>\n<p>It is interesting to notice that performance degradation can occur with the thread pool plugin activated for MySQL and for Percona. This performance degradation has been observed for a number of thread between 16 and 128 for Percona and 32 and 512 with MySQL.<\/p>\n<h2>Conclusion<\/h2>\n<p>These results tempt to prove that last MySQL releases perform better than older ones especially with several threads (64 threads in this case). The only exception is MySQL 5.7.4 which is a development release.<br \/>\nApplications using only one thread won&#8217;t benefit from a huge performance improvement with the last MySQL versions. However enhancements provided in last versions such as ONLINE DDL, faster deadlock detection, dynamic innodb_buffer_pool_size parameter, etc, etc.. will for sure save you lots of time.<br \/>\nMySQL forks such as Percona and MariaDB, perform as MySQL Server. In addition I didn&#8217;t observe any performance difference between MySQL Enterprise Edition and MySQL Community Edition. It is interesting to notice that thread pool plugin provided by Percona provide a huge performance improvement with large number of threads compared to standard behavior.<br \/>\nRegarding MySQL Enterprise Edition I haven&#8217;t been able to see any performance improvement with MySQL Thread Pool plugin activated even with large number of threads. This is perhaps due to a misconfiguration from my side&#8230; however I presented these results to an Oracle MySQL specialist present on the Oracle UKOUG booth and he hasn&#8217;t been able to find any error in my configuration.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This blog aims to make a performance comparison between the different MySQL versions\/editions and also comparing the differents MySQL forks such as Percona Server and MariaDB.\u00a0 Indeed number of improvements as been done to innodb storage engine in the last MySQL versions. You can find below some of the performance improvements applied to InnoDB these [&hellip;]<\/p>\n","protected":false},"author":10,"featured_media":4241,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[197],"tags":[144,67],"type_dbi":[],"class_list":["post-4240","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-application-integration-middleware","tag-mysql","tag-performance"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>MySQL versions performance comparison - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/mysql-versions-performance-comparison\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"MySQL versions performance comparison\" \/>\n<meta property=\"og:description\" content=\"This blog aims to make a performance comparison between the different MySQL versions\/editions and also comparing the differents MySQL forks such as Percona Server and MariaDB.\u00a0 Indeed number of improvements as been done to innodb storage engine in the last MySQL versions. You can find below some of the performance improvements applied to InnoDB these [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/mysql-versions-performance-comparison\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2014-12-26T08:18:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/sbtest.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"235\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Gr\u00e9gory Steulet\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Gr\u00e9gory Steulet\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/mysql-versions-performance-comparison\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/mysql-versions-performance-comparison\/\"},\"author\":{\"name\":\"Gr\u00e9gory Steulet\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/7609faada8e4d63e04a28ae29e227098\"},\"headline\":\"MySQL versions performance comparison\",\"datePublished\":\"2014-12-26T08:18:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/mysql-versions-performance-comparison\/\"},\"wordCount\":1687,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/mysql-versions-performance-comparison\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/sbtest.png\",\"keywords\":[\"MySQL\",\"Performance\"],\"articleSection\":[\"Application integration &amp; Middleware\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/mysql-versions-performance-comparison\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/mysql-versions-performance-comparison\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/mysql-versions-performance-comparison\/\",\"name\":\"MySQL versions performance comparison - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/mysql-versions-performance-comparison\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/mysql-versions-performance-comparison\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/sbtest.png\",\"datePublished\":\"2014-12-26T08:18:38+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/7609faada8e4d63e04a28ae29e227098\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/mysql-versions-performance-comparison\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/mysql-versions-performance-comparison\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/mysql-versions-performance-comparison\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/sbtest.png\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/sbtest.png\",\"width\":1200,\"height\":235},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/mysql-versions-performance-comparison\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"MySQL versions performance comparison\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/7609faada8e4d63e04a28ae29e227098\",\"name\":\"Gr\u00e9gory Steulet\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/e1531483285469fe17ea7a769ce5d8a8a01847185e4245d9c4d22c575c7c6d3e?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/e1531483285469fe17ea7a769ce5d8a8a01847185e4245d9c4d22c575c7c6d3e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/e1531483285469fe17ea7a769ce5d8a8a01847185e4245d9c4d22c575c7c6d3e?s=96&d=mm&r=g\",\"caption\":\"Gr\u00e9gory Steulet\"},\"description\":\"Gr\u00e9gory Steulet has more than ten years of experience in database and infrastructure management, engineering, and optimization. He is specialized in Oracle technologies and high availability solutions (Oracle DataGuard, Data Replication Block Device). His expertise also includes Avaloq banking applications, as well as the open source field (MySQL, Unix\/Linux, etc.). Gr\u00e9gory Steulet is \\\"Oracle Certified Professional 10g\\\", \\\"MySQL Cluster 5.1 Certified\\\", and \\\"Avaloq Certified Professional 2.6\\\". Prior to joining dbi services, Gr\u00e9gory Steulet was Senior Consultant at Trivadis in Lausanne. He also worked as IT Administrator at Box Telecom in Miami Beach, Florida (USA). Gr\u00e9gory Steulet has an Executive MBA from the International Institute of Management in Technology, Fribourg (CH). He also holds a Bachelor's Degree in Business Administration and Computer Science from the University of Applied Sciences Western Switzerland. His branch-related experience covers Telecommunications, Financial Services \/ Banking, Logistics, Pharma etc.\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/gregory-steulet\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"MySQL versions performance comparison - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/mysql-versions-performance-comparison\/","og_locale":"en_US","og_type":"article","og_title":"MySQL versions performance comparison","og_description":"This blog aims to make a performance comparison between the different MySQL versions\/editions and also comparing the differents MySQL forks such as Percona Server and MariaDB.\u00a0 Indeed number of improvements as been done to innodb storage engine in the last MySQL versions. You can find below some of the performance improvements applied to InnoDB these [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/mysql-versions-performance-comparison\/","og_site_name":"dbi Blog","article_published_time":"2014-12-26T08:18:38+00:00","og_image":[{"width":1200,"height":235,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/sbtest.png","type":"image\/png"}],"author":"Gr\u00e9gory Steulet","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Gr\u00e9gory Steulet","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/mysql-versions-performance-comparison\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/mysql-versions-performance-comparison\/"},"author":{"name":"Gr\u00e9gory Steulet","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/7609faada8e4d63e04a28ae29e227098"},"headline":"MySQL versions performance comparison","datePublished":"2014-12-26T08:18:38+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/mysql-versions-performance-comparison\/"},"wordCount":1687,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/mysql-versions-performance-comparison\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/sbtest.png","keywords":["MySQL","Performance"],"articleSection":["Application integration &amp; Middleware"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/mysql-versions-performance-comparison\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/mysql-versions-performance-comparison\/","url":"https:\/\/www.dbi-services.com\/blog\/mysql-versions-performance-comparison\/","name":"MySQL versions performance comparison - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/mysql-versions-performance-comparison\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/mysql-versions-performance-comparison\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/sbtest.png","datePublished":"2014-12-26T08:18:38+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/7609faada8e4d63e04a28ae29e227098"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/mysql-versions-performance-comparison\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/mysql-versions-performance-comparison\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/mysql-versions-performance-comparison\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/sbtest.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/sbtest.png","width":1200,"height":235},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/mysql-versions-performance-comparison\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"MySQL versions performance comparison"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/7609faada8e4d63e04a28ae29e227098","name":"Gr\u00e9gory Steulet","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/e1531483285469fe17ea7a769ce5d8a8a01847185e4245d9c4d22c575c7c6d3e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/e1531483285469fe17ea7a769ce5d8a8a01847185e4245d9c4d22c575c7c6d3e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e1531483285469fe17ea7a769ce5d8a8a01847185e4245d9c4d22c575c7c6d3e?s=96&d=mm&r=g","caption":"Gr\u00e9gory Steulet"},"description":"Gr\u00e9gory Steulet has more than ten years of experience in database and infrastructure management, engineering, and optimization. He is specialized in Oracle technologies and high availability solutions (Oracle DataGuard, Data Replication Block Device). His expertise also includes Avaloq banking applications, as well as the open source field (MySQL, Unix\/Linux, etc.). Gr\u00e9gory Steulet is \"Oracle Certified Professional 10g\", \"MySQL Cluster 5.1 Certified\", and \"Avaloq Certified Professional 2.6\". Prior to joining dbi services, Gr\u00e9gory Steulet was Senior Consultant at Trivadis in Lausanne. He also worked as IT Administrator at Box Telecom in Miami Beach, Florida (USA). Gr\u00e9gory Steulet has an Executive MBA from the International Institute of Management in Technology, Fribourg (CH). He also holds a Bachelor's Degree in Business Administration and Computer Science from the University of Applied Sciences Western Switzerland. His branch-related experience covers Telecommunications, Financial Services \/ Banking, Logistics, Pharma etc.","url":"https:\/\/www.dbi-services.com\/blog\/author\/gregory-steulet\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/4240","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=4240"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/4240\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/4241"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=4240"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=4240"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=4240"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=4240"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}