怎样进行数据库性能测试

本文涉及的产品
性能测试 PTS,5000VUM额度
简介:
前言:

  究竟怎样进行数据库性能测试,数据库性能测试需要做些什么?大多数产品线的RD和QA也比较迷茫,经常过来咨询。

  一般说来,做数据库性能测试需要如下几个步骤:

  1、明确测试目的

  2、设计测试模型 (即压力模型)

  3、准备测试集群环境

  4、准备压力测试工具或者编写压力测试脚本

  5、明确性能指标并加监控

  6、根据2设计的测试模型准备测试数据

  7、测试执行

  8、测试分析

  本文依据以上步骤,模拟测试需求- 多实例多盘数据库的性能对比测试,制定测试方案公布给大家,方便大家了解数据库性能测试。

  多实例多盘数据库性能测试方案

  一、测试目的

  1、对比数据库单实例、多实例的在不同硬件设备上的性能情况。

  2、对比单机单实例和多实例的性能情况

  3、验证网络带宽是否成为flash产品发挥性能优势的瓶颈。

  4、验证flash产品是否随时间存在性能衰减的可能。

  二、测试方法概述

  测试基准工具:smart-slap(mysqlslap),Jmeter模拟若干客户端、若干用户执行指定的SQL语句,访问数据库。同时,通过监控工具监控系统负载、mysql数据库的服务,全面了解数据库系统以及硬件的负载情况。

  测试模型
测试监控及结果统计
监控工具统计如下信息,分析性能瓶颈。

  系统负载:

  CPU:CUP_IDLE、CPU_WA、SERVER_LOADAVG
内存:MEM_URATE、MEM_USED
网卡:NIC_TOTAL_IN、NIC_TOTAL_OUT、

  数据库负载:

  QPS:COM_READS、COM_WEITES
主从延迟:SECOND_BEHIND_MASTER
慢查询:SLOW_QUERIES_PT
连接数:THREADS_CONNECTED、THREADS_RUNNING

  STL-tools 监控集群负载

  附:性能指标:

  系统负载:

  CPU:CUP_IDLE 、CPU_WA、SERVER_LOADAVG
内存:MEM_URATE、MEM_USED
网卡:NIC_TOTAL_IN、NIC_TOTAL_OUT、

  数据库负载:

  QPS:COM_READS、COM_WEITES
主从延迟:SECOND_BEHIND_MASTER
慢查询:SLOW_QUERIES_PT
连接数:THREADS_CONNECTED、THREADS_RUNNING

  三、测试准备

  测试环境准备

  假设将四类IO存储设备,进行单、多实例的性能测试对比。则可以部署测试集群如下:

  测试集群具体搭建:

  2台机器 ——–4主4从
根据测试更换硬件:
RAID+SAS:
RAID+SSD:
Flash:
Fusion:

  监控:在每台机器上部署数据库监控脚本monitor,最好有统一平台上调度、管理、分析monitor采集到的数据。

  测试工具准备:

  Smart-slap:

  特点:全量发压力,可得到最大QPS,对比不同集群的最大QPS。分析不同集群的最大QPS.

  Jmeter:

  特点:控制实时压力,分析各集群在指定压力下的性能情况。

  测试思路:

  先采用slap进行对不同集群组合进行同样的sql压力。(压力时间)取得不同集群的最大QPS,进行对比。

  取最大QPS的一定比率(如1/8倍,1/4倍,1/2倍,1倍)作为每秒发送的请求压力进行测试。比较各个集群的负载、数据库性能情况。

  网络瓶颈测试:

  同网段3台压力机器 往一个集群压足够多的IO压力。分析各个硬件的IO。磁盘、CPU比网卡提前到达压力阀值说明网卡不是瓶颈。若网卡IO先达到极限则说明网卡存在瓶颈。

  硬件性能衰减测试

  同样压力测试24小时,比较最初1小时,和最后1小时的 TPS.以及各项性能指标。

 测试数据准备:

  数据库:flashT

  36张表:

  Test1- test36:

  表结构:

  CREATE TABLE `test1` (
`doc_id` int(10) unsigned NOT NULL default ’0′,
`main_status` tinyint(3) unsigned NOT NULL default ’0′,
`sub_status` tinyint(3) unsigned NOT NULL default ’0′,
`create_time` int(10) unsigned NOT NULL default ’0′,
cid1` smallint(5) unsigned NOT NULL default ’0′,
……………
PRIMARY KEY (`doc_id`)
);

  数据量:

  每个表达到5000W 行(大概30G)

  36个表

  说明:具体的测试库表结构、类型

  每张表的测试数据量等都需要根据具体测试目的和测试场景进行设计。

  四、测试步骤

  测试一: 不同集群配置,不同实例的性能对比测试

  一: 数据构造,同时验证各硬件集群基本读、写性能。

  1)4个实例全部开启insert 5000W;初步对比写性能。

  用36个slap并发实例分别往36张表insert,往每个表插入5000W 行数据。

  2)4个实例全部开启,每张表20个select并发select。初步对比读性能。

  用36个slap并发实例子每个实例20个并发select请求分别从36张表中取数据。

  二:对比不同集群执行最常用SQL命令的性能情况

  制定数据库系统最常用的SQL语句,数据库执行这些SQL语句的性能。用slap并发用户数从10,50,100,200。

  三:对比不同集群处理最耗时SQL命令的性能情况

  制定数据库系统最耗时的SQL语句,数据库执行这些SQL语句的性能。用slap并发用户数从10,50,100,200。

  四:模拟事务处理,对比各集群性能情况。

  模拟事物,,用slap并发用户数10,50,100,200,500,800,1000分析不同集群分别在多少并发用户数下,TPS值最大。

  五:分析各集群在线事物处理能力。

  模拟事务处理,根据步骤四得到的最大TPS,设置TPS的一定比率作为每秒事务数,用jemeter测试,并发,10,50,100,200,500,800,1000.分析各个并发各种集群下的响应时间分布和其他各项性能指标。分析TPS情况最好的并发数。

  测试二:网卡瓶颈测试

  步骤一:分析测试一中的各项测试结果的CPU、磁盘、网卡等负载情况。

  如果其他几项比网卡提前到达瓶颈。则说明网卡不会成为瓶颈。相反进入步骤二。此外,如果测试一中的各项测试磁盘,网卡,CPU等均未达到瓶颈。则将测试一中的步骤四,增大并发压力,直到出现负载瓶颈。

  步骤二:调整测试。

  测试三:硬件是否衰减情况。

  步骤:用jmeter 持续测试24小时。

  用测试一中的步骤五得到的最好TPS的并发数作为此次测试的并发数,用Jmeter并发测试24小时,分析第一个小时和最后一个小时的TPS,和响应时间分布。

  (注意每一次测试命令中,涉及查询条件的值随机分布)

  五、总结:

  关于数据库性能测试,只要掌握了压力测试工具。最关键的还是设计出符合业务的测试模型,以及测试完成后的测试分析。通过实践抽象出测试模型,进行自动化,则测试过程可以事半功倍。








====================================分割线================================



最新内容请见作者的GitHub页:http://qaseven.github.io/

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
6月前
|
NoSQL 算法 大数据
国内首个图计算标准发布,悦数图数据库通过测试
近日,经中国通信标准化协会批准,《大数据图计算平台技术要求与测试方法》标准正式发布,这是我国首个图计算平台标准,为图计算平台的发展提供了一个标准化的指导方针,对于推动我国图技术的发展具有重要意义。
|
2月前
|
关系型数据库 MySQL 测试技术
《性能测试》读书笔记_数据库优化
《性能测试》读书笔记_数据库优化
30 7
|
6月前
|
JavaScript Java 测试技术
大学生体质测试|基于Springboot+vue的大学生体质测试管理系统设计与实现(源码+数据库+文档)
大学生体质测试|基于Springboot+vue的大学生体质测试管理系统设计与实现(源码+数据库+文档)
99 0
|
3月前
|
安全 测试技术 网络安全
深入理解数据库黑盒测试
【8月更文挑战第31天】
43 0
|
4月前
|
监控 Oracle 关系型数据库
关系型数据库Oracle恢复测试
【7月更文挑战第20天】
76 7
|
4月前
|
关系型数据库 MySQL 测试技术
数据库升级是一个涉及数据备份、新版本安装、数据迁移和测试等关键环节的复杂过程
【7月更文挑战第21天】数据库升级是一个涉及数据备份、新版本安装、数据迁移和测试等关键环节的复杂过程
96 1
|
4月前
|
测试技术 数据库 容器
开发与运维测试问题之操作数据库进行DAO层测试如何解决
开发与运维测试问题之操作数据库进行DAO层测试如何解决
|
5月前
|
关系型数据库 MySQL 测试技术
《阿里云产品四月刊》—瑶池数据库微课堂|RDS MySQL 经济版 vs 自建 MySQL 性能压测与性价比分析
阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代
|
6月前
|
NoSQL 算法 测试技术
图数据库基准测试 LDBC SNB 系列讲解:Schema 和数据生成的机制
作为大多数图数据库性能测试标配的 LDBC SNB 它是如何保障不同系统环境之间的测评比较公平且基准测试结果可重复的呢?本文从数据和 Schema 生成入手同你讲解它的原理。
165 2
图数据库基准测试 LDBC SNB 系列讲解:Schema 和数据生成的机制
|
6月前
|
存储 大数据 测试技术
矢量数据库的性能测试与评估方法
【4月更文挑战第30天】本文探讨了矢量数据库的性能测试与评估方法,强调其在大数据和AI时代的重要性。文中介绍了负载测试、压力测试、容量测试、功能测试和稳定性测试五大评估方法,以及实施步骤,包括确定测试目标、设计用例、准备环境、执行测试和分析结果。这些方法有助于确保数据库的稳定性和高效性,推动技术发展。
下一篇
无影云桌面