Sysbench简单测试数据库性能
摘要
先进行了一个PG数据库的测试.
Mysql数据库的测试稍后跟上.
紧接着上一篇的安装, 部分文件可能需要特定路径才可以.
sysbench 测试的说明
一个参数
这里稍微说一下参数的问题
sysbench \
--db-driver=pgsql \ # 针对POSTGRESQL 数据库测试
--pgsql-host=127.0.0.1 \ #连接数据库地址
--pgsql-port=5432 \ #连接数据库端口号
--pgsql-user=sbtest \ #数据库用户,最好具有superuser
--pgsql-password=sbtest \ #密码
--pgsql-db=sbtest \ #数据库名
--oltp-table-size=200000 \ #每个表的数据行数
--oltp-tables-count=10 \ #在一个数据库中有多少表
--rand-init=on \ #数据的随机性是否打开
--threads=10 \ #工作是并行的线程数
--time=30 \ # 测试多长秒数
--events=0 \ #是否对事务执行的数据量进行限制 0 是不限制
--report-interval=10 \ #每10秒产生一次报告
--percentile=99 \ #针对测试数据进行汇总,汇总数据占据总数据的百分比
/usr/share/sysbench/tests/include/oltp_legacy/oltp.lua \ #使用哪个 lua脚本
prepare
其中需要注意的是选择的脚本应该从开始到测试是一致的,不能修改,测试的过程,也主要分为 prepare, run, cleanup
来源:https://blog.csdn.net/liuhuayang/article/details/126277350
自己编译打包的注意事项
需要将编译好的安装包放到
/sysbench1.0.20 这个目录
然后可以看到 share 里面有对应的 lua 脚本.
可以使用相对路径的方式进行测试和指导
简单测试脚本
# prepare
./sysbench \
--db-driver=pgsql \
--pgsql-host=10.110.139.222 \
--pgsql-port=5432 \
--pgsql-user=postgres \
--pgsql-password=TestMypassword \
--pgsql-db=myapp0203 \
--oltp-table-size=200000 \
--oltp-tables-count=10 \
--rand-init=on \
--threads=10 --time=30 \
--events=0 \
--report-interval=10 \
--percentile=99 ../share/sysbench/tests/include/oltp_legacy/select_random_points.lua \
prepare
#run
./sysbench \
--db-driver=pgsql \
--pgsql-host=10.110.139.222 \
--pgsql-port=5432 \
--pgsql-user=postgres \
--pgsql-password=TestMypassword \
--pgsql-db=myapp0203 \
--oltp-table-size=200000 \
--oltp-tables-count=10 \
--rand-init=on \
--threads=10 --time=30 \
--events=0 \
--report-interval=10 \
--percentile=99 ../share/sysbench/tests/include/oltp_legacy/select_random_points.lua \
run
#cleanup
./sysbench \
--db-driver=pgsql \
--pgsql-host=10.110.139.222 \
--pgsql-port=5432 \
--pgsql-user=postgres \
--pgsql-password=TestMypassword \
--pgsql-db=myapp0203 \
--oltp-table-size=200000 \
--oltp-tables-count=10 \
--rand-init=on \
--threads=10 --time=30 \
--events=0 \
--report-interval=10 \
--percentile=99 ../share/sysbench/tests/include/oltp_legacy/select_random_points.lua \
cleanup
注意不同的脚本
ll ../share/sysbench/tests/include/oltp_legacy
-rwxr-xr-x 1 root root 1195 2月 17 13:23 bulk_insert.lua
-rwxr-xr-x 1 root root 4696 2月 17 13:23 common.lua
-rwxr-xr-x 1 root root 366 2月 17 13:23 delete.lua
-rwxr-xr-x 1 root root 1171 2月 17 13:23 insert.lua
-rwxr-xr-x 1 root root 3004 2月 17 13:23 oltp.lua
-rwxr-xr-x 1 root root 368 2月 17 13:23 oltp_simple.lua
-rwxr-xr-x 1 root root 527 2月 17 13:23 parallel_prepare.lua
-rwxr-xr-x 1 root root 369 2月 17 13:23 select.lua
-rwxr-xr-x 1 root root 1448 2月 17 13:23 select_random_points.lua
-rwxr-xr-x 1 root root 1556 2月 17 13:23 select_random_ranges.lua
-rwxr-xr-x 1 root root 369 2月 17 13:23 update_index.lua
-rwxr-xr-x 1 root root 578 2月 17 13:23 update_non_index.lua
可以测试带不带索引的update结果
# 只需要将上一个脚本里面的select_random_points.lua 修改为:update_index.lua
# 准备数据大约需要150秒
# 带索引的测试结果
[ 10s ] thds: 10 tps: 239.66 qps: 239.66 (r/w/o: 0.00/239.66/0.00) lat (ms,99%): 116.80 err/s: 0.00 reconn/s: 0.00
[ 20s ] thds: 10 tps: 227.70 qps: 227.70 (r/w/o: 0.00/227.70/0.00) lat (ms,99%): 211.60 err/s: 0.00 reconn/s: 0.00
[ 30s ] thds: 10 tps: 218.30 qps: 218.30 (r/w/o: 0.00/218.30/0.00) lat (ms,99%): 397.39 err/s: 0.00 reconn/s: 0.00
SQL statistics:
queries performed:
read: 0
write: 6867
other: 0
total: 6867
transactions: 6867 (228.58 per sec.)
queries: 6867 (228.58 per sec.)
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)
General statistics:
total time: 30.0405s
total number of events: 6867
Latency (ms):
min: 0.74
avg: 43.74
max: 678.37
99th percentile: 257.95
sum: 300342.67
Threads fairness:
events (avg/stddev): 686.7000/2.76
execution time (avg/stddev): 30.0343/0.00
# 不带索引的测试环境
# 只需要将上一个脚本里面的select_random_points.lua 修改为:update_non_index.lua
[ 10s ] thds: 10 tps: 166.95 qps: 166.95 (r/w/o: 0.00/166.95/0.00) lat (ms,99%): 383.33 err/s: 0.00 reconn/s: 0.00
[ 20s ] thds: 10 tps: 213.13 qps: 213.13 (r/w/o: 0.00/213.13/0.00) lat (ms,99%): 193.38 err/s: 0.00 reconn/s: 0.00
[ 30s ] thds: 10 tps: 213.40 qps: 213.40 (r/w/o: 0.00/213.40/0.00) lat (ms,99%): 219.36 err/s: 0.00 reconn/s: 0.00
SQL statistics:
queries performed:
read: 0
write: 5945
other: 0
total: 5945
transactions: 5945 (197.95 per sec.)
queries: 5945 (197.95 per sec.)
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)
General statistics:
total time: 30.0309s
total number of events: 5945
Latency (ms):
min: 0.74
avg: 50.50
max: 626.36
99th percentile: 227.40
sum: 300244.16
Threads fairness:
events (avg/stddev): 594.5000/1.96
execution time (avg/stddev): 30.0244/0.00
感想
sysbench应该具有很多玩法. 不同的lua脚本应该能够实现不同的测试场景
感觉可以作为一个比较简单的测试场景 作为一个基础基线
低于基线基本不可用
高于基线可能不好用
测试的数据肯定比生产的环境要简单和单纯
直接导出生产遇到复杂的场景和SQL时出现巨大的性能衰退.
简单的测试读写
# 如下脚本的测试结果就明显好于上面一个脚本
[ 10s ] thds: 10 tps: 221.27 qps: 4572.62 (r/w/o: 3212.19/889.75/470.68) lat (ms,99%): 272.27 err/s: 7.19 reconn/s: 0.00
[ 20s ] thds: 10 tps: 198.86 qps: 4112.85 (r/w/o: 2889.27/799.13/424.46) lat (ms,99%): 272.27 err/s: 7.61 reconn/s: 0.00
[ 30s ] thds: 10 tps: 218.50 qps: 4496.90 (r/w/o: 3159.23/874.28/463.39) lat (ms,99%): 227.40 err/s: 7.10 reconn/s: 0.00
SQL statistics:
queries performed:
read: 92624
write: 25653
other: 13597
total: 131874
transactions: 6397 (212.95 per sec.)
queries: 131874 (4390.05 per sec.)
ignored errors: 219 (7.29 per sec.)
reconnects: 0 (0.00 per sec.)
General statistics:
total time: 30.0378s
total number of events: 6397
Latency (ms):
min: 3.42
avg: 46.92
max: 1354.94
99th percentile: 262.64
sum: 300162.00
Threads fairness:
events (avg/stddev): 639.7000/22.64
execution time (avg/stddev): 30.0162/0.01
详细内容
# 脚本为:
./sysbench \
--db-driver=pgsql \
--pgsql-host=10.110.139.222 \
--pgsql-port=5432 \
--pgsql-user=postgres \
--pgsql-password=TestMypassword \
--pgsql-db=myapp0203 \
--threads=10 --time=30 \
--events=0 \
--report-interval=10 \
--percentile=99 ../share/sysbench/oltp_read_write.lua \
prepare
./sysbench \
--db-driver=pgsql \
--pgsql-host=10.110.139.222 \
--pgsql-port=5432 \
--pgsql-user=postgres \
--pgsql-password=TestMypassword \
--pgsql-db=myapp0203 \
--threads=10 --time=30 \
--events=0 \
--report-interval=10 \
--percentile=99 ../share/sysbench/oltp_read_write.lua \
run
./sysbench \
--db-driver=pgsql \
--pgsql-host=10.110.139.222 \
--pgsql-port=5432 \
--pgsql-user=postgres \
--pgsql-password=TestMypassword \
--pgsql-db=myapp0203 \
--threads=10 --time=30 \
--events=0 \
--report-interval=10 \
--percentile=99 ../share/sysbench/oltp_read_write.lua \
cleanup
Sysbench简单测试数据库性能的更多相关文章
- Loadrunner测试数据库性能,测试SQL语句的脚本例子
Loadrunner与SQL Server的操作可以通过录制的方式来实现,但本文还是通过直接调用loadrunner本身的function来实现sql语句的操作, 主要用到的是lr_db_connec ...
- 使用jmeter测试数据库性能
出现如图所示的问题 解决办法: 1.下载驱动包,将mysql-connector-Java.jar分别放到Jmeter和Java安装目录的lib和ext目录下 链接:http://pan.baidu. ...
- sysbench压力测试工具安装及使用
使用sysbench指定连接的时候不需要写上mysql-socket参数 如果自己使用sysbench来测试mysql性能的话,建议使用源码编译比较好,版本为0.4版本. 步骤是: .yum inst ...
- 【操作教程】利用YCSB测试巨杉数据库性能
一.前言 巨杉数据库(SequoiaDB)是国内第一款新一代文档型分布式数据库,巨杉数据库由巨杉软件完全自主研发,拥有完全自主知识产权,不基于任何其它的开源项目.SequoiaDB数据库是为分布式存储 ...
- 入门级----黑盒测试、白盒测试、手工测试、自动化测试、探索性测试、单元测试、性能测试、数据库性能、压力测试、安全性测试、SQL注入、缓冲区溢出、环境测试
黑盒测试 黑盒测试把产品软件当成是一个黑箱子,只有出口和入口,测试过程中只要知道往黑盒中输入什么东西,知道黑盒会出来什么结果就可以了,不需要了解黑箱子里面是如果做的. 即测试人员不用费神去理解软件里面 ...
- ORACLE 数据库简单测试
ORACLE 数据库简单测试 操作系统:Windows 7 – ORACLE:oracle database 10.2.0.4 一.目的 测试 启动监听程序.数据库 非同一个用户的情况,用户是否可以 ...
- 【JMeter】JMeter进行简单的数据库(mysql)压力测试
JMeter进行简单的数据库(mysql)压力测试 1.点击测试计划,再点击“浏览”,把JDBC驱动添加进来: 注:JDBC驱动一般的位置在java的安装地址下,路径类似于: \java\jre ...
- sysbench 测试mysql性能
===== #1sysbench --test=oltp --oltp-table-size=10000 --mysql-db=test --mysql-user=root --mysql-passw ...
- 装服务器,测试数据库,简单的maven命令
[说明]今天总体回顾一下:大概是早上装服务器,下午测试数据库,晚上了解简单的maven命令 一:今日完成 1)在远程服务器的tomcat 设置好管理员的登录账号 2)登录tomcat 的项目管理 查看 ...
- sysbench 压力测试
200 ? "200px" : this.width)!important;} --> 介绍 sysbench是一个模块化.跨平台.多线程基准测试工具,主要用于测试不同系统参 ...
随机推荐
- 如何通过一个SDK轻松搞定人脸识别,拯救初入职场的程序猿
摘要:看一个SDK如何拯救初入职场的程序猿小Hi- [职场初体验] 时间过得真快,距离上次给小Hi安排"人脸识别"的开发任务(话接上期:[快速玩转华为云开发]小Hi拍了拍你,基于华 ...
- 华为云原生数据仓库GaussDB(DWS)深度技术解读:融、快、大、稳、易
摘要:云原生数据仓库GaussDB(DWS)架构师应邀为大家解读数仓深度技术. "云原生"在2020年成为备受瞩目的热词,云原生在确保企业数字化转型中资源快速供给.按需使用的同时, ...
- Kafka 源码解析:Server 端的运行过程
摘要:Kafka网络模块之Server端,介绍Server端启动.接收请求和处理请求的过程. 本文分享自华为云社区<Kafka网络模块-Server端>,原文作者:中间件小哥 . Sock ...
- MRS +Apache Zeppelin,让数据分析更便捷
摘要:选择轻量化.免运维.低成本的大数据云服务是业界趋势,如果搭建Zeppelin再同步自建一套Hadoop生态成本太高!因此我们通过结合华为云MRS服务构建数据中台. 本文分享自华为云社区<M ...
- BOM批量查询
1业务要求 1.当多层展开时: 根据"BOM应用程序"字段CAPID在TC04中取出"选择ID"TC04-CSLID: 再根据TCS41-CSLID= TC0 ...
- ==和equals的区别和联系,StringBuffer和StringBuilder,clone方法
==和equals的区别和联系? ( 1)对于==,比较的是值是否相等 如果作用于基本数据类型的变量,则直接比较其存储的 "值"是否相等: 如果作用于引用类型的变量,则比较的是所指 ...
- 二、mongo集群搭建
系列导航 一.linux单机版mongo安装(带密码验证) 二.mongo集群搭建 三.java连接mongo数据库 四.java对mongo数据库增删改查操作 五.mongo备份篇 mongoexp ...
- lucene.net全文检索(一)相关概念及示例
相关概念 站内搜索 站内搜索通俗来讲是一个网站或商城的"大门口",一般在形式上包括两个要件:搜索入口和搜索结果页面,但在其后台架构上是比较复杂的,其核心要件包括:中文分词技术.页面 ...
- python之HtmlTestRunner(二)view无法打开问题解决
默认使用python之HtmlTestRunner会遇到测试报告中的view无法打开的情况 view打不开的情况解决 打开\Lib\site-packages\HtmlTestRunner\templ ...
- java进阶(7)--Object类-toString()/equals()/finalize()/hashCode()
一.object类介绍 object类这个老祖宗中的方法,所有子类通用,直接或间接继承. 学习常用方法即可 列表 prtected object clone() //对象克隆 ...