tpcc
TPCC-MYSQL 是一个用于执行 TPCC(Transaction Processing Performance Council)基准测试的工具集合。TPCC 是一个广泛使用的数据库基准测试,用于衡量数据库系统在高并发负载下的性能。TPCC-MYSQL 专门针对 MySQL 数据库进行性能测试,它使用标准的 TPCC 基准测试规范,并提供一系列工具和脚本来准备测试数据、运行测试和分析测试结果。
tpcc-mysql业务逻辑
下面是 TPCC-MYSQL 的业务逻辑详细介绍:
数据库模式(Schema):
TPCC-MYSQL 使用一组相关的数据库表来表示不同的业务实体,例如仓库、客户、订单、商品等。这些表之间建立了适当的关系,以模拟真实的业务场景。在运行 TPCC-MYSQL 之前,需要创建这些数据库表,并根据 TPCC 的要求填充测试数据。仓库(Warehouse):
一个仓库代表了一个具有存储功能的实体,用于存放商品。TPCC-MYSQL 可以模拟多个仓库的情况。商品(Item):
商品是指可以在仓库中存放和销售的产品。每个仓库都有一定数量的商品,这些商品可以随机分配给不同的仓库。客户(Customer):
客户代表购买商品的个人或组织。每个客户可以有一些基本信息,例如姓名、地址等。订单(Order):
订单是客户购买商品的记录。每个订单包含了购买的商品、数量、价格等信息。支付(Payment):
支付是客户支付订单的记录。每个支付包含了支付的金额、日期等信息。交货(Delivery):
交货是将商品交付给客户的记录。每个交货包含了交货的日期、数量等信息。填充测试数据:
在执行 TPCC-MYSQL 之前,需要使用tpcc_load
工具来填充测试数据。该工具会根据指定的仓库数量、客户数量和商品数量生成适量的测试数据。事务处理:
TPCC-MYSQL 使用一系列事务来模拟不同的业务操作,例如客户下单、付款、交货等。这些事务包含了多个数据库操作,涉及多个表之间的数据交互。并发测试:
TPCC-MYSQL 可以在多个并发用户之间执行事务处理,以模拟高并发负载下的数据库性能。并发测试是衡量数据库系统处理并发事务的能力的重要指标。测量性能:
在执行 TPCC-MYSQL 测试后,可以使用tpcc_start
和tpcc_report
工具来测量和分析数据库系统的性能表现。报告中可能包含吞吐量、响应时间、事务成功率等指标,这些指标可以帮助评估数据库系统的性能和可伸缩性。
下载源码包,解压安装
wget http://imysql.com/wp-content/uploads/2014/09/tpcc-mysql-src.tgz
[root@localhost tcpp]# tar xf tpcc-mysql-src.tgz
cd tpcc-mysql/src
[root@localhost src]# make
make后会生成两个二进制工具tpcc_load(提供初始化数据的功能)和tpcc_start(进行压力测试)
[root@localhost tpcc-mysql]# ls
add_fkey_idx.sql drop_cons.sql schema2 tpcc_load
count.sql load.sh scripts tpcc_start
根据您提供的文件列表,以下是关于 TPCC-MYSQL 文件夹中的每个文件的详细信息:
add_fkey_idx.sql
: 这个文件可能包含用于添加外键索引的 SQL 语句。外键索引用于维护表之间的关联性,并能加速数据检索和连接。
drop_cons.sql
: 这个文件可能包含用于删除外键约束的 SQL 语句。在进行 TPCC 测试之前,可能需要清除外键约束,以便更轻松地加载数据。
schema2
: 这是一个文件夹,通常包含与数据库模式(Schema)相关的文件。可能包含创建表、视图、存储过程等的 SQL 语句。
tpcc_load
: 这是一个用于加载测试数据的工具或脚本。在进行 TPCC 基准测试之前,需要加载适当的测试数据,以模拟真实的数据库工作负载。
count.sql
: 这个文件可能包含一些用于统计数据量或验证数据完整性的 SQL 查询语句。
load.sh
: 这是一个 Shell 脚本,可能用于执行数据加载操作的脚本。它可能调用了tpcc_load
工具,并指定了一些加载的参数。
scripts
: 这是一个文件夹,可能包含其他执行 TPCC 测试所需的脚本文件。
tpcc_start
: 这可能是一个用于启动 TPCC 测试的脚本。它可能设置了测试的参数,并调用其他必要的脚本来开始基准测试过程。
tcpp测试准备,初始化数据库
创建数据库
mysqladmin -uwrite -p'123456' -h 192.168.2.25 -P 7002 create tpcc
导入数据
如果远程导入不行,可以直接将数据转送到master主机上,将数据导入就可了
mysql -h 192.168.2.25 -P 7002 -uwrite -p'123546' tpcc <create_table.sql
scp create_table.sql add_fkey_idx.sql root@192.168.2.3:/root
[root@master-mysql ~]# mysql -uroot -p'123456' tpcc <create_table.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@master-mysql ~]# mysql -uroot -p'123456' tpcc <add_fkey_idx.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
root@tpcc 15:27 mysql>show tables;
+----------------+
| Tables_in_tpcc |
+----------------+
| customer |
| district |
| history |
| item |
| new_orders |
| order_line |
| orders |
| stock |
| warehouse |
+----------------+
9 rows in set (0.00 sec)
加载数据
./tpcc_load 192.168.2.25:7002 tpcc write 123456 2
数据量大小:参数
2
指定了要加载的仓库数量。加载的数据量越大,执行时间可能越长。
想尽快看到效果的伙伴,可以把这个数据调小些。
出现问题:
[root@localhost tpcc-mysql]# ./tpcc_load 192.168.2.25:7002 tpcc write 123456 2
./tpcc_load: error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory
解决
确认库文件位置:如果已经安装了 MySQL 客户端库,但是找不到
libmysqlclient.so.20
文件,您需要确定它的位置。通常,MySQL 客户端库的位置是在/usr/lib
或/usr/lib64
目录下
[root@localhost tpcc-mysql]# find / -name 'libmysqlclient.so.20'
/usr/local/mysql/lib/libmysqlclient.so.20
echo "/usr/local/mysql/lib" | sudo tee -a /etc/ld.so.conf
sudo ldconfig
进行测试
注意:server等信息与步骤4中保持一致
TPCC-MYSQL 是一个用于测试数据库性能的基准测试工具,下面是
tpcc_start
命令的详细参数说明和用法:./tpcc_start -h [server_host] -P [port] -d [database_name] -u [mysql_user] -p [mysql_password] -w [warehouses] -c [connections] -r [warmup_time] -l [running_time] -i [report_interval] -f [report_file] -t [trx] > out1
各个参数的用法如下:
-h server_host
: 指定数据库服务器的主机名或IP地址。
-P port
: 指定数据库服务器的端口号,默认为3306。
-d database_name
: 指定用于测试的数据库名称。
-u mysql_user
: 指定连接数据库所使用的用户名。
-p mysql_password
: 指定连接数据库所使用的密码。
-w warehouses
: 指定要创建的仓库数量。仓库用于存储商品和处理订单。
-c connections
: 指定并发连接数,即同时运行的线程数。默认为1,可以根据测试需求调整该值。
-r warmup_time
: 指定热身时间,即在正式测试之前预先运行一段时间以将数据加载到内存中。热身是为了使缓存预热,提高测试结果的准确性。默认为10秒。
-l running_time
: 指定测试时间,即执行正式测试的时间长度。默认为20秒。
-i report_interval
: 指定生成测试报告的时间间隔。在测试期间,TPCC-MYSQL 会定期生成报告,以便观察测试过程中的性能指标。建议生成报告的间隔时间不低于30分钟,以确保获得足够的数据。
-f report_file
: 指定测试结果输出文件的名称。一般将测试结果输出到一个日志文件,以便后续分析和查看。
-t trx
: 指定输出文件的名称。该文件记录了执行测试期间的所有事务操作,包括成功和失败的事务。执行
tpcc_start
命令后,它将启动测试并运行指定时间。在测试结束后,您可以查看输出文件out1
,以及报告文件report_file
,来了解测试期间数据库的性能表现。
./tpcc_start -h 192.168.2.25 -P 7002 -d tpcc -u write -p '123456' -w 2 -c 12 -r 300 -l 360 -f test0.log -t test1.log - >test0.out
[root@localhost tpcc-mysql]# cat test0.out
***************************************
*** ###easy### TPC-C Load Generator ***
***************************************
option h with value '192.168.2.25'
option P with value '7002'
option d with value 'tpcc'
option u with value 'write'
option p with value '123456'
option w with value '2'
option c with value '12'
option r with value '300'
option l with value '360'
option f with value 'test0.log'
option t with value 'test1.log'
non-option ARGV-elements: -
<Parameters>
[server]: 192.168.2.25
[port]: 7002
[DBname]: tpcc
[user]: write
[pass]: 123456
[warehouse]: 2
[connection]: 12
[rampup]: 300 (sec.)
[measure]: 360 (sec.)
RAMP-UP TIME.(300 sec.)
MEASURING START.
10, 677(190):9.609|283.788, 678(0):2.243|203.337, 69(0):1.168|5.442, 68(0):14.206|40.242, 68(2):19.999|59.394
20, 765(231):7.100|8.084, 764(0):1.552|1.866, 75(0):0.698|0.750, 77(0):8.885|8.978, 76(5):19.999|21.524
30, 761(236):7.015|7.196, 759(0):1.603|2.238, 77(0):0.845|0.866, 76(0):8.885|9.294, 77(9):19.999|21.956
40, 680(203):7.233|80.320, 685(0):1.715|2.160, 69(0):0.798|0.804, 68(0):9.011|9.381, 67(10):19.999|34.428
50, 647(212):8.568|39.590, 644(1):1.821|16.209, 63(0):1.151|1.383, 65(0):9.928|11.700, 65(15):19.999|24.729
60, 658(192):9.849|12.151, 656(0):2.417|3.684, 66(0):0.836|1.166, 66(0):10.870|11.271, 65(8):19.999|29.011
70, 712(233):9.885|62.567, 717(1):2.234|5.236, 72(0):0.927|1.120, 70(0):19.382|67.972, 72(14):19.999|32.404
80, 645(217):8.361|34.979, 645(0):2.618|3.911, 64(0):0.815|1.236, 65(0):11.297|12.007, 65(13):19.999|34.617
90, 616(227):10.123|24.151, 614(2):2.788|6.256, 62(0):1.082|1.552, 62(0):13.038|13.162, 61(14):19.999|34.818
100, 661(243):8.853|12.499, 657(1):2.111|6.116, 65(0):0.868|0.951, 65(0):12.572|13.628, 65(17):19.999|25.945
110, 710(267):8.887|13.115, 714(0):2.035|3.214, 72(0):1.031|1.164, 72(0):11.494|11.545, 72(24):19.999|30.804
120, 717(246):9.264|12.371, 713(0):1.908|2.807, 71(0):0.855|1.004, 71(0):19.999|24.060, 72(18):19.999|30.451
130, 708(239):8.596|10.882, 707(0):2.030|3.013, 71(0):0.857|0.959, 71(0):10.861|11.188, 70(21):19.999|27.728
140, 588(275):14.900|20.400, 591(1):3.257|5.346, 59(0):1.471|1.503, 58(0):16.165|18.864, 59(26):19.999|40.590
150, 657(157):7.862|38.557, 663(0):1.692|3.636, 66(0):0.978|1.223, 67(0):9.459|10.673, 66(13):19.999|62.886
160, 589(168):7.498|14.794, 586(0):1.813|2.117, 59(0):0.787|1.700, 59(0):9.913|10.766, 59(10):19.999|23.412
170, 752(194):7.096|7.933, 748(0):1.481|1.808, 75(0):0.788|0.834, 75(0):8.384|8.727, 76(9):19.999|22.745
180, 785(241):6.907|7.807, 784(0):1.583|2.197, 78(0):0.686|0.924, 78(0):8.651|9.104, 77(5):19.999|22.638
190, 771(227):7.447|10.232, 770(0):1.613|2.382, 77(0):0.782|1.041, 77(0):9.203|9.313, 78(15):19.999|23.728
200, 686(253):10.316|17.892, 684(0):2.141|3.064, 69(0):1.054|1.715, 69(0):10.166|17.150, 69(19):19.999|36.686
210, 593(186):9.524|17.592, 597(0):2.494|4.665, 60(0):1.591|1.775, 59(0):14.900|17.007, 59(17):19.999|35.502
220, 617(177):9.079|16.471, 615(1):2.039|13.194, 61(0):0.711|1.426, 62(0):11.674|11.768, 62(14):19.999|27.944
230, 738(252):7.925|11.160, 741(0):1.793|2.965, 74(0):0.767|0.881, 74(0):10.863|11.546, 73(11):19.999|25.909
240, 725(253):7.808|12.047, 728(0):2.179|2.994, 73(0):0.730|1.008, 72(0):9.999|11.472, 72(21):19.999|27.928
250, 525(333):13.687|16.571, 521(1):3.305|5.677, 51(0):1.767|2.185, 53(0):14.808|16.540, 52(44):19.999|42.772
260, 613(329):12.063|24.300, 609(1):2.546|6.719, 62(0):1.491|2.242, 61(0):14.331|23.131, 62(44):19.999|38.645
270, 515(243):12.594|17.291, 521(3):3.319|7.934, 52(0):1.751|2.218, 51(0):15.489|17.018, 52(29):19.999|39.224
280, 599(209):9.682|16.133, 597(0):2.326|3.089, 59(0):0.838|0.888, 61(0):14.361|14.406, 60(16):19.999|32.602
290, 695(183):7.802|9.971, 695(0):1.673|3.705, 70(0):0.753|0.969, 69(0):10.170|10.787, 69(9):19.999|23.973
300, 756(213):7.334|9.825, 752(0):1.620|3.822, 76(0):0.704|0.710, 75(0):9.623|11.539, 76(9):19.999|21.460
310, 727(254):7.609|9.025, 729(0):1.908|2.261, 72(0):0.980|1.791, 73(0):10.384|11.064, 72(14):19.999|26.970
根据输出的内容,
./tpcc_start
命令执行了 TPC-C 测试的加载和性能测量过程。test0.out
文件中记录了tpcc_start
命令执行过程中的输出信息,包括测试参数、测试进度、性能指标等。以下是输出内容的解析:
首部显示了 TPC-C 测试的相关信息,包括测试名称 “TPC-C Load Generator”,以及使用的选项和参数。
<Parameters>
部分列出了使用的测试参数,包括服务器地址、端口、数据库名称、用户名、密码、仓库数量、并发连接数、热身时间和测试时间。接下来是测试的执行过程,每行表示一个时间点的测试结果。例如,第一行 “RAMP-UP TIME.(300 sec.)” 表示热身时间为 300 秒,即系统在这段时间内预热。之后,每行显示了一系列的性能指标,例如各个仓库的交易成功率、平均响应时间等。具体的指标含义可能需要查阅 TPCC-MYSQL 的文档或者相关资料。
最后,测试执行完成,可能会显示测试的总体结果或者总结性信息。文章来源:https://www.toymoban.com/news/detail-707805.html
根据输出内容,您可以了解到测试的进度和性能指标。如果需要更详细的测试结果,建议查阅生成的日志文件和报告文件,它们通常包含更全面的测试结果和详细的性能指标分析。文章来源地址https://www.toymoban.com/news/detail-707805.html
到了这里,关于Tpcc测试工具详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!