2016-12-08 6 views
0

오라클 db 캐시 메모리의 40M 바이트를 가정 해 봅시다. 데이터베이스의 유일한 사용자이며 쿼리를 실행하여 캐시 적중률을 계산하는 방법을 알고 싶습니다. 쿼리. ,오라클에서 계획 및 계산 캐시 적중률을 설명하십시오

1,330의 비용이

TABLE ACESS(FULL) : 지금 설명 할 계획 말한다

SELECT column1, count(*) 
FROM table1 
GROUP BY column1 
ORDER BY column1 desc 

table1 미만 40M 크기라고 가정 : (Ⅰ/O?)

은의 우리가이 쿼리를 있다고 가정 해 봅시다 그 다음 SORT(GROUP BY)은 1340이고 SELECT STATEMENT은 1340입니다.

내가 이해할 수없는 이유는 무엇입니까? SORTSELECT STATEMENT은 각각 1340 I/O입니까?

테이블 acess를 수행 할 때 테이블 크기보다 큰 캐시가 있으므로 캐시에서 디스크 내용을로드 한 다음 정렬 및 선택하려는 경우 캐시의 내용 만 검색하면됩니다. 내 마음은 제로 I/O 정렬 및 선택해야합니다.

또한 어떻게 해당 쿼리의 캐시 적중률을 계산합니까?

+0

실행 계획을 게시 할 수 있습니까? –

답변

1

비용은 작업에 예상되는 시간으로, 해당 시간이 소요되는 단일 블록 읽기 수로 표시됩니다.

그래서 선택에 대한 하나 개의 단일 블록 읽기가 누적처럼 당신이 소리를 설명하는 숫자 (200)

의 비용을 것를 0.5ms 소요되는 시스템 때문에 1340에서 100ms의 작업은 1340를 위해 포함 group by는 테이블 액세스를 위해 1330을 포함합니다. 따라서 비용에 따른 그룹 10.

쿼리의 캐시 적중률은 쿼리가 실행되기 전에 SGA에있는 테이블의 양에 따라 달라집니다. 아무 것도 없으면 BCHR은 0 %가됩니다. . 그것들이 전부라면 BCHR은 100 %가됩니다.

시스템 튜닝 도구로서 높은 BCHR과 효율적인 쿼리 계획 간의 상관 관계가 매우 약하기 때문에 BCHR은 널리 사용되지 않습니다. 사실 쿼리 계획의 효율성을 떨어 뜨려 BCHR을 높일 수 있습니다.

+0

감사합니다.하지만 블록을 읽는 동안 정렬 및 선택 개수가 필요하지 않습니까? 그래서 캐시 히트 비율은 66,6 %가되거나 정렬 및 선택이 즉시 이루어 지므로 I/O로 계산되지 않습니까? – user2241915

+0

정말로 - 정렬이 너무 커서 (SGA가 아닌 PGA) 메모리에서 수행 될 수없는 경우 디스크로 유출되지만 그와 관련된 I/O는 BCHR에 기여하지 않습니다 (BCHR이 아닌 다른 이유 시스템 효율의 큰 측정). –