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

导语

随着版本升级,关系型数据库和缓存数据库整体性能比之前都有大幅度的提升,衡量数据库性能的三个重要指标是:数据库吞吐量(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 条评论
登录 后参与评论

相关文章

来自专栏林德熙的博客

如何在 UWP 使用 wpf 的 Trigger 安装 Behaviors以前的代码UWP 使用 Trigger

本文需要告诉大家,如何使用 Behaviors 做出 WPF 的 Trigger ,需要知道 UWP 不支持 WPF 的 Trigger 。

270
来自专栏NetCore

使用C#实现蜘蛛程序

"蜘蛛"(Spider)是Internet上一种很有用的程序,搜索引擎利用蜘蛛程序将Web页面收集到数据库,企业利用蜘蛛程序监视竞争对手的网站并跟踪变动,个人用...

1895
来自专栏iOSDevLog

Action API目录

2789
来自专栏我的博客

学会编程更要学会找错误

一直想写点我在编程学习中遇到的问题以及我是如何解决的,我是一个PHPer,而且对计算机有着深厚的兴趣。今天闲着没事,就顺手整理一点,随后会相继会做更多总结,敬请...

3417
来自专栏皮振伟的专栏

[linux][memory]进程的最大内存使用量的讨论

前言: 一个进程最大能使用多少虚拟内存,能控制的地方还是比想象的多一点。 尤其是IaaS上,一个qemu进程能使用多少虚拟内存,就是对应着虚拟机的物理内存的最大...

54211
来自专栏张戈的专栏

解决Tomcat数据连接池无法释放

近段时间,公司的检测中心报表系统(SMC)的开发人员时不时找到我,说用户老是出现无法登录的情况。前些日子因为手头上有 Jboss 集群的测试工作,发现用户不能登...

3009
来自专栏更流畅、简洁的软件开发方式

【自然框架】之通用权限(八):权限到字段(列表、表单、查询)

 通用权限想要写的文章目录:(这是第八章) 1、 简介、数据库的总体结构 2、 介绍人员表组 3、 介绍组织结构表组 4、 介绍角色表组 5、 介绍“项目自我描...

1967
来自专栏漫话前端

浏览器已原生支持 ES 模块,这对前端开发来说意味着什么?

还记得当初入门前端开发的时候写过的 Hello World 么?一开始我们先创建了一个 HTML 文件,在 <body> 标签里写上网页内容;后来需要学习页面交...

2727
来自专栏Java后端技术

Yahoo!网站性能最佳体验的34条黄金守则(转载)

      终端用户响应的时间中,有80%用于下载各项内容。这部分时间包括下载页面中的图像、样式表、脚本、Flash等。通过减少页面中的元素可以减少HTTP请求...

741
来自专栏Java进阶架构师

dubbo源码解析-服务暴露原理

之前讲完了dubbo集群容错系列,现在开始讲比较重要的环节,也就是dubbo面试中比较喜欢问的两个点:服务发布和服务引用.

682

扫码关注云+社区