首页 > 其他分享 >last_load_time和last_active_time的选择

last_load_time和last_active_time的选择

时间:2023-06-19 12:32:38浏览次数:27  
标签:load last time SQL active LAST


我们平台在查找使用全表扫描执行计划的SQL时,发现有些应用跑过逻辑的SQL,确认用的全表扫,但是未能实时的检索到,于是,看下用的SQL,

SELECT s.sql_text, P.OBJECT_OWNER,
       P.SQL_ID,
       P.OPERATION,
       P.OPTIONS,
       S.LAST_LOAD_TIME,
       ROW_NUMBER() OVER(PARTITION BY P.SQL_ID ORDER BY P.SQL_ID) AS ROWNUMS
       FROM V$SQL_PLAN P, V$SQLAREA S
 WHERE S.SQL_ID = P.SQL_ID
   AND P.OPERATION = 'TABLE ACCESS'
   AND P.OPTIONS = 'FULL'
   AND S.LAST_LOAD_TIME >= trunc(SYSDATE-1)
 ORDER BY S.SQL_TEXT, P.SQL_ID

逻辑其实很简单,就是将v$sql_plan和v$sqlarea视图进行关联,根据operation和options找到TABLE ACCESS FULL关键字,并加上时间条件,但是为什么应用确认肯定跑过的逻辑,而且肯定是全表扫描的SQL,不能找到?

究其原因,就和这个时间条件相关。我们看到,SQL中过滤时间的字段是v$sqlarea中的last_load_time,指定了大于等于昨天的00:00:00,除了这个字段,其实有个last_active_time字段,和这个很像,两者有什么区别?

在v$sqlarea视图中,last_load_time和last_active_time,解释如下,

LAST_LOAD_TIME,DATE类型
Time at which the query plan was loaded into the library cache

执行计划载入library cache库缓存的时间

LAST_ACTIVE_TIME,DATE类型
Time at which the query plan was last active

SQL最新一次执行的时间

在v$sql视图中,last_load_time和last_active_time,解释如下,

LAST_LOAD_TIME,VARCHAR2(19)类型
Time at which the query plan was loaded into the library cache

执行计划载入library cache库缓存的时间,但是他是VARCHAR2(19)类型

LAST_ACTIVE_TIME,DATE类型
TIme at which the query plan was last active

SQL最新一次执行的时间

执行新的SQL,这个SQL不在共享池中,这时会进行硬解析,v$sql中的last_active_time和last_load_time是硬解析的时间。

执行共享池内已经存在的SQL,会进行软解析,last_active_time是软解析的时间,也是SQL最新执行的时间,last_load_time的值不变。

因此,如果我的需求是找出前一天应用跑过的逻辑中使用全表扫描执行计划的SQL,从准确性讲,应该用的是last_active_time,不是last_load_time,因为很可能由于缓存了执行计划,last_load_time的值一直未变,此时last_active_time才会更可能满足到我们最初的需求。


标签:load,last,time,SQL,active,LAST
From: https://blog.51cto.com/u_13950417/6512403

相关文章

  • jsp WebUploader 分块上传
    ​ 前言文件上传是一个老生常谈的话题了,在文件相对比较小的情况下,可以直接把文件转化为字节流上传到服务器,但在文件比较大的情况下,用普通的方式进行上传,这可不是一个好的办法,毕竟很少有人会忍受,当文件上传到一半中断后,继续上传却只能重头开始上传,这种让人不爽的体验。那有没有......
  • ClassLoader类加载器(三):PathClassLoader,DexClassLoader与BootClassLoade
    DexClassLoader和PathClassLoader区别在targetSdk26,是不一样,optimizedDirectory用于声明dex2oat后oat存放的目录。在targetSdk28,是完全一样,optimizedDirectory根本没有用到,注释写得很清楚了。大量的博客文章表示,DexClassLoader能加载jar,aar,未安装的apk,PathClassLoader只......
  • 使用loadrunner11开展爆破测试
    备注:阅读本文需要一定的loadrunner11操作基础和代码编写基础,请各位预知。 本次爆破目标为pikachu靶场,访问地址:http://192.168.0.108/pikachu/我们本次测试默认的弱口令admin123456 1)使用函数声明变量msg,其中LB和RB是通过页面解析出来的左右边界,如果访问成功,LB和RB之间的......
  • std::thread 二:互斥量(带超时的互斥量 timed_mutex())
     timed_mutex、 try_lock_for、 try_lock_until #include<iostream>#include<thread>#include<mutex>#include<list>usingnamespacestd;classA{public:voidinNum(){for(inti=0;i<10000;i++)......
  • nrf52832学习-app_timer模块
    简单使用:app_timer是模块,使用时需要在sdk_config.h文件中将其使能添加头文件app_timer.h定义Timer定时器唯一识别号_my_timer_id和需要的定时时间常量MY_TIMER_INTERVALAPP_TIMER_DEF(_my_timer_id);#defineMY_TIMER_INTERVALAPP_TIMER_TICKS(_milliseconds)......
  • 前端Vue加载中页面动画弹跳动画loading
    前端Vue加载中页面动画弹跳动画loading,下载完整代码请访问uni-app插件市场址:https://ext.dcloud.net.cn/plugin?id=13091效果图如下:使用方法<!--ref:唯一ref top:距离中间顶部距离--><cc-loadingref="mixLoad":top="0"></cc-loading>//隐藏动画this.$refs.mix......
  • GetModuleHandle("qq.dll");hDll_debug2=LoadLibrary("..\\qq\\Debug\\qq.dll")
    //qq.cpp:DefinestheentrypointfortheDLLapplication.//#include"stdafx.h"#include<stdio.h>BOOLAPIENTRYDllMain(HANDLEhModule,DWORDul_reason_for_call,LPVOIDlpReserved ......
  • 下载-elasticsearch
    下载地址:https://www.elastic.co/cn/downloads/past-releases#elasticsearchELK的主版本号需要统一:ElasticSearch-5.2+Logstash-5.2+Kibana-5.2安装说明  1.在安装Elasticsearch之前,需安装并配置好JDK,设置好环境变量 $JAVA_HOMEElasticsearch5需要Java8......
  • updateTimelineShareData,onMenuShareTimeline不显示分享图片和标题,不要从网址直接打开
    updateTimelineShareData,onMenuShareTimeline不显示分享图片和标题,不要从网址直接打开,要从公众号菜单里进去再分享。原文地址:http://www.xiaoyebailong.com/index.php/2022/01/04/68981.htm这个是官方分享接口地址https://developers.weixin.qq.com/doc/offiaccount/OA_Web_App......
  • 【ElasticSearch】索引(添加)
    【ElasticSearch】索引(添加)RESTAPIPUT/myindex{"settings":{"index":{"number_of_shards":3,"number_of_replicas":3}},"mappings":{"properties":{"......