search
HomeDatabaseMysql Tutorial基准测试工具之tpcc-mysql

TPC(Tracsaction Processing Performance Council) 事务处理性能协会是一个评价大型数据库系统软硬件性能的非盈利的组织,TPC-C是

TPC(Tracsaction Processing Performance Council) 事务处理性能协会是一个评价大型数据库系统软硬件性能的非盈利的组织,TPC-C是TPC协会制定的,用来测试典型的复杂OLTP系统的性能。Tpcc-mysql是percona基于tpcc衍生出来的产品,专用于mysql基准测试,其源码放在bazaar上,因此需要先安装bazaar客户端。

  一 下载工具

  安装rpm包 ,根据系统的不同选择合适的rpm

  rpm -Uvh

  rpm -Uvh

  安装bzr 客户端

  yum install bzr

  下载tpcc-mysql

 

[root@rac1 markbench]# bzr branch lp:~percona-dev/perconatools/tpcc-mysql
You have not informed bzr of your Launchpad ID, and you must do this to
write to Launchpad or access privatedata. See "bzr help launchpad-login".
Branched 48 revision(s).
bzr: warning: some compiled extensions could not be loaded; see
[root@rac1 markbench]#

 

  遇到的问题

 

[root@rac1 markbench]# bzr branch lp:~percona-dev/perconatools/tpcc-mysql
bzr: ERROR: Couldn't import bzrlib and dependencies.
Please check the directory containing bzrlib is on yourPYTHONPATH.
Traceback (most recent call last):
File "/usr/bin/bzr", line 102, in
import bzrlib
ImportError: No module named bzrlib

 

  python安装环境,建议使用python2.6的版本,提示找不到 bzrlib 模块

  解决方法:

 

[root@rac1 markbench]# find / -name bzrlib -print
/usr/lib64/python2.4/site-packages/bzrlib
[root@rac1 markbench]# exportPYTHONPATH=/usr/lib64/python2.4/site-packages

 

  再次下载ok.

 二 编译安装

  进入源码目录

 

cdtpcc-mysql/src
!!!!make之前一定要修改src下面makefile的mysql_config
make
[root@rac1src]#make
cc-w-O2-g-I.`mysql_config--include`-cload.c
cc-w-O2-g-I.`mysql_config--include`-csupport.c
ccload.osupport.o`mysql_config--libs_r`-lrt-o../tpcc_load
cc-w-O2-g-I.`mysql_config--include`-cmain.c
cc-w-O2-g-I.`mysql_config--include`-cspt_proc.c
cc-w-O2-g-I.`mysql_config--include`-cdriver.c
cc-w-O2-g-I.`mysql_config--include`-csequence.c
cc-w-O2-g-I.`mysql_config--include`-crthist.c
cc-w-O2-g-I.`mysql_config--include`-cneword.c
cc-w-O2-g-I.`mysql_config--include`-cpayment.c
cc-w-O2-g-I.`mysql_config--include`-cordstat.c
cc-w-O2-g-I.`mysql_config--include`-cdelivery.c
cc-w-O2-g-I.`mysql_config--include`-cslev.c
ccmain.ospt_proc.odriver.osupport.osequence.orthist.oneword.opayment.oordstat.odelivery.oslev.o`mysql_config--libs_r`-lrt-o../tpcc_start

 

  三 初始化测试库环境

  make命令会在tpcc-mysql目录下生成 tpcc 命令行工具 tpcc_load ,tpcc_start

  tpcc_load 提供初始化数据的功能

  tpcc_start 进行压力测试

  用法:

 

# ./tpcc_load –help
tpcc_load [server] [DB] [user] [pass] [warehouse]
server : 服务器名
DB : 数据库名
user : 用户名
pass : 密码
warehouse: 仓库的数量
# ./tpcc_start –help
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

 

  介绍一下各个参数的用法

 

-h server_host: 服务器名
-P port : 端口号,,默认为3306
-d database_name: 数据库名
-u mysql_user : 用户名
-p mysql_password : 密码
-w warehouses: 仓库的数量
-c connections : 线程数,默认为1
-r warmup_time : 热身时间,单位:s,默认为10s ,热身是为了将数据加载到内存。
-l running_time: 测试时间,单位:s,默认为20s
-i report_interval 指定生成报告间隔时长
-f report_file : 测试结果输出文件

 

  注意

  tpcc 默认会读取/var/lib/mysql/mysql.sock 这个socket位置,如果你的测试环境的mysql socket不在相应路径的话,就需要做个软连接,或者通过TCP/IP的方式连接测试服务器。

  准备工作:

  mysqladmin -uroot -h127.0.0.1 create tpcc # 创建测试用的数据库

  mysql -uroot -h127.0.0.1 tpcc

  mysql -uroot -h127.0.0.1 tpcc

  1 创建五个数据仓库

 

./tpcc_load 127.0.0.1 tpcc root "" 5
*************************************
*** ###easy### TPC-C Data Loader ***
*************************************

[server]: 127.0.0.1
[port]: 3306
[DBname]: tpcc
[user]: root
[pass]:
[warehouse]: 5
TPCC Data Load Started...
Loading Item
.................................................. 5000
.................................................. 10000

 

  忽略部分输出结果


  四、进行测试

  #使用tpcc_start 进行5个线程的测试,热身时间为120秒, 测试时间为1小时 !

 

[root@rac1 tpcc-mysql]# tpcc_start -hlocalhost -d tpcc -u root -p '' -w 5 -c 5 -r 120 -l 300 -f tpcc_mysql_20130331.xls
***************************************
*** ###easy### TPC-C Load Generator ***
***************************************
option h with value 'localhost'
option d with value 'tpcc'
option u with value 'root'
option p with value ''
option w with value '5'
option c with value '5'
option r with value '120'
option l with value '300'
option f with value 'tpcc_mysql_20130331.xls'

[server]: localhost
[port]: 3306
[DBname]: tpcc
[user]: root
[pass]:
[warehouse]: 5
[connection]: 5
[rampup]: 120 (sec.)
[measure]: 300 (sec.)
RAMP-UP TIME.(120 sec.)
MEASURING START. ---每隔10s 输出一次结果
10, 812(1):1.509|5.419, 814(0):0.447|1.575, 81(0):0.241|0.539, 82(0):2.270|2.824, 81(0):4.571|6.648
......
290, 851(0):1.582|2.949, 849(0):0.441|0.630, 85(0):0.199|0.235, 86(0):1.937|2.000, 85(0):4.178|4.226
300, 820(0):1.451|2.321, 822(0):0.443|0.718, 82(0):0.201|0.284, 81(0):1.922|2.972, 82(0):4.409|5.245
STOPPING THREADS.....

[0] sc:25485 lt:1 rt:0 fl:0
[1] sc:25487 lt:0 rt:0 fl:0
[2] sc:2548 lt:0 rt:0 fl:0
[3] sc:2549 lt:0 rt:0 fl:0
[4] sc:2549 lt:0 rt:0 fl:0
in 300 sec.

[0] sc:25485 lt:1 rt:0 fl:0
[1] sc:25487 lt:0 rt:0 fl:0
[2] sc:2548 lt:0 rt:0 fl:0
[3] sc:2549 lt:0 rt:0 fl:0
[4] sc:2549 lt:0 rt:0 fl:0
(all must be [OK])
[transaction percentage]
Payment: 43.48% (>=43.0%) [OK]
Order-Status: 4.35% (>= 4.0%) [OK]
Delivery: 4.35% (>= 4.0%) [OK]
Stock-Level: 4.35% (>= 4.0%) [OK]
[response time (at least 90% passed)]
New-Order: 100.00% [OK]
Payment: 100.00% [OK]
Order-Status: 100.00% [OK]
Delivery: 100.00% [OK]
Stock-Level: 100.00% [OK]

5097.200 TpmC

linux

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
How does MySQL index cardinality affect query performance?How does MySQL index cardinality affect query performance?Apr 14, 2025 am 12:18 AM

MySQL index cardinality has a significant impact on query performance: 1. High cardinality index can more effectively narrow the data range and improve query efficiency; 2. Low cardinality index may lead to full table scanning and reduce query performance; 3. In joint index, high cardinality sequences should be placed in front to optimize query.

MySQL: Resources and Tutorials for New UsersMySQL: Resources and Tutorials for New UsersApr 14, 2025 am 12:16 AM

The MySQL learning path includes basic knowledge, core concepts, usage examples, and optimization techniques. 1) Understand basic concepts such as tables, rows, columns, and SQL queries. 2) Learn the definition, working principles and advantages of MySQL. 3) Master basic CRUD operations and advanced usage, such as indexes and stored procedures. 4) Familiar with common error debugging and performance optimization suggestions, such as rational use of indexes and optimization queries. Through these steps, you will have a full grasp of the use and optimization of MySQL.

Real-World MySQL: Examples and Use CasesReal-World MySQL: Examples and Use CasesApr 14, 2025 am 12:15 AM

MySQL's real-world applications include basic database design and complex query optimization. 1) Basic usage: used to store and manage user data, such as inserting, querying, updating and deleting user information. 2) Advanced usage: Handle complex business logic, such as order and inventory management of e-commerce platforms. 3) Performance optimization: Improve performance by rationally using indexes, partition tables and query caches.

SQL Commands in MySQL: Practical ExamplesSQL Commands in MySQL: Practical ExamplesApr 14, 2025 am 12:09 AM

SQL commands in MySQL can be divided into categories such as DDL, DML, DQL, DCL, etc., and are used to create, modify, delete databases and tables, insert, update, delete data, and perform complex query operations. 1. Basic usage includes CREATETABLE creation table, INSERTINTO insert data, and SELECT query data. 2. Advanced usage involves JOIN for table joins, subqueries and GROUPBY for data aggregation. 3. Common errors such as syntax errors, data type mismatch and permission problems can be debugged through syntax checking, data type conversion and permission management. 4. Performance optimization suggestions include using indexes, avoiding full table scanning, optimizing JOIN operations and using transactions to ensure data consistency.

How does InnoDB handle ACID compliance?How does InnoDB handle ACID compliance?Apr 14, 2025 am 12:03 AM

InnoDB achieves atomicity through undolog, consistency and isolation through locking mechanism and MVCC, and persistence through redolog. 1) Atomicity: Use undolog to record the original data to ensure that the transaction can be rolled back. 2) Consistency: Ensure the data consistency through row-level locking and MVCC. 3) Isolation: Supports multiple isolation levels, and REPEATABLEREAD is used by default. 4) Persistence: Use redolog to record modifications to ensure that data is saved for a long time.

MySQL's Place: Databases and ProgrammingMySQL's Place: Databases and ProgrammingApr 13, 2025 am 12:18 AM

MySQL's position in databases and programming is very important. It is an open source relational database management system that is widely used in various application scenarios. 1) MySQL provides efficient data storage, organization and retrieval functions, supporting Web, mobile and enterprise-level systems. 2) It uses a client-server architecture, supports multiple storage engines and index optimization. 3) Basic usages include creating tables and inserting data, and advanced usages involve multi-table JOINs and complex queries. 4) Frequently asked questions such as SQL syntax errors and performance issues can be debugged through the EXPLAIN command and slow query log. 5) Performance optimization methods include rational use of indexes, optimized query and use of caches. Best practices include using transactions and PreparedStatemen

MySQL: From Small Businesses to Large EnterprisesMySQL: From Small Businesses to Large EnterprisesApr 13, 2025 am 12:17 AM

MySQL is suitable for small and large enterprises. 1) Small businesses can use MySQL for basic data management, such as storing customer information. 2) Large enterprises can use MySQL to process massive data and complex business logic to optimize query performance and transaction processing.

What are phantom reads and how does InnoDB prevent them (Next-Key Locking)?What are phantom reads and how does InnoDB prevent them (Next-Key Locking)?Apr 13, 2025 am 12:16 AM

InnoDB effectively prevents phantom reading through Next-KeyLocking mechanism. 1) Next-KeyLocking combines row lock and gap lock to lock records and their gaps to prevent new records from being inserted. 2) In practical applications, by optimizing query and adjusting isolation levels, lock competition can be reduced and concurrency performance can be improved.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
1 months agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

SecLists

SecLists

SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Powerful PHP integrated development environment