Background Image
조회 수 4011 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

Cubrid는 어떤 쿼리를 동일한 쿼리로 판단할까?

 

질의시 하드파싱된 쿼리는 PlanCache에 저장된다.  저장 후 동일 한 질의시 하드파싱 부하를 줄이기 위해서 저장하는데

CUBRID는 어떤 쿼리를 동일한 쿼리로 판단할까?  

 

우선 PlanCache에 저장된 값 확인 가능하게 서버 실행 통계정보 누적하여 볼 수 있게 세팅한다.

서버 실행 통계 정보 수집

 

Csql 사용하여 세팅

Csql>;set communication_histogram=yes

Csql>;.hist on

 

아래 명령으로 이제 누적된 실행 통계 정보를 확인할 수 있다.

$> cubrid statdump demodb

 

질의 수행에 따른 PlanCache 변화를 보고 동일 쿼리인지 확인 한다.

1. SELECT * FROM athlete

*** SERVER EXECUTION STATISTICS ***

Num_plan_cache_add            =          1

Num_plan_cache_lookup         =          2

Num_plan_cache_hit            =          0

Num_plan_cache_miss           =          2

 

한개의 쿼리가 PlanCache에 추가 되었다.

 

2. SELECT *   FROM athlete

*** SERVER EXECUTION STATISTICS ***

Num_plan_cache_add            =          1

Num_plan_cache_lookup         =          3

Num_plan_cache_hit            =          1

Num_plan_cache_miss           =          2

SELECT * 이후 띄어쓰기 하였는데 같은 질의로 보고 하드파싱 하지 않고 hit되었다.

 

3.  SELECT * FROM ATHLETE

*** SERVER EXECUTION STATISTICS ***

Num_plan_cache_add            =          2

Num_plan_cache_lookup         =          5

Num_plan_cache_hit            =          1

Num_plan_cache_miss           =          4

Table를 대문자로 변경하였는데 새로운 쿼리로 인식하고 PlanCache에 추가되었다.

 

4. select * from athlete

*** SERVER EXECUTION STATISTICS ***

Num_plan_cache_add            =          2

Num_plan_cache_lookup         =          6

Num_plan_cache_hit            =          2

Num_plan_cache_miss           =          4

Table은 대소문자로 구분하여 PlanCache에 추가 하였는데 selete문장은 대소문자를 구분하지 않고 hit 되었다.

 

5. select * from athlete where nation_code = KOR

*** SERVER EXECUTION STATISTICS ***

Num_plan_cache_add            =          3

Num_plan_cache_lookup         =          8

Num_plan_cache_hit            =          2

Num_plan_cache_miss           =          6

새로운 쿼리인 만큼 PlanCache에 추가 되었다.

 

6. select * from athlete where nation_code = JPY

*** SERVER EXECUTION STATISTICS ***

Num_plan_cache_add            =          3

Num_plan_cache_lookup         =          9

Num_plan_cache_hit            =          3

Num_plan_cache_miss           =          6

조건 값만 변경할 경우 hit 되었다.

 

7. select * from athlete where nation_code = ?  Bind KOR

*** SERVER EXECUTION STATISTICS ***

Num_plan_cache_add            =          3

Num_plan_cache_lookup         =         10

Num_plan_cache_hit            =          4

Num_plan_cache_miss           =          6

조건 값을 Bind 처리 하여 질의하여 hit 되었다.

바인드는 처음 사용하는데 기존 쿼리 조건값이 바인드 변수가 아니여도 같은 쿼리로 인식 일관성 있게 hit하고 있다.

 

8. select * from athlete where nation_code = ?  Bind JPY

*** SERVER EXECUTION STATISTICS ***

Num_plan_cache_add            =          3

Num_plan_cache_lookup         =         11

Num_plan_cache_hit            =          5

Num_plan_cache_miss           =          6

이조건은 누구나 예상하듯 hit 한다.

 

결론

띄어쓰기 무시, 예약어의 대소문자 미구분, 조건값 및 Bind 값 변경에 대하여 하나의 쿼리로 인지하고 있다.

이는 PlanCache Hit률을 높여 하드파싱 부하를 최소화 하고자 하는 CUBRID PlanCache 운용 방법을 알 수 있다.


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
34 질의작성 오류데이타검증 - 숫자 이외의 데이타 확인하는 방법 권호일 2013.01.17 21121
33 질의작성 MERGE INTO 사용 예제 ( INSERT, UPDATE문을 1개의 쿼리로 실행 ) 권호일 2015.05.01 21259
32 질의작성 A테이블의 다수의 컬럼을 B테이블로 UPDATE 하는 SQL 김승훈 2015.05.07 7416
31 질의작성 SQL튜닝 - 인덱스 활용 사례 권호일 2015.06.04 12015
30 질의작성 카디시안(한 Row를 여러 Row) 쿼리문 만들기 1 엄기호 2015.06.30 10927
29 질의작성 CUBRID dummy data생성-간단편 주현 2015.07.01 7860
28 질의작성 INSERT수행 시, 현재날짜,현재시각으로 자동 입력하는 방법 주현 2015.07.08 25218
27 질의작성 전체 테이블 UPDATE시 SELECT, UPDATE를 통한 INDEX SCAN방식으로 테이블 X_LOCK을 방지하자! file 이경오 2015.08.13 13802
26 질의작성 테이블 용량 산정 쿼리 성진 2015.12.08 7398
25 질의작성 오라클의 DBMS_RANDOM.STRING() 함수를 CUBRID 식으로 구현하는 방법 이경오 2015.12.08 7974
24 질의작성 일정 범위 임의의 정수 생성 방법(random 함수 응용) 손승일 2015.12.22 6472
» 질의작성 Cubrid는 어떤 쿼리를 동일한 쿼리로 판단할까? 이상신 2015.12.30 4011
22 질의작성 ORACLE TRIGGER를 CUBRID TRIGGER로 변환하기 김창휘 2015.12.31 6461
21 질의작성 각 테이블 PK 유무 확인 쿼리문 엄기호 2016.01.01 9021
20 질의작성 FOR UPDATE 정만영 2016.01.27 5990
19 질의작성 테이블 컬럼 변경 및 추가 정만영 2016.02.29 21863
18 질의작성 테이블 리스트 취합 SQL 김창휘 2016.03.19 5522
17 질의작성 Oracle UTL_ENCODE.TEXT_ENCODE를 CUBRID로 변환하기 김창휘 2016.03.21 4647
16 질의작성 스키마 및 인덱스 선언에 따른 최대 용량 산정을 위한 ROW SIZE 확인 성진 2016.03.21 4179
15 질의작성 ORACLE 테이블 및 컬럼 COMMENT 일광등록 스크립트 1 김창휘 2016.04.04 9337
Board Pagination Prev 1 2 3 4 Next
/ 4

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales