zoukankan      html  css  js  c++  java
  • 记一次SQL优化的经历(数据库定时任务)

    问题描述:工作中遇到的一次问题,我们在一个展示页面数据加载太慢,原因是展示的数据是从视图中获取的,但是视图的结构比较复杂,使用了多表关联,数据是从多个表中获取的。最开始是去想办法优化视图以及视图中用到的表。但是由于结构复杂,优化过后还是慢,比如用一个order by查询时间上会超过上百秒,这样肯定是不行的。只能换种方法,于是决定用数据库的定时任务去定时的删除表数据,新增表数据,简单说就是更新数据。但是第一次接触,还是花费了些时间。

    代码如下:

    --创建表V_TEST,数据与结构和视图要一样
    
    CREATE TABLE V_TEST AS SELECT * FROM TEST; 
    
    --定义定时任务SCIENTIFIC_JOB,用于刷新数据
    
    declare TEST_JOB number;
    
    BEGIN   
    
      DBMS_JOB.SUBMIT(         
    
         JOB => TEST_JOB,  --任务名字       
    
         WHAT =>'DELETE FROM V_TEST;INSERT INTO V_TEST SELECT * FROM TEST;COMMIT;',  --需要执行的存储过程名称或SQL语句           
    
         NEXT_DATE => SYSDATE,  --初次执行时间-立即执行         
    
         INTERVAL => 'TRUNC(SYSDATE+1)+9/24'  --每天早上九点     
    
       );
    
      COMMIT;     
    
    end; 
    
    
    
    --注意!!! 这里要查出TEST_JOB的ID,会在下面用到。 查出LOG_USER为当前数据库用户的ID即为任务ID 
    
    select * from dba_jobs;
    
    
    
    --执行任务 1183是上面查出来的ID  需要自己替换
    
    begin       
    
      dbms_job.run(1183);
    
    end;  
    
    
    
    定时任务相关查询语句:
    
    --查看系统当前时间        因为是远程服务器,所以时间和本地会不一样
    
    select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') from dual;
    
    
    
    --查看所有的定时任务
    
    select * from dba_jobs; 
    
    
    
    -- 查看正在执行的调度任务
    
    select * from dba_jobs_running;
    
    
    
     --删除任务 1183是查询任务的ID
    
    begin   
    
      dbms_job.remove(1183); 
    
     end;   

    好久没有发博客了,最近有点忙。加油0.0

  • 相关阅读:
    MP4文件格式
    ASP.net 学习路线(详细)
    H.264开源解码器评测
    H264编码 封装成MP4格式 视频流 RTP封包
    MP4介绍与基本AVC编码(x264)教程
    创建一个简单的WCF程序
    VUE 从零开始 学习笔记 一
    关于阿里云短信接口的使用
    对Ul下的li标签执行点击事件——如何获取你所点击的标签
    二逼程序员与苦逼程序员
  • 原文地址:https://www.cnblogs.com/zou-zou/p/11447301.html
Copyright © 2011-2022 走看看