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

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
변별력이 떨어지는 index는 insert의 성능을 크게 저하시킵니다.
변별력이 떨어지는 index란? index의 분포가 좋지 않은 것으로 칼럼의 값이 하나의 값으로 몰려있거나 적은 수의 값이 많은 량의 데이터를 차지하는 경우입니다.
 
테스트현황:
500만건의 데이터를 변별력이 없는 index가 설정되어 있는 경우와 변별이 있는 index가 설정되어 있는 경우로 나줘 TPS와 QPS를 비교한 결과를 바탕으로 설명합니다.
 
측정수단:
cubrid broker status -b로 TPS,QPS를 확인합니다.
 
테이블 상태:
1. 테이블에 index 3개가 설정되어 있습니다.
2. PK, UNIQUE, FK 키가 있으며, FK가 참조하고 있는 테이블은 단 하나의 값('0')을 가지고 있습니다.
3. insert문이 수행 될수록 FK칼럼에 값은 계속적으로 '0'이 입력되도록 되어있습니다.
 
변별력 없는 FK가 있는 상태로 진행(FK는 index이다.)
테스트 시작:
JDBC를 이용하여, insert문 데이터를 500만건이 입력되도록 설정합니다.
 
초기(REQ 319442)
NAME PID PORT AS JQ REQ TPS QPS LONG-T LONG-Q ERR-Q
=========================================================================
* broker1 13487 33000 50 0 319442 2004 4009 0/60.0 0/60.0 0
* broker1 13487 33000 50 0 321448 2005 3990 0/60.0 0/60.0 0
...
시작 후 중반(REQ 2438861)
NAME PID PORT AS JQ REQ TPS QPS LONG-T LONG-Q ERR-Q
=========================================================================
* broker1 13487 33000 49 0 2438861 619 1237 0/60.0 0/60.0 0
* broker1 13487 33000 49 0 2439473 612 1224 0/60.0 0/60.0 0
...
위의 결과에 따르면 200만건 데이터 입력으로 인하여 최초의 TPS,QPS가 약 1/3수준으로 감소됩니다.
 
FK제거 후 테스트 진행
초기(REQ 97981)
NAME PID PORT AS JQ REQ TPS QPS LONG-T LONG-Q ERR-Q
=========================================================================
* broker1 14106 33000 50 0 97981 1643 3301 0/60.0 0/60.0 0
* broker1 14106 33000 50 0 100001 2018 4046 0/60.0 0/60.0 0
...
 
시작 후 중반(REQ 2604250)
NAME PID PORT AS JQ REQ TPS QPS LONG-T LONG-Q ERR-Q
=========================================================================
* broker1 14106 33000 50 0 2604250 1539 3064 0/60.0 0/60.0 0
* broker1 14106 33000 50 0 2605882 1629 3292 0/60.0 0/60.0 0
...
 
변별력이 떨어지는 FK삭제 후 테스트 결과 TPS, QPS의 미미한 감소는 있으나 큰 차이가 없는 것으로 확인됩니다.
FK도 index로 등록이 되므로 변별력이 떨어지는 FK의 경우 insert성능에 상당한 영향을 주는 것으로 파악됩니다.
따라서, DB생성 시 FK에 해당 하는 값이 변별력이 높지 않다면, FK를 설정하는 것을 지양하고 우회안이나 차선책을 찾는 것이 필요합니다.

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
200 질의작성 임의의 컬럼을 rownum 으로 업데이트 하기 Prototype 2009.07.01 23390
199 응용개발 JDBC 사용시 SQL 로깅 - p6spy 사용 1 웁쓰 2009.07.01 36987
198 기타 CUBRID JDBC Driver 빌드 방법 웁쓰 2009.07.01 17725
197 응용개발 weblogic 8.1 에 CUBRID Connection Pool, DataSource 설정 방법 file 웁쓰 2009.07.01 67101
196 응용개발 JDBC 커넥션 스트링에 UTF-8 명시하는법 Prototype 2009.07.03 19793
195 응용개발 그루비로 큐브리드 함수(or 프로시저) 만들기 by 행복개발자(cyberuls) 시난 2009.07.14 19474
194 CUBRID 매니저 Java SP사용시 JNI_CreateJavaVM 에러메시지 해결 방법 file seongjoon 2009.07.15 32917
193 기타 CUBRID의OLE DB 드라이버 설치 방법. file seongjoon 2009.08.24 16999
192 질의작성 CUBRID DB 내의 auto_increment 값을 초기화 하자. 손승일 2009.10.28 30671
191 운영관리 Window서버 cmd창에서 CUBRID 구동 후 cmd창을 닫을 시 DB서비스 중단 조치방법 cubebridge 2009.10.29 17200
190 CUBRID 매니저 CUBRID Manager에서 character set 변경하기[R2.0] file seongjoon 2009.10.29 18750
189 응용개발 CUBRID의 Statement pooling기능 cubebridge 2009.11.06 17657
188 질의작성 CUBRID에서 응용프로그램 쿼리 binding 구문이 있을 경우 plan의 차이 cubebridge 2009.11.06 16317
187 운영관리 cubrid.conf파일 적용의 우선 순위와 HOST적용 우선 순위 cubebridge 2009.11.14 13981
186 운영관리 CUBRID에서 데이터가 있는 칼럼의 도메인 변경 시 조치방법 cubebridge 2009.11.16 13090
185 응용개발 MySQL의 Blob타입을 CUBRID로 변환하기 cubebridge 2009.11.18 19546
» 응용개발 CUBRID에서 제약조건(PK,FK,UNIQUE),index 설정 시 주의 사항 cubebridge 2009.11.26 19574
183 응용개발 윈도우 환경에서 PHP 모듈 로드를 못 할 경우 해결법 3 Prototype 2009.11.26 25760
182 응용개발 용량이 큰 데이터를 질의로 저장하는 방법 남재우 2009.11.26 12814
181 운영관리 CUBRID 복제중인 DB 백업 중 아카이브 로그파일 삭제 방법 손승일 2009.11.26 17914
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 14 Next
/ 14

Contact Cubrid

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