Oracle 11g 的PL/SQL函数结果缓存

Oracle 11g 的PL/SQL函数结果缓存

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

    模拟Oracle性能诊断艺术做了两个试验样品。书上说的不承担RELIES_ON。果缓存的失效操作(result_cache RELIES_ON(test1,test2))。试验证明不正确,函数f1()并没有使用RELIES_ON,但表上的变化影响到了函数。

C:\Documents and Settings\guogang>sqlplus gg_test/gg_test@10.10.15.25_gg

SQL*Plus: Release 10.2.0.1.0 – Production on 星期一 8月 4 19:46:44 2014
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 – 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> select * from v$version;
BANNER
——————————————————————————–
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 – 64bit Production
PL/SQL Release 11.2.0.1.0 – Production
CORE    11.2.0.1.0      Production
TNS for Linux: Version 11.2.0.1.0 – Production
NLSRTL Version 11.2.0.1.0 – Production

SQL> drop table test1 purge;
SQL> drop table test2 purge;
SQL> create table test1 as select * from dba_objects;
SQL> create table test2 as select * from all_objects;
SQL> select count(*) from test1;
  COUNT(*)
———-
     74144
SQL> select count(*) from test2;
  COUNT(*)
———-
     73248

SQL> create or replace function f1
   return number
   is
     l_ret number;
   begin
     select count(*) into l_ret
      from test1,test2
    where test1.object_type = test2.object_type
    and test1.object_type in (‘TABLE SUBPARTITION’,’VIEW’,’INDEX’,’TABLE’);
     return l_ret;
   end;
   /
函数已创建。

SQL> set timing on
SQL> select f1() from dual;
      F1()
———-
  60681409

已用时间:  00: 00: 07.29

–禁用结果缓存

SQL> execute dbms_result_cache.Bypass(bypass_mode=>true,session=>true);
SQL> select f1() from dual;
      F1()
———-
  60681409

已用时间:  00: 00: 03.60

–启用结果缓存

SQL> execute dbms_result_cache.Bypass(bypass_mode=>false,session=>true);
SQL> select f1() from dual;
      F1()
———-
  60681409
已用时间:  00: 00: 00.00

SQL> delete from test1 where object_type = ‘VIEW’ and rownum <100;
SQL> delete from test2 where object_type = ‘VIEW’ and rownum <100;
SQL> commit;
SQL> select f1() from dual;
      F1()
———-
  59788330

已用时间:  00: 00: 07.09  –能够看到数据发生变化,即使不使用RELIES_ON,结果集也是正确的。


SQL> select count(*)
      from test1, test2
     where test1.object_type = test2.object_type
     and test1.object_type in (‘TABLE SUBPARTITION’,’VIEW’,’INDEX’,’TABLE’);
  COUNT(*)
———-
  59788330
已用时间:  00: 00: 03.56   

SQL> create or replace function f2
   return number
     result_cache RELIES_ON(test1,test2)
   is
     l_ret number;
   begin
     select count(*) into l_ret
      from test1,test2
    where test1.object_type = test2.object_type
    and test1.object_type in (‘TABLE SUBPARTITION’,’VIEW’,’INDEX’,’TABLE’);
     return l_ret;
   end;
   /
函数已创建。

SQL> select f2() from dual;
      F2()
———-
  59788330
已用时间:  00: 00: 03.54
SQL> select f2() from dual;
      F2()
———-
  59788330
已用时间:  00: 00: 00.00

SQL> delete from test1 where object_type = ‘VIEW’ and rownum <100;
SQL> delete from test2 where object_type = ‘VIEW’ and rownum <100;
SQL> commit;
SQL> select f2() from dual;
      F2()
———-
  58914853

已用时间:  00: 00: 03.50


SQL> select count(*)
      from test1, test2
     where test1.object_type = test2.object_type
     and test1.object_type in (‘TABLE SUBPARTITION’,’VIEW’,’INDEX’,’TABLE’);
  COUNT(*)
———-
  58914853
已用时间:  00: 00: 03.50

版权声明:本文博主原创文章。博客,未经同意不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116958.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SpringBoot学习目录

    SpringBoot目录SpringBoot入门篇SpringBootWeb篇SpringBootRedis篇SpringBootMybatis篇SpringBootRabbitMQ篇SpringBoot的定时器SpringBoot集成邮件服务SpringBoot集成MongoDBSpringBoot集成ShiroSpringBoot文件上传Spring…

    2022年4月14日
    39
  • leetcode-139. 单词拆分(记忆化搜索|动态规划)

    leetcode-139. 单词拆分(记忆化搜索|动态规划)给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = “leetcode”, wordDict = [“leet”, “code”]输出: true解释: 返回 true 因为 “leetcode” 可以被拆分成 “leet code”。示例 2:输入: s = “applepenapple”, wordDict = [

    2022年8月9日
    13
  • php getrealpath,PHP SplFileInfo getRealPath()用法及代码示例「建议收藏」

    php getrealpath,PHP SplFileInfo getRealPath()用法及代码示例「建议收藏」SplFileInfo::getRealPath()函数是PHP中的标准PHP库(SPL)的内置函数,用于获取绝对文件路径。用法:intSplFileInfo::getRealPath(void)参数:该函数不接受任何参数。返回值:成功时,此函数返回文件的路径。以下示例程序旨在说明PHP中的SplFileInfo::getRealPath()函数:程序1://PHPProgramto…

    2026年1月26日
    3
  • python读取txt文件内容(python怎么读取excel)

    python读取txt文件的方法:首先打开文件,代码为【f=open(‘/tmp/test.txt’)】;然后进行读取,代码为【本教程操作环境:windows7系统、python3.9版,该方法适用于所有品牌电脑。python读取txt文件的方法:一、文件的打开和创建>>>f=open(‘/tmp/test.txt’)>>>f.read()’hell…

    2022年4月14日
    54
  • 御用导航官方网站提醒提示页_砼讯 | 河海大学官方网站全新改版上线!「建议收藏」

    御用导航官方网站提醒提示页_砼讯 | 河海大学官方网站全新改版上线!「建议收藏」上新了河海河海大学的官方网站上新啦!经过精心的筹备和技术人员不懈努力在105周年校庆来临之际河海大学官方网站全新改版上线!旧版网站全新改版新版网站高端大气的界面设计简洁明晰的板块分布河海元素的多重呈现超大大大图带来绝佳的视觉体验改版后的河海大学官网分为:河海新闻学术活动信息公告光影河海媒体河海五大板块信息门户、邮箱等在网站的右上角校园文化、校园景观、校园服务、图书档案、校历、校车等则在校…

    2022年5月30日
    162
  • 有哪些让程序员受益终生的建议

    有哪些让程序员受益终生的建议从业五年多,辗转两个大厂,出过书,创过业,从技术小白成长为基层管理,联合几个业内大牛回答下这个问题,希望能帮到大家,记得帮我点赞哦。敲黑板!!!读了这篇文章,你将知道如何才能进大厂,如何实现财务自由,如何在工作中游刃有余,这篇文章很长,但绝对是精品,记得帮我点赞哦!!!!一腔肺腑之言,能看进去多少,就看你自己了!!!目录:在校生篇:为什么要尽量进大厂? 如何选择语言及方…

    2022年6月5日
    27

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号