基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
限制 OceanBase 集群的流量
更新时间:2026-09-03 16:35:53
本节介绍如何限制 OceanBase 集群的流量。OceanBase 集群的业务流量主要由租户需执行的 SQL 引起,限制 SQL 执行的快慢即可限制 OceanBase 集群的流量。
背景说明
OceanBase 集群的业务流量主要由租户需执行的 SQL 引起,SQL 的处理速度过快会导致如下问题:
活跃内存来不及被转储。
写类型的 SQL 处理过快会导致内存短期压力过大。
通过限制 SQL 的并发执行量可降低 SQL 处理速度,从而达到为 OceanBase 集群限流的目的,在资源不足或业务流量大的时候避免上述问题的出现。
操作步骤
找到该 OceanBase 集群执行频率高的 SQL。
登录 OCP。
在 租户 界面的 租户列表 中找到该集群的租户,并单击租户名。
系统默认进入 总览 页。
选择 SQL 诊断 ,随后选择 TopSQL 页签。
根据业务情况自定义时间后,找到执行次数多的 SQL 文本,并记录这些文本和 SQL 文本的 ID。
说明
记录下来的文本将会被限制执行并发数,具体需要限制的高执行频率的 SQL 文本,需根据业务自行判断。比如以下场景:
- 若业务写比查询更重要,则建议限制高频查询的 SQL 并发数。
- 若写导致内存压力大,则建议限制高频写的 SQL 并发数。
为这些 SQL 增加并发执行限制的 Hint。
登录到该 SQL 执行的数据库。
为这些 SQL 文本增加 HINT 索引
/*+max_concurrent(1)*/, 该索引将限制这个 SQL 文本的并发数为 1,从而限制该 SQL 的执行速度。可参考 计划绑定 或下述语句进行限流。#otl_idx 为索引名,需自定义;SQLID 为 SQL 文本的 ID。 CREATE OUTLINE otl_idx_c2 ON "SQLID" USING HINT /*+max_concurrent(1)*/ ; #举例如下: create outline otl_name on "ED570339F2C856BA96008A29EDF04C74" using hint /*+max_concurrent(1)*/ ;通过如上语句,ID 为 "ED570339F2C856BA96008A29EDF04C74" 的 SQL 文本在单台 OBServer 节点上的执行并发数则被限制为 1。
逐个将步骤 1 中记录的 SQL 文本都按照 2.a ~ 2.b 的方法加上并发数的限制。