1. 首页 > 国产数据库教程 > YashanDB教程 > 正文

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

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

# 下载并编译TPCC工具

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测试

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

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息