Mysql性能指标

一、QPS 

  1. Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数

  2. 是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。

普通的可以通过status 查看, 展示的一个平均值,

 是通过下面 mysql重启后开始计算的 Questions 查询次数; Uptime 到现在的时间;

这里有一个问题: 这里只能看见开机到现在的,如果我们需要看现在实时的QPS,怎么看了

mysqladmin extended-status -i 1 -r | grep -i Questions ## mysqladmin 命令

上面的命令表示,每1s实时刷新,当前1s的查询次数。

 二、 TPS 每秒事务数

  1. 是TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。

  2. 一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。

  3. 客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数

三、  sysbench  测试性能

sysbench直接用

yum install epel-release

yum install sysbench

安装即可

①  在Mysql中创建sbtest数据库

② 创建测试数据

sysbench --test=/usr/share/sysbench/tests/include/oltp_legacy/select.lua --oltp-tables-count=4 --oltp-table-size=1000000 --oltp-dist-res=95 --mysql-host=127.0.01 --mysql-user=root --mysql-password=123456 --num-threads=16 --max-requests=0 --max-time=3000 --report-interval=3 prepare 

--test: 这里是测试sysbench下面的select.lua脚本,不知道目录的,可以通过find找到

--oltp-tables-count: 测试表的数量,这里我们会建立4张表

oltp-table-size: 一张表的记录数量

--oltp-dist-res:热点数据的访问频率

--oltp-dist-pct:  百分之多少的数据为热点数据

--num-threads: 线程数量

--max-time=3000: 测试时间是3000秒

report-interval=3: 3S 打印一次结果

sysbench --test=/usr/share/sysbench/tests/include/oltp_legacy/select.lua --oltp-tables-count=4 --oltp-table-size=1000000 --oltp-dist-res=95 --mysql-host=127.0.01 --mysql-user=root --mysql-password=123456  --mysql-db=sbtest --num-threads=16 --max-requests=0 --max-time=30000 --report-interval=3 prepare 

上面运行成功后,数据库中就会有数据了

③ 运行测试命令

sysbench --test=/usr/share/sysbench/tests/include/oltp_legacy/select.lua --oltp-tables-count=4 --oltp-table-size=1000000 --oltp-dist-res=95 --mysql-host=127.0.01 --mysql-user=root --mysql-password=123456  --num-threads=16 --max-requests=0 --max-time=3000 --report-interval=3 run

测试可以根据不同的类似选择, 针对不同的系统,操作的lua文件。

sysbench --test=/usr/share/sysbench/tests/include/oltp_legacy/select.lua --oltp-tables-count=4 --oltp-table-size=1000000 --oltp-dist-res=95 --mysql-host=127.0.01 --mysql-user=root --mysql-password=123456  --num-threads=16 --max-requests=0 --max-time=3000 --report-interval=3 run

从下图可以看出我们当前服务器的mysql的tps是7187,qps是7187, 也可以通过 mysqladmin extended-status -i 1 -r | grep -i Questions 看结果

通过上面的测试发现,当我们--num-threads线程的数量不一样的时候,我们mysql的性能是不一样的,可以通过QPS、TPS、还有响应时间来判断。

show global status like 'thread%'; 命令可以查看我们mysql当前的线程情况。

Threads_connected表示当前mysql的连接多少个线程

Threads_running 表示当前mysql正在运行的线程数量

这两个变量其实理解有点别扭,我们通过 show processlist; 命令来理,

show processlist; 展示多少条就是当前mysql连接的线程数,也就是Threads_connected,Threads_running就是show processlist; 结果中Command不是休眠的数量。

四、 TPCC测试性能

  • TPC-C是专门针对联机交易处理系统(OLTP系统)的规范
  • Tpcc-mysql由percona根据规范实现

TPCC简单来说就是一个模拟商城下单支付的交易处理场景。

① 安装TPCC

cd /usr/local后下载tpcc

wget https://github.com/Percona-Lab/tpcc-mysql/archive/master.zip

改名 mv master.zip tpcc-mysql.zip

解压 unzip tpcc-mysql.zip

安装之前需要保证将mysql_config添加到$PATH 环境变量中

shell > export PATH=/PATH/TO/MYSQL/BIN/mysql_config:$PATH

进入tpcc解压目录 cd /usr/local/tpcc-mysql

shell > cd src ;

shell > make

这样就完成了tpcc-mysql的安装

② 初始化数据

A)、创建数据库

mysqladmin create tpcc10

B)、创建表

cd /usr/local/tpcc-mysql

mysql tpcc10 < create_table.sql

C)、创建索引和外键(也可以在装载数据之后)

mysql tpcc10 < add_fkey_idx.sql

D)、装载数据

./tpcc_load -h127.0.0.1 -d tpcc10 -u root -p "" -w 1000

各列含义为: |hostname:port| |dbname| |user| |password| |WAREHOUSES

选项 warehouse 意为指定测试库下的仓库数量, 在生产环境中建议设置至少100以上

这里设置10个仓库

③ 数据跑完之后,开始压力测试

./tpcc_start -h127.0.0.1 -P3306 -dtpcc1000 -uroot -p '' -w1000 -c32 -r10 -l10800

各列含义为: |hostname| |port| |dbname| |user| |password|  |WAREHOUSES| |CONNECTIONS| |WARMUP TIME| |BENCHMARK TIME|

五、 mysqlslap  测试

sysbench和tpcc测试都是固定的sql逻辑,我们如果需要测试自己项目sql逻辑的话,可以使用mysqlslap测试

① 创建我们自己test.sql的脚本

set @id = floor(rand() * 10000);
select * from sbtest.sbtest1 where id = @id;

② 运行测试

--query: 测试sql脚本文件,这个脚本需要针对项目的业务逻辑。

-c: 几个线程去跑这个sql

--create-schema: 指定数据库名称

--number-of-queries:  总的测试查询次数(并发客户数×每客户查询次数)

mysqlslap --query=test.sql -c 4 --number-of-queries=10000000 --create-schema=sbtest

运行之后,mysqlslap不会像sysbench和tpcc一样去输出结果,所以我们可以用

mysqladmin extended-status -i 1 -r|grep -i Questions 命令来查看1s中执行的sql数量

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值