Background Image

FORUM

조회 수 526 추천 수 0 댓글 13
?

단축키

Prev이전 문서

Next다음 문서

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


* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.

OS
Window Server 2012 R2 64bit
CUBRID Ver.
11.2
CUBRID TOOL Ver.
CUBRID Manager 10.2.0.0001  (64bit)
응용 환경(API)
jdbc 11.1.0.0027


* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.

 

에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------

 

오라클 DB를 마이그레이션 했는데 동일한 쿼리가 오라클에 비해 10배 이상 느립니다.

CUBRID 설치시 특별한 설정을 한것은 없습니다.

 

  • ?
    박세훈 2022.08.03 15:18
    질의와 실행계획을 첨부해주셔야 도움을 드릴 수 있겠습니다.
    https://www.cubrid.org/manual/ko/11.2/sql/tuning.html#viewing-query-plan
  • ?

    관련 부분 첨부해 드립니다.

     

    화면 캡처 2022-08-03 144030.png

     

    오라클에서 실행결과입니다.

    화면 캡처 2022-08-03 144817.png

     

     

     

  • ?
    박세훈 2022.08.03 17:07
    첨부해주신 실행계획을 확인해보면 20만 건 테이블의 조인 질의로 보입니다. 일반적인 상황보다는 수행시간이 오래 걸리는 것으로 판단됩니다.
    우선 통계정보를 갱신하고 실행계획이 동일한지 확인해보세요. 두 테이블의 데이터 수가 20만 건이 맞는지 확인해주세요.
    그리고 trace 정보를 첨부해주세요.
    https://www.cubrid.org/manual/ko/11.2/sql/tuning.html#query-profiling
  • ?
    tree1891 2022.08.03 19:11

    두 테이블 데이터는 동일합니다.

    trace 정보 첨부해 드립니다.

     

    Trace Statistics:
      SELECT (time: 5854, fetch: 678929, ioread: 0)
        SCAN (table: dba.tb_wd_docperson), (heap time: 2257, fetch: 231704, ioread: 0, readrows: 224676, rows: 223612)
          SCAN (index: dba.tb_wm_docperson.pk_tb_wm_docperson_hnn_info_bs_sn), (btree time: 2764, fetch: 447224, ioread: 0, readkeys: 223610, filteredkeys: 0, rows: 223610, covered: true)

  • ?
    박세훈 2022.08.04 15:54

    첨부해주신 trace 정보를 보면 실행계획 문제는 아닌 것으로 보입니다.
    CUBRID가 설치된 서버의 속도를 확인해보시는 게 좋을 것 같습니다. CPU 사용률 혹은 리눅스 dd 명령어를 통해 disk 속도를 확인해보세요.

     

    CUBRID 메모리 관련 시스템 파라미터를 변경하고 재시작해 보세요. data_buffer_size는 일반적으로 가용 메모리의 1/3을 권고드립니다.
    https://www.cubrid.org/manual/ko/11.2/admin/config.html#memory-parameters

  • ?
    tree1891 2022.08.04 17:54

    오라클과 동일 서버를 사용하고 있습니다.

  • ?
    tree1891 2022.08.10 13:04
    메모리 설정 변경했는데 개선이 없습니다.
  • ?
    오명환 2022.08.10 15:58
    설정값을 변경하신 후 DB 서버를 재 시작하셔야 설정값이 반영됩니다.

    질의와 실행계획을 확인해보니, outer table (tb_wd_docperson)를 filter 조건들이 NVL() 함수를 사용하고 있어 조건 컬럼들의 index가 생성되어 있어도 index scan이 아닌 full scan이 됩니다. 조건절을 index scan 할 수 있게 수정해보세요. (예를 들어 조건 컬럼에 NULL이 안들어가게 default 값을 'N'으로 설정하면 NVL()를 제거할 수 있습니다.)
  • ?
    tree1891 2022.08.10 16:21

    where 절에 있는 필드는 enum 형(Y, N)인데 인덱싱하는 의의가 있을까요?

    where 절을 삭제해도 5s 정도 걸립니다.

  • ?
    오명환 2022.08.11 09:06
    질의 수행시 4개의 조건 컬럼이 'N' 인경우의 데이터량에 따라 다릅니다.
    전체 데이터량의 1/2만 되어도 index scan이 full scan 보다 좋을 것 같네요. 특히 많은 사용자가 동시에 해당 질의를 자주 사용하는 경우에는 고려해보는 것이 좋습니다.
    (자주 사용하지 않는 질의면 굳이 index를 생성하지 않아도 될 듯 합니다.)

    조건 컬럼들이 enum type으로 'Y'와 'N' 값만 있다면 검색 속도를 높이기 위해 index 생성시 중복도가 높아져서 DML 성능 저하가 발생할 수 있습니다. 마지막 컬럼에 중복도를 낮출 수 있는 pk 컬럼과 같은 unique 컬럼 또는 중복도가 낳은 컬럼을 함께 넣어주세요.
    create index idx1 on tb_wd_docperson (dup_yn, cover_yn, doc_yn, err_yn, pk-column);

    참고로 조건 검색시 != 'Y' 보다는 = 'N' 로 직관적으로 표현하는 것이 낫을 듯 합니다.
    where dpd.dup_yn = 'N'
    and dpd.cover_yn = 'N'
    and dpd.doc_yn = 'N'
    and dpd.err_yn = 'N'
  • ?

    알려주신대로 인덱스 수정해 보았는데 개선이 없습니다.
    where절이 없어도 4s 정도 걸리는것은 어떻게 설명할수 있을까요?
    큐브리드 자체의 문제가 아니라 쿼리 튜닝으로 해결될수 있는 문제인지요...

    화면 캡처 2022-08-12 162829.png

     

  • ?
    오명환 2022.08.16 11:32
    index 생성 후 질의와 실행계획을 첨부해주시고, 해당 count(*) 질의 결과 값도 알려주세요.
    CUBRID의 join 방법은 기본적으로 NL (nested loop)을 지원하게 되어 있고, merge join은 hint를 통해 수행할 수 있게 되어 있습니다.
    plan과 count의 결과를 보고 추가적인 가이드를 해 드리도록 하겠습니다.

    질의와 관련 스키마와 인덱스 정보를 첨부해주실 수 있으면 가이드 드리는데 도움이 됩니다.
  • ?
    tree1891 2022.08.18 20:56
    where 절이 없는 경우에도 시간이 걸리는 문제를 설명해 주셨으면 합니다.
    join에 사용된 필드는 인덱스 처리가 되어 있습니다.

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 admin 2024.04.23 67
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4465
3859 convert_password.exe가 실행이 안됩니다. 1 들뿔 2008.12.16 21541
3858 Cubrid + Hibernate 관련 해서 질문좀 드릴게요.ㅜㅠ 1 병관 2012.05.06 21530
3857 HA 구성 관련하여 기술문서가 따로 있나요? 1 책보는남자 2010.11.11 21527
3856 인코딩 관련 1 song 2008.12.17 21518
3855 "Token length is too long" 오류에 관하여 질문 드립니다. 4 file 김우람 2009.01.09 21478
3854 우분투에서 php + 큐브리드를 설치하고 있습니다. 2 희야 2009.01.25 21335
3853 이중화 관련 질문 하나 더 드립니다.^^ 2 kkckc 2009.02.18 21293
3852 0.5 이하 반올림 함수가 어떻게 되나요? 4 coolbyj 2009.10.22 21274
3851 order siblings by 문의 1 유쓰 2009.10.06 21108
3850 설치시 cub_cas.exe - 시작지점 없음 오류 2 file 백곰 2009.08.13 21100
3849 php에서 insert 값이 안들어가는 경우는 뭘까요? 4 레드오리 2008.12.20 21052
3848 C/C++ 지원하는 Connection Pool API 는 없나요? 2 tekkal 2009.02.03 21009
3847 The column name is invalid. 에러메시지 좀... 1 file 논픽션Lover 2009.07.02 20965
3846 Java Procedure 실행시 한글 깨짐 1 깨달음 2012.02.07 20935
3845 CUBRIDService 를 시작할수 없습니다. 5 file 오색무지개 2013.02.15 20916
3844 Failed to connect to database server, 에러관련 질문입니다. 4 석현진 2016.12.08 20840
3843 이젠 매니저가 ㅠㅠ 1 가루구 2009.02.17 20819
3842 OleDbCommand 를 사용하는데 다음 같은 에러가 발생합니다. 2번째.. 1 hades 2008.12.10 20814
3841 한글에 upper함수 적용하면 검색이 안되는 이유? 2 장비맨 2009.05.11 20805
3840 VIEW 생성 - SUM(DECODE(...))함수 사용에 대한 문의 1 kst 2013.10.30 20740
Board Pagination Prev 1 ... 3 4 5 6 7 8 9 10 11 12 ... 200 Next
/ 200

Contact Cubrid

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