1. 테스트 배경
장비 이전 또는 엔진 버전 업그레이드할 때, 스키마와 데이터를 마이그레이션 하여야 한다. 이를 위해 큐브리드는
관리자 유틸리티인 cubrid unloaddb/cubrid loaddb를 지원하고, CM에서도 이와 동일한 데이터베이스
언로드/로드 기능을 지원한다. 운영자는 환경에 따라 다양한 옵션을 적용하여 작업 시간을 단축할 수 있다.
아래테스트는 cubrid unloaddb/loaddb 유틸리티가 지원하는 옵션을 적용하면서 작업 시간을테스트한 결과이다.
2. 테스트 환경 및 시나리오 소개/결과
* 테스트 환경
- 테스트장비 스펙 : SONY VAIO PCG시리즈
Intel® Core™ i5-2520M CPU@ 2.50GHz / RAM 4.00GB
- OS : Windows7 Enderprise K 32bit
- CUBRID : 2008 R4.0(8.4.0.1008)
- CUBRIDManager : 2008 R4.0 (8.4.0.2014)
- 데이터베이스크기 : 5.03GB (1,320,690page)
- 테이블 : 129개
- Object(Data): 13369902 objects
- Index: 263 (PK제외)
* 시나리오 소개
l 콘솔창에서 직접 유틸리티를 실행하고, CM의 언로드/로드기능을 실행하여 작업 시간 비교
l cubrid unloaddb•loaddb 유틸리티가 지원하는 옵션을 추가하면서 작업 시간 비교
CM에서 데이터베이스 로드 옵션을 아래와 같이 제공한다.
운영자가 적절하게 옵션을 선택하여 작업시간을 단축할 수 있다.
<< CM의 로드 옵션 화면 >>
CMT에서도 타겟 DB가 오프라인일 때 내부적으로 cubrid loaddb를 사용하는데,
이 경우도 마찬가지로 아래 이미지와 같이 옵션을 모두 적용하면 더욱 빠르게 작업을 수행할 수 있다.
<<CMT의 마이그레이션 마법사 6단계 : loaddb 옵션화면 >>
3. 테스트 결과
OPTION이름 | 스키마+데이터+인덱스 | 스키마+데이터 | CM을 이용한 | |
내보내기 | DB정지상태에서 언로드( -S ) | 01분 15초 | - | 02분 11초 |
DB구동 중일 때 언로드 ( -C ) | 01분 30초 | - | 02분 21초 | |
가져오기 | 문법검사하지 않고 데이터 로드 | 19분 19초 | 09분 29초 | 23분 10초 |
OID 사용 안함 | 18분 40초 | 12분 00초 | 29분 10초 | |
통계 정보 갱신 사용 안함 | 17분 35초 | 13분 41초 | 23분 01초 | |
로드 중에 로그를 남기지 않음 | 14분 13초 | 5분 20초 | - | |
로드 커밋 주기 ( -c 500) | 20분 29초 | 10분 35초 | 21분 55초 | |
로드 커밋 주기 ( -c 5000) | 21분 15초 | 10분 00초 | 22분 18초 | |
로드 커밋 주기 ( -c 10000) | 19분 59초 | 10분 31초 | 19분 45초 | |
FullOption (--load_only -c10000 --no-oid --no-statistics –no—logging) | 13분 22초 | 03분 42초 | 18분 38초 | |
NoOption(Default) | 20분 01초 | 10분 11초 | 20분 05초 |
<<데이터베이스내보내기/가져오기(unload/load) 옵션/수행방법에 따른 테스트 결과>>
l 요약 1>
데이터베이스 언로드는 온라인 vs 오프라인에 따른 작업 시간 차이가 없다.
다만, 콘솔 유틸리티를 실행하는 경우가 CM 실행 시간보다 더 빠르다.
l 요약 2>
데이터베이스 로드는 콘솔 유틸리티 실행이 CM 실행보다 더 빠르다.
CM 클라이언트- CM 서버를 거치면서 성능을 감소시키는 것으로추정되며,
도구 개발팀에서 원인 분석 중이다.
l 요약 3>
커밋 단위(-c 옵션)는 본 테스트에서는 10000일 때 가장 빨랐다.
레코드 크기에 따라 5,000~10,000 수준으로 조정할 수 있다.
l 요약 4>
로깅 옵션(--no-logging)을 추가하면 데이터 입력 도중 로깅을 하지 않을므로
성능이 훨씬 향상되고 작업 시간을 크게 단축시킬 수 있다.
단, 작업 도중 장애가 발생하는 경우 복구가 불가능하므로,
처음부터 다시마이그레이션을 수행하여야 한다. 이 옵션은 빈 DB에 데이터를 이전하는 경우
유용하다.
l 요약 5>
통계 정보 갱신 옵션(--no statistics)을 추가하면 데이터를 입력하면서 DB의 통계정보를 갱신하지
않으므로, 성능이 향상된다. 주의할 점은, 운영자가 반드시 이전 작업 후에 수동으로 통계정보를
갱신해주어야 정상적인 조회 결과를 얻을 수 있다.
cubrid optimizedb <db_name> 유틸리티 또는 UPDATE STATISTICS ON문을 실행 하여야 한다.
l 요약 6>
cubrid loaddb 유틸리티는 [스키마 로드à 데이터로드à 인덱스 로드]순으로 동작하는데,
테이블 크기 및 정의된 인덱스에 따라 인덱스 로드 시간이 오래 걸릴 수 있음을 감안하고
마이그레이션 작업 시간을 예측하여야 한다.
4. 결론
빈 데이터베이스에 대량 데이터를 옮기는 경우, 작업 시간 단축을 위해서는 CM 또는 cubrid loaddb
유틸리티의 옵션으로 --no-statistics 옵션 또는/및 --no-logging옵션을 적용할 수 있다.
다만, 마이그레이션작업 완료 후 cubrid optimizedb 를 실행하여 통계 정보 및 최적화를 반드시 수행
하여야 한다.
데이터베이스 마이그레이션 관련 매뉴얼 바로가기
cubridunloaddb,loaddb 유틸리티 / CUBRIDManager 로드 , 언로드 / CUBRIDMigration Toolkit
출처: http://cafe.naver.com/studycubrid/866