【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】OB
【 使用版本 】V4
【问题描述】在生产环境中,某些高频执行的SQL(可能是查询或写入)会瞬时消耗大量CPU或内存资源,尤其在业务高峰或资源不足时,可能导致整个集群服务受影响。
1 个赞
可以通过ocp的sql诊断去定位处理
1 个赞
系统快照表吗
1 个赞
ocp的sql诊断查看top sql
或者黑屏化查询gv$ob_porcesslist 查找当前处于 ACTIVE 状态的长时间运行的 SQL
SELECT
USER,
tenant,
sql_id,
concat(time, 's') as time,
info,
svr_ip,
svr_port,
trace_id
FROM GV$OB_PROCESSLIST
WHERE STATE = 'ACTIVE'
ORDER BY time DESC
LIMIT 1;
2 个赞
解决方案:
使用OceanBase的Outline功能,对特定的高频SQL实施并发控制。
sql
– 1. 在OCP的SQL诊断或TopSQL页面找到高频率的SQL文本及其SQL_ID:cite[3]:cite[8]
– 2. 通过SQL_ID为该SQL创建Outline,限制其并发度
CREATE OUTLINE outline_limiter ON “ED570339F2C856BA96008A29EDF04C74”
USING HINT /+max_concurrent(1)/;
说明:
“ED570339F2C856BA96008A29EDF04C74” 需要替换为实际的SQL_ID。SQL_ID需要用双引号包围。
/+max_concurrent(1)/ 是一个Hint,表示在单台OBServer节点上,此SQL同时执行的并发数被限制为1。
执行后,该SQL的并发执行会受到限制,从而为集群“刹车”,避免资源被耗尽。你可以根据业务需要调整并发数值。
2 个赞
多谢分享~
1 个赞
666
1 个赞
多谢分享~
1 个赞
