11g 새로운 기능 - 쿼리 캐시!

5393 단어

1. 서버 측 결과 세트 캐시


1. 서버 쿼리 캐시 구성
sys@ORCL> show parameter result_

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
result_cache_max_result              integer     5
result_cache_max_size                big integer 2624K
result_cache_mode                    string      MANUAL
result_cache_remote_expiration       integer     0
result_cache_max_result: 캐시에서 최대 메모리를 사용할 수 있는 결과 집합의 백분율입니다.기본값은 서버 결과 캐시 크기의 5%입니다.
result_cache_max_size: 이 매개 변수는 서버 결과 캐시에 메모리 분배를 설정합니다.
result_cache_mode: 기본값은 MANUAL입니다. 적당한 조회 힌트나 테이블 주석을 사용할 때만 데이터베이스에서 조회 결과를 캐시할 수 있다는 뜻입니다.매개변수를 FORCE로 설정하면/*+NO_ 를 특별히 지정하지 않는 한RESULT_CACHE */프롬프트는 질의 결과를 캐시하지 않습니다.
result_cache_remote_expiration: 기본적으로 원격 대상을 포함하는 결과는 캐시되지 않습니다.따라서 기본값은 0입니다.매개변수에 대한 발생 값을 설정하고 원격 객체 결과 세트를 포함하는 캐시를 설정할 수 있습니다.
2. 서버 결과 캐시 관리
서버 결과 캐시에서 쿼리 캐시를 제거하려면:
sys@ORCL> exec dbms_result_cache.Flush();

PL/SQL  。

서버 결과 캐시 상태 확인:
sys@ORCL> select dbms_result_cache.Status() from dual;

DBMS_RESULT_CACHE.STATUS()
--------------------------------------------------------------------------------
ENABLED

oracle에서 결과 캐시에 메모리를 할당하는 방법을 보려면 다음과 같이 하십시오.
sys@ORCL> 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  = 2624K bytes (2624 blocks)
Maximum Result Size = 131K bytes (131 blocks)
[Memory]
Total Memory = 9440 bytes [0.003% of the Shared Pool]

... Fixed Memory = 9440 bytes [0.003% of the Shared Pool]
... Dynamic Memory = 0 bytes [0.000% of the Shared Pool]

PL/SQL  。

하면, 만약, 만약...target 매개 변수는 자동 메모리 관리를 사용합니다.oracle은memory_target의 0.25%를 서버 결과 캐시에 할당합니다.하면, 만약, 만약...target 매개 변수는 자동 메모리 관리를 사용합니다. 그러면 분배된 값은 sga_target 매개 변수의 0.5%입니다.shared_ 를 설정하면pool_size 값으로 수동 메모리 관리를 하면shared_pool_size 매개 변수 값의 1%입니다.
질의 결과를 캐시하려면 다음과 같이 하십시오.
u1@ORCL> select /*+ RESULT_CACHE */ * from emp;


 
----------------------------------------------------------
Plan hash value: 3956160932

-------------------------------------------------------------------------------------------------
| Id  | Operation          | Name                       | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |                            |     3 |    18 |     3   (0)| 00:00:01 |
|   1 |  RESULT CACHE      | 6gmh2xmd86mbj974knznuvmy75 |       |       |            |          |
|   2 |   TABLE ACCESS FULL| EMP                        |     3 |    18 |     3   (0)| 00:00:01 |
-------------------------------------------------------------------------------------------------

Result Cache Information (identified by operation id):
------------------------------------------------------

   1 - column-count=2; dependencies=(U1.EMP); name="select /*+ RESULT_CACHE */ * from emp"


 
----------------------------------------------------------
          0  recursive calls
          0  db block gets
          0  consistent gets
          0  physical reads
          0  redo size
        537  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)
          3  rows processed

서버 결과 캐시 통계 모니터링:
u1@ORCL> select * from v$result_cache_statistics;

        ID NAME                           VALUE
---------- ------------------------------ ----------
         1 Block Size (Bytes)             1024
         2 Block Count Maximum            2624
         3 Block Count Current            32
         4 Result Size Maximum (Blocks)   131
         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
        11 Hash Chain Length              1

 11 。

3. 캐시 SQL 질의 결과
result_cache_mode 매개 변수가 MANUAL로 설정되면 데이터베이스는 조회 알림이나 테이블 주석의 조회 결과만 캐시합니다.FORCE는 모든 SQL 질의 결과를 데이터베이스에 캐시하도록 하는 것입니다.
쿼리 캐시를 사용하려면 쿼리 프롬프트:/*+ RESULT_CACHE */또는 테이블 주석:
u1@ORCL> select table_name,result_cache from user_tables where table_name='EMP';

TABLE_NAME                     RESULT_
------------------------------ -------
EMP                            DEFAULT

u1@ORCL> alter table emp result_cache(mode force);

 。

u1@ORCL> select table_name,result_cache from user_tables where table_name='EMP';

TABLE_NAME                     RESULT_
------------------------------ -------
EMP                            FORCE

2. 클라이언트 결과 집합 캐시

u1@ORCL> show parameter client_

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
client_result_cache_lag              big integer 3000
client_result_cache_size             big integer 0

좋은 웹페이지 즐겨찾기