1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 안녕하세요. DB 잘 알고 싶은 개발자입니다. 인터넷을 찾아봐도 잘모르는 부분이 있어, 고수님들께 질문드리려 찾아뵙게 되었습니다. 힌트를 추가하면서 쿼리를 많이 실행했을때 옵티마이저가 영향을 받나요? * 이중화된 오라클 DB 2EA(데이터 동일) [1]. 아래 쿼리 중 hint 를 제외한 부분을 DB#2에서 실행 [2]. [1]번 실행계획 참조해 DB#1 힌트 추가 - 동일한 실행계획 나오도록 => DB#1(힌트 추가버전), DB#2(힌트제거버전) 각각 실행계획 비교시 COST와 CARDINALITY 다름 => DB 2대에서 동일한 쿼리 실행계획 조회시에도 다름 ( 힌트 제거, 힌트 추가 각 각) => 아래 쿼리 말고 완전히 다른 쿼리 실행시 실행계획 동일 해당쿼리에 대해 다른 결과가 나오는 이유를 모르겟습니다. 어느 부분을 확인해바야 할지문의드립니다. (...쿼리삭제...) |
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
첨부파일 받으셔서 보시면 자세히 볼수 있습니다.
결과가 다른게 아니라, 실행계획 또는 실행계획에 표시괴는 수치가 다른 거군요.
같은 쿼리 같은 데이터에 결과가 다르다고 하셔서 그럴리가 있나? 했네요.
질문하실때 표현을 정확하게 해주셔야 합니다.
데이터가 같다고 해도
- 서버 환경이 다를 수 있습니다.
- 통계정보가 다를 수 있습니다.
통계정보를 갱신해 보세요.
http://gurubee.net/lecture/2918