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
[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

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.

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.

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 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.

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 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 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.

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.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

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
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 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
Powerful PHP integrated development environment