经常会被问到MySQL的企业版和社区版究竟有哪些不同?
通常的回答是企业版提供了企业级的安全组件、独立安装的工具和原厂提供的售后服务。
但毕竟有些用户是非常认真的,下一个问题往往就是,如果单纯比较MySQL数据库服务器的性能,企业版是否会更好?
按照以往的回答方式是,性能更好,但是具体提升了多少,没有数字的量化是没有说服力的,但这一次不一样了,从MySQL 8.0.35开始,MySQL的工程团队在企业版上显著提升了性能,并且进行了相关对比测试,详细内容如下:
测试采用sysbench,sysbench是一个广泛用于数据库基准测试的工具,特别是对于MySQL, sysbench的一个改编被用来在MySQL数据库上运行各种OLTP工作负载。在这次测试中,执行了四个不同的sysbench测试,每个测试捕获一个特定的OLTP工作负载特征。
1. OLTP RO: 只读模式,其中不执行UPDATE、DELETE或INSERT查询。查询组合包括:
* 10 x POINT_SELECT
* 1 x SELECT_SIMPLE_RANGES
* 1 x SELECT_SUM_RANGES
* 1 x SELECT_ORDER_RANGES
* 1 x SELECT_DISTINCT_RANGES
2. POINT_SELECT: 多点选择SQL查询。
3. OLTP RW: 读和写SQL查询的混合。查询组合包括:
* 10 x POINT_SELECT
* 1 x SELECT_SIMPLE_RANGES
* 1 x SELECT_SUM_RANGES
* 1 x SELECT_ORDER_RANGES
* 1 x SELECT_DISTINCT_RANGES
* 1 x UPDATE_KEY
* 1 x UPDATE_NO_KEY
* 1 x UPDATE_KEY
* 1 x INSERT
* 1 x DELETE
4. UPDATE_KEY: 包含多个更新索引的SQL查询。
测试方法
InnoDB缓冲池大到足以容纳整个数据集。
Sysbench数据由8个表组成,每个表有1000万行,总共有8000万行。总数据大小为20GB。
对于每个场景,运行一个预热,然后是5分钟的sysbench负载,重复3次以计算平均事务数/秒。
测试使用64、128、256、512和1024个客户端连接/线程运行。
硬件包括带有Intel E5-2699 v4 CPU的2插槽服务器(44核@ 2.20 GHz, 88个CPU线程)。
操作系统:Oracle Linux 7.9
配置细节
数据集 Sysbench load. 8 张表 每个有1000万行。总计8000万行 数据大小20GB。数据完全缓存在缓冲池中。 硬件 Oracle Linux server release 7.9 Kernel 5.4.17-2012.201.3.el7uek,x86_64 内存515.91GB MySQL配置
[mysqld]
## Server ##
back_log=0
disable-log-bin
max_connections=1200
max_prepared_stmt_count=100000
log_error_verbosity=3
thread_cache_size=1200
## Innodb ##
innodb_buffer_pool_instances=16
innodb_buffer_pool_size=128G
innodb-change-buffering=none
innodb_io_capacity_max=12000
innodb_io_capacity=10000
innodb_log_files_in_group=16
innodb_log_file_size=1G
innodb_numa_interleave=ON
innodb_page_cleaners=16
innodb_read_io_threads=16
innodb_write_io_threads=4
innodb_undo_log_truncate=OFF
range_alloc_block_size=16384
测试结果
在所有测试的线程配置中,企业版的平均提升为24%。
在所有测试的线程配置中,企业版的平均提升为34%。
在所有测试的线程配置中,企业版的平均提升为26%。
在所有测试的线程配置中,企业版的平均提升为21%。
总结
通过基准测试的结果,MySQL企业版对比社区版在性能方面有显著的提升,这样的企业版是不是你心中理想的MySQL呢?