暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

分布式数据库学习Note100:OceanBase社区版中,计划缓存视图是什么?

计划缓存视图包含记录执行计划的缓存状态、执行统计的相关信息以及计划信息。

GV$OB_PLAN_CACHE_STAT

GV$OB_PLAN_CACHE_STAT 视图用于记录每个计划缓存的状态,每个计划缓存在该视图中有一条记录。

字段名称类型描述
TENANT_IDBIGNIT(20)租户 ID
SVR_IPVARCHAR2(46)服务器的 IP 地址
SVR_PORTBIGNIT(20)端口号
SQL_NUMBIGNIT(20)plan_cache 涉及 SQL 条数
MEM_USEDBIGNIT(20)plan_cache 已经使用的内存
MEM_HOLDBIGNIT(20)plan_cache 持有的内存
ACCESS_COUNTBIGNIT(20)访问 plan_cache 的次数
HIT_COUNTBIGNIT(20)命中 plan_cache 的次数
HIT_RATEBIGNIT(20)plan_cache 的命中率
PLAN_NUMBIGNIT(20)Plan 的个数
MEM_LIMITBIGNIT(20)plan_cache 的内存上限
HASH_BUCKETBIGNIT(20)plan_cache Hash Map 中的 Bucket 的个数
STMTKEY_NUMBIGNIT(20)plan_cache 中 stmt_key 的个数

GV$OB_PLAN_CACHE_PLAN_STAT

GV$OB_PLAN_CACHE_PLAN_STAT 用于记录计划缓存中所有执行计划的具体信息及每个计划总的执行统计信息,每个执行计划在该视图中有一条记录。

字段名称类型描述
TENANT_IDBIGNIT(20)租户 ID
SVR_IPVARCHAR2(46)服务器的 IP 地址
SVR_PORTBIGNIT(20)服务器端口号
PLAN_IDBIGNIT(20)执行计划的 ID
SQL_IDVARCHAR2(32)该条 SQL 的 ID
TYPEBIGNIT(20)对于 SQL 计划的缓存,该字段表示执行计划的类型:
  • 1 表示本地计划(Local Plan)
  • 2 表示远程计划(Remote Plan)
  • 3 表示分配计划(Distribute Plan)
对于 PL 对象缓存,该字段表示 PL 对象的类型:
  • 1:表示程序
  • 2:表示函数
  • 3:表示包
  • 4:表示匿名块
DB_IDBIGNIT(20) UNSIGNED数据库的 ID
IS_BIND_SENSITIVEBIGNIT(20)该计划是否需要打开 ACS
IS_BIND_AWAREBIGNIT(20)该计划已经打开了 ACS
STATEMENTLONGTEXT参数化后的 SQL 语句
QUERY_SQLLONGTEXT第一次加载计划时查询的原始 SQL 语句
SPECIAL_PARAMSVARCHAR2(4096)表示不可参数化的参数值
PARAM_INFOSLONGTEXT表示参数化信息
SYS_VARSVARCHAR2(4096)影响缓存对象的系统变量的值
CONFIGSvarchar(4096)
PLAN_HASHBIGNIT(20) UNSIGNEDSQL 执行计划的哈希值
FIRST_LOAD_TIMETIMESTAMP(6)第一次被加载时间
SCHEMA_VERSIONBIGNIT(20)Schema 版本号
LAST_ACTIVE_TIMETIMESTAMP(6)上一次被执行时间
AVG_EXE_USECBIGNIT(20)平均执行时间
SLOWEST_EXE_TIMETIMESTAMP(6)最慢执行时间戳
SLOWEST_EXE_USECBIGNIT(20)最慢一次执行耗时
SLOW_COUNTBIGNIT(20)当前 SQL 计划成为慢查询的次数
HIT_COUNTBIGNIT(20)被命中次数
PLAN_SIZEBIGNIT(20)缓存对象占用的内存大小
EXECUTIONSBIGNIT(20)执行次数
DISK_READSBIGNIT(20)所有执行物理读次数
DIRECT_WRITESBIGNIT(20)所有执行写盘的次数
BUFFERS_GETSBIGNIT(20)所有执行逻辑读次数
APPLICATION_WATI_TIMEBIGNIT(20) UNSIGNED所有执行所有 Application 类事件的总时间
CONCURRENCY_WAIT_TIMEBIGNIT(20) UNSIGNED所有执行所有 Concurrency 类事件的总时间
USER_IO_WAIT_TIMEBIGNIT(20) UNSIGNED所有执行所有 USER_IO 类事件的总时间
ROWS_PROCESSEDBIGNIT(20)所有执行选择的结果行数或执行更改表中的行数
ELAPSED_TIMEBIGNIT(20) UNSIGNED所有执行接收到请求到执行结束消耗时间
CPU_TIMEBIGNIT(20) UNSIGNED所有执行消耗的 CPU 时间
LARGE_QUERYSBIGNIT(20)被判断为大查询的次数
DELAYED_LARGE_QUERYSBIGNIT(20)被判断为大查询且被丢入大查询队列的次数
DELAYED_PX_QUERYSBIGNIT(20)并行查询被丢回队列重试的次数
OUTLINE_VERSIONBIGNIT(20)Outline 版本号
OUTLINE_IDBIGNIT(20)Outline 的 ID。 如果为 -1 表示不是通过绑定 Outline 生成的计划
OUTLINE_DATALONGTEXT计划对应的 Outline 信息
HINTS_INFOLONGTEXTSQL 计划的 Hint 信息
HINTS_ALL_WORKEDTINYINT(4)SQL 计划中的 Hint 是否都已经生效
ACS_SEL_INFOLONGTEXT当前 ACS 计划对应的选择率空间
TABLE_SCANTINYINT(4)表示该查询是否为主键扫描
EVOLUTIONTINYINT(4)表示该执行计划是否在演进中
EVO_EXECUTIONSBIGNIT(20) UNSIGNED演进次数
EVO_CPU_TIMEBIGNIT(20)演进过程中总的执行 CPU 时间
TIMEOUT_COUNTBIGNIT(20)超时次数
PS_STMT_IDBIGNIT(20)Prepare Statement 的 ID
SESSIDBIGNIT(20) UNSIGNED缓存对象所在的 Session ID
TEMP_TABLESLONGTEXTSQL 计划中包含的临时表表名。如果没有临时表,字段为空。
IS_USE_JITTINYINT(4)SQL 计划是否开启了表达式编译执行
OBJECT_TYPELONGTEXT缓存对象的类型:
  • SQL_PLAN
  • PROCEDURE
  • FUNCTION
  • PACKAGE
  • ANONYMOUS
PL_SCHEMA_IDBIGNIT(20) UNSIGNED对于非匿名块的 PL 对象,字段为缓存对象的 Schema ID;对于匿名块,字段与 PS_STMT_ID 相同;对于 SQL 计划,该字段无意义。
IS_BATCHED_MULTI_STMTTINYINT(4)表示是否为 Batched Multi Stmt 优化的计划

GV$OB_PLAN_CACHE_PLAN_EXPLAIN

GV$OB_PLAN_CACHE_PLAN_EXPLAIN 用于查询某条 SQL 在计划缓存中的执行计划。

注意

  • 如果查询 GV$OB_PLAN_CACHE_PLAN_EXPLAIN 表, 则需要指定 IPPortTENANT_IDPLAN_ID 等条件。
  • 如果查询 GV$OB_PLAN_CACHE_PLAN_EXPLAIN 表, 则需要指定 TENANT_IDPLAN_ID 等条件。
字段名称类型(MySQL 模式)描述
TENANT_IDBIGNIT(20)租户 ID
SVR_IPVARCHAR2(46)服务器 IP 地址
SVR_PORTBIGNIT(20)服务器端口号
PLAN_IDBIGNIT(20)执行计划的 ID
PLAN_DEPTHBIGNIT(20)Operator 在展示时的深度
PLAN_LINE_IDBIGNIT(20)Operator 的编号
OPERATORVARCHAR2(128)算子的名称
NAMEVARCHAR2(256)表的名称
ROWSBIGNIT(20)预估的结果行数
COSTBIGNIT(20)预估的代价
PROPERTYVARCHAR2(4096)对应算子的信息
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论