OceanBase教程FG079-OceanBase参数优化最佳实践
本文档风哥主要介绍OceanBase数据库参数优化最佳实践,包括OceanBase参数概念、OceanBase参数类型、OceanBase内存参数、OceanBase I/O参数、OceanBase并发参数、OceanBase OLTP优化、OceanBase OLAP优化等内容,风哥教程参考OceanBase官方文档系统参数、性能优化等内容编写,适合DBA人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。
Part01-基础概念与理论知识
1.1 OceanBase参数概念
OceanBase参数是控制数据库行为的重要配置项,合理设置参数可以显著提升数据库性能。更多视频教程www.fgedu.net.cn
- 动态调整:大部分参数支持在线修改
- 多级配置:支持集群级、租户级、会话级
- 持久化存储:参数修改自动持久化
- 版本差异:不同版本参数可能不同
- 场景相关:不同场景需要不同参数
1.2 OceanBase参数类型
1. 系统参数(System Parameters)
– 控制集群级行为
– 影响所有租户
– 需要sys租户权限
2. 租户参数(Tenant Parameters)
– 控制租户级行为
– 只影响当前租户
– 租户管理员可修改
3. 会话参数(Session Parameters)
– 控制会话级行为
– 只影响当前会话
– 普通用户可修改
4. 参数查看
obclient> SHOW PARAMETERS LIKE ‘memory%’;
+——-+———-+—————-+———-+———————+———–+——-+
| zone | svr_type | svr_ip | svr_port | name | data_type | value |
+——-+———-+—————-+———-+———————+———–+——-+
| zone1 | observer | 192.168.1.100 | 2882 | memory_limit | NULL | 32G |
| zone1 | observer | 192.168.1.100 | 2882 | memory_limit_percentage | NULL | 80 |
+——-+———-+—————-+———-+———————+———–+——-+
1.3 OceanBase参数作用域
1. 集群级(CLUSTER)
– 影响整个集群
– ALTER SYSTEM SET …
– 需要sys租户
2. 租户级(TENANT)
– 影响指定租户
– ALTER SYSTEM SET … TENANT = ‘tenant_name’
– 需要sys租户或租户管理员
3. 会话级(SESSION)
– 影响当前会话
– SET SESSION …
– 普通用户可用
4. 生效时机
┌─────────────────┬─────────────────────┐
│ 类型 │ 生效时机 │
├─────────────────┼─────────────────────┤
│ 动态参数 │ 立即生效 │
│ 静态参数 │ 重启后生效 │
│ 只读参数 │ 不可修改 │
└─────────────────┴─────────────────────┘
Part02-生产环境规划与建议
2.1 OceanBase内存参数
1. 总内存限制
obclient> ALTER SYSTEM SET memory_limit = ’64G’;
Query OK, 0 rows affected
2. 内存百分比
obclient> ALTER SYSTEM SET memory_limit_percentage = 80;
Query OK, 0 rows affected
3. 各模块内存分配
obclient> ALTER SYSTEM SET system_memory = ’20G’;
Query OK, 0 rows affected
obclient> ALTER SYSTEM SET __data_mem_limit = ’30G’;
Query OK, 0 rows affected
4. 内存参数检查
obclient> SHOW PARAMETERS LIKE ‘memory%’;
+——-+———-+—————-+———-+————————-+———–+——-+
| zone | svr_type | svr_ip | svr_port | name | data_type | value |
+——-+———-+—————-+———-+————————-+———–+——-+
| zone1 | observer | 192.168.1.100 | 2882 | memory_limit | NULL | 64G |
| zone1 | observer | 192.168.1.100 | 2882 | memory_limit_percentage | NULL | 80 |
| zone1 | observer | 192.168.1.100 | 2882 | system_memory | NULL | 20G |
+——-+———-+—————-+———-+————————-+———–+——-+
5. 内存使用监控
obclient> SELECT * FROM oceanbase.__all_virtual_memory_info LIMIT 10;
+————-+————+———-+————-+————–+
| tenant_id | ctx_name | hold | used | limit |
+————-+————+———-+————-+————–+
| 1 | DEFAULT | 8589934592 | 6442450944 | 17179869184 |
| 1001 | DEFAULT | 4294967296 | 3221225472 | 8589934592 |
+————-+————+———-+————-+————–+
2.2 OceanBase I/O参数
1. 数据文件参数,风哥提示:。
obclient> ALTER SYSTEM SET datafile_size = ‘200G’;
Query OK, 0 rows affected
obclient> ALTER SYSTEM SET datafile_next = ’20G’;
Query OK, 0 rows affected
obclient> ALTER SYSTEM SET datafile_maxsize = ‘500G’;
Query OK, 0 rows affected
2. 日志参数
obclient> ALTER SYSTEM SET clog_disk_usage_limit_size = ‘400G’;
Query OK, 0 rows affected
obclient> ALTER SYSTEM SET clog_disk_usage_limit_percentage = 90;
Query OK, 0 rows affected
3. I/O线程参数
obclient> ALTER SYSTEM SET __mini_merge_concurrency = 4;
Query OK, 0 rows affected
obclient> ALTER SYSTEM SET __minor_merge_concurrency = 8;
Query OK, 0 rows affected
4. I/O性能监控
obclient> SELECT * FROM oceanbase.__all_virtual_disk_stat;
+————-+—————+—————+—————+
| disk_type | total_size | free_size | used_size |
+————-+—————+—————+—————+
| DATA | 2199023255552 | 1649267441664 | 549755813888 |
| LOG | 549755813888 | 412316860416 | 137438953472 |,学习交流加群风哥微信: itpux-com。
+————-+—————+—————+—————+
2.3 OceanBase并发参数
1. CPU相关参数
obclient> ALTER SYSTEM SET cpu_count = 32;
Query OK, 0 rows affected
obclient> ALTER SYSTEM SET workers_per_cpu_quota = 8;
Query OK, 0 rows affected
2. 线程池参数
obclient> ALTER SYSTEM SET large_query_worker_percentage = 30;
Query OK, 0 rows affected
obclient> ALTER SYSTEM SET large_query_threshold = ‘5s’;
Query OK, 0 rows affected
3. 队列参数
obclient> ALTER SYSTEM SET net_thread_count = 8;
Query OK, 0 rows affected
obclient> ALTER SYSTEM SET tenant_task_queue_size = 65536;
Query OK, 0 rows affected
4. 并发控制
obclient> ALTER SYSTEM SET ob_max_thread_num = 256;
Query OK, 0 rows affected
obclient> SHOW PARAMETERS LIKE ‘%worker%’;
+——-+———-+—————-+———-+—————————+———–+——-+
| zone | svr_type | svr_ip | svr_port | name | data_type | value |
+——-+———-+—————-+———-+—————————+———–+——-+
| zone1 | observer | 192.168.1.100 | 2882 | workers_per_cpu_quota | NULL | 8 |
| zone1 | observer | 192.168.1.100 | 2882 | large_query_worker_percentage | NULL | 30 |
+——-+———-+—————-+———-+—————————+———–+——-+,学习交流加群风哥QQ113257174。
Part03-生产环境项目实施方案
3.1 OceanBase OLTP优化
1. 内存优化
— 增加缓存
obclient> ALTER SYSTEM SET __ob_plan_cache_percentage = 10;
Query OK, 0 rows affected
obclient> ALTER SYSTEM SET __ob_sql_work_area_percentage = 20;
Query OK, 0 rows affected
2. 并发优化
— 提高并发能力
obclient> ALTER SYSTEM SET workers_per_cpu_quota = 10;
Query OK, 0 rows affected
obclient> ALTER SYSTEM SET large_query_threshold = ‘1s’;
Query OK, 0 rows affected
3. 事务优化
— 优化事务处理
obclient> ALTER SYSTEM SET trx_try_wait_lock_timeout = ‘0ms’;
Query OK, 0 rows affected
obclient> ALTER SYSTEM SET ob_enable_batched_multi_statement = TRUE;
Query OK, 0 rows affected
4. 日志优化
— 减少日志刷盘延迟
obclient> ALTER SYSTEM SET clog_sync_time_warn_threshold = ‘100ms’;更多视频教程www.fgedu.net.cn。
Query OK, 0 rows affected
5. OLTP参数模板
#!/bin/bash
# oltp_params.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
obclient -e ”
ALTER SYSTEM SET memory_limit = ’64G’;
ALTER SYSTEM SET workers_per_cpu_quota = 10;
ALTER SYSTEM SET large_query_threshold = ‘1s’;
ALTER SYSTEM SET __ob_plan_cache_percentage = 10;
ALTER SYSTEM SET ob_enable_batched_multi_statement = TRUE;
ALTER SYSTEM SET trx_try_wait_lock_timeout = ‘0ms’;
”
3.2 OceanBase OLAP优化
1. 内存优化
— 增加SQL执行内存
obclient> ALTER SYSTEM SET __ob_sql_work_area_percentage = 40;
Query OK, 0 rows affected
obclient> ALTER SYSTEM SET _sort_area_size = ‘1G’;
Query OK, 0 rows affected
2. 并行度优化
— 开启并行查询
obclient> ALTER SYSTEM SET parallel_servers_target = 64;
Query OK, 0 rows affected
obclient> ALTER SYSTEM SET parallel_degree_policy = ‘AUTO’;
Query OK, 0 rows affected
3. 大查询优化
— 放宽大查询限制,更多学习教程公众号风哥教程itpux_com。
obclient> ALTER SYSTEM SET large_query_threshold = ’30s’;
Query OK, 0 rows affected
obclient> ALTER SYSTEM SET large_query_worker_percentage = 50;
Query OK, 0 rows affected
4. 压缩优化
— 启用压缩
obclient> ALTER SYSTEM SET default_compress_func = ‘zstd_1.3.8’;
Query OK, 0 rows affected
5. OLAP参数模板
#!/bin/bash
# olap_params.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
obclient -e ”
ALTER SYSTEM SET memory_limit = ‘128G’;
ALTER SYSTEM SET __ob_sql_work_area_percentage = 40;
ALTER SYSTEM SET parallel_servers_target = 64;
ALTER SYSTEM SET large_query_threshold = ’30s’;
ALTER SYSTEM SET default_compress_func = ‘zstd_1.3.8’;
”
3.3 OceanBase HTAP优化
1. 资源隔离
— 设置资源隔离
obclient> ALTER SYSTEM SET enable_cgroup = TRUE;
Query OK, 0 rows affected
obclient> ALTER SYSTEM SET enable_global_background = TRUE;
Query OK, 0 rows affected
2. 内存分配
— 平衡OLTP和OLAP内存
obclient> ALTER SYSTEM SET __ob_plan_cache_percentage = 8;
Query OK, 0 rows affected
obclient> ALTER SYSTEM SET __ob_sql_work_area_percentage = 25;
Query OK, 0 rows affected
3. 并发控制
— 平衡并发设置
obclient> ALTER SYSTEM SET workers_per_cpu_quota = 8;
Query OK, 0 rows affected
obclient> ALTER SYSTEM SET large_query_threshold = ’10s’;
Query OK, 0 rows affected
4. 副本优化
— 设置只读副本
obclient> ALTER SYSTEM SET enable_replica_read = TRUE;
Query OK, 0 rows affected
obclient> ALTER SYSTEM SET ob_read_consistency = ‘WEAK’;
Query OK, 0 rows affected
5. HTAP参数模板
#!/bin/bash
# htap_params.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
obclient -e ”
ALTER SYSTEM SET memory_limit = ’96G’;
ALTER SYSTEM SET enable_cgroup = TRUE;
ALTER SYSTEM SET __ob_plan_cache_percentage = 8;
ALTER SYSTEM SET __ob_sql_work_area_percentage = 25;
ALTER SYSTEM SET workers_per_cpu_quota = 8;
ALTER SYSTEM SET enable_replica_read = TRUE;
”
Part04-生产案例与实战讲解
4.1 OceanBase金融系统案例
– 核心交易系统
– 高并发、低延迟
– 数据一致性要求高
# 参数配置
1. 内存配置
obclient> ALTER SYSTEM SET memory_limit = ‘256G’;
Query OK, 0 rows affected
obclient> ALTER SYSTEM SET system_memory = ’50G’;
Query OK, 0 rows affected
2. 并发配置
obclient> ALTER SYSTEM SET workers_per_cpu_quota = 12;
Query OK, 0 rows affected
obclient> ALTER SYSTEM SET large_query_threshold = ‘500ms’;
Query OK, 0 rows affected
3. 事务配置
obclient> ALTER SYSTEM SET trx_try_wait_lock_timeout = ‘0ms’;
Query OK, 0 rows affected
obclient> ALTER SYSTEM SET ob_enable_batched_multi_statement = TRUE;
Query OK, 0 rows affected
4. 效果验证
— TPS从5000提升到12000
— 平均响应时间从5ms降低到2ms
— 99分位响应时间从20ms降低到8ms
5. 监控指标
obclient> SELECT * FROM oceanbase.__all_virtual_sql_audit
WHERE request_time > date_sub(now(), interval 1 hour)
ORDER BY elapsed_time DESC LIMIT 10;
4.2 OceanBase电商系统案例
– 大促活动
– 读写混合
– 弹性需求
# 参数配置
1. 基础配置
obclient> ALTER SYSTEM SET memory_limit = ‘128G’;
Query OK, 0 rows affected
obclient> ALTER SYSTEM SET cpu_count = 64;
Query OK, 0 rows affected
2. 连接优化
obclient> ALTER SYSTEM SET max_connections = 5000;
Query OK, 0 rows affected
obclient> ALTER SYSTEM SET net_thread_count = 16;
Query OK, 0 rows affected
3. 缓存优化
obclient> ALTER SYSTEM SET __ob_plan_cache_percentage = 12;
Query OK, 0 rows affected
obclient> ALTER SYSTEM SET __ob_sql_work_area_percentage = 15;
Query OK, 0 rows affected
4. 大促调整
— 大促前调整
obclient> ALTER SYSTEM SET workers_per_cpu_quota = 16;
Query OK, 0 rows affected
obclient> ALTER SYSTEM SET large_query_worker_percentage = 20;
Query OK, 0 rows affected
5. 效果验证
— 支撑10万QPS
— 大促0故障
— 弹性扩容响应<3分钟
4.3 OceanBase大数据案例
– 数据分析平台
– 复杂查询
– 大数据量
# 参数配置
1. 内存配置
obclient> ALTER SYSTEM SET memory_limit = ‘512G’;
Query OK, 0 rows affected
obclient> ALTER SYSTEM SET __ob_sql_work_area_percentage = 50;
Query OK, 0 rows affected
2. 并行配置
obclient> ALTER SYSTEM SET parallel_servers_target = 128;
Query OK, 0 rows affected
obclient> ALTER SYSTEM SET parallel_degree_limit = 64;
Query OK, 0 rows affected
3. 查询优化
obclient> ALTER SYSTEM SET large_query_threshold = ’60s’;
Query OK, 0 rows affected
obclient> ALTER SYSTEM SET large_query_worker_percentage = 60;
Query OK, 0 rows affected
4. 压缩配置
obclient> ALTER SYSTEM SET default_compress_func = ‘zstd_1.3.8’;
Query OK, 0 rows affected
obclient> ALTER SYSTEM SET table_dop = 8;
Query OK, 0 rows affected
5. 效果验证
— 复杂查询从小时级降到分钟级
— 存储空间节省60%
— 并发查询能力提升3倍
Part05-风哥经验总结与分享
5.1 OceanBase优化方法论
1. 基准测试
– 建立性能基线
– 确定优化目标
– 选择测试场景
2. 参数分析
– 识别瓶颈参数
– 理解参数影响
– 制定优化方案
3. 渐进优化
– 小步快跑
– 单参数调整
– 验证效果
4. 监控验证
– 持续监控
– 对比优化前后
– 及时调整
5. 文档记录
– 记录参数变更
– 记录优化效果
– 形成知识库
5.2 OceanBase监控调优
1. 性能视图
obclient> SELECT * FROM oceanbase.__all_virtual_sql_audit
WHERE elapsed_time > 1000000
ORDER BY elapsed_time DESC LIMIT 10;
2. 内存监控
obclient> SELECT tenant_id, ctx_name, hold/1024/1024/1024 as hold_gb
FROM oceanbase.__all_virtual_memory_info
ORDER BY hold DESC;
3. 锁等待监控
obclient> SELECT * FROM oceanbase.__all_virtual_lock_wait_stat
ORDER BY wait_time DESC;
4. 自动化调优脚本
#!/bin/bash
# auto_tune.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# 检查慢查询
SLOW_COUNT=$(obclient -e “SELECT COUNT(*) FROM oceanbase.__all_virtual_sql_audit WHERE elapsed_time > 1000000” | tail -1)
if [ $SLOW_COUNT -gt 100 ]; then
echo “检测到大量慢查询,建议调整large_query_threshold”
obclient -e “ALTER SYSTEM SET large_query_threshold = ‘5s'”
fi
# 检查内存使用
MEM_USAGE=$(obclient -e “SELECT SUM(hold)/SUM(limit)*100 FROM oceanbase.__all_virtual_memory_info” | tail -1)
if [ $(echo “$MEM_USAGE > 90” | bc) -eq 1 ]; then
echo “内存使用率过高,建议增加memory_limit”
fi
5.3 OceanBase常见误区
1. 参数越大越好
❌ 错误:盲目调大所有参数
✅ 正确:根据实际需求合理设置
2. 忽视硬件限制
❌ 错误:不考虑硬件配置调参数
✅ 正确:参数设置要匹配硬件能力
3. 一次性调整过多
❌ 错误:同时修改多个参数
✅ 正确:单参数调整,验证效果
4. 忽视监控验证
❌ 错误:调完参数不验证效果
✅ 正确:持续监控,及时调整
5. 生产环境直接修改
❌ 错误:未经测试直接改生产
✅ 正确:先在测试环境验证
6. 不记录变更
❌ 错误:修改参数不记录
✅ 正确:建立参数变更记录
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
