- 浏览: 518990 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (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应用
Oracle 11g新特性:Server Result Cache测试
现在我们来看一下Server Result Cache的作用。
首先创建一张测试表:
SQL> connect eygle/eygle
Connected.
SQL> create table eygle as select * from dba_objects;
Table created.
在以前版本中,我们第一次执行该SQL可以看到consistent gets和physical reads大致相同:
SQL> set autotrace on
SQL> select count(*) from eygle;
COUNT(*)
----------
15993
Execution Plan
----------------------------------------------------------
Plan hash value: 3602634261
--------------------------------------------------------------------
| Id | Operation | Name | Rows | Cost (%CPU)| Time |
--------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 64 (0)| 00:00:01 |
| 1 | SORT AGGREGATE | | 1 | | |
| 2 | TABLE ACCESS FULL| EYGLE | 14489 | 64 (0)| 00:00:01 |
--------------------------------------------------------------------
Note
-----
- dynamic sampling used for this statement
Statistics
----------------------------------------------------------
28 recursive calls
0 db block gets
282 consistent gets
217 physical reads
0 redo size
420 bytes sent via SQL*Net to client
416 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
再次执行同样查询时,由于数据Cache在内存中,physical reads会减少到0.
但是consistent gets仍然不变:
SQL> select count(*) from eygle;
COUNT(*)
----------
15993
Execution Plan
----------------------------------------------------------
Plan hash value: 3602634261
--------------------------------------------------------------------
| Id | Operation | Name | Rows | Cost (%CPU)| Time |
--------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 64 (0)| 00:00:01 |
| 1 | SORT AGGREGATE | | 1 | | |
| 2 | TABLE ACCESS FULL| EYGLE | 14489 | 64 (0)| 00:00:01 |
--------------------------------------------------------------------
Note
-----
- dynamic sampling used for this statement
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
221 consistent gets
0 physical reads
0 redo size
420 bytes sent via SQL*Net to client
416 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
现在我们来看看在Server Result Cache下,Oracle的行为。
首先在result_cache_mode参数设置为MANUAL时:
SQL> show parameter result_cache_mode
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
result_cache_mode string MANUAL
我们需要在SQL中手工指定Cache,这需要通过加入一个hints来实现,这个hints是result_cache:
SQL> select /*+ result_cache */ count(*) from eygle;
COUNT(*)
----------
15993
Execution Plan
----------------------------------------------------------
Plan hash value: 3602634261
------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Cost (%CPU)| Time |
------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 64 (0)| 00:00:01 |
| 1 | RESULT CACHE | 76rwwyazv6t6c39f1d8rrqh8rb | | | |
| 2 | SORT AGGREGATE | | 1 | | |
| 3 | TABLE ACCESS FULL| EYGLE | 14489 | 64 (0)| 00:00:01 |
------------------------------------------------------------------------------------------
Result Cache Information (identified by operation id):
------------------------------------------------------
1 - column-count=1; dependencies=(EYGLE.EYGLE);
attributes=(single-row); name="select /*+ result_cache */ count(*) from eygle"
Note
-----
- dynamic sampling used for this statement
Statistics
----------------------------------------------------------
4 recursive calls
0 db block gets
280 consistent gets
0 physical reads
0 redo size
420 bytes sent via SQL*Net to client
416 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
注意到这个执行计划已经和以往的不同,RESULT CACHE以76rwwyazv6t6c39f1d8rrqh8rb名称创建。
那么在接下来的查询中,这个Result Cache就可以被利用:
SQL> select /*+ result_cache */ count(*) from eygle;
COUNT(*)
----------
15993
Execution Plan
----------------------------------------------------------
Plan hash value: 3602634261
------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Cost (%CPU)| Time |
------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 64 (0)| 00:00:01 |
| 1 | RESULT CACHE | 76rwwyazv6t6c39f1d8rrqh8rb | | | |
| 2 | SORT AGGREGATE | | 1 | | |
| 3 | TABLE ACCESS FULL| EYGLE | 14489 | 64 (0)| 00:00:01 |
------------------------------------------------------------------------------------------
Result Cache Information (identified by operation id):
------------------------------------------------------
1 - column-count=1; dependencies=(EYGLE.EYGLE);
attributes=(single-row); name="select /*+ result_cache */ count(*) from eygle"
Note
-----
- dynamic sampling used for this statement
Statistics
----------------------------------------------------------
0 recursive calls
0 db block gets
0 consistent gets
0 physical reads
0 redo size
420 bytes sent via SQL*Net to client
416 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed
在这个利用到Result Cache的查询中,consistent gets减少到0,直接访问结果集,不再需要执行SQL查询。
这就是Result Cache的强大之处。
我们可以通过查询v$result_cache_memory视图来看Cache的使用情况:
SQL> select * from V$RESULT_CACHE_MEMORY
2 where FREE='NO';
ID CHUNK OFFSET FRE OBJECT_ID POSITION
---------- ---------- ---------- --- ---------- ----------
0 0 0 NO 0 0
1 0 1 NO 1 0
通过V$RESULT_CACHE_STATISTICS可以查询Result Cache的统计信息:
SQL> select * from V$RESULT_CACHE_STATISTICS;
ID NAME VALUE
---------- ------------------------------ ----------
1 Block Size (Bytes) 1024
2 Block Count Maximum 992
3 Block Count Current 32
4 Result Size Maximum (Blocks) 49
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
10 rows selected.
V$RESULT_CACHE_OBJECTS记录了Cache的对象:
SQL> SELECT ID,TYPE,NAME,BLOCK_COUNT,ROW_COUNT FROM V$RESULT_CACHE_OBJECTS;
ID TYPE NAME BLOCK_COUNT ROW_COUNT
---------- ---------- ------------------------------ ----------- ----------
0 Dependency EYGLE.EYGLE 1 0
1 Result select /*+ result_cache */ cou 1 1
nt(*) from eygle
一个新的系统包被引入,DBMS_RESULT_CACHE可以用于执行关于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 = 992K bytes (992 blocks)
Maximum Result Size = 49K bytes (49 blocks)
[Memory]
Total Memory = 100836 bytes [0.059% of the Shared Pool]
... Fixed Memory = 5132 bytes [0.003% of the Shared Pool]
... Dynamic Memory = 95704 bytes [0.056% of the Shared Pool]
....... Overhead = 62936 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.
发表评论
-
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...转换 ...
相关推荐
Oracle提供了动态性能视图如`V$RESULT_CACHE_METADATA`和`V$RESULT_CACHE_USAGE`来查看缓存状态。此外,可以使用`DBMS_RESULT_CACHE`包的函数和过程来手工清除或管理Result Cache。 7.4 Result Cache相关技术点 ...
通过调整参数RESULT_CACHE_MAX_SIZE,可以控制Server Result Cache的大小。默认情况下,如果MEMORY_TARGET参数被设置,RESULT_CACHE_MAX_SIZE将自动调整为MEMORY_TARGET的0.25%。 为了调整结果缓存的大小,DBA可以...
oracle 12c 数据库常用操作语句,欢迎带走,如果可以 少给一点也行
这是因为仅设置`result_cache_max_size`参数并不足以启用Result Cache,还需要确保其他相关参数如`result_cache_mode`设置正确。 ### 3. PL/SQL跟踪问题 #### 知识点详情: 题目描述了一个用户会话中启用PL/SQL...
此外,还可以使用 `result_cache_max_size` 参数控制结果缓存的最大大小。默认情况下,如果该值设置为 0,则表示禁用了结果缓存功能。可以通过查询 `v$sgastat` 视图来查看实际使用的大小。 为了查看结果缓存的状态...
8. 配置优化:文档最后提到了设置client_result_cache_size和result_cache_mode参数来调整结果集缓存。这通常对提升特定类型的应用程序性能非常关键,比如那些频繁执行查询的应用程序。 在部署过程中可能会遇到的...
- **NoDefault Pool**: 包括db_nk_cache_size、db_keep_cache_size和db_recycle_cache_size等参数,用于指定不同类型的缓存空间。 - `db_nk_cache_size`: 指定非标准块大小内存空间,例如2k、4k、16k、32k。 - `...
非默认缓冲池由参数db_keep_cache_size、db_recycle_cache_size等管理不同类型的表空间。 3. 重做日志缓冲区(Redo Log Buffer):记录所有对数据库的修改信息,如DML和DDL操作,用于数据库恢复。重做日志缓冲区的...
4. Result Cache:负责管理查询结果的缓存。 5. Latches:负责管理共享资源的锁机制。 6. Reserved Pool:负责管理预留的共享内存池。 7. User Global Area (UGA):负责管理用户的会话信息。 8. Program Global Area...
- 使用`PRAGMA RESULT_CACHE`来声明函数结果可被缓存。 - 使用`RESULT_CACHE`提示语句在函数内部标记结果缓存。 - **注意事项**:确保被缓存的函数不依赖于会变动的状态(如当前日期等)。 ##### 2. BULK COLLECT...
RETURN NUMBER RESULT_CACHE RELIES_ON(emp) AS v_name emp.ename%TYPE; BEGIN SELECT ename INTO v_name FROM emp WHERE empno = no; RETURN v_name; END; ``` - **功能描述**:此函数使用了结果缓存特性...
在Oracle 11g中引入了Result Cache,进一步优化了SQL查询的性能,它可以存储查询结果,当相同的查询再次执行时,可以直接从缓存中获取结果,减少数据库的处理负载。 6. **SQL解析与执行**:Oracle解析SQL语句后,...
Oracle 11g 提供了一种新的技术,名为 Server Result Cache,用于显著提高查询速度,尤其是在处理大量数据和重复查询的场景下。该技术的核心在于能够缓存查询结果,使得后续相同的查询可以直接从缓存中获取结果,而...
CACHE => TRUE, DUR => DBMS_LOB.CALL); L_DEST_OFFSET := 1; L_SRC_OFFSET := 1; DBMS_LOB.OPEN(L_FILES, DBMS_LOB.LOB_READONLY); DBMS_LOB.LOADFROMFILE(L_RESULT, L_FILES, DBMS_LOB.LOBMAXSIZE); ...