数据库是应用开发的重要组成部分之一,但面对各种需求和场景,开发人员在数据库层面上往往需要算法优化、分库分表、备份恢复等多种操作。由于测试操作中可能会对数据进行删改等危险操作,导致测试数据丢失等问题,一些开发者在平时的开发工作中会避免去进行测试,这会导致在发布版本之前无法清晰得了解应用在实际情况下的表现。
为了解决这个问题,MySQL官方测试数据库应运而生。MySQL官方测试数据库提供了许多开发者所需的测试数据库环境,使得开发人员能够在不影响现有应用环境的情况下对应用进行完整的测试。MySQL官方测试数据库能够满足不同业务场景下的需求,包括各种架构下的分区、存储过程以及异常情况下的数据恢复等。
MySQL官方测试数据库包含许多常用的信息和数据,如一系列的表、存储过程等。同时,MySQL官方测试数据库也为存储过程和函数提供相应的样例。通过官方的MySQL测试数据库,开发人员可以为他们的应用进行完整的测试工作,新事务的数据也能够方便地加入到其中,使得测试数据更加接近真实情况。
总体而言,MySQL官方测试数据库将开发人员的测试操作变得更加简单、高效,为开发人员在应用的开发、测试、优化等方面提供了极大的帮助,真正做到了让开发者更加轻松地测试应用。为每一个开发者提供可靠的测试环境,MySQL官方测试数据库将会是建立健壮、高效应用的有力工具之一。
相关问题拓展阅读:
- 几个常用的MySQL性能测试工具
几个常用的MySQL性能测试工具
使用 bcc 工具观测 MySQL:1)dbstat功能:将 MySQL/PostgreSQL 的查询延迟汇总为直方图
语法:
dbstat >> {mysql,postgres}
选项:
{mysql,postgres}# 观测哪种数据库-h, –help # 显示帮助然后退出-v, –verbose # 显示BPF程序-p >, –pid > # 要观测的进程号,空格分隔-m THRESHOLD, –threshold THRESHOLD# 只统计查询延迟比此阈值高的-u, –microseconds# 以微秒为时间单位来配棚显示延迟(默认单位:毫秒)-i INTERVAL, –interval INTERVAL# 打印摘要的时间间隔(单位:秒)
示例:
# 使用 syench 在被观测数据库上执行 select# dbstat mysql -p `pidof mysqld` -uTracing database queries for pids 3350 slower than 0 ms…^C query latency (us)
2)dbslower
功能:跟踪 MySQL/PostgreSQL 的查询时间高于阈值
语法:
dbslower >> 培弊则 {mysql,postgres}
参数:
{mysql,postgres}# 观测哪种数据库 -h, –help # 显示帮助然后退出 -v, –verbose # 显示BPF程序 -p >, –pid > # 要观测的进程号,空格分隔 -m THRESHOLD, –threshold THRESHOLD# 只统计查询延迟比此阈值卜弊高的 -x PATH, –exe PATH# 数据库二进制文件的位置
示例:
# 使用syench在被观测数据库上执行update_index # dbslower mysql -p `pidof mysqld` -m 2 Tracing database queries for pids 3350 slower than 2 ms… TIME(s)PIDMS QUERY 1..996 UPDATE test1 SET k=k+1 WHERE id=963 3..069 UPDATE test1 SET k=k+1 WHERE id=628 5..171 UPDATE test1 SET k=k+1 WHERE id=325 7..853 UPDATE test1 SET k=k+1 WHERE id=595
5. 使用限制
bcc 基于 eBPF 开发(需要 Linux 3.15 及更高版本)。bcc 使用的大部分内容都需要 Linux 4.1 及更高版本。
“bcc.usdt.USDTException: failed to enable probe ‘query__start’; a possible cause can be that the probe requires a pid to enable” 需要 MySQL 具备 Dtrace tracepoint。
1、mysqlslap
安装:简单,装了mysql就有了
作用:模拟并发测试数据做贺梁库性能。
优点:简单,容易使用。
不足:不能指定生成的数据规模,测试过程不清楚针对十万级还是百万级数据做的测试,感觉不太适合做综合测试,比较适合针对既有数据库,对单个sql进行优化的测试。
使用方法:
可以使用mysqlslap –help来显示使用方法:
Default options are read from the following files in the given order:
/etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf
–concurrency代表并发数量,多个可以用逗号隔开,concurrency=10,50,100, 并发连接线程数分别是10、50、100个并发。
–engines代表要测试的引擎,可以有多个,用分隔符隔开。
–iterations代表要运行这些测试多少次。
–auto-generate-sql 代表用系统自己生成的SQL脚本来测试。
–auto-generate-sql-load-type 代表要测试的是读还是写还是两者混合的(read,write,update,mixed)
–number-of-queries 代表总共要运行多少次查询拍伍。每个客户运行的查询数量可以用查询总数/并发数来计算。
–debug-info 代表要额外输出CPU以及内存的相关信息。
–number-int-cols :创建测试表的 int 型字段数量
–auto-generate-sql-add-autoincrement : 代表对生成的表自动添加auto_increment列,从5.1.18版本开始
–number-char-cols 创建测试表的 char 型字段数量。
–create-schema 测试的schema,MySQL中schema也就是database。
–query 使用自定义脚本执行测试,例如可以调用自定义的一个存储过程或者sql语句来执行测试。
–only-print 如果纯运只想打印看看SQL语句是什么,可以用这个选项。
mysqlslap -umysql -p123 –concurrency=100 –iterations=1 –auto-generate-sql –auto-generate-sql-add-autoincrement –auto-generate-sql-load-type=mixed –engine=myisam –number-of-queries=10 –debug-info
或:
指定数据库和sql语句:
mysqlslap -h192.168.3.18 -Pconcurrency=100 –iterations=1 –create-schema=’test’ –query=’select * from test;’ –number-of-queries=10 –debug-info -umysql -p123
要是看到底做了什么可以加上:–only-print
Benchmark
Average number of seconds to run all queries: 25.225 seconds
Minimum number of seconds to run all queries: 25.225 seconds
Maximum number of seconds to run all queries: 25.225 seconds
Number of clients running queries: 100
Average number of queries per client: 0
以上表明100个客户端同时运行要25秒
2、syench
安装:
可以从
下载
tar zxf syench-0.4.12.tar.gz
cd syench-0.4.12
./autogen.sh
./configure && make && make install
strip /usr/local/bin/syench
安装时候可能会报错,后来baidu发现个好文
怕以后找不到,也贴过来吧
1.如果mysql不是默认路径安装,那么需要通过指定–with-mysql-includes和–with-mysql-libs参数来加载mysql安装路径
2.如果报错:
../libtool: line 838: X–tag=CC: command not found
../libtool: line 871: libtool: ignoring unknown tag : command not found
../libtool: line 838: X–mode=link: command not found
../libtool: line 1004:Warning: inferring the mode of operation is deprecated.: command not found
../libtool: line 1005:Future versions of Libtool will require –mode=MODE be specified.: command not found
../libtool: line 2231: X-g: command not found
../libtool: line 2231: X-O2: command not found
那么执行下根目录的:autogen.sh文件,然后重新configure && make && make install
3.如果报错:
syench: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
那么执行下:
n -s /usr/local/mysql5.5/mysql/lib/libmysqlclient.so.18 /usr/lib64/
4.如果执行autogen.sh时,报如下错误:
./autogen.sh: line 3: aclocal: command not found
那么需要安装一个软件:
yum install automake
然后需要增加一个参数:查找: AC_PROG_LIOOL 将其注释,然后增加AC_PROG_RANLIB
作用:模拟并发,可以执行CPU/内存/线程/IO/数据库等方面的性能测试。数据库目前支持MySQL/Oracle/PostgreSQL
优点:可以指定测试数据的规模,可以单独测试读、写的性能,也可以测试读写混合的性能。
不足:测试的时候,由于网络原因,测试的非常慢,但是最终给的结果却很好,并发支持很高,所以给我的感觉是并不太准确。当然也可能我没搞明白原理
使用方法:
准备数据
syench –test=oltp –mysql-table-engine=myisam –oltp-table-size=mysql-db=dbtest2 –mysql-user=root –mysql-host=192.168.1.101 –mysql-password=pwd prepare
执行测试
syench –num-threads=100 –max-requests=test=oltp –mysql-table-engine=innodb –oltp-table-size=mysql-db=dbtest1 –mysql-user=root –mysql-host=192.168.1.101 –mysql-password=pwd run
syench 0.4.12: multi-threaded system evaluation benchmark
No DB drivers specified, using mysql
Running the test with following options:
Number of threads: 100
Doing OLTP test.
Running mixed OLTP test
Using Special distribution (12 iterations, 1 pct of values are returned in 75 pct cases)
Using “BEGIN” for starting transactions
Using auto_inc on the id column
Maximum number of requests for OLTP test is limited to 4000
Threads started!
Done.
OLTP test statistics:
queries performed:
read: 56014
write: 20235
other: 8002
total: 84021
transactions: 4001 (259.14 per sec.)
deadlocks: 0 (0.00 per sec.)
read/write requests:(4923.75 per sec.)
other operations: 8002 (518.29 per sec.)
Test execution summary:
total time: 15.4393s
total number of events: 4001
total time taken by event execution: 1504.7744
per-request statistics:
min: 33.45ms
avg: 376.10ms
max: 861.53ms
approx. 95 percentile: 505.65ms
Threads fairness:
events (avg/stddev): 40.0100/0.67
execution time (avg/stddev): 15.0477/0.22
3、tpcc-mysql
安装:
如果从原网站上下载源码比较麻烦,需要工具、注册、生成证书等。这里提供一个下载包
export C_INCLUDE_PATH=/usr/include/mysql
export PATH=/usr/bin:$PATH
export LD_LIBRARY_PATH=/usr/lib/mysql
cd /tmp/tpcc/src
make
然后就会在 /tmp/tpcc-mysql 下生成 tpcc 命令行工具 tpcc_load 、 tpcc_start
作用:测试mysql数据库的整体性能
优点:符合tpcc标准,有标准的方法,模拟真实的交易活动,结果比较可靠。
不足:不能单独测试读或者写的性能,对于一些以查询为主或者只写的应用,就没有这么大的意义了。
使用方法:
加载数据
创建库
mysql>create database tpcc10;
创建表:
shell>mysql tpcc10 mysql tpcc10 ./tpcc_load 192.168.11.172 tpcc10 root pwd 300
|主机||数据库||用户||密码||warehouse|
2、并发加载:(推荐,但需要修改一下)
shell>./load.sh tpcc
|数据库||warehouse|
3、测试
./tpcc_start -h192.168.11.172 -d tpcc -u root -p ‘pwd’ -w 10 -c 10 -r 10 -l 60 -i 10 -f /mnt/hgfs/mysql/tpcc100_.txt
***************************************
*** ###easy### TPC-C Load Generator ***
***************************************
option h with value ‘192.168.11.172’
option d with value ‘tpcc’
option u with value ‘root’
option p with value ‘pwd’
option w with value ‘1’
option c with value ‘100’
option r with value ‘120’
option l with value ’60’
option i with value ’10’
option f with value ‘/mnt/hgfs/mysql/tpcc100_.txt’
: 192.168.11.172
: 3306
: tpcc
: root
: pwd
: 1
: 100
: 120 (sec.)
: 60 (sec.)
RAMP-UP TIME.(120 sec.)
mysql官方测试数据库的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于mysql官方测试数据库,MySQL官方测试数据库:让开发者更加轻松地测试应用!,几个常用的MySQL性能测试工具的信息别忘了在本站进行查找喔。