首页 > 数据库 >OceanBase获取执行效率下降SQL

OceanBase获取执行效率下降SQL

时间:2024-07-02 10:58:15浏览次数:16  
标签:-% OceanBase SQL ob 获取 time ## id

  移动现场有一个原厂写的通过gv$plan_cache_plan_stat视图来查询执行计划突变的SQL,通过比较gv$plan_cache_plan_stat视图记录的不同执行计划来判断是否执行计划发生突变而导致的执行计划变差,但是在gv$plan_cache_plan_stat视图中只有一个执行计划的时候,且这个执行计划的效率低下,无法对执行计划进行flush刷新,为了解决这个问题,可以通过ocp中的ocp_monitor数据库中的相关视图来判断进行的TOPSQL较昨天是否出现性能回退,如果出现可以记录并flush,这里仅贴出如何找到执行计划较昨天性能出现回退的脚本

## Copyright (c) 2013-2024
## Author: [email protected]     
## Version:      V1.0
## History:
## date:   20240619 
## 针对获取执行计划相较昨天变差SQL,并记录
##################################################################################################
#!/bin/bash
set +x
#DIR_HOME=$(cd "$(dirname "$0")"; pwd)

#LogDaily=$DIR_HOME/worse_sql_`hostname`.log

while [ 1 ]
do
  DATE=`date +%Y%m%d`
  LogDaily=/home/shsnc/monitor/log/wrose_sql_`hostname`_$DATE.log
  TIME1=`date +"%Y-%m-%d %H:%M:%S"`
  TIME2=`date -d "-1800 second" +"%Y-%m-%d %H:%M:%S"`
  TIME3=`date -d "-90000 second" +"%Y-%m-%d %H:%M:%S"`
  TIME4=`date -d "-82800 second" +"%Y-%m-%d %H:%M:%S"`
  echo "$TIME1 $TIME2 $TIME3 $TIME4"
  echo "#### $TIME1  数据库最近30分钟SQL执行计划相较昨天变差SQL信息####">> $LogDaily
mysql -hxxxx -P3306 -uroot@ocp_monitor#obcluster -pH@I8%Yl+FA -Docp_monitor -A -c -t<<!|tee -a $LogDaily
  select * from (select /*+parallel(32)*/
         a.sql_id,sum(a.executions) execs,
         round(sum(a.elapsed_time / 1000), 2) "total",(select avg_exe_usec from (select sql_id, plan_id, avg(avg_exe_usec / 1000) avg_exe_usec
          from ob_hist_plan_cache_plan_stat_0
         where collect_time > time_to_usec('$TIME3')
           and collect_time < time_to_usec('$TIME4')
           and ob_tenant_id = xxx
           and ob_cluster_id = 1632654686 and sql_id=a.sql_id
         group by 1, 2
         order by 3 desc limit 1)) last_avg_elapsed,
         round(sum(a.elapsed_time) / sum(a.executions) / 1000, 2) today_avg_elapsed
          from ob_hist_sql_audit_stat_0 a
         where a.ob_cluster_id = 1632654686
           and a.begin_interval_time > time_to_usec('$TIME2')
           and a.begin_interval_time < time_to_usec('$TIME1')
           and a.ob_tenant_id = xxx
           and a.cluster_name = 'oxxx'
           and ob_server_id in (3, 4) and retry_cnt=0
         group by a.sql_id
         order by 3 desc limit 100) where   today_avg_elapsed-last_avg_elapsed>500 and last_avg_elapsed<1000; 
!
  echo
  sleep 120
done

 

标签:-%,OceanBase,SQL,ob,获取,time,##,id
From: https://www.cnblogs.com/hanglinux/p/18279477

相关文章

  • PHP8.0正常,PHP7.2,PHP7.3报错Connection failed: SQLSTATE[HY000] [2054] The server
    构建网站API接口的时候,使用了PDO进行数据库连接,原文如下 测试后发现,PHP8.0版本下,可以正常输出,但是PHP7.2和7.3则会报错:Connectionfailed:SQLSTATE[HY000][2054]Theserverrequestedauthenticationmethodunknowntotheclient经查验,发现因为所用的PHP7.2和7.3版本不支......
  • 2.FineReport连接MySQL数据库
    1.服务器–定义数据连接2.添加JDBC3.配置连接4.添加数据库查询5.添加查询语句并预览结果......
  • MySQL之应用层优化(二)
    应用层优化Web服务器问题寻找最优并发度每个Web服务器都有一个最佳并发度——就是说,让进程处理请求尽可能快,并且不超过系统负载的最优的并发连接数。这就是前面说的最大系统容量。进行一个简单的测量和建模,或者只是反复试验,就可以找到这个"神奇的数",为此花一些时间是值得......
  • 【转】【SQL】 实现左单一匹配
    原文地址:https://blog.csdn.net/weixin_46156257/article/details/131234451SQL的表连接中,如果主表中同一条数据对应被连接表有多条数据,则连接后数据会被扩大,但有时候我们希望数据不要被扩大,与主表中数据条数保持一致,即实现左单一匹配连接。假设我们有学生信息表TEST_TAB_STUDEN......
  • 基于web的酒店客房管理系统 毕业设计 springboot+Vue+mysql
    介绍我开发了一个基于Web的酒店客房管理系统,旨在通过现代化的管理工具提升酒店客房管理的效率和用户体验。该系统分为管理员角色和用户角色,管理员负责管理用户、客房信息、预约、入住、退房等内容,用户则可以查询客房信息、进行预约、管理入住和退房等操作。系统通过丰富的功能......
  • Python毕业设计-基于Python实现的深圳链家租房可视化系统源码+文档说明+条形图+数据库
    文章目录源码下载地址项目介绍项目功能界面预览项目备注源码下载地址源码下载地址点击这里下载代码项目介绍项目历经数据采集->数据展示->数据分析->数据预测lianjia_1:scrapy爬虫项目lianjia_show:flask对采集的数据进行展示链家房价预测:采集的数据进行分析......
  • mysql基础语句实列
    --增insertintobooks(book_name)VALUES('盗墓笔记')insertintochapters(chapter_name,book_id)VALUES('盗墓笔记第三章',1)--查selectidfrombooksselect*fromchaptersselectid,chapter_namefromchapters--两表联查selectbooks.id,book_name,cha......
  • 突破SQL基本面试问题(0)
    写作原因:在当今数据驱动的商业环境中,SQL作为数据分析师的核心工具,其重要性日益凸显。它不仅是查询和操作数据库的语言,更是连接数据与洞察力的桥梁。随着大数据技术的飞速发展,众多顶级企业,包括华为等大厂,已经将SQL基础能力的考察纳入到面试流程中,作为评估候选人是否具备高效......
  • mysql数据库基本语句
    –查看所有数据库。showdatabases;–切换到指定数据库。usemysql;-查看数据库下所有表showtables;–其常用他命令。查看当前用户:selectuser();当前日期时间selectnow();查看数据库状态:\s;退出数据库:\q;基本操作:创建库、创建表、删除库、删除表、修改库、修改表......
  • 一款利用人工智能将自然语言查询转换为 SQL 代码的互译工具 - SQL Translator
    https://www.sqltranslate.app/ 一款利用人工智能将自然语言查询转换为SQL代码的互译工具-SQLTranslator 思维导航前言SQLTranslator介绍工具特性本地项目部署在线效果演示程序员常用的工具软件前言对于后端程序员来说,编写SQL代码是日常工作中不可或缺......