mysql基准测试-程序员宅基地

技术标签: linux  mysql  centos  

sysbench 压测工具

安装

1 curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash
在这里插入图片描述
2 yum -y install sysbench
在这里插入图片描述
3 版本验证: sysbench -version

参数介绍

在这里插入图片描述
–threads=N 要使用的线程数,客户端的并发连接数,默认 1 个 [1]
–events=N 最大允许的事件个数 [0]
–time=N 最大的总执行时间,测试执行的总时间,单位是秒,默认为10秒
–forced-shutdown=STRING 在 --time 时间限制到达后,强制关闭之前等待的秒数,默认“off”
–thread-stack-size=SIZE 每个线程的堆栈大小 [64K]
–rate=N 平均传输速率。0 则无限制 [0]
–report-interval=N 生成报告的时间间隔,以秒为单位定期报告具有指定间隔的中间统计信息 0表示禁用中间报告 [0]
–report-checkpoints=[LIST,…] 转储完整的统计信息并在指定的时间点重置所有计数器。参数是一个逗号分隔的值列表,表示从测试开始经过这个时间量时必须执行报告检查点(以秒为单位)。报告检查点默认关闭。 []
–debug[=on|off] 打印更多 debug 信息 [off]
–validate[=on|off] 尽可能执行验证检查 [off]
–help[=on|off] 显示帮助信息并退出 [off]
–version[=on|off] 显示版本信息并退出 [off]
–config-file=FILENAME 包含命令行选项的文件
–tx-rate=N 废弃,改用 --rate [0]
–max-requests=N 废弃,改用 --events [0]
–max-time=N 废弃,改用 --time [0]
–num-threads=N 废弃,改用 --threads [1]

#sysbench~cpu基准测试

1 cat /proc/cpuinfo
cpu cores : 1

2 cat /proc/cpuinfo
cpu cores : 2
此处需要不同品牌的cpu处理器进行对比,因为我实在虚拟机上测试的,所以几乎没区别,就没有上传图片

#sysbench的文件io基准测试

文件系统的io基准测试模拟了很多innodb的I/O特性
参数简介:
–file-block-size、
–file-io-mode、
–file-fsync-freq 、
–file-rw-ratio 。
对比两台服务器的io性能,需要跑相同的线程。
其中–file-test-mode的选项如下:
seqwr:顺序写入
seqrewr:顺序重写
seqrd:顺序读取
rndrd:随机读取
rndwr:随机写入
rndrw:混合随机读写

sysbench fileio --threads=1 --file-total-size=5G --file-test-mode=rndrw prepare
在这里插入图片描述
此图为memory,cpu资源相同环境下的混合随机读写速度(左:机械盘,右:固态盘)

sysbench fileio --threads=1 --file-total-size=5G --file-test-mode=rndrw prepare
在这里插入图片描述
sysbench fileio --threads=1 --file-total-size=5G cleanup

#sysbench~mysql基准测试

sysbench oltp_read_write --db-driver=mysql --time=300 --threads=1 --report-interval=3 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=mysql --mysql-password=pwd123 --mysql-db=test --tables=20 --table_size=10000 prepare

–db-driver=mysql:数据库的驱动类型
–time=300:访问的时间300秒
–threads=1:使用1个线程模拟并发访问
–report-interval=3:表示每隔3秒输出压测情况
–mysql-db=test:指定测试的库为test_db
–tables=20:在这个库中构建20个表
–table_size=10000:每个表中构建出 10万条测试数据
oltp_read_write:表示执行oltp 数据库的读写测试
prepare:准备阶段

/etc/my.cnf
[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /data/mysql/data
lower_case_table_names = 1
skip-name-resolve = 1
character-set-server = utf8
innodb_buffer_pool_size = 2G
innodb_data_file_path = ibdata1:1G:autoextend
log_bin_trust_function_creators = 1

sysbench oltp_read_write --db-driver=mysql --time=300 --threads=10 --report-interval=1 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=mysql --mysql-password=pwd123 --mysql-db=test --tables=20 --table_size=10000 --db-ps-mode=disable run > oltp_read_write.log

在这里插入图片描述
thds:10 : 表示当前有10个线程正在压测
tps:379.92 : 表示当前每秒执行了 379.92 个查询
qps:7827: 表示当前每秒可以执行 7827 个请求
(r/w/o: 5474/1566/785) : 表示在每秒 5474 个请求中,有 1566 个读请求,785 个写请求,32 个其他请求
lat (ms,95%): 36.89:表示 95% 的请求的延迟都在36.89 毫秒以下
err/s:1: 表示每秒1个请求失败
reconn/s: 0.00:表示发生了0次的网络重连

[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /data/mysql/data
lower_case_table_names = 1
skip-name-resolve = 1
character-set-server = utf8
innodb_buffer_pool_size = 5G
innodb_data_file_path = ibdata1:1G:autoextend
log_bin_trust_function_creators = 1

sysbench oltp_read_write --db-driver=mysql --time=300 --threads=50 --report-interval=2 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=mysql --mysql-password=pwd123 --mysql-db=test --tables=20 --table_size=100000 --db-ps-mode=disable run > oltp_read_write.log
在这里插入图片描述

[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /data/mysql/data
lower_case_table_names = 1
skip-name-resolve = 1
character-set-server = utf8
innodb_buffer_pool_size = 8G
innodb_data_file_path = ibdata1:1G:autoextend

sysbench
oltp_read_write --db-driver=mysql --time=300 --threads=30 --report-interval=2 --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=mysql --mysql-password=pwd123 --mysql-db=test --tables=20 --table_size=100000 --db-ps-mode=disable run > oltp_read_write.log

在这里插入图片描述

总结

由上述压测结果得出,oltp场景下,cpu,memory,buffer cache增加会显著的影响tps,qps。但是对io的影响不是很明显,oltp场景对应的事务多,数据量小的业务。memory和db buffer增大,导致数据多缓存于buffer cache,所以数据从内存和磁盘间的交换较少。cpu处理频率高。如果是生还环境,需要分析具体sql,以及查阅查查profile和perforomance进行具体的性能分析

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39735909/article/details/127069429

智能推荐

STM32H743Nucleo ADC使用DMA配置无法读取数据的问题及解决_stm3h743 串口2 dma 接收无法拷贝数据-程序员宅基地

文章浏览阅读1w次,点赞16次,收藏76次。STM32H743Nucleo ADC使用DMA配置无法读取数据的问题及解决一、对ADC进行配置二、对程序进行修改三、程序执行结果四、问题解决一、对ADC进行配置使用STM32H743Nucleo板使用DMA对ADC进行采样实验。对H743Nucleo通过STM32CubeMX(Version 5.0.1 STM32Cube V1.0)进行配置。代码编译器选择KeilMDK (V2.25..._stm3h743 串口2 dma 接收无法拷贝数据

Openstack nova-scheduler 源码分析 — Filters/Weighting_nova-scheduler down怎么办-程序员宅基地

文章浏览阅读3.7k次,点赞2次,收藏2次。目录目录前言调度器FilterScheduler调度器的工作流程Filters 过滤器Filters 类型Weighting 权重源码实现关键文件及其意义阶段一nova-scheduler 接收 build_instances RPC 远程调用前言本篇记录了 Openstack 在创建 Instances 时,nova-scheduler 作为_nova-scheduler down怎么办

mysql用户域账户登录_使用本地系统帐户和域用户帐户两者区别(microsoft SQLServer2000...-程序员宅基地

文章浏览阅读1.8k次。使用本地系统帐户和域用户帐户两者区别(microsoft SQLServer2000) 在安装SQLSERVER2000时,会有这样的 一个选择画面,这是设 置启动sqlserver服务的登录身份。SQLSERVER2000装好后,会产生一个 MSSQLSERVER服务,在这里设置的就是启动它这个服务的登录身份。使用本地系统帐户和域用户帐户两者区别(microsoft SQLServer2000)..._系统有一个帐户mysql_sf_hhjlh2

基于IEEE RBTS BUS4标准系统的Matlab Simulink仿真模型,可观测电压、潮流,并接入故障与分布式发电等-程序员宅基地

文章浏览阅读300次,点赞3次,收藏10次。综上所述,IEEE RBTS BUS4标准系统是一种基于Matlab simulink的高质量模型,具备与标准参数一致的特性,可以用于电力系统分析和仿真。通过自行搭建该模型(使用Matlab 2016a),该系统具备与标准参数一致的特性,并能够观测电压和潮流等参数。首先,通过该模型,工程师可以在电力系统设计和规划阶段进行有效的试验和仿真,以评估系统的性能和可靠性。IEEE RBTS BUS4标准系统是电力系统领域的重要工具,透过仿真和分析,可以帮助工程师深入了解电力系统的稳定性、可靠性和安全性等关键方面。

[转载]全金属外壳——坦克遥控高射机枪-程序员宅基地

文章浏览阅读945次。 从坦克诞生以来,炮塔上用于防空和对地射击的机枪,就一直是坦克的标准装备。绝大多数坦克车载机枪,都是架在炮塔上面,因而就有明显的缺陷,坦克机枪手在瞄准和射击时都采用手动,坦克成员要从舱口探出身体来操纵武器,没有装甲防护,在弹片横飞的战场上,很容易被击中受伤。另一方面,现代战争要求坦克具有超压三防战斗能力,坦克在战斗中要封闭舱门,这样也不适合敞开暴露式车载机枪的使用。那么,是否可以...

Python中常用的内置函数(不断更新中)_python内置函数-程序员宅基地

文章浏览阅读2w次,点赞20次,收藏204次。在Python中有非常多的内置函数,在这里列出来一些经常使用到的内置函数,在编程时如果恰当地使用这些函数会达到事半功倍的效果!本篇博文内容会经常更新,建议收藏_python内置函数

随便推点

RxAndroid jar包引入异常导致java.lang.NoClassDefFoundError: Failed resolution of: Lio/reactivex/android/sche-程序员宅基地

文章浏览阅读1.8k次。前言:项目引用第三方sdk,运行报错:java.lang.NoClassDefFoundError: Failed resolution of: Lio/reactivex/android/schedulers/AndroidSchedulers;原因:没有引入RxAndroid。解决:Build.gradle中增加implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'但是:项目服务器不是用gradle 编译的,而是mk。所以要找jar.._java.lang.noclassdeffounderror: failed resolution of: landroidx/activity/res

Flask Api 文档管理与 Swagger结合之道---Flask-RESTPlus(三)_flask结合swagger 开发api-程序员宅基地

文章浏览阅读6.2k次。1. 说明 先来看一个应用场景: 我写了一段功能性的程序(可能是Java的,也可能是Python的),供他人调用(调我程序可能是其它编程语言,或者直接运行,如果调用者对我使用的工具不熟悉,直接调用可能很麻烦),这个程序需要传入多个参数,需要结构化的输出,我以什么方式提供给比较好呢? 我们可能会选择BS的结构,建立一个Web-Server,然后把功能性的程序放在Web-Server上并向外暴..._flask结合swagger 开发api

idea中导入的springboot项目依赖jar包下载不成功_could not download spring-boot-starter-test-2.7.16-程序员宅基地

文章浏览阅读3.4k次,点赞2次,收藏3次。今日在GitHub上下载了一个springboot项目来学习,但是导入的时候依赖的jar包一直无法下载,试了各种办法依旧不行,最后终于找到解决办法:配置profiles如图所示,右击项目点击下方的manven,右侧的profiles,下图是我已经配置好的,没有配置之前是create“profiles”,创建一个profiles创建完以后在其中添加如下标签: <profiles>..._could not download spring-boot-starter-test-2.7.16.jar (org.springframework.

python爱心代码高级-程序员宅基地

文章浏览阅读268次。这段代码使用了两个嵌套的循环来遍历坐标系中的每个点。通过计算每个点到心形曲线的距离,判断该点是否在心形曲线内部。如果在内部,则打印"*",否则打印空格。最终,通过循环打印的方式,绘制出了一个爱心图案。

100道单选题,随机选,考够60分的概率有多高?_14. 10道单选题,每道题选对10分,选错0分,随机选正确率是25%,则考过60分的概率约为-程序员宅基地

文章浏览阅读4k次。在python3里面运行,你可以计算出来,你就会明白概率有多么低了_14. 10道单选题,每道题选对10分,选错0分,随机选正确率是25%,则考过60分的概率约为

Detours使用说明_用detours hook自定义函数-程序员宅基地

文章浏览阅读4.1k次。Detours使用说明 1 介绍2 Detours API hook2.1 hook DLL 中的函数2.2 hook自定义c 函数2.3 hook类成员函数2.4 DetourCreateProcessWithDll2.5 Detouring by Address 1 介绍 Api hook包括两部分:api调用的截取和api函数的重定向。通过api_用detours hook自定义函数