摘要

先进行了一个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简单测试数据库性能的更多相关文章

  1. Loadrunner测试数据库性能,测试SQL语句的脚本例子

    Loadrunner与SQL Server的操作可以通过录制的方式来实现,但本文还是通过直接调用loadrunner本身的function来实现sql语句的操作, 主要用到的是lr_db_connec ...

  2. 使用jmeter测试数据库性能

    出现如图所示的问题 解决办法: 1.下载驱动包,将mysql-connector-Java.jar分别放到Jmeter和Java安装目录的lib和ext目录下 链接:http://pan.baidu. ...

  3. sysbench压力测试工具安装及使用

    使用sysbench指定连接的时候不需要写上mysql-socket参数 如果自己使用sysbench来测试mysql性能的话,建议使用源码编译比较好,版本为0.4版本. 步骤是: .yum inst ...

  4. 【操作教程】利用YCSB测试巨杉数据库性能

    一.前言 巨杉数据库(SequoiaDB)是国内第一款新一代文档型分布式数据库,巨杉数据库由巨杉软件完全自主研发,拥有完全自主知识产权,不基于任何其它的开源项目.SequoiaDB数据库是为分布式存储 ...

  5. 入门级----黑盒测试、白盒测试、手工测试、自动化测试、探索性测试、单元测试、性能测试、数据库性能、压力测试、安全性测试、SQL注入、缓冲区溢出、环境测试

    黑盒测试 黑盒测试把产品软件当成是一个黑箱子,只有出口和入口,测试过程中只要知道往黑盒中输入什么东西,知道黑盒会出来什么结果就可以了,不需要了解黑箱子里面是如果做的. 即测试人员不用费神去理解软件里面 ...

  6. ORACLE 数据库简单测试

    ORACLE 数据库简单测试 操作系统:Windows 7 – ORACLE:oracle database 10.2.0.4 一.目的 测试 启动监听程序.数据库  非同一个用户的情况,用户是否可以 ...

  7. 【JMeter】JMeter进行简单的数据库(mysql)压力测试

    JMeter进行简单的数据库(mysql)压力测试 1.点击测试计划,再点击“浏览”,把JDBC驱动添加进来: 注:JDBC驱动一般的位置在java的安装地址下,路径类似于:    \java\jre ...

  8. sysbench 测试mysql性能

    ===== #1sysbench --test=oltp --oltp-table-size=10000 --mysql-db=test --mysql-user=root --mysql-passw ...

  9. 装服务器,测试数据库,简单的maven命令

    [说明]今天总体回顾一下:大概是早上装服务器,下午测试数据库,晚上了解简单的maven命令 一:今日完成 1)在远程服务器的tomcat 设置好管理员的登录账号 2)登录tomcat 的项目管理 查看 ...

  10. sysbench 压力测试

    200 ? "200px" : this.width)!important;} --> 介绍 sysbench是一个模块化.跨平台.多线程基准测试工具,主要用于测试不同系统参 ...

随机推荐

  1. 带你了解VXLAN网络中报文的转发机制

    摘要:本节以集中式VXLAN网络(手工方式建立VXLAN隧道)为例,分别介绍相同子网内.不同子网间是如何进行通信的.在了解转发机制的前提下,我们先来看下VXLAN网关有哪些种类. VXLAN二层网关与 ...

  2. Spring Boot CMD 运行日志输出中文乱码

    Spring Boot 在Windows CMD 中运行,日志输出中文乱码name="CONSOLE" 设置成 charset utf-8 ,在windows cmd 中运行时,l ...

  3. VS Code的C/C++环境配置的傻瓜式教程(看这一篇就够了)

    html: toc: true VS Code的C/C++环境配置的傻瓜式教程(看这一篇就够了) 写在前面的话 作者在学习使用vscode写C代码的时候,根据网上很多参差不齐的教程踩了不少的坑,很多教 ...

  4. vim-修改键盘Tab键为四个空格

    在 /etc/vimrc 文件后添加一行 set ts=4

  5. Vue | vuex安装失败解决的方法实例

    Vuex是一个专为Vue.js应用程序开发的状态管理模式 下面这篇文章主要给大家介绍了关于vuex安装失败解决的方法,文中通过图文介绍的非常详细,需要的朋友可以参考下 1.报错信息: npm ERR! ...

  6. CF:706B. Interesting drink (二分查找)

    题意:不同奶茶店里同样的奶茶价格不同,问在当天Yuki持有的零钱能在几家店购买 思路:对价格数组排序,先优先判断是否会比较最大值和最小值,然后二分查找 #include<bits/stdc++. ...

  7. AtCoder Beginner Contest 218 A~D

    比赛链接:Here A - Weather Forecas 水题,判断 \(s[n - 1] = o\) 的话输出 YES B - qwerty 题意:给出 \((1,2,...,26)\) 的某个全 ...

  8. 移动端h5中rem适配

    1 (function (win, lib) { 2 var doc = win.document; 3 var docEl = doc.documentElement; 4 var metaEl = ...

  9. vue-li3结合vantUI框架实现国际化语言切换

    vue-cli3结合vantUI框架实现国际化语言切换 https://blog.csdn.net/weixin_45045199/article/details/105838517?utm_medi ...

  10. 简单剖析Hashmap

    剖析 Java Hashmap 源码 在 Java 的集合框架中,HashMap 是一颗璀璨的明珠.通过深入挖掘其源码,我们将揭开 HashMap 的神秘面纱,理解其底层原理.扩容机制和数据结构. 1 ...