Background Image

FORUM

조회 수 531 추천 수 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 115
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4474
3960 한글테이터 깨짐현상 1 jmhoya 2016.05.20 8797
3959 한글이 깨지네요 2 썬해바라기 2009.12.16 10314
3958 한글을 입력받아 한글을 리턴하는 CUBRID JAVA StoredProcedure 작성시 window 환경에서 리턴 값이 깨져서 출력 됨 2 두목원슝 2023.03.22 167
3957 한글에 upper함수 적용하면 검색이 안되는 이유? 2 장비맨 2009.05.11 20805
3956 한글명 테이블에 blob 저장 오류 1 테스트라 2022.03.17 118
3955 한글메세지 출력 방법에 대해서.. 4 모야 2010.02.25 12525
3954 한글깨짐현상 문의드립니다. 1 file 슬픈공돌이 2019.10.22 1496
3953 한글깨짐 문제입니다 2 라히 2014.08.06 10383
3952 한글깨짐 문의드립니다 1 곰팅팅이 2015.10.21 5859
3951 한글 컬럼 comments 변경은 어떻하는거죠? 아무리 봐조 모르겠습니다. 1 덴드로비움 2020.09.09 546
3950 한글 입력 관련 문의드립니다. 1 로니킴 2014.08.18 7516
3949 한글 깨짐이 발생하고 있습니다. 2 file 하늘꿈 2015.07.10 9209
3948 한글 깨짐 문제 2 지산 2013.04.16 16056
3947 한글 깨짐 1 짱똘 2009.09.23 16784
3946 한글 관련 문제로 문의 드립니다. 5 secret 쫑구 2009.06.04 25
3945 한글 like 조회 관련 문의 3 뺀돌스 2019.02.14 952
3944 한국방송통신대학교 과제에 큐브리드 사용시 에러 질문 입니다. 2 file 대모산까치 2021.09.26 474
3943 한 번에 여러 컬럼 추가 하는 SQL문 1 ohgeumjin 2020.08.10 583
3942 한 ROW 의 크기를 알 수 있는 방법이 있나요? 2 유니콘 2011.03.09 10761
3941 하이버네이트 페이징 처리 관련 재문의 1 질주하는구 2015.02.27 4582
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