2010-07-26 4 views
0

optimizer_cost 값은 낮지 만 user_io_wait_time 값은 매우 낮습니다. 이것은 단지 I/O 병목 현상이 있음을 나타 냅니까?Oracle 쿼리와 USER_IO_WAIT_TIME이 느림

오라클에 더 많은 메모리를 할당해야합니까? 더 빠른 디스크를 만드시겠습니까?

참고 : 통계가 는 DB 캐시를 확대하는 I/O를 줄일 수 있기 때문에 빠른 데이터베이스를 만들기 위해을 경향이 오라클에 메모리를 할당 V $ SQL

답변

2

쿼리에 의해 수집되었다. the DB cache advisor으로 잠재적 인 개선에 대한 느낌을 얻을 수 있습니다.

그러나 메모리를 추가하면 특정 쿼리가 향상된다는 보장이 없습니다. 그것은 blunderbuss 접근 방식이며,이 경우 실제로 작동하는지 여부는 쿼리의 성격에 달려 있습니다.

설명 플랜의 비용이 실제 경과 시간과 일치하지 않는 데는 여러 가지 이유가 있습니다. 하나는 통계가 부실하고 계획이 훨씬 작은 테이블에 적합하다는 것입니다. 또 다른 하나는 비뚤어진 분포로 인해 고통 받고 있다는 것이므로 특정 쿼리 값에는 적합하지만 다른 쿼리 값에는 적합하지 않은 계획이 있습니다. 또는 바인드 변수 엿보기의 불행한 선택으로 인해 어려움을 겪고있을 수도 있습니다. 그런 다음 다시 하드웨어로 연결될 수 있습니다 : 불량 디스크, dodgy interconnects, 불량 SAN 구성.

Chekhov가 관찰했듯이 성능이 좋지 않은 쿼리는 모두 자체적으로 성능이 저조합니다. 따라서 좀 더 자세한 도움이 필요하면 특정 시나리오에 대한 자세한 내용을 제공해야합니다.

+1

완전성을 위해 비용 예측 불능 성과 목록에 또 다른 이유를 추가했습니다. CBO 버그 - 자주 발생하지는 않지만 결코 배제 될 수 없습니다 – dpbradley

1

자본 지출을하기 전에 무엇인가를 사기 전에 더 많은 돈을 벌어보십시오. Explain plan은 일기 예보와 같습니다. 그것은 현실에 직면하여 붕괴 될 수 있습니다.

불쾌감을주는 쿼리가 실행되는 동안 몇 가지 작업을 수행 할 수 있습니다.

(1) 서버 시스템에 로그인하여 CPU주기 및 디스크 io 사용을 모니터링하십시오. 리눅스에서 명령어 sar -u 1 120은 2 분 동안 CPU의 유휴 데이터를 제공합니다. 유휴 CPU가없는 경우 쿼리가 계산주기를 과도하게 사용합니다. 마찬가지로 sar -d 1 120은 디스크 IO가 포화 상태인지 여부를 알려줍니다. Microsoft의 perfmon 및 Windows 작업 관리자가 Oracle 인스턴스가 호스팅되는 경우 동일한 작업을 알려줍니다.

(2) Oracle Enterprise Manager 콘솔을 사용하십시오. 데이터베이스에 로그인하고 세션 목록을보고 다양한 CPU 집중 형 세션을 살펴보십시오. 엔터프라이즈 관리자는 실행중인 쿼리와 사용중인 정확한 실행 계획을 표시 할 수 있습니다. 그들은 거대한 테이블을 풀 스캐닝하는 것처럼 많은 시간을 소비하는지 알려줄 수 있습니다.

explain plan 출력을 자세히 살펴보십시오. 전체 테이블 스캔이나 인덱스를 추가하는 것과 같은 솔루션을 제안하는 기타 불쾌한 성능 저하가 나타날 수 있습니다.