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 4442
1207 큐브리드 매니져에서 sql 질의시 오류발생하면 한글메시지가 깨져보입니다. 1 풍운룡 2013.08.14 9938
1206 webservice로 데이터 입력시 한글이 점으로 입력되는 문제 4 알칸펠 2013.11.05 9945
1205 컬럼의 길이를 잘못 가져옵니다. rs.getMetaData.getColumnDisplaySize(1); 1 검풍이 2013.01.22 9950
1204 브로커의 sql로그 분석하면 File(log_top.q) open error 라고 뜹니다. 4 안토니오 2010.07.24 9954
1203 SQL 에러 질문 1 카르마 2010.10.16 9958
1202 큐브리드에도 테이블 정보를 담고 있는 DB가 있나요? 2 파란토끼 2013.09.27 9959
1201 리눅스 환경에서 자동실행.... 1 석균 2012.06.25 9963
1200 cubridmanager 의 호스트 목록이 가끔 사라집니다. 1 하야로비 2010.03.19 9975
1199 비쥬얼 스튜디오 2005에서 MFC로 프로그램을 개발 했을 때의 DB 연결 2 틈새 2013.03.06 9980
1198 해시분할 문의 2 초보 2010.04.10 9983
1197 C++ Embedded SQL에서 호스트 변수로 클래스 데이터 선언 가능 여부 문의 1 리겔 2012.04.20 9983
1196 디비 사용자 추가시 오류 문의드립니다. 1 큐브초보 2010.03.24 9984
1195 QTADO와 OLEDB사용시 문제 4 flypig 2010.01.29 9989
1194 oracle_style_empty_string 의 설정 관련 group_concat 함수 사용 문제 1 혁이 2013.07.18 9995
1193 data_buffer_page 를 300000 이상으로 늘렸더니 1 초보 2010.02.02 9996
1192 visual-sql 설치 파일 2 무시2 2010.09.29 10000
1191 src.rpm에 있는 소스 중 1 아주가끔은 2009.10.16 10000
1190 [초보질문] 쿼리편집기에 대한 질문입니다. 2 몰라몰라 2011.08.28 10002
1189 서브쿼리 관련 질문입니다. 7 눈꽃 2009.10.19 10004
1188 Cubird 9.1 버전 single_byte_compare 속성 1 하루야 2013.04.17 10006
Board Pagination Prev 1 ... 135 136 137 138 139 140 141 142 143 144 ... 200 Next
/ 200

Contact Cubrid

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