MySQL压测实战

写作目的

最近看到一句话是MySQL的TPS是4000,这句话是不严谨的,因为没有说服务器的配置。所以自己买了个服务器做了一个压测。希望自己对数据有一个概念。
注意:服务器不同结果不同,结果不具有普适性

服务器配置

配置参数
CPU2核
内存4G
MySQL5.7
Linux7.5

MySQL安装

1)docker安装

2)docker安装MySQL

docker run --name mysql-6-20220702 -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456  mysql:5.7

MySQL压测实践

压测工具的安装sysbench

执行 下载命令

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

安装

sudo yum -y install sysbench

查看版本

sysbench --version

构造测试表和数据

sysbench --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --mysql-db=test_db --tables=20 --table_size=1000000 oltp_read_write --db-ps-mode=disable prepare
参数含义
–db-driver=mysql这个很简单,就是说他基于mysql的驱动去连接mysql数据库,你要是oracle,或者sqlserver,那自然就是其他的数据库的驱动了
–time=300这个就是说连续访问300秒
–threads=10这个就是说用10个线程模拟并发访问
–report-interval=1这个就是说每隔1秒输出一下压测情况
–mysql-host=127.0.0.1这是你要连接的sql服务连接
–db-driver=mysql这个很简单,就是说他基于mysql的驱动去连接mysql数据库,你要是oracle,或者sqlserver,那自然就是其他的数据库的驱动了
–mysql-port=3306数据端口
–mysql-user=test_user数据库用户名
–mysql-password=test_user数据库密码
–mysql-db=test_db哪个数据库进行压测,需要手动创建库
–tables=20压测数据库创建多少张表
–table_size=1000000压测数据库每张表插入多少数据
oltp_read_write执行oltp数据库的读写测试
–db-ps-mode=disable禁止ps模式(不知道干嘛的)
prepare参照这个命令的设置去构造出来我们需要的数据库里的数据,他会自动创建20个测试表,每个表里创建100万条测试数据

执行上面命令完毕后数据库中会有这样的命令
在这里插入图片描述

压测结果解读DEMO

从10个线程开始压,压10秒,同时读写操作

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

在这里插入图片描述
[ 1s ] thds: 10 tps: 131.73 qps: 2668.44 (r/w/o: 1868.11/526.90/273.43) lat (ms,95%): 99.33 err/s: 0.00 reconn/s: 0.00

参数含义
thds: 10有10个线程在压测
tps: 131.73每秒执行了131.73个事务
qps: 2668.44每秒可以执行2668.44个请求
(r/w/o: 1868.11/526.90/273.43)在每秒2668.44个请求中,有1868.11个请求是读请求,526.90个请求是写请求,273.43个请求是其他的请求,就是对QPS进行了拆解l
at (ms,95%): 99.33 err/s95%的请求的延迟都在 99.33毫秒以下
0.00 reconn/s: 0.00,每秒有0个请求是失败的,发生了0次网络重连

SQL statistics:
  queries performed:
    read: 11438// 这就是说在10s的压测期间执行了11438次的读请求
    write: 3268// 这是说在压测期间执行了3268次的写请求
    other: 1634// 这是说在压测期间执行了1634次的其他请求
    total: 16340// 这是说一共执行了16340次的请求
  transactions: 817( 75.2 per sec. ) // 这是说一共执行了817个事务,每秒执行75.2个事务
  queries: 16340( 1503.92 per sec. )// 这是说一共执行了16340次的请求,每秒执行1503.92 请求
  ignored errors: 0 (0.00 per sec.)
  reconnects: 0 (0.00 per sec.)

General staticstics:
  total time: 10.0052s //一共执行了10s的压测
  total number of events: 817 //一共执行了817个事务

Latency (ms):
  min: 13.21 // 请求中延迟最小的是13.21 ms
  avg: 132.31 // 所有请求平均延迟是132.31 ms
  max: 4675.90 // 延迟最大的请求是4675.90 ms
  95th percentile: 287.38 // 95%的请求延迟都在287ms以内
  sum: 108097.91 //总共耗时108097.91 ms

增压结果对比

从10个线程发压,一直看到QPS和RT有明显波动时停止

线程数QPSTPSRT(95%)
103813191170ms
203506175215ms
304312215272ms
403802190427ms
5033861691304ms

从上面表格中可以看出,在我这个服务器2核4G内存下MySQL的QPS峰值是4300,TPS为215,RT为300ms。

参考

linux 安装 sysbench 和 使用
☆☆☆☆☆sysbench-多线程性能测试工具(压测MySQL)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/1634.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes(k8s)容器编排控制器使用

目录 1 Pod控制器1.1 Pod控制器是什么1.2 Pod和Pod控制器1.3 控制器的必要性1.4 常见的控制器1.4.1 ReplicaSet1.4.2 Deployment1.4.3 DaemonSet 2 ReplicaSet控制器2.1 ReplicaSet概述2.2 ReplicaSet功能2.2.1 精确反应期望值2.2.2 保证高可用2.2.3 弹性伸缩 2.3 创建ReplicaS…

360手机黑科技“位置穿越”功能修复 360手机位置穿越不能用了 360手机刷机

360手机黑科技“位置穿越”功能修复 360手机位置穿越不能用了 360手机刷机 参考:360手机-360刷机360刷机包twrp、root 360刷机包360手机刷机:360rom.github.io 【前言】 360手机,内置的黑科技“位置穿越”,引用高德地图&#xff…

RedHat红帽认证---RHCE

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! RHCE 1.安装和配置 Ansible 安装和配置 Ansible按照下方所述,在控制节点 control 上安装和配置 Ansible:安装所需的软件包创建名为 /home/gre…

【C++练习】日期常见题型训练(5道编程题)

【C练习】日期题型训练 ①.日期累加②.日期差值③.打印日期④.求123...n(非正常方法)⑤.计算一年的第几天 ①.日期累加 解题思路: 1. 日期相加相减都要考虑2月的天数情况。 2.写一个可以获取每个月份天数的函数(要讨论闰年情况)。 3.当日期相加超过本月的最大天数时…

关于类的成员顺序

1.本类的成员顺序. public class Fu {// 1.静态 // 方法static {System.out.println(" 静态方法来喽");}public static int x orderPrint(1);{System.out.println("构造代码块来喽");}public static int y orderPrint(2);static {System.out.println(&q…

中间件-netty(1)

netty 前言篇 文章目录 一、IO基础篇1.概念1.1 阻塞(Block)和非阻塞(Non-Block)1.2 同步(Synchronization)和异步(Asynchronous)1.3 BIO 与 NIO 对比1.3.1 面向流与面向缓冲1.3.2 阻塞与非阻塞1.3.3 选择器的问世 2.NIO 和 BIO 如何影响应用程序的设计2.1 API调用2.2 数据处理2…

爬虫正常用哪种代理比较好?

在进行网络爬虫时,使用代理可以带来许多好处,包括提高请求的可靠性、防止IP封锁、实现匿名浏览等。以下是一些常见的代理类型,你可以根据需要选择最适合的: 免费代理:免费代理可能数量众多,但质量和稳定性参…

微信小程序 u-picker 三级联动 uView

微信小程序 u-picker 三级联动 uView 场景 移动端微信小程序框架 uView 中的 u-picker 实现三级联动 数据是一级一级加载的 [12,1201,120101] 多列联动 先了解属性参数 mode可以设置为:time、region、selector、multiSelector,区分时间、地区、单列&am…

【计算机网络详解】——网络层(学习笔记)

📖 前言:网络层它承担着网络间的数据传输和路由选择等核心任务,通过在传输层协议的基础上添加了路由和转发等功能,使得数据能够在全球范围内的互联网中自由流动。在这篇博客中,我们将深入探讨网络层的工作原理和具体实…

Stable-Diffusion-webui mac m1安装

Stable-Diffusion-webui mac m1安装 推荐下载器:neat download manager 安装git python 3.10 下载地址:https://github.com/AUTOMATIC1111/stable-diffusion-webui 我这边是通过pycharm 通过git直接拉取到本地的,下载的,最好先建…

Spring Boot 中的 STOMP 是什么,原理,如何使用

Spring Boot 中的 STOMP 是什么,原理,如何使用 介绍 在 Spring Boot 中,STOMP 是一种简单的文本协议,用于在客户端和服务器之间进行实时消息传递。它是 WebSocket 协议的一种扩展,可以在 WebSocket 上运行。在本文中…

基于大数据技术对基金分析-python

提示:本文为个人原创,仅供技术探讨与交流,对实际投资并不造成建议。 基于大数据技术对基金分析-python 前言一、数据获取:python爬虫1).从天天基金数据接口获取数据2).爬虫前期准备3).爬虫具体实现 二、数据清洗及计算指标1.过滤数…