Background Image

FORUM

조회 수 16427 추천 수 0 댓글 8
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

지난 2주 동안..

큐브리드로의 마이그레이션과 환경 최적화를 위해..

여러가지 많은 시도들을 했습니다.


Q&A 게시판에 많은 질문 글을 등록했고, 답변도 받았고..

버그를 찾기도 했습니다..


마이그레이션이 끝나면,

성능 상의 문제는 전혀 없을 것이라 생각했지만..


서버를 튜닝해봐도..

큐브리드의 쿼리 처리 속도는 개선되지 않는 다는 것과

현재의 DB로는 큐브리드를 사용할 수 없다는 결론을 내렸습니다.


100만개 row를 가진 테이블을 테스트 했고,

큐브리드의 select 문에 대한 처리 속도는 안정적입니다.

count(*) 등은 mysql에 비해 빠른 것으로 테스트 결과를 얻었습니다.


문제는 다른 쿼리문에 대한 처리 속도인데..

delete, update 등.. 

80만개에 대한 쿼리에 대해서..

처리 시간을 알 수가 없었습니다..

4시간이 넘어도 종료되지 않아서, 강제 종료를 했습니다..

더 기다린 것은 무의미하단 결론을 내렸습니다..


지금 마지막으로..

delete 문을 한번 더 실행하고 있는데..

delete from xe_documents WHERE regdate LIKE '2010%'and (module_srl = ** or module_srl = **);

한시간이 경과된 상태입니다.. (regdate, module_srl 등은 모두 인덱스가 걸려 있습니다..)


한달여간 큐브리드 버전으로 작업한 프로그램과 서버 구성은,,

모두 다 롤백을 해야할 것 같습니다....


지난 9월부터 utf8 지원 요청을 시작으로..

많은 기대를 했었는데.. 좀 아쉽네요..


큐브리드를 사용하기 위해서 utf8이 지원되길.. 3개월이 넘게 기다렸는데 말이죠.. 


큐브리드가 더욱 발전하길 바랍니다..


문제들이 개선되면, 

그 땐, 다시 큐브리드를 사용하고 싶네요..


그 동안, 친절한 답변에 감사드립니다.

앞으로 더 노력해 주세요. ^^

감사합니다.



  • ?
    밝은미소 2011.01.11 00:45

    조건식을 인덱스를 확실하게 타게 하려면 USING INDEX를 사용하심이 어떨지요~.

    지금 = 조건으로 module_srl을 사용하고 있으니, 이 부분만 인덱스 타게 만들어도 성능이 나오지 않을까 생각됩니다.

    아래 매뉴얼 참고하시어 USING INDEX를 한번 써 보시길 권장해 드립니다.

    http://www.cubrid.com/online_manual/cubrid_831/syntax/syntax_retreive_index.htm

  • ?
    스마트 2011.01.11 03:31

    USING INDEX 사용해 보겠습니다.

    1시 30분에 시작한 본문의 쿼리는 6시에 강제 종료했습니다.

    csql -s 로 복구하는데.. 지금까지의 경험으로 보면..

    실행시간 만큼의 복구 시간이 필요하더군요..

    10시나 11시쯤  USING INDEX 를 활용해서 쿼리를 한번 더 던져 보겠습니다..

    잘되면 좋겠네요.. 그럼 큐브리드를 계속 사용할 수 있을텐데요.. ^^

  • ?
    장현석 2011.01.11 03:43

    어제 메일드린 mcpjang입니다.

    만약 USING INDEX 적용 후에도  성능 개선이 없으시면 부담없이 연락 주세요..

    원격으로  이상 원인을 확인해 드리겠습니다.  

  • ?
    샤롱스판 2011.01.11 03:44

    조건절을 약간씩 변경해보시면서 using index reg_time_idx 또는 using index module_srl_idx 등을 시도하시는 것도 좋을 듯 합니다. 인덱스 컬럼 값 분포도를 잘 모르기 때문에.. 선 조건에 module_srl을 먼저 준다던가..or 조건 대신 in을 쓴다던가. reg_time을 타게 한다던가, module_srl을 타게 한다던가.. 등등 제품마다 옵티마이저의 동작 방식이 다르기 때문에 실행 시간을 보시면서 튜닝을 하시면 좋을 것 같습니다. 

    delete from xe_documents WHERE regdate LIKE '2010%'and (module_srl = ** or module_srl = **);

    --> delete from xe_documents WHERE module_srl IN (**, **) and regdate LIKE '2010%' using index ~~~;

    --> delete from xe_documents WHERE regdate LIKE '2010%' and module_srl IN (**, **) using index ~~~;

  • ?
    스마트 2011.01.11 13:16 SECRET

    "비밀글입니다."

  • ?
    스마트 2011.01.12 10:27

    도움 주셔서 감사합니다.

    원격지원으로 환경설정도 해주시고, 여려모로 도움을 많이 받았습니다.

    감사의 마음을 다시 한번 전합니다.


    좋은 결과로 이어졌으면 좋았을텐데..

    아쉽게도 기대했던 성능 향상으로까지는 연결되지 못했습니다.


    여러 테스트 결과..

    큐브리드를 통한 데이터 삭제 시,

    10,000건당 약 15분의 삭제 시간이 소요됨을 확인했습니다.


    쿼리문에 rownum between 1 and 100000 형태의 조건을 추가해서

    1만개, 10만개 단위로 테스트를 했습니다.

    1만개에 15분, 10만개에 2시간 반정도가 소요되었구요.

    100만개 단위로 테스트를 하다가, 

    log사이즈가 너무 커져서.. hdd디스크 용량 full로 fatal 에러가 발생하여 쿼리가 중단되었습니다.

    100만개 짜리 쿼리 자체는 3시간 정도 진행된 상태였고, 

    1만개 기준 15분으로 보면.. 약 25시간 정도의 삭제 시간이 예상되었습니다.


    인덱스를 사용한 삭제 처리였고,

    현재 원하는 서비스 환경에는 적절하지 않다고 판단이 되었습니다..


    한달여간 나름의 노력을 했고, 큐브리드 직원분들에게 많은 지원을 받았는데 

    좋은 결과로 이어지지 못해서 아쉽네요..


    향후에는 쿼리 처리 속도면에서 개선이 이루어지길 바라겠습니다.

    감사합니다.




  • ?
    샤롱스판 2011.01.11 19:50

    USING INDEX 다음에 오는 인덱스는 조건절에 명시된 컬럼(즉, regdate와 module_srl)만 포함해야 하고, 다른 컬럼을 품고 있으면 그걸 안타고 순차스캔을 합니다~ 지금 명시한 인덱스는 다른 컬럼을 포함하고 있네요~

  • ?
    샤롱스판 2011.01.11 01:10

    여러모로 노력하셨는데 일단 너무 안타깝습니다. 적절하게 참고할 만한 자료들이 없어서 더욱 고생이 많았을텐데요.. 다만, 인덱스를 안타고 풀스캔한다고 해도 백만 레코드에 대해 저렇게 나오는 것은 매우 비정상적인 시간이고, 마이그레이션 이후 DB 사이즈가 5배나 크게 잡힌다는 것도 매우 이상하고요.. 쿼리들은 CM에서 실행하신건지, CSQL에서 실행해도 똑같이 그런지.. CMT가 string타입에 대해 3배수로 컬럼 사이즈를 크게 잡는데 그 영향도 조금 있을 것 같고요..또 data_buffer 사이즈 등 서버 파라미터 설정도 영향이 있었을 것이고.. 앞으로 마이그레이션 전환 사용자를 위한 많은 문서들을 준비해야 할 것 같습니다. 수고하셨습니다. 


List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4443
3707 UTF-8 한글이 깨집니다. 5 코난7 2011.04.30 16473
» 큐브리드 쿼리 처리 속도에 대한.. 8 스마트 2011.01.10 16427
3705 Clob Insert 시 Java heap space 에러 문의드립니다. 2 김상윤 2013.05.10 16401
3704 페도라 10에서 큐브리드 rpm 설치시 오류 1 스나이퍼 2009.03.26 16391
3703 SELECT 시, 필드 값의 대소문자 구분 없이 조건 검색 가능할까요? 2 차오이 2011.04.02 16380
3702 저장 프로시저 작성법 1 webdoors 2010.03.14 16379
3701 java PreparedStatement 변수 바인딩 시 에러 1 빛돌 2012.08.04 16350
3700 Java VM is not running....문제입니다 1 수수 2011.04.29 16348
3699 OLEDB insert관련 질문입니다. 1 garfield39 2009.02.05 16334
3698 jsp 연결~~ 1 하이에나 2009.11.10 16333
3697 이클립스 DBViewer에서 1분정도 지나면 컨넥션이 끊어집니다. 2 천타에 허리한번 펴자 ㅡㅡ; 2009.06.04 16332
3696 mysql에서 limit와 같은 기능이 있나요? 1 홍서기 2009.03.14 16332
3695 double 표시형식 문의 2 지렸당께 2011.12.18 16275
3694 [문의]임베디드 SQL 개발시 참고해야 할 기술문서가 어디있는지요? 1 victory 2009.01.22 16269
3693 cubrid broker fail문제 1 왠키 2016.12.13 16262
3692 Cannot communicate with the broker 오류 2 미스터투 2013.04.16 16251
3691 Cubrid iBatis Cursor 예제좀 부탁드립니다. 1 깨달음 2012.03.21 16250
3690 오라클에서 큐브리드 데이터 이관 1 으라챠챠 2016.12.07 16239
3689 cubridmigration toolkit 이용시 2 쩡저리 2013.11.07 16235
3688 mysql 데이트 컬럼 자르기 문의 2 초보 2010.03.31 16213
Board Pagination Prev 1 ... 10 11 12 13 14 15 16 17 18 19 ... 200 Next
/ 200

Contact Cubrid

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