当前位置: 首页 > news >正文

SQL优化 | 精准区分 trace_id、sql_id、plan_id(二)

1、问题背景

在SQL优化过程中,经常遇到trace_idsql_idplan_id 这三个字段,笔者总是傻傻的分不清他们的区别;

下面我将着重介绍这三个ID值的区别,以及他们分别如何获取?

2、三种ID的区别

2.1 trace_id

trace_id是OceanBase数据库内部的SQL级别的ID;

默认值为Y0-0000000000000000-0-0

它用于标识一条SQL的执行过程,是排查问题的重要环节。

当应用使用allowmultiqueries=true并将多条SQL拼接在一起发送到OceanBase数据库时,这些SQL会使用相同的trace_id

注意:一个trace_id可能对应多条SQL语句。

绑定执行计划可参考OB 运维 | 如何有效使用 outline 功能?

2.2 sql_id(具体参数后的SQL语句)

sql_id用于唯一确定一条具体的SQL,是对特定SQL语句经过一系列转换得到的MD5值,返回128位的哈希值,类型为CHAR(32)。

它用于标识一条具体的SQL,同一条SQL的多次执行可能会有相同的SQL_ID和不同的REQUEST_ID

注意:绑定执行计划可通过sql_id 来实现绑定,当SQL实现参数化,可通过sql_id 绑定这一类SQL的执行计划。

2.3 plan_id

用于在单个 OBServer 上唯一确定 plan_cache 中的一个 plan,是一个递增的值,由 plan_cache 模块进行管理。OBServer 重启后,plan_id 会重置。

plan_idtenant_id 一起决定一个执行计划 。

2.4 三种ID值示例

-- # 4.x使用GV$OB_SQL_AUDIT
MySQL [(none)]> select trace_id,sql_id,plan_id from oceanbase
http://www.dtcms.com/a/94040.html

相关文章:

  • HarmonyOS-ArkUI Navigation (导航组件)-第一部分
  • 【网络丢包】原因排查及优化
  • PTA 7-16 一元多项式求导
  • leetcode1248. 统计「优美子数组」
  • JavaScript获取元素及事件5种方法
  • 软考《信息系统运行管理员》- 5.5 信息系统数据资源的开发与利用
  • CLion配置问题解决
  • UML事务、关系、UML图(高软54)
  • 批量将多个 XPS 文档转换为 PDF 格式
  • AI PPT哪家强?2025年4款高效工具深度测评
  • android-enableJetifier作用
  • Manus智能体具体是指什么
  • 【前端】【面试】前端 Diff 相关考题及答案
  • Unity 编辑器中动画分割/创建动画剪辑
  • 分布式队列(java)
  • UML 图六种箭头含义详解:泛化、实现、依赖、关联、聚合、组合
  • 【力扣hot100题】(005)三数之和
  • CrossNorm与SelfNorm的具体实现
  • 【Python】编程50个经典操作
  • 向量数据库的适用场景与局限性分析
  • R²AIN SUITE 助力医药企业服务管理数智化转型
  • jmeter 镜像构建
  • PostgreSQL: GIN 索引详解
  • 详解c++中的可调用对象,std::function、Lambda表达式、std::bind等
  • AQUA爱克泳池设备从水质安全到舒适体验,全链路护航小区泳池健康
  • npm install 卡在创建项目:sill idealTree buildDeps
  • 使用react 引入相对路径文件
  • Golang Beego SQL链式查询(包含Join关联)
  • Git 之配置ssh
  • Python与面向对象编程的七大核心概念:解析与示例