조회 수 19698 추천 수 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
번호 분류 제목 글쓴이 날짜 조회 수
100 운영관리 CUBRID 복제중인 DB 백업 중 아카이브 로그파일 삭제 방법 손승일 2009.11.26 18036
99 응용개발 용량이 큰 데이터를 질의로 저장하는 방법 남재우 2009.11.26 12932
98 응용개발 윈도우 환경에서 PHP 모듈 로드를 못 할 경우 해결법 3 Prototype 2009.11.26 25913
» 응용개발 CUBRID에서 제약조건(PK,FK,UNIQUE),index 설정 시 주의 사항 cubebridge 2009.11.26 19698
96 응용개발 MySQL의 Blob타입을 CUBRID로 변환하기 cubebridge 2009.11.18 19632
95 운영관리 CUBRID에서 데이터가 있는 칼럼의 도메인 변경 시 조치방법 cubebridge 2009.11.16 13197
94 운영관리 cubrid.conf파일 적용의 우선 순위와 HOST적용 우선 순위 cubebridge 2009.11.14 14090
93 질의작성 CUBRID에서 응용프로그램 쿼리 binding 구문이 있을 경우 plan의 차이 cubebridge 2009.11.06 16416
92 응용개발 CUBRID의 Statement pooling기능 cubebridge 2009.11.06 17774
91 CUBRID 매니저 CUBRID Manager에서 character set 변경하기[R2.0] file seongjoon 2009.10.29 18955
90 운영관리 Window서버 cmd창에서 CUBRID 구동 후 cmd창을 닫을 시 DB서비스 중단 조치방법 cubebridge 2009.10.29 17278
89 질의작성 CUBRID DB 내의 auto_increment 값을 초기화 하자. 손승일 2009.10.28 30906
88 기타 CUBRID의OLE DB 드라이버 설치 방법. file seongjoon 2009.08.24 17205
87 CUBRID 매니저 Java SP사용시 JNI_CreateJavaVM 에러메시지 해결 방법 file seongjoon 2009.07.15 33153
86 응용개발 그루비로 큐브리드 함수(or 프로시저) 만들기 by 행복개발자(cyberuls) 시난 2009.07.14 19579
85 응용개발 JDBC 커넥션 스트링에 UTF-8 명시하는법 Prototype 2009.07.03 19901
84 응용개발 weblogic 8.1 에 CUBRID Connection Pool, DataSource 설정 방법 file 웁쓰 2009.07.01 67319
83 기타 CUBRID JDBC Driver 빌드 방법 웁쓰 2009.07.01 17921
82 응용개발 JDBC 사용시 SQL 로깅 - p6spy 사용 1 웁쓰 2009.07.01 37169
81 질의작성 임의의 컬럼을 rownum 으로 업데이트 하기 Prototype 2009.07.01 23523
Board Pagination Prev 1 ... 5 6 7 8 9 10 11 12 13 14 Next
/ 14

Contact Cubrid

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

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

나눔고딕 사이트로 가기

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5