数据库性能评测:整体性能对比

导语

随着版本升级,关系型数据库和缓存数据库整体性能比之前都有大幅度的提升,衡量数据库性能的三个重要指标是:数据库吞吐量(QPS)、延迟时长(Latency)和稳定性,以下从这三个方面对几种数据库进行了对比测试。

一、性能测试报告与分析

测试1-3是在TS90服务器上的测试结果,测试4对比数据库在TS80和TS90上性能。

1、各数据库的峰值吞吐量对比

结果分析: 1) 在典型业务模式下(SELECT:UPDATE=95:5),MySQL和MongoDB差不多,QPS的峰值能到每秒28万左右,Redis为9.6万; 2) 数据写入速度方面,MongoDB的QPS在每秒30万以上,Redis为4.6万,MySQL 2.3万。

2、不同业务模式的峰值吞吐量

注:横轴为业务模式,100:0表示SELECT与UPDATE比例为100比0,其他类似;纵轴为QPS。

结果分析: 1) MySQL和MongoDB数据库,峰值QPS随写比例的提高逐渐下降,Redis相反,各种业务模式的峰值QPS见上图。

3、典型业务模式,不同并发压力的数据库性能

注:横轴为并发数;左侧曲线图的纵轴为QPS,右侧曲线图的纵轴为延迟时间。

结果分析:

1) MySQL和MongoDB在100个并发时吞吐量达到峰值,平均延迟随并发度增加基本呈线性趋势; 2) MongoDB并发超过100后,QPS下降很快,跟客户端驱动的连接池默认配置100个连接有关,增加测试客户端或调大连接池,QPS还可以更高。

4、TS80和TS90服务器性能对比

结果分析: 1) 典型业务压力下,MySQL和MongoDB在TS90的吞吐量是TS80的2倍,Redis变化不大; 2) 对于写入测试,MongoDB在TS90的写入速度是TS80的1.5倍,MySQL和Redis变化不大。

二、测试环境

1、硬件环境

设备型号

配置描述

CPU型号

TS80

2个6核CPU,64G内存,12*480G SSD,1*80G SSD,万兆网卡

E5-2620v3

TS90

2个12核CPU,256G内存,12*800G SSD,万兆网卡

E5-2670v3

2、软件环境

测设设备

数据库版本

TS80_1, TS80_2

MySQL 5.6.35,Redis 3.2.6,MongoDB 3.4.1

TS90_1, TS90_2

MySQL 5.6.35,Redis 3.2.6,MongoDB 3.4.1

3、数据库参数配置

数据库

参数

MySQL

binlog_format = mixedbinlog_cache_size = 2Mmax_binlog_cache_size = 4Gkey_buffer_size = 2M sort_buffer_size = 2Mread_buffer_size = 2Mread_rnd_buffer_size = 16Mjoin_buffer_size = 2Mthread_cache_size = 1024query_cache_size = 1Mquery_cache_limit = 1Mquery_cache_min_res_unit = 2ktable_open_cache = 2048open_files_limit = 65535back_log = 3000max_connections = 4000max_user_connections = 2500max_connect_errors = 100max_allowed_packet = 512Mthread_stack = 192kdefault-storage-engine = INNODBtransaction_isolation = READ-COMMITTEDtmp_table_size = 16Mmax_heap_table_size = 64Mbulk_insert_buffer_size = 64Mlong_query_time = 0.5slow_query_log = onskip-name-resolveinnodb_buffer_pool_size = 40Ginnodb_data_file_path = ibdata1:2G:autoextendinnodb_file_io_threads = 24innodb_purge_threads = 12innodb_read_io_threads = 24innodb_write_io_threads = 24innodb_thread_concurrency = 24innodb_buffer_pool_instances = 8innodb_flush_log_at_trx_commit= 1innodb_log_buffer_size = 16Minnodb_log_file_size = 2Ginnodb_log_files_in_group = 2innodb_max_dirty_pages_pct = 75innodb_lock_wait_timeout = 50innodb_file_per_table = 1

MongoDB

journal

三、测试方法

  1. 每个测试的硬件环境和数据量基本一致,数据库都按单实例方式部署。各数据库都包含单张表(10个字段),1000万条记录,每条记录长度1KB。
  2. 测试工具是YCSB(Yahoo! Cloud Serving Benchmark详细介绍见这里),使用YCSB的不同workload压力配置模版,模拟以下业务场景组合,对数据库进行压测。 读写比例:95:5 50:50 100:0 0:100,读写对应为SELECT:UPDATE操作 并发线程:10 50 100 150 300 500 1000
  3. 测试前预热数据,避免缓存数据加载引起的性能降低。
  4. 测试数据库部署为单实例,测试客户端部署一个YCSB实例,YCSB发起多个并发线程对数据库进行压力测试。力测试。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小狼的世界

PHP开发微信被动回复消息遇到的大坑

最近开始做CMS后台与微信公众号的整合,在做被动回复消息时,按照官方文档的XML格式回复消息,总是提示“该公众号提供的服务出现故障,请稍后再试”。但是通过微信提...

2583
来自专栏PHP在线

NoSQL数据库的分布式算法

原文出处: highlyscalable.wordpress.com 译文出处:juliashine 系 统的可扩展性是推动NoSQL运动发展的的主要...

3515

为什么MariaDB更优于MySQL

本文为读者提供MariaDB和MySQL的深入见解。分析两者并讨论它们之间的差异。还有一部分内容阐述为什么MySQL用户应该切换到MariaDB。

19K4
来自专栏数据库新发现

Percona最新发布XtraBackup for MySQL 8.0

Percona在9月12日,终于宣布第一个测试用的XtraBackup for MySQL 8.0版本给大家试用:

1451
来自专栏java工会

如何恢复oracle中误删除表(drop掉的)?

以下是一个不该发生却经常发生的情况:用户删除了一个非常重要的表 ― 当然是意外地删除 ― 并需要尽快地恢复。(在某些时候,这个不幸的用户可能就是 DBA!)

863
来自专栏知识分享

1-MySQL数据库(android连接MySQL数据库)

很好的链接 http://www.cnblogs.com/best/p/6517755.html  一个小时学会MySQL数据库 http://www.cnbl...

4575
来自专栏生信技能树

高通量数据下载还能这样操作?

本文属于转录组入门系列(RAN-seq基础入门传送门 http://www.biotrainee.com/thread-1750-1-1.html )第2部分内...

7495
来自专栏铭毅天下

Elasticsearch究竟要设置多少分片数?

0、引言 本文翻译自Elasticsearch20170918热乎的官方博客,原作者:Christian Dahlqvist。 在构建Elasticsearch...

98811
来自专栏数据和云

insert into太慢?Roger 带你找真凶

李真旭(Roger) ACOUG 核心专家,Oracle ACE,云和恩墨技术专家 编辑手记:昨天谈到索引并不是万能的,事实上很多无用的索引给数据库带来很大的维...

4754
来自专栏数据和云

终于来了,Percona发布XtraBackup for MySQL 8.0

Percona在9月12日,终于宣布第一个测试用的XtraBackup for MySQL 8.0版本给大家试用:

2323

扫码关注云+社区

领取腾讯云代金券