Background Image

FORUM

조회 수 525 추천 수 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 31
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4457
3953 큐브리드 DB에 테이블 생성 후, 저장된 데이터 LIKE 조건 안되는 현상입니다. 1 file 하코 2024.01.24 92
3952 실 ip db서버 이중화 관련 질문 1 zexpand 2024.01.18 92
3951 SQLGate for CUBRID (CUBRID v9.3 and later) 폐쇄망 사용법? 1 임소식 2024.01.18 78
3950 큐브리드 파일 읽기 쓰기 문의 1 임소식 2024.01.18 348
3949 CUBRID Manager 윈도우 버전 배포 해주세요. SQLGate for CUBRID 버그가 많아요. 2 도프 2024.01.17 105
3948 Cubird db 접속 문제 1 file 폰호두 2024.01.17 91
3947 Django Cubrid DB Conntection Error 4 thejoin 2024.01.16 98
3946 CUBRID DB 접속 불가 1 file 싸뤼 2024.01.16 79
3945 Cubrid admin localhost 연결 불가 7 file 싸뤼 2024.01.12 142
3944 파티션 테이블 성능 문의 4 file 방글이 2024.01.11 116
3943 트리거 삭제 오류 1 file slqk135 2024.01.08 91
3942 restoredb 시 log 내용 문의 1 file 별하나에 2024.01.08 76
3941 파티션 테이블 대량 DROP 처리 문의 (ibatis) 1 방글이 2024.01.04 79
3940 JAVA SP 에서 addBatch 오류 문의 1 방글이 2024.01.03 84
3939 DB서버 에러로그 1 file leeee 2023.12.27 120
3938 오라클의 SUBSTRB 기능 문의 3 방글이 2023.12.26 110
3937 멀티host상태에서 admin툴 로그인방법 문의합니다 2 file 원샷 2023.12.20 100
3936 DB 서버가 start 되지 않아 문의드립니다. 4 그로구 2023.12.19 129
3935 Rocky Linux 9에 큐브리드 9.3버전 설치 3 범이 2023.12.19 100
3934 인덱스 사용 관련하여 문의드립니다. 1 neighbor 2023.12.12 113
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 200 Next
/ 200

Contact Cubrid

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