같은 실행계획 다른 결과 0 6 2,202

by ALLinONE [Oracle Tuning] [2023.03.14 15:13:39]


실행계획.zip (6,852Bytes)

안녕하세요. 
DB 잘 알고 싶은 개발자입니다.

인터넷을 찾아봐도 잘모르는 부분이 있어, 고수님들께 질문드리려 찾아뵙게 되었습니다.

힌트를 추가하면서 쿼리를 많이 실행했을때 옵티마이저가 영향을 받나요?


 * 이중화된 오라클 DB 2EA(데이터 동일)
[1]. 아래 쿼리 중 hint 를 제외한 부분을 DB#2에서 실행 
[2]. [1]번 실행계획 참조해 DB#1 힌트 추가 - 동일한 실행계획 나오도록

=> DB#1(힌트 추가버전), DB#2(힌트제거버전)  각각 실행계획 비교시 COST와 CARDINALITY 다름
=> DB 2대에서 동일한 쿼리 실행계획 조회시에도 다름 ( 힌트 제거, 힌트 추가 각 각) 
=> 아래 쿼리 말고 완전히 다른 쿼리 실행시 실행계획 동일

해당쿼리에 대해 다른 결과가 나오는 이유를 모르겟습니다.
어느 부분을 확인해바야 할지문의드립니다.

(...쿼리삭제...)
by 마농 [2023.03.14 16:19:30]

결과가 어떻게 다른가요? 구체적으로


by ALLinONE [2023.03.14 16:30:37]

1. 힌트를 사용했던 DB(DB#1)에서 조회시 특정구간 조인 이후에 COST와 CARDINALITY가 높습니다.

힌트사용 - DB#1 CARDINALITY:29914 / COST:40824

힌트미사용 - DB#2 CARDINALITY:6477/ COST:15674

 

2. 힌트르 제외한 쿼리를 두 DB에서 실행할 경우에도 한쪽DB에서 COST와 CARDINALITY가 높습니다.

힌트미사용 - DB#1 CARDINALITY:29944 / COST:20512

힌트미사용 - DB#2 CARDINALITY:6485/ COST:15693

 

첨부파일 받으셔서 보시면 자세히 볼수 있습니다.


by 마농 [2023.03.14 16:51:11]

결과가 다른게 아니라, 실행계획 또는 실행계획에 표시괴는 수치가 다른 거군요.
같은 쿼리 같은 데이터에 결과가 다르다고 하셔서 그럴리가 있나? 했네요.
질문하실때 표현을 정확하게 해주셔야 합니다.

데이터가 같다고 해도
- 서버 환경이 다를 수 있습니다.
- 통계정보가 다를 수 있습니다.
통계정보를 갱신해 보세요.
http://gurubee.net/lecture/2918


by ALLinONE [2023.03.14 17:31:49]

감사합니다.

공유해주신 자료에 통계테이블(DBA_TABLES, DBA_INDEXES)에는 권한이 없어서 확인해볼수가 없네요 ㅠㅠ

2개 DB USER_TAB_STATISTICS, USER_IND_STATISTICS 테이블의 통계정보는 동일한데 

이외 옵티마이저에 영향주는 부분이 있을까요??

 

한쪽 db서버에서만 힌트추가한 쿼리를 많이 실행해 이부분이 영향이 있을지 싶어서요


by 마농 [2023.03.14 17:35:00]

dba_ 대신 user_ 뷰를 이용해 보세요.


by ALLinONE [2023.03.14 17:45:54]

공유해주신 자료에 보니 옵티마이저가 영향받는 부분 보니 아래정도 있는것으로 보이네요

테이블 통계 , 인덱스 통계 ,칼럼 통계 ,시스템 통계 (CPU 속도, 평균적인 I/O 속도, 초당 I/O 처리량 등)

 

이전 실행했던 쿼리도 영향이 있는지 궁금했엇는데.. 이부분은 조금더 찾아봐야겟네요ㅠㅠ

도움 많이 됫습니다. 감사합니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입