OceanBase性能相关

embedded/2024/11/13 5:17:24/
                          **OceanBase 关于SQL监控与执行计划记录**

记录来源:(OceanBase)DBA 从入门到实践
一、慢SQL与性能视图
慢SQL参数说明:

V3.2.3前
trace_log_slow_query_watermark 默认是 100ms。
V3.2.3及后续
trace_log_slow_query_watermark 默认是 1s。

慢SQL性能查看视图

GV$OB_SQL_AUDIT  所有集群的租户下的所有信息
V$OB_SQL_AUDIT   当前租户下的所有信息
需要查询当前问题SQL的情况下,需要关闭sql AUdit功能,防止问题SQL被淘汰,动态生效
alter system set enable_sql_audit=true;
alter system set enable_sql_audit=false;
set global ob_enable_sql_audit=OFF;
set global ob_enable_sql_audit=ON;
当前租户下的SQL audit占用租户的内存的3%
set global ob_sql_audit_percentage=3 
OB手动淘汰
alter system flush sql audit tenant=tenant_name;

慢SQL的统计语句

#慢sql统计
select 
tenant_id,request_id,usec_to_time(request_time),elapsed_time,
queue_time,execute_time,query_sql
from oceanbase.GV$OB_SQL_AUDIT
where tenant_id=租户id and elapsed_time > 100000
and request_time > time_to_usec('datetime')
order by elapsed_time desc limit 5;#查看租户资源最多的SQL,对标OCP中的TOPSQL查看
select SQL_ID,avg(ELAPSED_TIME),AVG(QUEUE_TIME),AVG(ROW_CACHE_HIT+BLOOM_FILTER_CACHE_HIT+BLOCK_CACHE_HIT+DISK_READS) AVG_LOGICAL_READ,
AVG(EXECUTE_TIME) AVG_EXEC_TIME,COUNT(*) CNT,AVG(EXECUTE_TIME-TOTAL_WAIT_TIME_MICRO) avg_cpu_time,
avg(TOTAL_WAIT_TIME_MICRO) avg_wait_time,wait_class,avg(retry_cnt),query_sql
from oceanbase.GV$OB_SQL_AUDIT
GROUP BY SQL_ID
ORDER BY avg_exec_time * cnt desc 
limit 10;#SQL监控视图 真实的执行计划记录GV$OB_PLAN_CACHE_PLAN_EXPLAN
select * from oceanbase.DBA_OB_DATABASES;
select last_trace_id();
#获取真实执行计划过程,获取IP,端口,执行计划ID,SQL
select tenant_id,svr_ip,svr_port,plan_id,query_sql
from oceanbase.gv$ob_sql_audit
where trace_id=''#根据上述获取的信息查询真实执行计划
select * from oceanbase.GV$OB_PLAN_CACHE_PLAN_EXPLAIN
WHERE tenant_id=租户id
and svr_ip=''
and svr_port=
and plan_id=;

执行计划查看方法

EXPLAIN  + DQL
explain select * from t1;
EXPLAIN NOADDR + DQL
注释:addr 输出的地址信息,一般需要OB的捏研发工程师查看,所以使用NOADDR进行打印执行计划

执行计划中的扩展信息记录

OUTPUT 表示查询输出的字段
filter 表示过滤条件,nil值表示null
rowset 表示一次批过滤量,降低资源使用的情况下,可以加快速度
access 表示访问的信息,包括索引,字段,分区等
partitions 表示使用的分区,也可以根据此信息知道是否发生了分区裁剪
is_index_back 确认是否发生了回表
is_global_index 确认是否使用了全局索引

优化信息(Optimization Info):OB官网未解释,但是OB的DBA入门到实践一书中有提及,如下。

table_rows  上一个合并版本SSTable中的表的行数,可以简单理解为t1表的行数。physical_range_rows  表需要扫描的物理行数,如果走了索引的话,含义为t1表在索引上需要扫描的物理行数。注意(delete 语句并不是真实的删除数据,只是标记为delete,该记录会增加扫描的物理扫描行数)logical_range_rows  表示需要扫描的逻辑行数(不包括delete标记的行,所以可能小于物理扫描行数)index_back_rows 回表的行数,如果是全表或者覆盖索引时,该值为0output_rows  预估输出行数,在上面的计划中,表示表在过滤后的行数。table_dop  表扫描的并行度(并行度)
dop_method  决定表扫描并行度的原因 。(创建表示指定表的并行度,AutoDOP优化器基于代价选择的并行度(参数 auto dop),global parallel(parallel hit或系统变量设置的并行度))。avaible_index_name  表可用的索引列表。pruned_index_name  当前的查询基于优化器的规则,任务不应该使用的索引列表。unstable_index_name  如果存在,表示被裁剪的主表路径。stats version  表统计信息版本号,如果为0,没有统计信息,表示需要搜集版本信息。dynamic sampling level 动态采样等级,如果值为0。没有使用动态采样。estimation method 表示行估计方式
(DEFAULT:表示使用默认统计信息
STORAGE:使用存储层实时估行
STATS:使用统计信息估行)Plan Type 计划类型:Local,Remote,DistributedNote  表示备注信息,比如(Degree of Parallelisim is 1 because of table property)表示当前表的并行度为1。

http://www.ppmy.cn/embedded/107129.html

相关文章

支付宝异地收款码之手机号(邮箱)跳转二维码

这个方法只需要支付宝的邮箱或者手机号就可以制作,简单方便,以下是步骤: 1、需要注册支付宝的手机号或者邮箱 2、构建转账请求,使用支付宝提供的API接口,如alipay.fund.trans.uni.transfer等构建转账请求 3、发送步…

MySQL数据类型-介绍

MySQL 支持多种数据类型,这些数据类型可以根据它们所存储的数据类型大致分为几类:数值类型、日期和时间类型、字符串(字符)类型、空间数据类型以及JSON数据类型。 一、数据类型 1.整数类型 TINYINT:非常小的整数。例…

[数据集][目标检测]石油泄漏检测数据集VOC+YOLO格式6633张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):6633 标注数量(xml文件个数):6633 标注数量(txt文件个数):6633 标注…

SQL典型练习题

with可以解决很多想用子表解决的问题 over可以加想加的,改变表的结构 例题: 表(driver)说明:司机登录登出明细表,由于同一司机有可能同时登录两个司机端,所以同一时间段一个司机有可能会产生两条或者更多条数据。 …

Docker端口映射

Docker端口映射 1.为什么需要端口映射 外部机器访问docker容器的应用,需要解决2个问题: 1) 外部机器能够成功连接docker容器 2) 外部机器能够访问docker容器的端口 2.实现端口映射 docker run … -p [宿主机服务端口:]容器服务端口 … 注意:"宿主…

Meta:大语言模型可以通过自我批判取得大幅提升!

夕小瑶科技说 原创 作者 | 谢年年 论文的审稿模式想必大家都不会陌生,一篇论文除了分配多个评审,最后还将由PC综合评估各位审稿人的reviews撰写meta-review。 最近,来自Meta的研究团队将这一模式引进到大模型的对齐训练中。模型同时扮演 执…

线程实现的几种方式

1、继承Thread类 import java.util.*;public class Test {/*** 打字员线程,每秒打出多少字*/class Typist extends Thread {Overridepublic void run() {int wordNum new Random().nextInt(5);for(int i1;i<5;i) {try {Thread.sleep(1000);} catch (InterruptedException …

编程学习方法——感悟分享

编程的确是一条充满挑战的道路&#xff0c;每个开发者都可能在这条路上遇到挫折。面对Bug的迷宫和复杂算法&#xff0c;以下是一些我用来克服困难的策略&#xff0c;希望能为你的编程之路提供帮助。 1. 分解问题 复杂的算法和Bug往往显得难以捉摸。将问题分解成小块&#xff…