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

OceanBase教程FG085-OceanBase混合负载HTAP优化

本文档风哥主要介绍OceanBase数据库混合负载HTAP优化,包括OceanBase HTAP概念、OceanBase负载类型、OceanBase资源隔离、OceanBase架构设计、OceanBase租户隔离、OceanBase副本隔离、OceanBase Cgroup配置等内容,风哥教程参考OceanBase官方文档HTAP、资源隔离等内容编写,适合DBA人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。

Part01-基础概念与理论知识

1.1 OceanBase HTAP概念

HTAP(Hybrid Transactional/Analytical Processing)是指在同一数据库系统中同时支持事务处理(OLTP)和分析处理(OLAP)的能力。OceanBase通过多副本架构和资源隔离技术实现HTAP。更多视频教程www.fgedu.net.cn

OceanBase HTAP优势:

  • 统一平台:一套系统支持两种负载
  • 实时分析:数据实时可见,无需ETL
  • 资源隔离:OLTP和OLAP互不干扰
  • 成本降低:减少系统复杂度
  • 数据一致:保证分析数据一致性

1.2 OceanBase负载类型

# 负载类型

1. OLTP负载特点
– 短事务
– 高并发
– 点查为主
– 低延迟要求
– 频繁写入

2. OLAP负载特点
– 复杂查询
– 大表扫描
– 聚合计算
– 高内存消耗
– 批量处理

3. HTAP混合负载
┌─────────────────────────────────────────┐
│ HTAP架构 │
├─────────────────────────────────────────┤
│ │
│ OLTP请求 ──┐ │
│ ├──> OBProxy ──> OB集群 │
│ OLAP请求 ──┘ │
│ │ │
│ ┌─────┴─────┐ │
│ v v │
│ 主副本 只读副本 │
│ (OLTP) (OLAP) │
│ │
└─────────────────────────────────────────┘

4. 负载识别
– 查询执行时间
– 扫描数据量
– 内存使用量
– CPU消耗

1.3 OceanBase资源隔离

# 资源隔离机制

1. 租户隔离
– 不同租户独立资源
– CPU、内存、I/O隔离
– 适合多业务场景

2. Zone隔离
– 不同Zone承载不同负载
– 物理隔离
– 故障隔离

3. 副本隔离
– 主副本处理OLTP
– 只读副本处理OLAP
– 读写分离

4. Cgroup隔离
– Linux内核级隔离
– CPU限制
– 内存限制
– I/O限制

风哥提示:HTAP场景的核心是资源隔离,通过合理的隔离策略保证OLTP和OLAP互不干扰。

Part02-生产环境规划与建议

2.1 OceanBase架构设计

# 架构设计

1. 读写分离架构
┌─────────────────────────────────────────┐
│ 应用层 │
└─────────────────────────────────────────┘

┌────────────────┼────────────────┐
│ │ │
v v v
┌──────┐ ┌──────────┐ ┌──────┐
│ OLTP │ │ OBProxy │ │ OLAP │
│ 应用 │ │ │ │ 应用 │
└──────┘ └────┬─────┘ └──────┘

┌─────────┴─────────┐
│ │
v v
┌─────────┐ ┌─────────┐
│ 主副本 │ │只读副本 │
│ (Zone1) │ │(Zone2,3)│
└─────────┘ └─────────┘

2. 多租户架构
┌─────────────────────────────────────────┐
│ OB集群 │
├─────────────────────────────────────────┤
│ ┌─────────┐ ┌─────────┐ │
│ │OLTP租户 │ │OLAP租户 │ │
│ │ 40%资源 │ │ 60%资源 │ │
│ └─────────┘ └─────────┘ │
└─────────────────────────────────────────┘

3. 混合架构,风哥提示:。
– 租户隔离 + 副本隔离
– 最高隔离级别
– 适合核心业务

2.2 OceanBase资源规划

# 资源规划

1. CPU规划
– OLTP:响应优先,预留20%余量
– OLAP:吞吐量优先,可满载运行
– 建议比例:OLTP 40%,OLAP 60%

2. 内存规划
– OLTP:缓存优先
* Plan Cache:10%
* SQL Area:20%
* Block Cache:剩余

– OLAP:执行内存优先
* SQL Area:40%
* 排序/哈希:30%
* Block Cache:30%

3. I/O规划
– 独立存储池
– SSD优先
– IOPS预留,学习交流加群风哥微信: itpux-com。

4. 资源分配示例
┌─────────────────┬─────────────────────┐
│ 资源类型 │ 分配方案 │
├─────────────────┼─────────────────────┤
│ CPU │ OLTP 32核, OLAP 48核│
│ 内存 │ OLTP 128G, OLAP 192G│
│ 存储 │ 独立SSD池 │
│ 网络 │ 万兆网络 │
└─────────────────┴─────────────────────┘

2.3 OceanBase路由策略

# 路由策略

1. 自动路由
– OBProxy自动识别
– 根据SQL特征路由
– 无需应用改造

2. 强制路由
– 使用Hint指定
– /*+ READ_CONSISTENCY(WEAK) */
– 指定只读副本

3. 应用层路由
– 双数据源配置
– 应用自主选择
– 更灵活控制

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,学习交流加群风哥QQ113257174。

生产环境建议:HTAP场景建议采用读写分离架构,通过只读副本处理OLAP查询,避免影响OLTP性能。学习交流加群风哥微信: itpux-com

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

3.1 OceanBase租户隔离

# 租户隔离配置

1. 创建OLTP租户
obclient> CREATE RESOURCE UNIT fgedu_oltp_unit
MEMORY_SIZE = ’32G’,
MAX_CPU = 16,
MIN_CPU = 8,
IOPS = 10000,
DISK_SIZE = ‘500G’;
Query OK, 0 rows affected

obclient> CREATE RESOURCE POOL fgedu_oltp_pool
UNIT = ‘fgedu_oltp_unit’,
UNIT_NUM = 2,
ZONE_LIST = (‘zone1′,’zone2’);
Query OK, 0 rows affected

obclient> CREATE TENANT fgedu_oltp
PRIMARY_ZONE = ‘zone1’,
RESOURCE_POOL_LIST = (‘fgedu_oltp_pool’)
SET ob_tcp_invited_nodes = ‘%’;
Query OK, 0 rows affected

2. 创建OLAP租户
obclient> CREATE RESOURCE UNIT fgedu_olap_unit
MEMORY_SIZE = ’64G’,
MAX_CPU = 32,
MIN_CPU = 16,
IOPS = 20000,
DISK_SIZE = ‘1T’;
Query OK, 0 rows affected,更多视频教程www.fgedu.net.cn。

obclient> CREATE RESOURCE POOL fgedu_olap_pool
UNIT = ‘fgedu_olap_unit’,
UNIT_NUM = 1,
ZONE_LIST = (‘zone3’);
Query OK, 0 rows affected

obclient> CREATE TENANT fgedu_olap
PRIMARY_ZONE = ‘zone3’,
RESOURCE_POOL_LIST = (‘fgedu_olap_pool’)
SET ob_tcp_invited_nodes = ‘%’;
Query OK, 0 rows affected

3. 验证租户
obclient> SELECT * FROM oceanbase.__all_tenant;
+————-+————-+————-+——————+
| tenant_id | tenant_name | primary_zone| resource_pool_id |
+————-+————-+————-+——————+
| 1001 | fgedu_oltp | zone1 | 1001 |
| 1002 | fgedu_olap | zone3 | 1002 |
+————-+————-+————-+——————+

3.2 OceanBase副本隔离

# 副本隔离配置

1. 配置只读副本
obclient> ALTER SYSTEM SET enable_replica_read = TRUE;
Query OK, 0 rows affected

2. 配置弱一致性读
obclient> SET GLOBAL ob_read_consistency = ‘WEAK’;
Query OK, 0 rows affected

3. 指定只读Zone
obclient> ALTER TENANT fgedu_tenant
SET ob_read_only_zone = ‘zone3’;
Query OK, 0 rows affected,更多学习教程公众号风哥教程itpux_com。

4. 会话级设置
obclient> SET SESSION ob_read_consistency = ‘WEAK’;
Query OK, 0 rows affected

5. Hint方式
obclient> SELECT /*+ READ_CONSISTENCY(WEAK) */ *
FROM fgedu_order
WHERE create_time > ‘2024-01-01’;
+———-+———+————-+———————+
| order_id | user_id | amount | create_time |
+———-+———+————-+———————+
| 10001 | 5001 | 199.99 | 2024-01-15 10:30:00 |
| 10002 | 5002 | 299.99 | 2024-01-16 14:20:00 |
+———-+———+————-+———————+

3.3 OceanBase Cgroup配置

# Cgroup配置

1. 开启Cgroup
obclient> ALTER SYSTEM SET enable_cgroup = TRUE;
Query OK, 0 rows affected

2. 配置CPU限制
obclient> ALTER SYSTEM SET cgroup_cpu_percent = 80;
Query OK, 0 rows affected,from DB视频:www.itpux.com。

3. 租户级Cgroup配置
obclient> ALTER TENANT fgedu_oltp
SET cgroup_cpu_quota = 60;
Query OK, 0 rows affected

obclient> ALTER TENANT fgedu_olap
SET cgroup_cpu_quota = 40;
Query OK, 0 rows affected

4. 验证Cgroup
$ cat /sys/fs/cgroup/cpu/oceanbase/tenant_1001/cpu.cfs_quota_us
600000

$ cat /sys/fs/cgroup/cpu/oceanbase/tenant_1002/cpu.cfs_quota_us
400000

5. 监控Cgroup
obclient> SELECT * FROM oceanbase.__all_virtual_cgroup_stat;
+————-+————-+———-+———-+
| tenant_id | cgroup_path | cpu_usage| mem_usage|
+————-+————-+———-+———-+
| 1001 | tenant_1001 | 45% | 60% |
| 1002 | tenant_1002 | 70% | 80% |
+————-+————-+———-+———-+

风哥提示:Cgroup提供了内核级的资源隔离,是HTAP场景的重要保障手段。

Part04-生产案例与实战讲解

4.1 OceanBase银行HTAP案例

# 业务场景
– 核心交易系统(OLTP)
– 风控分析系统(OLAP)
– 实时报表需求

# 实施方案

1. 架构设计
– 3副本架构
– Zone1、Zone2:OLTP
– Zone3:OLAP只读

2. 资源配置
– 总资源:128核 512G内存
– OLTP:48核 192G
– OLAP:80核 320G

3. 路由策略
– 交易请求 -> Zone1/Zone2
– 风控查询 -> Zone3

4. 配置实施
obclient> ALTER SYSTEM SET enable_replica_read = TRUE;
obclient> ALTER SYSTEM SET ob_read_consistency = ‘WEAK’;
obclient> ALTER TENANT fgedu_bank SET ob_read_only_zone = ‘zone3’;

5. 效果验证
– OLTP延迟:< 5ms - OLAP查询:分钟级 - 资源争抢:无 - 业务影响:无

4.2 OceanBase零售HTAP案例

# 业务场景
– 订单交易系统
– 实时库存分析
– 销售报表统计

# 实施方案

1. 租户分离
– 交易租户:fgedu_trade
– 分析租户:fgedu_analytics

2. 数据同步
– OMS实时同步
– 延迟:< 1秒 - 一致性:最终一致 3. 资源配置 ┌─────────────────┬─────────────────────┐ │ 租户 │ 资源配置 │ ├─────────────────┼─────────────────────┤ │ fgedu_trade │ 32核 128G 500GB │ │ fgedu_analytics │ 64核 256G 1TB │ └─────────────────┴─────────────────────┘ 4. 查询分离 -- OLTP查询 obclient> SELECT * FROM fgedu_order WHERE order_id = 10001;

— OLAP查询
obclient> SELECT product_id, SUM(quantity)
FROM fgedu_order
GROUP BY product_id;

5. 效果验证
– 交易TPS:10000+
– 分析查询:秒级响应
– 数据延迟:< 1秒 - 系统稳定:99.99%

4.3 OceanBase物联网HTAP案例

# 业务场景
– 设备数据采集(高并发写入)
– 实时监控分析
– 历史数据查询

# 实施方案

1. 分区设计
– 按时间分区
– 按设备ID分片
– 自动分区管理

2. 写入优化
– 批量写入
– 并行写入
– 异步提交

3. 查询优化
– 预聚合
– 物化视图
– 索引优化

4. 配置示例
obclient> CREATE TABLE fgedu_device_data (
device_id VARCHAR(64),
metric_name VARCHAR(64),
metric_value DECIMAL(18,4),
collect_time TIMESTAMP,
PRIMARY KEY (device_id, collect_time)
) PARTITION BY RANGE (UNIX_TIMESTAMP(collect_time))
(
PARTITION p202401 VALUES LESS THAN (UNIX_TIMESTAMP(‘2024-02-01’)),
PARTITION p202402 VALUES LESS THAN (UNIX_TIMESTAMP(‘2024-03-01’)),
PARTITION p202403 VALUES LESS THAN (UNIX_TIMESTAMP(‘2024-04-01’))
);

5. 效果验证
– 写入:50万/秒
– 查询:秒级
– 存储:压缩比10:1
– 扩展:线性扩展

生产环境建议:HTAP场景需要根据业务特点选择合适的隔离策略,平衡性能和资源利用率。更多学习教程公众号风哥教程itpux_com

Part05-风哥经验总结与分享

5.1 OceanBase HTAP最佳实践

# HTAP最佳实践

1. 架构设计
– 优先使用读写分离
– 合理规划资源比例
– 预留扩展空间

2. 资源隔离
– 租户隔离:多业务场景
– 副本隔离:单一业务场景
– Cgroup:精细化控制

3. 数据同步
– 实时性要求高的用主副本
– 可接受延迟的用只读副本
– 跨租户用OMS同步

4. 监控重点
– 资源使用率
– 查询响应时间
– 数据延迟
– 错误率

5. 优化策略
– OLTP:索引优化、连接池
– OLAP:并行查询、预聚合
– 通用:SQL优化、参数调优

5.2 OceanBase监控调优

# 监控调优

1. 关键指标
obclient> SELECT
tenant_name,
round(active_sessions/active_session_limit*100,2) as session_pct,
round(cpu_time/total_time*100,2) as cpu_pct
FROM oceanbase.__all_virtual_tenant_stat;

2. 负载识别
obclient> SELECT
sql_id,
elapsed_time/1000000 as elapsed_sec,
execute_time/1000000 as exec_sec,
queue_time/1000000 as queue_sec
FROM oceanbase.__all_virtual_sql_audit
WHERE request_time > date_sub(now(), interval 1 hour)
ORDER BY elapsed_time DESC LIMIT 10;

3. 资源调整
— 动态调整租户资源
obclient> ALTER RESOURCE UNIT fgedu_oltp_unit
MAX_CPU = 24;
Query OK, 0 rows affected

4. 自动化脚本
#!/bin/bash
# htap_monitor.sh
# from:www.itpux.com.qq113257174.wx:itpux-com

# 检查OLTP延迟
OLTP_LATENCY=$(obclient -e “SELECT AVG(elapsed_time) FROM oceanbase.__all_virtual_sql_audit WHERE sql_type = 1” | tail -1)

if [ $OLTP_LATENCY –

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

联系我们

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

微信号:itpux-com

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