* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
Window7 32bit, Linux 64bit 등 | |
[cubrid_rel] 수행 결과 | |
[도움말]-[버전정보] 확인 | |
java, php, odbc 등 입력 |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
1300건~ 1500 건의 레코드를 반복적으로(2~5초간격으로) 저장하여야 하는데 저장속도를 빠르게 하는 방법을 문의합니다...
문의하신 부분에 대해서 답변드립니다.
1. 인덱스
INSERT/UPDATE/DELETE시 인덱스 개수가 많으면 속도가 느려질 수 있습니다.(내부적으로 정렬목적) 적절한 개수의 인덱스를 구성해야 합니다.
2. 파싱 최소화
INSERT 구문이 수행시에도 파싱이 발생합니다. Prepared statement 구현과 함께 다수의 행을 insert할 경우
insert into tab1 values ( ?,?,?),
(?,?,?),
....;
이런식으로 구현될 경우 한 번 파싱으로 데이터를 입력할 수 있습니다.
3. 테이블 관리측면
문의하신 내용상으로 미루어 보아 5초에 1500건, 1분에 18000건, 1시간에 1080000, 하루 25920000건으로 추측이 됩니다.
하나의 테이블로 저장하게 되면 사후관리 및 성능적인 측면에 문제가 발생할 수 있습니다. Partition 또는 일/주/월단위로 관리하는 것으로 응용과 홤께 고려해야 할 듯 합니다.
insert하려는 데이터의 유형(integer/varchar etc..) 및 응용적인 측면을 충분히 고려하시길 바랍니다.