【OceanBase 诊断调优】—— 止血良方「SQL 限流」

ops/2024/11/17 20:32:35/

1. 知识点

1. 对于Oceanbase,限流的意思是限制其在单台主机上处理的并发度,因此假设对某SQL限流的并发度为1,该集群有N台机器可以执行该SQL,则实际并发度是N。

2. OceanBase 是通过在 SQL 上绑定 Outline 的方式来实现的,有一个 /*+max_concurrent(1)*/ 的 hint 。比如说你给它设置成一的时候,那在租户级别,这个 SQL 只能开一个线程跑,它的并发度只能是一。比如说这个 SQL 它的 rt 是一百毫秒的话,那它的 qps 最多只能到十。如果你想把这个 SQL 给限死的话,那你直接把并发度都改成零就可以了。

2. 集群业务限流

OceanBase 集群的业务流量主要由租户需执行的 SQL 引起,SQL 的处理速度过快会导致如下问题:

  • 活跃内存来不及被转储。

  • 写类型的 SQL 处理过快会导致内存短期压力过大。

通过限制 SQL 的并发执行量可降低 SQL 处理速度,从而达到为 OceanBase 集群限流的目的,在资源不足或业务流量大的时候避免上述问题的出现。

操作步骤

  1. 找到该 OceanBase 集群执行频率高的 SQL。

    1. 登录 OCP。

    2. 在 租户 界面的 租户列表 中找到该集群的租户,并单击租户名。

      系统默认进入 总览 页。

    3. 选择 SQL 诊断 ,随后选择 TopSQL 页签。

    4. 根据业务情况自定义时间后,找到执行次数多的 SQL 文本,并记录这些文本和 SQL 文本的 ID。

    说明

    记录下来的文本将会被限制执行并发数,具体需要限制的高执行频率的 SQL 文本,需根据业务自行判断。比如以下场景:

    • 若业务写比查询更重要,则建议限制高频查询的 SQL 并发数。
    • 若写导致内存压力大,则建议限制高频写的 SQL 并发数。
  2. 为这些 SQL 增加并发执行限制的 Hint。

    1. 登录到该 SQL 执行的数据库。

    2. 为这些 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。

    3. 逐个将步骤 1 中记录的 SQL 文本都按照 2.1 ~ 2.2 的方法加上并发数的限制。


http://www.ppmy.cn/ops/134523.html

相关文章

Qt桌面应用开发 第四天(对话框 界面布局)

目录 1.对话框 1.1模拟对话框 1.2非模拟对话框 1.3消息对话框 1.3.1询问对话框 1.3.2严重错误对话框 1.3.3信息提示对话框 1.3.4警告对话框 1.4其他对话框 1.4.1颜色对话框 1.4.2文件对话框 1.4.3字体对话框 1.5界面布局 1.对话框 1.1模拟对话框 会阻塞同一应用…

UML概述、类图关系及连接线表示

一、什么是 UML 以下是官方的描述: UML(Unified Modeling Language)即统一建模语言,它是一种用于可视化、详述、构造和文档化软件密集系统的语言。UML 并不是一种编程语言,而是一种可视化的建模语言,主要用…

浅谈“通感一体”

文章目录 5G_Advanced的关键技术通感一体的介绍通感一体应用通感一体面临的挑战 5G_Advanced的关键技术 2024年6月18日16点30分,在上海举行的3GPP RAN第104次会议上,R18标准正式冻结,标志着5G技术的又一重要里程碑。值得注意的是&#xff0c…

spark性能优化调优指导性文件

1.让我们看一下前面的核心参数设置: num-executors10||20,executor-cores1||2,executor-memory10||20,driver-memory20,spark.default.parallelism64 假设我们的火花队列资源如下: 内存1T,内…

git配置用户信息

在 Git 中配置用户信息,主要是设置你的用户名和电子邮件地址,这些信息会被 Git 用来记录提交的作者信息。以下是配置用户信息的步骤: 打开命令行工具。 设置你的用户名: git config --global user.name "你的名字"例如…

npm list -g --depth=0(用来列出全局安装的所有 npm 软件包而不显示它们的依赖项)

您提供的命令 npm list -g --depth0 是在 Node Package Manager (npm) 的上下文中使用的,用来列出全局安装的所有 npm 软件包而不显示它们的依赖项。 这是它的运作方式: npm list -g --depth0-g: 指定列表应包括全局安装的软件包。--depth0: 限制树形结…

【智能化仪表设计】化工仪表及自动化全套课件

目录 第二章 压力测量仪表 第一节: 压力单位 第三章 流量测量仪表 第四节:涡街流量计 第五节:电磁流量计 第四章 物位测量仪表 第三节:电容式物位传感器 第四节:声波式物位仪表 三、预处理系统的设计原则和…

探索MoviePy:Python视频编辑的瑞士军刀

文章目录 🎬 探索MoviePy:Python视频编辑的瑞士军刀第一部分:背景介绍第二部分:MoviePy是什么?第三部分:如何安装MoviePy?第四部分:MoviePy的基本函数使用方法1. 视频剪辑2. 视频拼接…