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

OceanBase教程FG086-OceanBase压力测试性能基准

本文档风哥主要介绍OceanBase数据库压力测试性能基准,包括OceanBase基准测试概念、OceanBase测试类型、OceanBase性能指标、OceanBase测试规划、OceanBase Sysbench测试、OceanBase TPCC测试、OceanBase自定义测试等内容,风哥教程参考OceanBase官方文档性能测试、基准测试等内容编写,适合DBA人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。

Part01-基础概念与理论知识

1.1 OceanBase基准测试概念

基准测试是通过标准化的测试方法评估数据库性能的过程,用于建立性能基线、验证优化效果、指导容量规划。更多视频教程www.fgedu.net.cn

OceanBase基准测试目的:

  • 性能评估:了解系统性能上限
  • 容量规划:指导硬件配置
  • 优化验证:验证优化效果
  • 对比选型:与其他数据库对比
  • 问题发现:发现性能瓶颈

1.2 OceanBase测试类型

# 测试类型

1. OLTP测试
– 特点:高并发、短事务
– 工具:Sysbench、TPCC
– 指标:TPS、QPS、延迟

2. OLAP测试
– 特点:复杂查询、大数据量
– 工具:TPC-H、TPC-DS
– 指标:查询时间、吞吐量

3. HTAP测试
– 特点:混合负载
– 工具:自定义场景
– 指标:综合性能

4. 压力测试
– 负载测试:逐步增加负载
– 稳定性测试:长时间运行
– 峰值测试:最大负载
– 破坏性测试:超过极限

1.3 OceanBase性能指标

# 性能指标

1. 吞吐量指标
– TPS:每秒事务数
– QPS:每秒查询数
– 吞吐量:每秒处理数据量

2. 响应时间指标
– 平均响应时间
– 95分位响应时间
– 99分位响应时间
– 最大响应时间

3. 资源指标
– CPU使用率
– 内存使用率
– I/O吞吐量
– 网络带宽

4. 并发指标
– 并发连接数
– 活跃会话数
– 等待队列长度

5. 指标示例
┌─────────────────┬─────────────────────┐
│ 指标 │ 参考值 │
├─────────────────┼─────────────────────┤
│ TPS │ 10000+ │
│ 平均延迟 │ < 10ms │ │ 99分位延迟 │ < 100ms │ │ CPU使用率 │ < 80% │ └─────────────────┴─────────────────────┘

风哥提示:基准测试需要在生产环境相似的环境下进行,测试结果才有参考价值。

Part02-生产环境规划与建议

2.1 OceanBase测试规划

# 测试规划

1. 测试目标
– 确定测试目的
– 定义成功标准
– 确定测试范围

2. 测试场景
– 业务场景分析
– 关键操作识别
– 并发模型设计

3. 测试数据
– 数据量估算
– 数据分布设计
– 数据准备脚本

4. 测试计划
┌─────────────────┬─────────────────────┐
│ 阶段 │ 内容 │
├─────────────────┼─────────────────────┤
│ 准备阶段 │ 环境搭建、数据准备 │
│ 基准测试 │ 建立性能基线 │
│ 压力测试 │ 逐步增加负载 │
│ 稳定性测试 │ 长时间运行 │
│ 分析优化 │ 瓶颈分析、优化验证 │
└─────────────────┴─────────────────────┘

2.2 OceanBase环境准备

# 环境准备

1. 硬件环境
– CPU:与生产一致
– 内存:与生产一致
– 存储:与生产一致,风哥提示:。
– 网络:与生产一致

2. 软件环境
– 操作系统版本
– OceanBase版本
– 内核参数配置
– 系统优化

3. 集群配置
– 节点数量
– 副本数
– 资源单元配置
– 租户配置

4. 监控配置
– OCP部署
– 监控项配置
– 告警规则
– 日志收集

2.3 OceanBase测试数据

# 测试数据准备

1. 数据量规划
– 小数据量:100万行
– 中数据量:1000万行
– 大数据量:1亿行+,学习交流加群风哥微信: itpux-com。
– 超大数据量:10亿行+

2. 数据生成
#!/bin/bash
# generate_data.sh
# from:www.itpux.com.qq113257174.wx:itpux-com

# 生成测试数据
obclient -e ”
CREATE TABLE fgedu_benchmark (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
user_id BIGINT NOT NULL,
order_id BIGINT NOT NULL,
amount DECIMAL(18,2) NOT NULL,
status INT DEFAULT 0,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
INDEX idx_user_id (user_id),
INDEX idx_create_time (create_time)
);

— 插入测试数据
INSERT INTO fgedu_benchmark (user_id, order_id, amount, status)
SELECT
FLOOR(RAND() * 1000000),
FLOOR(RAND() * 10000000),
ROUND(RAND() * 1000, 2),
FLOOR(RAND() * 5)
FROM
(SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5) t1,
(SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5) t2,
(SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5) t3,
(SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5) t4,
(SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5) t5,
(SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5) t6;

3. 数据验证
obclient> SELECT COUNT(*) FROM fgedu_benchmark;
+———-+
| COUNT(*) |,学习交流加群风哥QQ113257174。
+———-+
| 15625 |
+———-+

生产环境建议:测试数据应尽可能模拟真实业务数据分布,包括数据倾斜、热点等场景。学习交流加群风哥微信: itpux-com

Part03-生产环境项目实施方案

3.1 OceanBase Sysbench测试

# Sysbench测试

1. 安装Sysbench
$ yum install -y sysbench

2. 准备测试
$ sysbench /usr/share/sysbench/oltp_read_write.lua \
–mysql-host=192.168.1.100 \
–mysql-port=3306 \
–mysql-user=fgedu@fgedu_tenant \
–mysql-password=fgedu123 \
–mysql-db=fgedudb \
–tables=10 \
–table-size=100000 \
–threads=64 \
prepare

3. 执行测试
$ sysbench /usr/share/sysbench/oltp_read_write.lua \
–mysql-host=192.168.1.100 \
–mysql-port=3306 \
–mysql-user=fgedu@fgedu_tenant \
–mysql-password=fgedu123 \
–mysql-db=fgedudb \
–tables=10 \
–table-size=100000 \,更多视频教程www.fgedu.net.cn。
–threads=64 \
–time=300 \
–report-interval=10 \
run

4. 测试结果
SQL statistics:
queries performed:
read: 1540280
write: 440080
other: 220040
total: 2200400
transactions: 110020 (366.70 per sec.)
queries: 2200400 (7334.00 per sec.)
ignored errors: 0 (0.00 per sec.)
reconnects: 0 (0.00 per sec.)

General statistics:
total time: 300.0014s
total number of events: 110020

Latency (ms):
min: 5.21
avg: 174.52
max: 1234.56
95th percentile: 456.78
sum: 19199999.99

Threads fairness:
events (avg/stddev): 1719.0625/45.23
execution time (avg/stddev): 299.9999/0.01

5. 清理数据
$ sysbench /usr/share/sysbench/oltp_read_write.lua \
–mysql-host=192.168.1.100 \
–mysql-port=3306 \
–mysql-user=fgedu@fgedu_tenant \
–mysql-password=fgedu123 \
–mysql-db=fgedudb \
cleanup,更多学习教程公众号风哥教程itpux_com。

3.2 OceanBase TPCC测试

# TPCC测试

1. 下载TPCC工具
$ git clone https://github.com/Percona-Lab/tpcc-mysql.git
$ cd tpcc-mysql/src
$ make

2. 创建测试表
$ mysql -h192.168.1.100 -P3306 -ufgedu@fgedu_tenant -p \
-Dfgedudb < create_table.sql 3. 加载数据 $ ./tpcc_load -h192.168.1.100 -P3306 \ -ufgedu@fgedu_tenant -pfgedu123 \ -dfgedudb -w 10 4. 执行测试 $ ./tpcc_start -h192.168.1.100 -P3306 \ -ufgedu@fgedu_tenant -pfgedu123 \ -dfgedudb -w 10 -c 32 -r 10 -l 300 5. 测试结果 *************************************** *** ###easy### TPC-C Load Generator *** ***************************************,from DB视频:www.itpux.com。 option h with value '192.168.1.100' option P with value '3306' option d with value 'fgedudb' option u with value 'fgedu@fgedu_tenant' option p with value 'fgedu123' option w with value '10' option c with value '32' option r with value '10' option l with value '300' ... [Current] NEW_ORDER: 12500, PAYMENT: 12000, ORDER_STATUS: 1000, DELIVERY: 1000, STOCK_LEVEL: 1000 [Current] NEW_ORDER: 12600, PAYMENT: 12100, ORDER_STATUS: 1010, DELIVERY: 1010, STOCK_LEVEL: 1010 ...
[0] sc:126000 lt:0 rt:0 fl:0
[1] sc:120000 lt:0 rt:0 fl:0
[2] sc:12000 lt:0 rt:0 fl:0
[3] sc:12000 lt:0 rt:0 fl:0
[4] sc:12000 lt:0 rt:0 fl:0
in 300 sec.


[0] sc:126000 lt:0 rt:0 fl:0
[1] sc:120000 lt:0 rt:0 fl:0
[2] sc:12000 lt:0 rt:0 fl:0
[3] sc:12000 lt:0 rt:0 fl:0
[4] sc:12000 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]


25200.000 TpmC

3.3 OceanBase自定义测试

# 自定义测试

1. 测试脚本
#!/bin/bash
# custom_benchmark.sh
# from:www.itpux.com.qq113257174.wx:itpux-com

# 配置
HOST=”192.168.1.100″
PORT=”3306″
USER=”fgedu@fgedu_tenant”
PASS=”fgedu123″
DB=”fgedudb”
THREADS=”64″
DURATION=”300″

# 测试函数
run_test() {
local test_name=$1
local sql=$2

echo “Running test: $test_name”

# 执行测试
for i in $(seq 1 $THREADS); do
(
for j in $(seq 1 1000); do
mysql -h$HOST -P$PORT -u$USER -p$PASS -D$DB -e “$sql” > /dev/null 2>&1
done
) &
done

wait
echo “Test completed: $test_name”
}

# 测试场景
run_test “Point Select” “SELECT * FROM fgedu_order WHERE order_id = FLOOR(RAND() * 1000000)”
run_test “Range Select” “SELECT * FROM fgedu_order WHERE create_time > DATE_SUB(NOW(), INTERVAL 1 DAY) LIMIT 100”
run_test “Insert” “INSERT INTO fgedu_order (user_id, amount) VALUES (FLOOR(RAND() * 1000000), ROUND(RAND() * 1000, 2))”
run_test “Update” “UPDATE fgedu_order SET status = 1 WHERE order_id = FLOOR(RAND() * 1000000)”

echo “All tests completed”

2. 结果分析
#!/bin/bash
# analyze_results.sh

# 收集性能数据
obclient -e ”
SELECT
‘TPS’ as metric,
COUNT(*) / 300 as value
FROM oceanbase.__all_virtual_sql_audit
WHERE request_time > DATE_SUB(NOW(), INTERVAL 5 MINUTE)
UNION ALL
SELECT
‘Avg Latency(ms)’ as metric,
AVG(elapsed_time) / 1000 as value
FROM oceanbase.__all_virtual_sql_audit
WHERE request_time > DATE_SUB(NOW(), INTERVAL 5 MINUTE)
UNION ALL
SELECT
‘P99 Latency(ms)’ as metric,
percentile_cont(0.99) WITHIN GROUP (ORDER BY elapsed_time) / 1000 as value
FROM oceanbase.__all_virtual_sql_audit
WHERE request_time > DATE_SUB(NOW(), INTERVAL 5 MINUTE);

风哥提示:自定义测试可以更贴近真实业务场景,建议结合业务特点设计测试用例。

Part04-生产案例与实战讲解

4.1 OceanBase OLTP基准案例

# 业务场景
– 金融交易系统
– 高并发短事务
– 低延迟要求

# 测试配置

1. 硬件配置
– CPU:64核
– 内存:256G
– 存储:SSD
– 网络:万兆

2. 集群配置
– 3节点
– 3副本
– 64线程

3. 测试结果
┌─────────────────┬─────────────────────┐
│ 指标 │ 结果 │
├─────────────────┼─────────────────────┤
│ TPS │ 50,000 │
│ QPS │ 750,000 │
│ 平均延迟 │ 1.2ms │
│ P99延迟 │ 5ms │
│ CPU使用率 │ 75% │
└─────────────────┴─────────────────────┘

4. 优化建议
– 增加连接池
– 优化SQL
– 调整并发度
– 扩容节点

4.2 OceanBase OLAP基准案例

# 业务场景
– 数据分析平台
– 复杂查询
– 大数据量

# 测试配置

1. 数据规模
– 表数量:10
– 总数据量:1TB
– 最大表:100亿行

2. 查询类型
– 聚合查询
– 多表关联
– 窗口函数
– 子查询

3. 测试结果
┌─────────────────┬─────────────────────┐
│ 查询类型 │ 执行时间 │
├─────────────────┼─────────────────────┤
│ 简单聚合 │ 2s │
│ 复杂关联 │ 15s │
│ 窗口函数 │ 8s │
│ 全表扫描 │ 45s │
└─────────────────┴─────────────────────┘

4. 优化建议
– 创建物化视图
– 优化索引
– 并行查询
– 分区裁剪

4.3 OceanBase HTAP基准案例

# 业务场景
– 混合负载
– OLTP + OLAP
– 资源隔离

# 测试配置

1. 负载比例
– OLTP:70%
– OLAP:30%

2. 资源分配
– OLTP租户:40%资源
– OLAP租户:60%资源

3. 测试结果
┌─────────────────┬─────────────────────┐
│ 指标 │ 结果 │
├─────────────────┼─────────────────────┤
│ OLTP TPS │ 35,000 │
│ OLAP QPS │ 100 │
│ OLTP延迟 │ 2ms │
│ OLAP延迟 │ 10s │
│ 资源争抢 │ 无 │
└─────────────────┴─────────────────────┘

4. 优化建议
– 租户隔离
– 副本隔离
– Cgroup限制
– 动态调整

生产环境建议:基准测试需要多次执行取平均值,排除偶然因素,确保结果准确可靠。更多学习教程公众号风哥教程itpux_com

Part05-风哥经验总结与分享

5.1 OceanBase测试最佳实践

# 测试最佳实践

1. 测试前准备
– 环境检查
– 数据准备
– 监控配置
– 基线记录

2. 测试中注意
– 预热阶段
– 稳定采样
– 多轮测试
– 记录日志

3. 测试后分析
– 数据整理
– 瓶颈分析
– 优化建议
– 报告输出

4. 常见错误
– 未预热直接测试
– 测试时间过短
– 监控数据缺失
– 环境不一致

5.2 OceanBase结果分析

# 结果分析

1. 性能瓶颈识别
– CPU瓶颈:CPU使用率>90%
– I/O瓶颈:I/O等待高
– 内存瓶颈:内存不足
– 网络瓶颈:网络延迟高

2. 分析脚本
#!/bin/bash
# analyze_bottleneck.sh
# from:www.itpux.com.qq113257174.wx:itpux-com

# 获取CPU使用率
CPU_USAGE=$(top -bn1 | grep “Cpu(s)” | awk ‘{print $2}’ | cut -d’%’ -f1)
echo “CPU Usage: $CPU_USAGE%”

# 获取I/O等待
IO_WAIT=$(iostat -x 1 1 | tail -1 | awk ‘{print $10}’)
echo “IO Wait: $IO_WAIT%”

# 获取内存使用
MEM_USAGE=$(free | grep Mem | awk ‘{printf “%.2f”, $3/$2 * 100.0}’)
echo “Memory Usage: $MEM_USAGE%”

# 获取慢查询
obclient -e ”
SELECT
sql_id,
LEFT(sql_text, 100) as sql_text,
elapsed_time / 1000000 as elapsed_sec,
execute_time / 1000000 as exec_sec
FROM oceanbase.__all_virtual_sql_audit
WHERE elapsed_time > 10000000
ORDER BY elapsed_time DESC
LIMIT 10;

3. 优化方向
┌─────────────────┬─────────────────────┐
│ 瓶颈类型 │ 优化方向 │
├─────────────────┼─────────────────────┤
│ CPU瓶颈 │ SQL优化、扩容 │
│ I/O瓶颈 │ 索引优化、SSD │
│ 内存瓶颈 │ 参数调整、扩容 │
│ 网络瓶颈 │ 网络优化、本地化 │
└─────────────────┴─────────────────────┘

5.3 OceanBase优化指导

# 优化指导

1. 参数优化
– 内存参数
– 并发参数
– I/O参数
– 缓存参数

2. SQL优化
– 索引优化
– 执行计划
– 批量操作
– 并行查询

3. 架构优化
– 分区设计
– 读写分离
– 负载均衡
– 缓存层

4. 持续优化
– 定期基准测试
– 趋势分析
– 容量规划
– 性能调优

风哥提示:基准测试是性能优化的基础,建议定期进行基准测试,建立性能基线,及时发现性能退化。from OceanBase视频:www.itpux.com

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

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

微信号:itpux-com

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