변별력이 떨어지는 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를 설정하는 것을 지양하고 우회안이나 차선책을 찾는 것이 필요합니다.
Prev embedded sql 에서 char 사용시 주의 사항 embedded sql 에서 char 사용시 주의 사항 2008.11.21by admin MySQL의 Blob타입을 CUBRID로 변환하기 Next MySQL의 Blob타입을 CUBRID로 변환하기 2009.11.18by cubebridge

응용개발

CUBRID에서 제약조건(PK,FK,UNIQUE),index 설정 시 주의 사항

by cubebridge posted Nov 26, 2009

Articles

1 2 3