- 浏览: 519024 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (299)
- Oracle(pl/sql_Erp_Pro*C) (69)
- 设计模式 (4)
- spring (23)
- ext (17)
- apache开源项目应用 (4)
- jquery (16)
- 生活琐事 (8)
- 下载资源 (23)
- mysql (2)
- Eclipse使用积累 (5)
- 报表类(报表/图表) (13)
- php (4)
- Web多彩文本框 (3)
- json (4)
- jqgrid (2)
- ant (2)
- java算法积累 (8)
- EL表达式/JSTL (4)
- poi (3)
- gwt (2)
- 爬网第一步 (2)
- javascript (17)
- Javaweb (8)
- tomcat (1)
- flex (1)
- Java&DB (3)
- J2SE (7)
- linux (3)
- 数据结构 (1)
- dot net (5)
- struts (1)
- ibatis (1)
- log4j (1)
- 项目管理 (1)
- Java native interface(jni,jacob......) (5)
- applet (1)
- VB.net/C#.net/JNI (20)
- css (1)
- Sqlite (1)
- servlet (1)
- REST (1)
最新评论
-
wenhurena:
能不能给一下解压密码roki.work.2017@gmail. ...
Ebs解体新書と学習資料1 -
liutao1600:
楼主写的太好了,每天学习~~
Spring_MVC(6)测试 -
liutao1600:
太好了,每天学习你的文章~~~
Spring_MVC(3)表单页面处理 -
liutao1600:
学习了,太好了
Spring_MVC(2)控制层处理 -
liutao1600:
学习了~~~
Spring_MVC(1)构建简单web应用
Server result cache是在shared pool中为查询结果开辟一块专用的缓存,通过新引入的一个初始化参数来控制该cache的大小:result_cache_max_size。如果result_cache_max_size=0则表示禁用该特性。参数result_cache_max_result则控制单个缓存结果可以占总的Server result cache大小的百分比。另外还有一个初始化参数用于控制Server result cache的模式:result_cache_mode,如果取值为auto,则优化器会自动判断是否将查询结果缓存;如果取值为manual(这是默认值),则需要通过查询提示result_cache来告诉优化器是否缓存结果;如果取值为force,则系统会尽可能的缓存查询结果,当然,即使参数取值为force,也可以通过提示no_result_cache来拒绝缓存结果。在itpub关于该特性的讨论中,有人提到,文档中result_cache_mode只有manual/force两个取值。这个可能是文档的bug,通过给参数赋一个非法值得到的报错信息中明白的说明有三个取值:
SQL> alter session set result_cache_mode=a; ERROR: ORA-00096: invalid value A for parameter result_cache_mode, must be from among FORCE, MANUAL, AUTO
Oracle11g还引入了一个package专门用于管理server result cache:dbms_result_cache
清空server result cache
SQL> exec dbms_result_cache.flush PL/SQL procedure successfully completed.
查看server result cache的内存使用报告
SQL> set serveroutput on SQL> exec dbms_result_cache.memory_report R e s u l t C a c h e M e m o r y R e p o r t [Parameters] Block Size = 1K bytes Maximum Cache Size = 1184K bytes (1184 blocks) Maximum Result Size = 59K bytes (59 blocks) [Memory] Total Memory = 5132 bytes [0.006% of the Shared Pool] ... Fixed Memory = 5132 bytes [0.006% of the Shared Pool] ... Dynamic Memory = 0 bytes [0.000% of the Shared Pool] PL/SQL procedure successfully completed.
通过动态性能视图v$result_cache_statistics可以知道server result cache的使用统计信息。
SQL> select * from v$result_cache_statistics; ID NAME VALUE ---------- ------------------------------ ---------- 1 Block Size (Bytes) 1024 2 Block Count Maximum 1184 3 Block Count Current 0 4 Result Size Maximum (Blocks) 59 5 Create Count Success 0 6 Create Count Failure 0 7 Find Count 0 8 Invalidation Count 0 9 Delete Count Invalid 0 10 Delete Count Valid 0 10 rows selected.
其他相关动态性能视图:
v$result_cache_objects
v$result_cache_memory
v$result_cache_dependency
下面我们看一个实际的例子
SQL> set autotrace on SQL> select /*+ result_cache */ count(*) from test; COUNT(*) ---------- 11865 Execution Plan ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=ALL_ROWS (Cost=48 Card=1) 1 0 RESULT CACHE OF '7rkq2h8sb7kdg5sjxw69z8c45g' 2 1 SORT (AGGREGATE) 3 2 TABLE ACCESS (FULL) OF 'TEST' (TABLE) (Cost=48 Card=12024) Statistics ---------------------------------------------------------- 337 recursive calls 0 db block gets 291 consistent gets 0 physical reads 0 redo size 352 bytes sent via SQL*Net to client 500 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 5 sorts (memory) 0 sorts (disk) 1 rows processed
注意到执行计划中的RESULT CACHE OF ‘7rkq2h8sb7kdg5sjxw69z8c45g’,说明已经缓存前面两步的结果。
再来看result cache的内存使用情况
SQL> exec dbms_result_cache.memory_report R e s u l t C a c h e M e m o r y R e p o r t [Parameters] Block Size = 1K bytes Maximum Cache Size = 1184K bytes (1184 blocks) Maximum Result Size = 59K bytes (59 blocks) [Memory] Total Memory = 103528 bytes [0.112% of the Shared Pool] ... Fixed Memory = 5132 bytes [0.006% of the Shared Pool] ... Dynamic Memory = 98396 bytes [0.107% of the Shared Pool] ....... Overhead = 65628 bytes ....... Cache Memory = 32K bytes (32 blocks) ........... Unused Memory = 30 blocks ........... Used Memory = 2 blocks ............... Dependencies = 1 blocks (1 count) ............... Results = 1 blocks ................... SQL = 1 blocks (1 count) PL/SQL procedure successfully completed.
查看v$result_cache_statistics
SQL> select * from v$result_cache_statistics; ID NAME VALUE ---------- ------------------------------ ---------- 1 Block Size (Bytes) 1024 2 Block Count Maximum 1184 3 Block Count Current 32 4 Result Size Maximum (Blocks) 59 5 Create Count Success 1 6 Create Count Failure 0 7 Find Count 0 8 Invalidation Count 0 9 Delete Count Invalid 0 10 Delete Count Valid 0
注意到Create Count Success=1说明成功的缓存了一笔记录
再次执行该查询
SQL> select /*+ result_cache */ count(*) from test; COUNT(*) ---------- 11865 Execution Plan ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=ALL_ROWS (Cost=48 Card=1) 1 0 RESULT CACHE OF '7rkq2h8sb7kdg5sjxw69z8c45g' 2 1 SORT (AGGREGATE) 3 2 TABLE ACCESS (FULL) OF 'TEST' (TABLE) (Cost=48 Card=12024) Statistics ---------------------------------------------------------- 0 recursive calls 0 db block gets 0 consistent gets 0 physical reads 0 redo size 352 bytes sent via SQL*Net to client 500 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 1 rows processed
注意到这里consistent gets=0,也就是该查询甚至不产生逻辑读了,也就是直接从result cache中获得了查询结果。
查看v$result_cache_statistics
SQL> select * from v$result_cache_statistics; ID NAME VALUE ---------- ------------------------------ ---------- 1 Block Size (Bytes) 1024 2 Block Count Maximum 1184 3 Block Count Current 32 4 Result Size Maximum (Blocks) 59 5 Create Count Success 1 6 Create Count Failure 0 7 Find Count 1 8 Invalidation Count 0 9 Delete Count Invalid 0 10 Delete Count Valid 0
注意到Find Count = 1,说明上次缓存的结果被后续的查询应用了一次。如果继续执行该查询,可以发现该统计信息相应增加。
当然,这个例子中,缓存了整个查询的结果,实际上也可以缓存执行计划中某一步或者某几步的查询结果。例如,下面的例子中,就缓存了子查询的结果
SQL> select count(*) from (select /*+result_cache*/* from test where object_id<100); COUNT(*) ---------- 98 Execution Plan ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=ALL_ROWS (Cost=48 Card=1) 1 0 SORT (AGGREGATE) 2 1 VIEW (Cost=48 Card=237) 3 2 RESULT CACHE OF 'fbbc5y53mwuj75buth9d2vwkkn' 4 3 TABLE ACCESS (FULL) OF 'TEST' (TABLE) (Cost=48 Card=237 Bytes=37446) Statistics ---------------------------------------------------------- 716 recursive calls 4 db block gets 403 consistent gets 0 physical reads 0 redo size 350 bytes sent via SQL*Net to client 500 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 23 sorts (memory) 0 sorts (disk) 1 rows processed SQL> select count(*) from (select /*+result_cache*/* from test where object_id<100); COUNT(*) ---------- 98 Execution Plan ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=ALL_ROWS (Cost=48 Card=1) 1 0 SORT (AGGREGATE) 2 1 VIEW (Cost=48 Card=237) 3 2 RESULT CACHE OF 'fbbc5y53mwuj75buth9d2vwkkn' 4 3 TABLE ACCESS (FULL) OF 'TEST' (TABLE) (Cost=48 Card=237 Bytes=37446) Statistics ---------------------------------------------------------- 0 recursive calls 0 db block gets 0 consistent gets 0 physical reads 0 redo size 350 bytes sent via SQL*Net to client 500 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 1 rows processed
发表评论
-
IBatis调用ORACLE的存储过程、函数的返回结果集例子
2012-03-05 23:31 2133import java.io.Serializabl ... -
Oracle分页函数样例——用于提高当前框架分页性能
2012-03-05 23:27 1387create or replace procedure P ... -
Oracle入门课件
2011-12-11 22:43 1010下载附件 -
自己经常上的Oracle官网的一些链接~~是啥自己点开看
2011-11-17 23:27 1117http://www.oracle.com/pls/db ... -
Oracle性能诊断艺术源码
2011-08-16 00:51 880请下载。 -
oracle support
2011-06-23 16:34 920https://support.oracle.com/CSP/ ... -
oracle 11g sql code
2011-02-24 20:55 1109附件参考 -
Oracle SQL优化
2011-01-19 23:16 875详见附件。讲述优化器。 -
Oracle PGA概念及调整
2011-01-03 23:18 1749--预备知识PGA(Process Global Area), ... -
修改Oracle SGA——防止oracle内存分配不足而down机
2011-01-03 23:16 2341在安装oracle 10g r2 数据库时,默认的SGA大 ... -
oracle SGA
2011-01-03 23:14 1365系统全局区又称SGA (System Global A ... -
Oracle 高水位概念(hwm)
2010-12-22 22:09 1434说到HWM,我们首先要简要 ... -
CDC积累的plsql用的各种例子
2010-11-09 15:49 835自用,有密码!请勿浪费时间下载。 -
oracle Erp安装和具体财务模块介绍
2010-10-11 12:54 1180http://bbs.erp100.com/thread-20 ... -
Oracle察看表约束
2010-10-08 16:07 11071、我们创建的对象可以从"USER_"开通 ... -
Oracle 行列转换积累
2010-09-29 11:36 1704行列转换包括以下六种情况:*列转行*行转列*多列转换成字符串 ... -
oracle bulk collection
2010-09-14 18:26 1255Oracle Bulk Collection & ... -
oracle discover
2010-09-03 16:28 957oracle discover -
Oracle rawtohex hextoraw
2010-09-03 15:03 3186Oracle 8.1.7 SQL> ed ... -
Oracle Raw,number,varchar2转换
2010-09-03 14:56 2261Oracle Raw,number,varchar2...转换 ...
相关推荐
SQL Query Result Cache是Oracle 11g引入的一种性能优化新技术,旨在提高数据库系统的查询效率,减少不必要的计算和I/O操作。这一特性通过缓存SQL查询的结果来避免重复执行相同的查询,从而节省系统资源。 7.1 ...
SQL> ALTER SYSTEM SET result_cache_max_size = 2M SCOPE = MEMORY; System altered. ``` 之后,可以通过查询v$parameter视图来验证设置是否生效。 启用查询结果缓存,可以使用RESULT_CACHE_MODE初始化参数。该...
这是因为仅设置`result_cache_max_size`参数并不足以启用Result Cache,还需要确保其他相关参数如`result_cache_mode`设置正确。 ### 3. PL/SQL跟踪问题 #### 知识点详情: 题目描述了一个用户会话中启用PL/SQL...
oracle 12c 数据库常用操作语句,欢迎带走,如果可以 少给一点也行
if ($Result = $Cache->load('cache_two')) { echo "缓存已经存在! "; print_r($Result); } else { // 缓存不存在时的操作... } ``` - **写入缓存**:如果缓存不存在,可以通过 `save()` 方法保存数据到缓存...
2. **缓存装饰器** 装饰器是Python编程中的一个重要概念,它允许我们修改或增强函数、类等对象的行为,而无需改变其源代码。在"Python-rediscache"中,装饰器用于在函数调用前检查是否有缓存结果,如果有则直接返回...
7. Query_cache_limit:Query Cache 存放的单条 Query 最大 Result set(结果集),默认 1MB。 8. Qcache_free_memory:Query Cache 中目前剩余的内存大小。通过这个参数可以较为准确的观察出当前系统中的 Query ...
id=165085824316781683968174&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-8-119605522.142^v9^pc_search_result_cache,157^v4^control&utm_term=...
id=165045768816780271990904&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-3-82255984.142^v9^pc_search_result_cache,157^v4^control&utm_term=...
使用 session_cache_limiter 方法可能会出现的问题是,如果用户修改了已经提交的信息,表单页面所呈现的信息还是缓存里的信息,没能及时自动刷新。解决方案是,在 session_start 前面加上: `session_cache_limiter...
在`send_result_to_client`函数中,MySQL会检查SQL语句是否为SELECT,并且在`dispatch_command`函数中,会去除语句开始前的多余空格。这意味着在处理查询时,MySQL已经考虑到了前导空格的情况,并在解析查询之前将其...
此外,还可以使用 `dbms_result_cache.status` 函数来检查结果缓存的状态,以及使用 `dbms_result_cache.memory_report` 函数来获取结果缓存的详细内存使用报告。 #### 六、ASM 权限管理 Oracle 11G 在 ASM ...
2. **定义结构体**:由于API函数使用特定的结构体,例如`INTERNET_CACHE_ENTRY_INFOA`,我们需要在Delphi代码中声明这些结构体。这个结构体包含了关于缓存条目的信息,如URL、文件名、大小和访问时间等。 3. **分配...
#### 2. Zend_Acl **2.1 简介** - **访问控制列表(ACL)概念:** ACL是一种安全机制,用于定义不同用户对资源的不同访问权限。 - **资源(Resource)与角色(Role):** - **资源:** 可以是应用程序中的任何对象或...
### 2. johnny-cache简介 johnny-cache是一款针对Django设计的高性能缓存解决方案。它不仅提供了对Django内置缓存系统的增强,还引入了“脏”对象跟踪机制,自动检测并更新缓存中的过期数据。johnny-cache的主要...
- **Result Cache**: 存储服务器端的SQL结果集及PL/SQL函数返回值。 - **User Global Area (UGA)**: 在共享服务器模式下,如果没有配置large pool,则UGA属于SGA的Shared Pool;在专用连接模式时,UGA属于PGA。 - *...