Background Image
조회 수 4010 추천 수 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
번호 분류 제목 글쓴이 날짜 조회 수
279 운영관리 csql 데이터 입력방법 정만영 2009.06.09 213310
278 마이그레이션 CUBRID vs MySQL vs ORACLE SQL 타입별 비교 정만영 2013.07.12 69161
277 응용개발 weblogic 8.1 에 CUBRID Connection Pool, DataSource 설정 방법 file 웁쓰 2009.07.01 66306
276 응용개발 WHERE 조건에서 다중 컬럼 IN절 처리 최적화 방법 (cubrid + ibatis) 1 이상신 2015.08.21 55135
275 응용개발 Weblogic 10.0 사용시 JDK 1.5를 사용한 JDBC 드라이버 사용시 주의사항. cubebridge 2012.02.22 51957
274 마이그레이션 타 DBMS를 CUBRID로 마이그레이션 시 varchar,char 컬럼 사이즈 관련 손승일 2010.07.01 38024
273 질의작성 데이터 존재하면 update, 존재하지 않으면 insert 방법(ON DUPLICATE KEY UPDATE) 손승일 2010.08.11 37999
272 질의작성 예약어를 테이블명이나 컬럼명으로 사용시 admin 2008.11.21 37422
271 응용개발 JDBC 사용시 SQL 로깅 - p6spy 사용 1 웁쓰 2009.07.01 36001
270 기타 좀비 프로세스 일괄 삭제하기 janus 2009.12.12 34954
269 응용개발 CUBRID AUTO_INCREMENT 컬럼 MySQL LAST_INSERT_ID() 대체 방법 손승일 2009.12.22 33235
268 운영관리 CUBRID에서의 BLOB/CLOB 사용시 백업 및 복구에 대한 주의 점 cubebridge 2012.09.18 33157
267 마이그레이션 MySQL의 limit 명령어 처리 1 admin 2008.11.21 32685
266 CUBRID 매니저 Java SP사용시 JNI_CreateJavaVM 에러메시지 해결 방법 file seongjoon 2009.07.15 32043
265 응용개발 php에서 serialize/unserialize 사용 시 주의할 점 시난 2009.12.29 31628
264 운영관리 CUBRID 사용시 방화벽 설정 3 admin 2008.11.21 30996
263 마이그레이션 CUBRID 하위버젼에서 CUBRID2008로의 업그레이드 방법 1 남재우 2008.12.06 30154
262 운영관리 큐브리드 사용포트 정리 3 정만영 2009.06.19 29776
261 질의작성 CUBRID DB 내의 auto_increment 값을 초기화 하자. 손승일 2009.10.28 29732
260 응용개발 CUBRID와 Oracle에서의 ''(공백)의 차이 비교 cubebridge 2010.10.01 28583
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 14 Next
/ 14

Contact Cubrid

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