数据库压力测试方法概述

这篇具有很好参考价值的文章主要介绍了数据库压力测试方法概述。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言

在前面的压力测试过程中,主要关注的是对接口以及服务器硬件性能进行压力测试,评估请求接口和硬件性能对服务的影响。但是对于多数Web应用来说,整个系统的瓶颈在于数据库。

原因很简单:Web应用中的其他因素,例如网络带宽、负载均衡节点、应用服务器(包括CPU、内存、硬盘、连接数等)、缓存,都很容易通过水平的扩展(俗称加机器)来实现性能的提高。而对于MySQL,由于数据一致性的要求,无法通过增加机器来分散向数据库写数据带来的压力;虽然可以通过前置缓存(Redis等)、读写分离、分库分表来减轻压力,但是与系统其它组件的水平扩展相比,受到了太多的限制。

二、常见的数据库压测指标

数据库压力测试方法概述,技术分享,自动化测试,软件测试,数据库,压力测试,软件测试,程序人生,自动化

与接口压测指标类似,数据库相关指标如下:

TPS/QPS:衡量吞吐量。

响应时间:包括平均响应时间、最小响应时间、最大响应时间、时间百分比等,其中时间百分比参考意义较大,如前95%的请求的最大响应时间。。

并发量:同时处理的查询请求的数量。

三、使用sysbench进行数据库压测

1、基本介绍

sysbench是跨平台的基准测试工具,支持多线程,支持多种数据库;主要包括以下几种测试:

cpu性能

磁盘io性能

调度程序性能

内存分配及传输速度

POSIX线程性能

数据库性能(OLTP基准测试)

该工具可以自动帮你在数据库里构造出来大量的数据,你想要多少数据,就自动给你构造出来多少条数据。同时还可以模拟几千个线程并发的访问数据库,模拟使用各种各样的 SQL 语句,包括模拟出来各种事务提交到你的数据库里去,甚至可以模拟出几十万的 TPS 去压测数据库。数据库压力测试方法概述,技术分享,自动化测试,软件测试,数据库,压力测试,软件测试,程序人生,自动化

2、安装sysbench:

curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash 
sudo yum -y install sysbench 
sysbench --version

3、基于 sysbench 构造测试表和测试数据:

首先需要在自己的数据库里创建好一个测试库,我们可以取个名字叫做 test,同时创建好对应的测试账号,可以叫做 root,密码是 123456,让这个用户有权限可以访问 test。

基于 sysbench 构建 20 个测试表,每个表里有 100 万条数据,接着使用 100 个并发线程去对这个数据库发起访问,连续访问 5 分钟,也就是 300 秒。命令如下:

sysbench --db-driver=mysql --time=300 --threads=100 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=test --tables=20 --table_size=1000000 oltp_read_write --db-ps-mode=disable prepare

4、执行测试:

(1)测试数据库的综合读写 TPS,使用的是 oltp_read_write 模式:

sysbench --db-driver=mysql --time=300 --threads=100 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=test_user --mysql-password=test_user --mysql-db=test_db --tables=20 --table_size=1000000 oltp_read_write --db-ps-mode=disable run

 (2)测试数据库的只读性能,使用的是 oltp_read_only模式:

sysbench --db-driver=mysql --time=300 --threads=100 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=test_user --mysql-password=test_user --mysql-db=test_db --tables=20 --table_size=1000000 oltp_read_only --db-ps-mode=disable run

(3)测试数据库的写入性能,使用的是 oltp_write_only 模式:

sysbench --db-driver=mysql --time=300 --threads=100 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=test_user --mysql-password=test_user --mysql-db=test_db --tables=20 --table_size=1000000 oltp_write_only --db-ps-mode=disable run

使用上面的命令,sysbench 工具会根据你的指令构造出各种各样的 SQL 语句去更新或者查询你的 20 张测试表里的数据,同时监测出你的数据库的压测性能指标,最后完成压测之后,可以执行 cleanup 命令,清理数据。
数据库压力测试方法概述,技术分享,自动化测试,软件测试,数据库,压力测试,软件测试,程序人生,自动化

5、压测结果分析:

按照我们上面的命令,我们是让它每隔 1 秒都会输出一次压测报告的,此时它每隔一秒会输出类似下面的一段东西:

[ 10s ] thds: 100 tps: 500 qps: 5000 (r/w/o: 3500/1000/500) lat (ms, 95%): 20 err/s: 0.00 reconn/s: 0.00

thds:100,这个意思就是有 100 个线程在压测

tps:500,这个意思就是每秒执行了 500 个事务

qps:5000,这个意思就是每秒可以执行 5000 个请求

(r/w/o: 3500/1000/500):这个意思就是说,在每秒 5000 个请求中,有 3500 个请求是读请求,1000 个请求是写请求,500 个请求是其他的请求,就是对 QPS 进行了拆解

lat (ms, 95%):20,这个意思就是说,95% 的请求的延迟都在 20 毫秒以下

err/s: 0.00 reconn/s: 0.00:这两个的意思就是说,每秒有 0 个请求是失败的,发生了 0 次网络重连

结束语

使用sysbench工具可以直接对数据库性能进行评价,但是在结果展示方面还有待进一步提升。当然后续可以对结果进行进一步处理,比如写入表格或作图,会更加直观。文章来源地址https://www.toymoban.com/news/detail-566481.html

到了这里,关于数据库压力测试方法概述的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java 单元测试创建到测试(直接连接数据库方法)

    一.JUnit5常用注解 @Before注解用于在测试方法执行之前执行一次,可以用来设置测试环境、准备数据等。 @After注解用于在测试方法执行之后执行一次,可以用来清理测试环境、处理异常等。 @Test 表示方法是测试方法。他的职责非常单一不能生命任何属性,拓展的测试将会有

    2024年02月06日
    浏览(36)
  • php - 超详细 thinkphp + redis 实现商品秒杀抢购功能,提供完整流程详细讲解及企业级功能示例源代码,环境准备、数据库表设计、并发压力测试等(新手小白一看就懂!)

    很多文章都已经过时了,而且还不讲原理,本文一次性说清楚。 很多电商系统几乎都有秒杀功能,那么用 tp+redis 怎么实现呢? 本文详细讲解商品秒杀功能的实现,提供详细的代码及注释,包括环境准备、环境搭建教程(已搭建的跳过即可)、数据库表设计、压力测试、示例

    2023年04月08日
    浏览(36)
  • 分享在Windows操作系统中独立安装微软MS Access 2019数据库的实用方法

    文章首发于 码友网 – 《分享在Windows操作系统中独立安装微软MS Access 2019数据库的实用方法》 本文为大家分享在Windows操作系统中独立安装微软MS Access 2019数据库的实用方法。 此方法无需安装微软Office的其他服务,操作简单。 步骤如下: 首先,下载微软官方的MS Office的安装工

    2024年02月04日
    浏览(44)
  • Springboot+Redis:实现缓存 减少对数据库的压力

    🎉🎉欢迎光临,终于等到你啦🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟持续更新的专栏 Redis实战与进阶 本专栏讲解Redis从原理到实践 这是苏泽的个人主页可以看到我其他的内容哦👇👇 努力的苏泽 http://suzee.blog.csdn.net/   目录 缓存如何实现?

    2024年03月24日
    浏览(41)
  • 【数据库原理】(28)数据库设计概述

    数据库设计是为了实现数据库应用系统,涉及结构特性设计、行为特性设计和物理模式设计三个主要方面。 1. 数据库的结构特性设计 数据库的结构特性设计是数据库设计的关键,包括数据库结构的设计和建立合理的数据模型。这一部分也被称为数据库的静态结构设计。 步骤

    2024年01月19日
    浏览(41)
  • DB(一):数据库概述、SQL概述、Oracle数据类型

    包括Oracle、DB2、SQL Server、MySQL数据库概述;数据定义语言DDL、数据操作语言DML、事务控制语言TCL、数据查询语言DQL、数据控制语言DCL语言介绍;NUMBER 、CHAR、VARCHAR2、DATE数据库类型;CHAR和VARCHAR2的存储编码、CHAR和VARCHAR2的最大长度、LONG和CLOB类型。 1、DB和DBMS (1)、数据库(

    2024年02月09日
    浏览(59)
  • MySQL 数据库概述

    数据(Data) 描述事物的符号记录 包括数字,文字、图形、图像、声音、档案记录等 以“记录”形式按统一的格式进行存储 表 将不同的记录组织在一起 用来存储具体数据 记录:行 字段(属性):列 数据库 表的集合,是存储数据的仓库 以一定的组织方式存储的相互有关的

    2024年02月01日
    浏览(32)
  • MySQL数据库概述

    (1)功能一体化 (2)高度非过程化 (3)面向集合的操作方式 (4)两种使用方式:命令行和嵌入到其他宿主语言(如Java等)方式 (5)简洁易学 (6)大大减轻了用户的负担,并有利于提高数据独立性 (7)非关系数据模型采用的是面向记录的操作方式,操作对象是一条记

    2024年02月12日
    浏览(32)
  • 1.1 数据库系统概述

    1. **数据库的价值**    - 数据管理的高效工具    - 计算机科学的关键分支 2. **信息资源的重要性**    - 现代企业或组织的生存和发展关键    - 建立有效的信息系统至关重要 3. **数据库的应用范围**    - 从小型系统到大型系统:OLTP, OLAP    - 多种领域:CAD/CAM, CIMS, e-Governm

    2024年02月07日
    浏览(30)
  • MySQL基础(一)数据库概述

    持久化(persistence): 把数据保存到可掉电式存储设备中以供之后使用 。大多数情况下,特别是企业级应用, 数据持久化意味着将内存中的数据保存到硬盘上加以”固化” ,而持久化的实现过程大多通过各种关系数据库来完成。 持久化的主要作用是 将内存中的数据存储在关系

    2024年02月03日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包