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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 119149_1125*2436

    119149_1125*2436题意理解:http://acm.timus.ru/problem.aspx?space=1&amp;num=1142有N个对象,问有多少种关系?问题分析:用动态规划做:f(a,b)表示a个对象分成b组的分法。b组的意思是a个对象放到b个篮子里,每个篮子的对象之间是相等关系。初始值:f(0,0)=1;f(0,1…N)=0;f(1…N,0)=0递归式:f(a,b)=f(…

    2022年9月28日
    2
  • java集合系列——List集合之LinkedList介绍(三)

    LinkedList是基于链表实现的,从源码可以看出是一个双向链表。除了当做链表使用外,它也可以被当作堆栈、队列或双端队列进行操作。不是线程安全的,继承AbstractSequentialList实现List、Deque、Cloneable、Serializable。

    2022年2月26日
    43
  • CCS 8.00 软件中视窗的应用

    1.多种视窗通过CCS界面View可以看到存在多种视窗;memorybrowser在调试中可以查看SARAM中对应地址的数值;Register:DSP各存储模块的变化(类似系统关键字);Expressions和Variables是运用最多的,方便看程序中定义的变量。Disasembly方便查看C语言和汇编语言对应关系;Breakpoint方便对断点进行管理。2.断点管理断点管理试图:可以单一或者批量删除断点;屏蔽断点;启动断点需要在复选框中打钩。3.变量变化无论是regis

    2022年4月9日
    47
  • 【测试岗】快来抄模板,3W字41个软件测试超常见实例问题(附带答案)

    码字太难了,这些问题保存在我的word文档中,但是CSDN有特殊的模板格式,结果还是一行行粘贴过来的大家看着这份文章上,多给点关注收藏呀~~~~~~另外需要更多的面试题可以点击并输入暗号:CSDN目录1.给你一个字符串,你怎么判断是不是ip地址?手写这段代码,并写出测试用例2.请进行测试用例设计:一串数字,闰年的判别3.请你说一说简单用户界面登陆过程都需要做哪些分析4.请对这个系统做出测试用例:一个系统,多个摄像头,抓拍车牌,识别车牌,上传网上,网上展示5.请你对吃鸡游戏进行压力测试6.请你根据微

    2022年4月8日
    47
  • 什么是SOAP ,WSDL 和UDDI[通俗易懂]

    什么是SOAP ,WSDL 和UDDI[通俗易懂]什么是WebServices一直没有一个明确的答案,这里给出的看法是:WebServices是一种基于组件的软件平台,是面向服务的Internet应用。WebServices是应用于Internet的,而不是限于局域网或试验环境。这要求提出的WebServices框架必须适用于现有的Internet软件和硬件环境,即服务的提供者所提供的服务必须具有跨平台、跨语言的特性。其次,

    2022年7月24日
    18
  • qq不能接收图片如何解决_qq文件未上传至服务器

    qq不能接收图片如何解决_qq文件未上传至服务器原因一:一般是网速比较慢,电信联通教育他们内部传图片大家都能收到,教育网给联通发就一般收不到了,清理下你的QQ图片文件夹,里面堆积的图片太多了原因二:由于网络问题,查看手机移动数据流量或者wifi连接是否正常。QQ版本问题,将QQ版本升级到最新版本重新尝试发送图片。查看对方是否删除了自己以及屏蔽了消息,这样是无法正常发送图片如果你不能确定是否是因为QQ图片文件夹的关系导致自己不能发送图片,那么小…

    2022年8月10日
    8

发表回复

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

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