[오라클자바커뮤니티SQL,ORACLE교육학원추천,SQL교육,오라클학원]오라클 11g의 캐싱은 쿼리 결과를 캐싱 하는 특징이 있는데 예를 보자.
SQL> SELECT name, value, isdefault
FROM v$parameter
WHERE name LIKE 'result_cache%';
NAME VALUE ISDEFAULT
---------------------------------- ------------------ ---------
result_cache_mode MANUAL TRUE
result_cache_max_size 3244032 TRUE
result_cache_max_result 5 TRUE
result_cache_remote_expiration 0 TRUE
4 rows selected.
result_cache_mode: Result Cache는 세가지 방법으로 Oracle Hint or alter session, alter system으로 가능하다. Default 값이 MANUAL인데 “RESULT_CACHE”힌트를 명시해야 결과값 캐싱이 된다.
result_cache_max_size : 캐싱되는 최대 바이트 사이즈
result_cache_max_result: 단일 resultset에서 캐시되는 최대 비율(기본 5%)
result_cache_remote_expiration: 원격오브젝트에 대한 쿼리 결과로 캐싱 되어 유효한 시간. 기본 0은
SQL>ALTER SYSTEM SET result_cache_max_size = 2M SCOPE = MEMORY
SQL> SELECT name, value
2 FROM v$parameter
3 WHERE name = 'result_cache_max_size';
NAME VALUE
---------------------------------------- -------------------------
result_cache_max_size 2097152
1 row selected.
이번에는 result cache를 manually로…
SQL> SELECT value
2 FROM v$parameter
3 WHERE name = 'result_cache_mode';
VALUE
----------------
MANUAL
1 row selected.
SQL> set autotrace traceonly
SQL> set timing on
SQL> SELECT /*+ RESULT_CACHE */
e.empno,
d.dname
FROM emp e
, dept d
WHERE e.deptno = d.deptno
ANd e.deptno = 10;
EMPNO DNAME
---------- --------------
7782 ACCOUNTING
7839 ACCOUNTING
7934 ACCOUNTING
| 0 | SELECT STATEMENT | | 5 | 1
00 | 4 (0)| 00:00:01 |
| 1 | RESULT CACHE | 4tg609zzhkhzs1k1wkzvcsrduk | |
| | |
| 2 | NESTED LOOPS | | 5 | 1
00 | 4 (0)| 00:00:01 |
| 3 | TABLE ACCESS BY INDEX ROWID| DEPT | 1 |
13 | 1 (0)| 00:00:01 |
|* 4 | INDEX UNIQUE SCAN | PK_DEPT | 1 |
| 0 (0)| 00:00:01 |
|* 5 | TABLE ACCESS FULL | EMP | 5 |
35 | 3 (0)| 00:00:01 |
[예2]
SQL> select count(*)
2 from myemp1 e, mydept1 d
3 where d.deptno = d.deptno
4 and d.deptno = 0;
COUNT(*)
----------
20000001
경 과: 00:00:06.68
SQL> select /*+ result_cache */ count(*)
2 from myemp1 e, mydept1 d
3 where d.deptno = d.deptno
4 and d.deptno = 0;
COUNT(*)
----------
20000001
경 과: 00:00:05.93
SQL> select /*+ result_cache */ count(*)
2 from myemp1 e, mydept1 d
3 where d.deptno = d.deptno
4 and d.deptno = 0;
COUNT(*)
----------
20000001
경 과: 00:00:00.12
이런데 힌트를 써서 결과값을 캐싱 가능한데, 과연 캐싱이 몇번 일어 났는지는 어떻게 확인 할까?
SELECT value
FROM v$result_cache_statistics
WHERE name = 'Find Count';
SQL> SELECT value
FROM v$result_cache_statistics
WHERE name = 'Find Count';
VALUE
---------------------------------------------------------------------------------
6
캐시 카운터는 SQL을 실행 할 때마다 늘어 난 다는 것을 알 수 있다.
실습해 보라.
SQL> SELECT name, value, isdefault
FROM v$parameter
WHERE name LIKE 'result_cache%';
NAME VALUE ISDEFAULT
---------------------------------- ------------------ ---------
result_cache_mode MANUAL TRUE
result_cache_max_size 3244032 TRUE
result_cache_max_result 5 TRUE
result_cache_remote_expiration 0 TRUE
4 rows selected.
result_cache_mode: Result Cache는 세가지 방법으로 Oracle Hint or alter session, alter system으로 가능하다. Default 값이 MANUAL인데 “RESULT_CACHE”힌트를 명시해야 결과값 캐싱이 된다.
result_cache_max_size : 캐싱되는 최대 바이트 사이즈
result_cache_max_result: 단일 resultset에서 캐시되는 최대 비율(기본 5%)
result_cache_remote_expiration: 원격오브젝트에 대한 쿼리 결과로 캐싱 되어 유효한 시간. 기본 0은
SQL>ALTER SYSTEM SET result_cache_max_size = 2M SCOPE = MEMORY
SQL> SELECT name, value
2 FROM v$parameter
3 WHERE name = 'result_cache_max_size';
NAME VALUE
---------------------------------------- -------------------------
result_cache_max_size 2097152
1 row selected.
이번에는 result cache를 manually로…
SQL> SELECT value
2 FROM v$parameter
3 WHERE name = 'result_cache_mode';
VALUE
----------------
MANUAL
1 row selected.
SQL> set autotrace traceonly
SQL> set timing on
SQL> SELECT /*+ RESULT_CACHE */
e.empno,
d.dname
FROM emp e
, dept d
WHERE e.deptno = d.deptno
ANd e.deptno = 10;
EMPNO DNAME
---------- --------------
7782 ACCOUNTING
7839 ACCOUNTING
7934 ACCOUNTING
| 0 | SELECT STATEMENT | | 5 | 1
00 | 4 (0)| 00:00:01 |
| 1 | RESULT CACHE | 4tg609zzhkhzs1k1wkzvcsrduk | |
| | |
| 2 | NESTED LOOPS | | 5 | 1
00 | 4 (0)| 00:00:01 |
| 3 | TABLE ACCESS BY INDEX ROWID| DEPT | 1 |
13 | 1 (0)| 00:00:01 |
|* 4 | INDEX UNIQUE SCAN | PK_DEPT | 1 |
| 0 (0)| 00:00:01 |
|* 5 | TABLE ACCESS FULL | EMP | 5 |
35 | 3 (0)| 00:00:01 |
[예2]
SQL> select count(*)
2 from myemp1 e, mydept1 d
3 where d.deptno = d.deptno
4 and d.deptno = 0;
COUNT(*)
----------
20000001
경 과: 00:00:06.68
SQL> select /*+ result_cache */ count(*)
2 from myemp1 e, mydept1 d
3 where d.deptno = d.deptno
4 and d.deptno = 0;
COUNT(*)
----------
20000001
경 과: 00:00:05.93
SQL> select /*+ result_cache */ count(*)
2 from myemp1 e, mydept1 d
3 where d.deptno = d.deptno
4 and d.deptno = 0;
COUNT(*)
----------
20000001
경 과: 00:00:00.12
이런데 힌트를 써서 결과값을 캐싱 가능한데, 과연 캐싱이 몇번 일어 났는지는 어떻게 확인 할까?
SELECT value
FROM v$result_cache_statistics
WHERE name = 'Find Count';
SQL> SELECT value
FROM v$result_cache_statistics
WHERE name = 'Find Count';
VALUE
---------------------------------------------------------------------------------
6
캐시 카운터는 SQL을 실행 할 때마다 늘어 난 다는 것을 알 수 있다.
실습해 보라.
오라클자바커뮤니티교육센터, 개발자전문교육, 개인80%환급
www.oraclejavacommunity.com
평일주간(9:30~18:10) 개강
(6/30)[기업100%환급]PL/SQL,ORACLE HINT,TUNING
(6/30)[기업100%환급]안드로이드개발자과정
(6/30)[기업100%환급]SQL기초에서 Schema Object까지
(7/07)[기업100%환급]C#4.0,WinForm,ADO.NET프로그래밍
(7/07)[기업100%환급]Spring ,MyBatis,Hibernate실무과정
(7/07)[기업100%환급]자바기초에서 JDBC, Servlet/JSP까지
(7/07)[채용예정교육]오라클자바개발잘하는신입뽑기프로젝트,교육전취업확정
평일야간(19:00~21:50) 개강
(6/26)SQL초보에서실전전문가까지
(7/01)안드로이드개발자과정
(7/01)닷넷(C#,Network,ADO.NET,ASP.NET)마스터과정
(7/02)Spring3.X, MyBatis, Hibernate실무과정
(7/02)자바웹(JSP,Spring,MyBatis,XPlatform)프로젝트과정
(7/02)JAVA,Network&WEB&Framework(자바기초에서웹스프링까지)
(7/03)웹퍼블리싱 마스터
(7/15)MyBatis3.X, Hibernate4.X ORM실무과정
(7/22)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
주말(10:00~17:50) 개강
(6/28)Spring3.X, MyBatis, Hibernate실무과정
(6/28)안드로이드개발자과정
(6/28)실무예제로 배워보는 jQuery(개발자/디자이너를위한)
(6/28)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
(7/05)SQL초보에서 Schema Object까지
(7/12)자바웹(JSP,Spring,MyBatis,XPlatform)프로젝트과정
(7/12)MyBatis3.X, Hibernate4.X ORM실무과정
(7/12)개발자를위한PLSQL,SQL튜닝,힌트
(7/13)C#,ASP.NET마스터
주말저녁(18:30~22:20) 개강
(6/28)JAVA,Network&WEB&Framework
(6/28)SQL기초에서실무까지
www.oraclejavacommunity.com
평일주간(9:30~18:10) 개강
(6/30)[기업100%환급]PL/SQL,ORACLE HINT,TUNING
(6/30)[기업100%환급]안드로이드개발자과정
(6/30)[기업100%환급]SQL기초에서 Schema Object까지
(7/07)[기업100%환급]C#4.0,WinForm,ADO.NET프로그래밍
(7/07)[기업100%환급]Spring ,MyBatis,Hibernate실무과정
(7/07)[기업100%환급]자바기초에서 JDBC, Servlet/JSP까지
(7/07)[채용예정교육]오라클자바개발잘하는신입뽑기프로젝트,교육전취업확정
평일야간(19:00~21:50) 개강
(6/26)SQL초보에서실전전문가까지
(7/01)안드로이드개발자과정
(7/01)닷넷(C#,Network,ADO.NET,ASP.NET)마스터과정
(7/02)Spring3.X, MyBatis, Hibernate실무과정
(7/02)자바웹(JSP,Spring,MyBatis,XPlatform)프로젝트과정
(7/02)JAVA,Network&WEB&Framework(자바기초에서웹스프링까지)
(7/03)웹퍼블리싱 마스터
(7/15)MyBatis3.X, Hibernate4.X ORM실무과정
(7/22)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
주말(10:00~17:50) 개강
(6/28)Spring3.X, MyBatis, Hibernate실무과정
(6/28)안드로이드개발자과정
(6/28)실무예제로 배워보는 jQuery(개발자/디자이너를위한)
(6/28)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
(7/05)SQL초보에서 Schema Object까지
(7/12)자바웹(JSP,Spring,MyBatis,XPlatform)프로젝트과정
(7/12)MyBatis3.X, Hibernate4.X ORM실무과정
(7/12)개발자를위한PLSQL,SQL튜닝,힌트
(7/13)C#,ASP.NET마스터
주말저녁(18:30~22:20) 개강
(6/28)JAVA,Network&WEB&Framework
(6/28)SQL기초에서실무까지
댓글 없음:
댓글 쓰기