mysql数据库性能报告_mysql性能测试报告
1. 测试⽬的
对mysql数据库进⾏基准测试,各性能指标进⾏定量的、可复现的、可对⽐的测试。
基准测试可以理解为针对系统的⼀种压⼒测试。但基准测试不关⼼业务逻辑,更加简单、直接、易于测试,
数据可以由⼯具⽣成,不要求真实;⽽压⼒测试⼀般考虑业务逻辑(如购物车业务),要求真实的数据。
2. 测试环境
2.1 软件配置
资源管理器快捷键2.1 硬件配置
3.测试⼯具
3.1 ⼯具介绍sysbench
本次测试采⽤通⽤⼯具SysBench,是跨平台的基准测试⼯具,⽀持多线程,⽀持多种数据库;
对数据库的基准测试的作⽤,就是分析在当前的配置下(包括硬件配置、OS、数据库设置等) 数据库的性能表现,
从⽽出MySQL的性能阈值,并根据实际系统的要求调整硬件配置。
3.2 测试指标
TPS:Transaction Per Second,事务数/秒
⼀台数据库服务器在单位时间内处理事务的个数,每个事务包含18条SQL语句。
QPS:Query Per Second, 查询量/秒
每秒执⾏的查询次数,是对服务器在规定时间内所处理查询量多少的衡量标准,即数据库每秒执⾏的SQL数,包含insert、select、update、delete等。
响应时间:包括平均响应时间、最⼩响应时间、最⼤响应时间、时间百分⽐等,其中时间百分⽐参考意义较⼤,如前95%的请求的最⼤响应时间。
并发量:同时处理的查询请求的数量。
4. 安装步骤
上述命令依次执⾏,安装完成。查测试脚本所在路径:
#find / -name '*oltp.lua*'
例如:/opt/sysbench-1.0.12/tests/include/oltp_legacy/oltp.lua
然后进⼊ cd /opt/sysbench-1.0.12,开始测试。
5. 参数说明
sysbenh测试⼯具命令,根据测试需要调整参数sysbench [options]... [testname] [command]
sysbench --help 查看命令的基本参数
表5-1
选项[options]
备注
--test
脚本路径 oltp.lua
--mysql-db
测试库名称
--mysql-host
数据库IP地址
--mysql-port
端⼝号 默认3306
--mysql-user
数据库⽤户名,⼀般是root
--mysql-password
数据库密码
在⽼版本的sysbench中,可以通过--test参数指定测试的脚本;
⽽在新版本中,--test参数已经声明为废弃,可以不使⽤--test,⽽是直接指定脚本。如下两种结果相同
表5-2
mysql面试题测试测试项[testname]
备注
--oltp-tables-count多线程开发技术
建表数量
-
-oltp-table-size
每张表的数据量,默认[10000]
--time=N
限制的总执⾏时间,默认为10s
--threads=N
需要使⽤的线程数,默认为1
--report-interval=Naspose中文文档
指定间隔(秒)报告统计信息,默认为0,禁⽤
--oltp-test-mode=complex
测试模式,默认complex
--oltp-test-mode 运⾏模式包括:
simple  模式下只测试简单的查询;
nontrx  不仅测试查询,还测试插⼊更新等,但是不使⽤事务;complex模式下测试最全⾯,会测试增删改查,⽽且会使⽤事务。
备注:如果需要特别测试服务器只读性能,或不使⽤事务时的性能,可以选择simple模式或nontrx模式。
表5-3
命令[command]
备注
prepare
准备测试数据
run
instance读音执⾏测试
cleanup
清理数据
6. 测试⽅法
6.1 准备测试数据
先登陆mysql数据库:
#mysql -uroot -p密码 -h 主机ip
执⾏show global variables统计各参数配置:show global status
创建测试库sbtest:
>create database sbtest;
查看所有库名:
>show databases;
exit退出mysql,进⼊⽬录 cd /opt/sysbench-1.0.12
开始测试前,⾸先要⽣成测试数据,
执⾏以下命令:
#sysbench --test=/opt/sysbench-1.0.12/tests/include/oltp_legacy/oltp.lua --mysql-db=sbtest --mysql-host=ip  --mysql-port=3306 --mysql-user=root --mysql-password=密码  --oltp-test-mode=complex --oltp-tables-count=200 --oltp-table-
size=100000 --report-interval=2 prepare
其中,prepare表⽰准备数据,在的sbtest库⽣成测试数据,
创建200张表,每张表10万条数据,每2秒显⽰⼀次报告。
注意:这⾥不需要设置运⾏时间(time),执⾏时间受建表数量影响。
运⾏过程如下图所⽰:
6.2 建表语句
数据准备阶段建表结构如下:
CREATE TABLE `sbtest` (
`id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
`k` INTEGER UNSIGNED DEFAULT '0' NOT NULL,
`c` CHAR(120) DEFAULT '' NOT NULL,
`pad` CHAR(60) DEFAULT '' NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
说明:以上SQL⽆需执⾏建表,在下⾯介绍测试⽅法,数据准备阶段,执⾏命令时⼯具⾃动安照上⾯描述格式创建表。
6.3 执⾏测试⽅法
测试命令如下:
#sysbench ./tests/include/oltp_legacy/oltp.lua --mysql-db=sbtest --mysql-host=ip  --mysql-port=3306 --mysql-user=root --mysql-password=密码
--oltp-test-mode=complex --time=60 --threads=1 --report-interval=2 run
其中, run表⽰运⾏测试,单线程 运⾏60秒。
--oltp-tables-count(表个数)
--oltp-table-size(表数据量)
这两个参数⽤于准备阶段创建表的⼤⼩,在运⾏阶段不受影响,故run阶段可以取消这两个参数,结果不受影响。
输出结果如下图:
由上图可知,单线程下TPS为33,QPS为660;
6.3.1 测试事务包含的SQL
Sysbench⾃带测试脚本,路径如下/opt/sysbench-1.0.12/tests/include/oltp_legacy/oltp.lua
默认提交的事务中包含18条SQL语句:
主键SELECT语句,10条:
SELECT c FROM ${rand_table_name} where id=${rand_id};
范围SELECT语句,4条:
SELECT c FROM ${rand_table_name} WHERE id BETWEEN ${rand_id_start} AND ${rand_id_end};
SELECT SUM(K) FROM ${rand_table_name} WHERE id BETWEEN ${rand_id_start} AND ${rand_id_end};
SELECT c FROM ${rand_table_name} WHERE id BETWEEN ${rand_id_start} AND ${rand_id_end} ORDER BY c;
SELECT DISTINCT c FROM ${rand_table_name} WHERE id BETWEEN ${rand_id_start} AND ${rand_id_end} ORDER BY c; UPDATE语句,2条:
UPDATE ${rand_table_name} SET k=k+1 WHERE id=${rand_id}
UPDATE ${rand_table_name} SET c=${rand_str} WHERE id=${rand_id}
DELETE语句,1条:
DELETE FROM ${rand_table_name} WHERE id=${rand_id}
redis集配置文件详解INSERT语句,1条:
INSERT INTO ${rand_table_name} (id, k, c, pad) VALUES (${rand_id},${rand_k},${rand_str_c},${rand_str_pad});
6.3.2 清理测试数据
#sysbench ./tests/include/oltp_legacy/oltp.lua --mysql-db=sbtest --mysql-host=ip
--mysql-port=3306 --mysql-user=root --mysql-password=密码 --oltp-tables-count=600 cleanup
其中,cleanup表⽰清理数据,这⾥不需要设置运⾏时间(time),只需设置表的数量即可,
此时需表的数量>=准备阶段表的数量,才能全部清除测试数据,以免对下次结果产⽣影响;
7. 测试⽤例
7.1 测试⽤例(⼀)
测试⽤例1:创建6张表每表预置1000万⾏数据测试
测试⽬的
对⼤表进⾏增删改查场景下的QPS和TPS

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。