yashandb教程FG083-YashanDB TPCC压测实战
内容简介
本文档风哥主要介绍YashanDB数据库的TPCC基准测试方法和实战经验,包括TPCC测试的基本概念、测试环境搭建、测试执行与监控、结果分析与优化等内容。风哥教程参考yashandb官方文档性能测试部分,结合生产环境实际案例进行详细讲解。
目录大纲
Part01-基础概念与理论知识
1.1 TPCC测试概念
TPCC(Transaction Processing Performance Council)是事务处理性能委员会制定的基准测试标准,用于评估数据库系统的事务处理能力。TPCC测试模拟了一个零售企业的业务场景,包括以下主要事务:
- 新订单(New-Order):创建新订单
- 支付(Payment):处理客户支付
- 订单状态查询(Order-Status):查询订单状态
- 发货(Delivery):处理订单发货
- 库存水平查询(Stock-Level):查询库存水平
1.2 TPCC测试模型
TPCC测试模型包含以下要素:
- 数据模型:包含仓库(WAREHOUSE)、 district(DISTRICT)、客户(CUSTOMER)、订单(ORDERS)、订单明细(ORDER_LINE)、库存(STOCK)等表
- 事务比例:新订单45%,支付43%,订单状态查询4%,发货4%,库存水平查询4%
- 数据分布:数据按照仓库和district进行分布,每个仓库包含10个district,每个district包含3000个客户
- 扩展性:通过增加仓库数量来扩展测试规模
1.3 TPCC测试指标
TPCC测试的主要指标是tpmC(transactions per minute),表示每分钟能够处理的新订单事务数。其他重要指标包括:
- 响应时间:各事务的平均响应时间
- 吞吐量:系统处理事务的能力
- 资源利用率:CPU、内存、I/O等资源的使用情况
- 稳定性:系统在长时间运行下的稳定性
Part02-生产环境规划与建议
2.1 测试环境规划
TPCC测试环境应满足以下要求:
- 硬件配置:根据测试规模选择合适的硬件配置,通常需要多核CPU、充足内存和高性能存储
- 软件配置:安装最新版本的YashanDB,配置合适的参数
- 网络环境:确保网络连接稳定,避免网络延迟影响测试结果
- 数据量:根据测试规模准备足够的数据量,通常每个仓库对应约1GB数据
2.2 测试工具选择
常用的TPCC测试工具包括:
- tpcc-mysql:MySQL版本的TPCC测试工具,可适配其他数据库
- pgbench-tpcc:PostgreSQL版本的TPCC测试工具
- BenchmarkSQL:通用的TPCC测试工具,支持多种数据库
- YashanDB自带TPCC工具:YashanDB提供的TPCC测试工具
2.3 测试数据准备
TPCC测试数据准备应考虑:
- 仓库数量:根据测试规模选择合适的仓库数量,通常从1个仓库开始,逐步增加
- 数据分布:按照TPCC标准分布数据
- 数据一致性:确保测试数据的一致性和完整性
- 数据加载时间:预估数据加载时间,留出足够的时间进行数据准备
Part03-生产环境项目实施方案
3.1 测试环境搭建
搭建TPCC测试环境的步骤:
nproc
64
free -h
total used free shared buff/cache available
Mem: 256G 20G 200G 2.0G 36G 234G
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 1000G 100G 900G 10% /
./yashandb-23.4.0-linux-x86_64.run
[INFO] Starting YashanDB installer…
[INFO] Checking system environment…
[INFO] Installing YashanDB…
[INFO] Installation completed successfully!
yasboot initdb -D /yashandb/fgdata
[INFO] Initializing database…
[INFO] Database initialized successfully!
yasboot start -D /yashandb/fgdata
[INFO] Starting YashanDB server…
[INFO] YashanDB server started successfully!
3.2 TPCC测试配置
配置TPCC测试参数:
CREATE USER fgedu WITH PASSWORD ‘fgedu123’;
CREATE DATABASE fgedudb;
GRANT ALL PRIVILEGES ON DATABASE fgedudb TO fgedu;
CREATE USER
CREATE DATABASE
GRANT
git clone https://github.com/Percona-Lab/tpcc-mysql.git
cd tpcc-mysql
make
Cloning into ‘tpcc-mysql’…
…
gcc -g -W -Wall -I. -I/usr/include/mysql -DBIG_JOINS=1 -fno-strict-aliasing -g -DNDEBUG -DMYSQL_SERVER -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DHAVE_NAMESPACE=1 -I. -I./include -I/home/build/mysql-5.6.21/include -I/home/build/mysql-5.6.21/include -I/home/build/mysql-5.6.21/sql -c -o load.o load.c
gcc -g -W -Wall -I. -I/usr/include/mysql -DBIG_JOINS=1 -fno-strict-aliasing -g -DNDEBUG -DMYSQL_SERVER -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DHAVE_NAMESPACE=1 -I. -I./include -I/home/build/mysql-5.6.21/include -I/home/build/mysql-5.6.21/include -I/home/build/mysql-5.6.21/sql -c -o support.o support.c
gcc -g -W -Wall -I. -I/usr/include/mysql -DBIG_JOINS=1 -fno-strict-aliasing -g -DNDEBUG -DMYSQL_SERVER -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DHAVE_NAMESPACE=1 -I. -I./include -I/home/build/mysql-5.6.21/include -I/home/build/mysql-5.6.21/include -I/home/build/mysql-5.6.21/sql -c -o tpcc.o tpcc.c
gcc -g -W -Wall -I. -I/usr/include/mysql -DBIG_JOINS=1 -fno-strict-aliasing -g -DNDEBUG -DMYSQL_SERVER -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DHAVE_NAMESPACE=1 load.o support.o tpcc.o -L/usr/lib64/mysql -lmysqlclient -lpthread -lm -ldl -o tpcc_load
gcc -g -W -Wall -I. -I/usr/include/mysql -DBIG_JOINS=1 -fno-strict-aliasing -g -DNDEBUG -DMYSQL_SERVER -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DHAVE_NAMESPACE=1 load.o support.o tpcc.o -L/usr/lib64/mysql -lmysqlclient -lpthread -lm -ldl -o tpcc_start
3.3 测试监控配置
配置监控工具,实时监控系统性能:
yum install -y htop iotop vmstat sar
Installed: htop-3.0.5-1.el8.x86_64 iotop-0.6-15.el8.noarch vmstat-1.1.3-17.el8.x86_64 sar-3.1.1-1.el8.x86_64
#!/bin/bash
# tpcc_monitor.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
while true; do
echo “$(date)”
sar -u 1 5
echo “—”
sar -r 1 5
echo “—”
sar -b 1 5
echo “—”
sleep 60
done > tpcc_monitor.log &
[1] 12345
Part04-生产案例与实战讲解
4.1 YashanDB TPCC压测实战
执行TPCC测试:
./tpcc_load -h localhost -P 5432 -u fgedu -p fgedu123 -d fgedudb -w 10
*************************************
Loading data for 10 warehouses
*************************************
initializing tables for warehouse 1
loading item
loading warehouse
loading stock
loading district
loading customer
loading history
loading orders
loading new_orders
loading order_line
initializing tables for warehouse 2
…
initializing tables for warehouse 10
Loading complete.
*************************************
Data loading done.
*************************************
./tpcc_start -h localhost -P 5432 -u fgedu -p fgedu123 -d fgedudb -w 10 -c 64 -r 10 -l 3600
*************************************
TPCC Load Generator
*************************************
warehouse: 10
threads: 64
rampup time: 10 sec
measure time: 3600 sec
RAMP-UP START
RAMP-UP END
MEASURING START
10, trx: 12500, 95%: 15.2ms, 99%: 25.8ms, max_rt: 125.4ms
20, trx: 13200, 95%: 14.8ms, 99%: 24.5ms, max_rt: 118.2ms
30, trx: 13500, 95%: 14.5ms, 99%: 23.8ms, max_rt: 110.6ms
…
3600, trx: 14200, 95%: 14.2ms, 99%: 23.5ms, max_rt: 105.3ms
MEASURING END
*************************************
TPMc: 852000
*************************************
4.2 测试结果分析
分析TPCC测试结果:
- tpmC:852000,表示每分钟能够处理852000个新订单事务
- 响应时间:95%响应时间为14.2ms,99%响应时间为23.5ms
- 稳定性:测试过程中响应时间稳定,没有明显波动
- 资源利用率:需要查看监控日志
tail -n 100 tpcc_monitor.log
2023-12-01 10:00:00
Linux 4.18.0-305.el8.x86_64 (fgedu.net.cn) 12/01/2023 _x86_64_ (64 CPU)
10:00:00 AM CPU %user %nice %system %iowait %steal %idle
10:00:01 AM all 75.23 0.00 15.36 5.21 0.00 4.20
10:00:02 AM all 76.54 0.00 14.23 4.87 0.00 4.36
10:00:03 AM all 77.12 0.00 13.89 4.56 0.00 4.43
10:00:04 AM all 78.34 0.00 12.67 4.23 0.00 4.76
10:00:05 AM all 79.12 0.00 11.89 3.98 0.00 5.01
—
4.3 性能优化建议
根据测试结果,提出以下优化建议:
ALTER SYSTEM SET shared_buffers = ’64GB’;
ALTER SYSTEM SET work_mem = ‘128MB’;
ALTER SYSTEM SET
ALTER SYSTEM SET
ALTER SYSTEM SET random_page_cost = 1.0;
ALTER SYSTEM SET effective_io_concurrency = 400;
ALTER SYSTEM SET
ALTER SYSTEM SET
ALTER SYSTEM SET max_parallel_workers_per_gather = 16;
ALTER SYSTEM SET parallel_leader_participation = on;
ALTER SYSTEM SET
ALTER SYSTEM SET
风哥提示:
TPCC测试结果应结合实际硬件配置进行分析,不同的硬件配置会导致不同的测试结果。同时,优化措施应根据系统的实际情况进行调整,避免盲目优化。
Part05-风哥经验总结与分享
5.1 TPCC测试最佳实践
- 选择合适的仓库数量:根据硬件配置选择合适的仓库数量,通常每个CPU核心对应1-2个仓库
- 设置合理的测试时间:建议测试时间不少于1小时,以确保测试结果的稳定性
- 监控系统资源:实时监控CPU、内存、I/O等资源使用情况,找出性能瓶颈
- 分析测试结果:详细分析测试数据,找出系统的优势和不足
- 优化系统配置:根据测试结果优化系统配置,提高系统性能
- 对比测试:与其他数据库系统进行对比测试,了解YashanDB的性能优势
5.2 常见问题与解决方案
- 测试数据加载失败:检查数据库连接和权限,确保数据库服务正常运行
- 测试过程中系统崩溃:检查系统资源使用情况,确保有足够的内存和磁盘空间
- 测试结果不稳定:确保测试环境稳定,避免其他进程干扰
- 性能瓶颈不明确:使用多种监控工具,全面分析系统性能
5.3 TPCC测试经验分享
在实际生产环境中,TPCC测试应注意以下几点:
- 定期进行TPCC测试:了解系统性能变化趋势
- 建立性能基线:作为系统性能的参考标准
- 模拟真实业务场景:结合实际业务场景进行测试
- 持续优化:根据测试结果持续优化系统性能
- 分享测试经验:与其他DBA分享测试经验,共同提高
更多视频教程www.fgedu.net.cn
学习交流加群风哥微信: itpux-com
学习交流加群风哥QQ113257174
风哥提示:TPCC测试是评估数据库性能的重要手段,但不能完全代表实际业务场景的性能表现
更多学习教程公众号风哥教程itpux_com
from yashandb视频:www.itpux.com
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
