database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 38787 게시물 읽기
No. 38787
버퍼캐쉬를 안쓰고 쿼리하려면...
작성자
김진국(kimscom)
작성일
2011-08-17 13:34ⓒ
2011-08-17 13:58ⓜ
조회수
9,059

쿼리문을 변경해가면서 속도를 측정하고자 하는데

버퍼캐쉬에서 불러와서 Reads가 줄어버려 속도 비교가 안됩니다.

 

버퍼캐쉬를 읽지 않고 바로 Physical Read 만 되도록 할 수 없는지요?

 

DBA 권한이 있으면 아래처럼 버퍼캐쉬를 삭제해서 확인해 볼수는 있겠지만 그것보다 아예 버퍼를 읽지 않도록 하고 싶은데 안되나요?

-- 버퍼 캐쉬 삭제 (10g)
ALTER SYSTEM FLUSH BUFFER_CACHE;
 
-- 버퍼 캐쉬 삭제 (10g 미만)
ALTER SESSION SET EVENTS = 'IMMEDIATE TRACE NAME FLUSH_CACHE';
 
-- SHARED POOL 삭제
ALTER SYSTEM FLUSH BUFFER_POOL;
이 글에 대한 댓글이 총 4건 있습니다.

 .-- with 절에서 materialize hint 를 사용하면, 항상 Materialize를 발생합니다. 

: temp 로 data를 write 한 후 > read 하는 I/O 발생, 반대는  inline hint.

 

SQL>with vw as

  2  (

  3  select /*+ materialize */ * from t1

  4  )

  5  select *

  6  from   vw a

  7  ;

 

Execution Plan

----------------------------------------------------------

Plan hash value: 3529853136

 

----------------------------------------------------------------------------------------------------------

| Id  | Operation                  | Name                        | Rows  | Bytes | Cost (%CPU)| Time     |

----------------------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT           |                             |  1000 |   541K|    34   (0)| 00:00:01 |

|   1 |  TEMP TABLE TRANSFORMATION |                             |       |       |            |          |

|   2 |   LOAD AS SELECT           |                             |       |       |            |          |

|   3 |    TABLE ACCESS FULL       | T1                          |     1 |  1014 |     2   (0)| 00:00:01 |

|   4 |   VIEW                     |                             |  1000 |   541K|    32   (0)| 00:00:01 |

|   5 |    TABLE ACCESS FULL       | SYS_TEMP_0FD9D6C29_B5CB405F |  1000 |   990K|    32   (0)| 00:00:01 |

----------------------------------------------------------------------------------------------------------

 

 

Statistics

----------------------------------------------------------

        163  recursive calls

        154  db block gets

        377  consistent gets

        143  physical reads

       1604  redo size

      29410  bytes sent via SQL*Net to client

       1218  bytes received via SQL*Net from client

         68  SQL*Net roundtrips to/from client

          0  sorts (memory)

          0  sorts (disk)

       1000  rows processed

>> 속도 비교보다, physical read 가 발생하지 않는 것이 먼저 아닐까요?

박광일(tohappy)님이 2011-08-17 14:14에 작성한 댓글입니다.
이 댓글은 2011-08-17 14:15에 마지막으로 수정되었습니다.

답변 감사합니다.

그런데 이렇게 해봤는데 처음엔 Physical Read가 되었는데 다시 실행하니 Buffer Read가 발생되네요..

[첫번째 실행시]
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation           | Name                        | Starts | E-Rows | A-Rows |   A-Time   | Buffers | Reads  | Writes |  OMem |  1Mem | Used-Mem |
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
   ....중간생략....
|* 48 |    HASH JOIN RIGHT OUTER  |                             |      1 |  18994 |  15791 |00:00:56.62 |     108K|    107K|      0 |  1034K|  1034K| 1451K (0)|
|* 49 |     TABLE ACCESS FULL        | MTA_FABLINE                 |      1 |     22 |     22 |00:00:00.01 |       7 |      0 |      0 |       |       |          |
|  50 |     VIEW                                   |                             |      1 |  18994 |  15791 |00:00:56.58 |     108K|    107K|      0 |       |       |          |
|  51 |      UNION-ALL                         |                             |      1 |        |  15791 |00:00:56.58 |     108K|    107K|      0 |       |       |          |
|* 52 |       TABLE ACCESS FULL      | TAR_RTFUNPEGHISTORY         |      1 |  18031 |  15160 |00:00:56.55 |     107K|    107K|      0 |       |       |          |
|  53 |       TABLE ACCESS BY INDEX ROWID | TAR_RTFUNPEGHISTSEC         |      1 |    963 |    631 |00:00:00.05 |     210 |     15 |      0 |       |       |          |
|* 54 |        INDEX RANGE SCAN       | TAR_RTFUNPEGHISTSEC_IDX1    |      1 |    963 |    631 |00:00:00.02 |       5 |      5 |      0 |       |       |          |

[두번째 실행시]
|* 48 |    HASH JOIN RIGHT OUTER  |                             |      1 |  18994 |  15791 |00:00:01.61 |     108K|     11 |      0 |  1034K|  1034K| 1451K (0)|
|* 49 |     TABLE ACCESS FULL        | MTA_FABLINE                 |      1 |     22 |     22 |00:00:00.01 |       7 |      0 |      0 |       |       |          |
|  50 |     VIEW                                   |                              |      1 |  18994 |  15791 |00:00:01.58 |     108K|     11 |      0 |       |       |          |
|  51 |      UNION-ALL                         |                             |      1 |        |  15791 |00:00:01.58 |     108K|     11 |      0 |       |       |          |
|* 52 |       TABLE ACCESS FULL      | TAR_RTFUNPEGHISTORY         |      1 |  18031 |  15160 |00:00:01.56 |     107K|      0 |      0 |       |       |          |
|  53 |       TABLE ACCESS BY INDEX ROWID | TAR_RTFUNPEGHISTSEC         |      1 |    963 |    631 |00:00:00.03 |     210 |     11 |      0 |       |       |          |
|* 54 |        INDEX RANGE SCAN       | TAR_RTFUNPEGHISTSEC_IDX1    |      1 |    963 |    631 |00:00:00.02 |       5 |      2 |      0 |       |       |          |

 

김진국(kimscom)님이 2011-08-17 16:48에 작성한 댓글입니다.
이 댓글은 2011-08-17 16:51에 마지막으로 수정되었습니다.

hint 로 실행되지 않은 것 같네요.

 SYS_TEMP_** 로 access 되는 것이 안 보입니다.

박광일(tohappy)님이 2011-08-17 17:14에 작성한 댓글입니다.

아 아래쪽도 생략한건데.. 둘다 공히 아래와 같습니다.

|  57 |     TABLE ACCESS FULL                       | SYS_TEMP_4FDA1DEC2_27C38F81 |      1 |  29646 |  18171 |00:00:00.01 |     266 |    260 |      0 |       |       |          |

 

김진국(kimscom)님이 2011-08-18 10:19에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
38792쿼리 질문 입니다!!!! ㅠ_ㅠ [1]
이경율
2011-08-17
3792
38791query 요청 [1]
장훈
2011-08-17
3900
387891초 차이 범위 허용 [1]
초보자
2011-08-17
3837
38787버퍼캐쉬를 안쓰고 쿼리하려면... [4]
김진국
2011-08-17
9059
38786쿼리문의(dummy table..) [5]
레이첼
2011-08-17
5004
38785escape 문자에 관련하여 질문하나만 드리겠습니다. [1]
조용호
2011-08-17
3662
38784마농님 튜닝 부탁드립니다. [4]
이강실
2011-08-16
4886
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.025초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다