Background Image

FORUM

조회 수 9715 추천 수 0 댓글 9
?

단축키

Prev이전 문서

Next다음 문서

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

안녕하세요.

 

큐브리드 사용시 궁금한점이 생겨서 문의드립니다.

 

 

스키마는 동일하고 테이블명만 다른 테이블이 두개가 있습니다.

 

 

A 테이블에는 사용자에게 노출하기 전의 자료가, B 테이블에는 사용자에게 노출하는 자료가 들어 있습니다.

 

관리자는 A, B 테이블을 union all로 묶은 뷰를 사용해서 조회를 하고, 사용자는 B 테이블만 조회를 합니다.

 

 

A 테이블에는 600개의 자료가, B 테이블에는 35만개 정도 자료가 들어 있습니다.

 

 

문제는  A, B 테이블 자료를 인덱스가 걸린 필드를 이용해 갯수를 쿼리해 보면 15ms 씩 걸립니다.

 

그런데 A, B 테이블이 묶여있는 뷰를 조회를 하게 되면 5초 이상 걸립니다.

 

 

관리자는 사용자에게 노출 해야될 자료, 노출하기 전의 자료를 모두 봐야 하기 때문에 뷰를 사용해야 합니다.

 

문제 해결 방안을 문의드립니다.

 

 

감사합니다.

  • ?
    손승일 2011.10.05 08:59

    가능하시면 각 테이블 스키마(인덱스 포함)와 sql, view를 올려주시기 바랍니다.

    둘 사이의 어떤 차이가 있을 것 같은데 설명만으로는 판단하기 어렵네요.
  • ?
    종이 2011.10.05 18:21 SECRET

    "비밀글입니다."

  • ?
    손승일 2011.10.06 06:47

    첨부해주신 질의문과 질문시 테스트한 질의가 동일한가요?

    SELECT COUNT(*)
    FROM ho_article
    WHERE gi > ''
    AND gi LIKE '%중도일보%'

    의 경우 ho_article의 인덱스 스캔을 수행하기는 하지만 '%중도일보%' 실제 인덱스 스캔의 효과를 보지 못하고 해당 인덱스 전체를 스캔합니다.

    따라서 위 질의를 수행함에 있어서 많은 시간이 소요될 것으로 예상됩니다.(제 PC에서 테스트시에 5분이상 기다리다 강제 종료했습니다.)

    view에서도 동일하게 union 중 해당 질의에서 많은 시간이 소요될 것으로 보여 집니다.

    실제 view에 대한 plan을 보더라도 각 각의 질의를 수행할 때와 동일하게 해당 인덱스를 스캔하고 있습니다.

    큐브리드 매니저 질의 편집기를 이용하여 view를 실행하기 전에 '질의 실행 보기' 버튼을 클릭하여 plan을 통해 확인하실 수 있을 것입니다.

    따라서 좀더 검색 범위를 줄일 수 있는 조건이 포함될 수 있는지 여부를 확인해보시기 바랍니다.

  • ?
    종이 2011.10.06 18:17 Files첨부 (1)

    안녕하세요.

     

    제가 테스트 할때에는 길어도 5초 이내에 결과가 나오는데 반해 5분 이상 걸린다고 하셔서

     

    좀전에 테스트한 결과를 캡쳐하여 첨부합니다.

     

    확인 부탁드리겠습니다.

     

    감사합니다.

  • ?
    손승일 2011.10.07 07:55

    제 PC가 문제일가요? 저는 ho_article에 대한 질의를 실행하면 결과가 나오지가 않네요.

    혹시 DB를 재기동했을 때도 동일한 성능을 보이나요? ho_article 테이블이 메모리에 캐싱되어 있는 상태여서 빠른 결과가 나오고 있지는 않을 까 하는 생각이 드네요.

    일단 내부에서 다른 장비로 좀더 확인을 해보도록 하겠습니다.

    우회 방안으로 view를 사용하는 대신 view에서 사용된 union 질의문을 직접사용해보시기 바랍니다.

  • ?
    종이 2011.10.07 17:31

    안녕하세요.

     

    테스트중인 서버는 intel xeon E5506 2.13GHz, 4GB 하드웨어에 가상화 솔루션을 사용하여 2 CPU, 2GB Ram으로 테스트 중으로

    하루에도 몇번씩 껏다가 켰다가를 반복해도 비슷한 결과를 보입니다.

     

    그리고 첨부한 쿼리는 결과가 느리기는 하지만 현재 관리자 페이지에서 사용하고 있는 쿼리입니다.

     

    큐브리드 성능 향상을 위해서라도 이 문제가 해결이 되었으면 합니다.

     

    감사합니다.

  • ?
    정만영 2011.10.08 00:21

    안영하세요.

    문의하신 내용을 window, linux 각각 테스트해 봤지만 view 조회 시간차이가 거의 없습니다. 다만 테이블(ho_article_pre, ho_article, v_ho_article) 검색 순서 따라 차이가 발생하는데 이는 데이터가 메모리에 캐싱되어 있는 상태에 따라 차이 발생할 수 있어 view에 문제가 아닌 것으로 판단 됩니다.

     

  • ?
    샤롱스판 2011.10.14 04:07

    안녕하세요

    주신 데이터와 말씀하신 순서대로 ho_artiicle_pre->ho_article->view 조회 쿼리를 실행하니까 View 에 대한 질의 수행 시간이  상대적으로 더 깁니다. (저는 1.092초) 물론 위 댓글의 다른 분들처럼 view에 먼저 조회 쿼리를 날리면 캐싱된 데이터가 없어서 수 초~분단위로 훨씬 오래 걸릴 것입니다.

     

    큐브리드에서 뷰에 대해 count 질의를 수행하실 때 엔진 내부적으로는 뷰로 정의한 테이블 A에 대해 인덱스를 타서 결과를 추출하고(짧게 걸림) 테이블 B에 대해 인덱스 타서 결과를 추출하고(짧게 걸림) 이 각각의 결과를 UNION ALL하여 이를 순차스캔하면서 카운트를 수행(길게 걸림)하기 때문에 당연히 A,B테이블을 UNION ALL하여 정의한 현재의 뷰에 대한 질의의 실행 시간이 길게 소요되는 것입니다. 이는 다른 DB도 마찬가지로 동작할 것 같네요. 따라서, 이를 고려하시어 카운트 쿼리는 각각 테이블에 수행하고 합산을 하는 것으로 처리하시는 것이 훨씬 빠를 것입니다.

     

     

  • ?
    종이 2011.10.17 20:20

    안녕하세요.

     

    저는 각각의 테이블에 인덱스가 있으면 뷰도 빠른 결과를 낼 수 있울쥴 알았는데, 그런 문제가 있네요.

     

    그러면 쿼리 날리는 방법을 조정해서 성능을 개선하도록 하겠습니다.

     

    답변 감사합니다.


List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 admin 2024.04.23 24
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4453
1091 초보적인 질문(?) 입니다.. 6 초식곰 2011.10.15 8546
1090 통신 프로토콜 질문 2 reerror 2011.10.14 8687
1089 디비생성에러 5 file giyoung.kim 2011.10.12 12163
1088 윈도우 도스 모드에서 쿼리 실행 방법 문의 1 ProMind 2011.10.12 11404
1087 [테이블의 하위 페치 중]만 계속 나오면서 DB의 테이블을 보여주지 않고 있습니다. 4 secret 어려운큐브 2011.10.11 12
1086 이미지사진파일 업로드 방법 1 우주와나 2011.10.10 11964
1085 윈도우 64Bit 버전에서 PHP에 Cubrid 모듈 올리는 방법좀 .. 1 삼돌이 2011.10.08 11868
1084 테이블 생성, 삭제, 백업 등이 되지 않습니다. 2 sugarkane 2011.10.06 7635
1083 함수 실행시 한글 깨짐 현상 4 대규 2011.10.05 11849
1082 데이터 베이스 생성이 되지 않습니다.. 1 삼돌이 2011.10.05 8042
1081 쉘스크립트파일이 cron으로는 실행이 되지않습니다. 2 secret 어려운큐브 2011.10.05 10
» 뷰 테이블 검색 시간에 대해 궁금한점이 있습니다. 9 종이 2011.10.05 9715
1079 콘솔에서 csql로 접속할 때 인코딩 설정은 어떻게 하나요? 3 안지민 2011.09.29 11728
1078 4.0 패치2 는 언제쯤 나오나요? 3 유니콘 2011.09.28 6864
1077 8.4로 업그레이드후 cci_execute 실패 에러 10 천상하늘 2011.09.23 9126
1076 DB 접속실패 ( 7 file psygrapher 2011.09.21 11562
1075 테이블 목록확인 (show tables) 방법 문의 3 mkengnr 2011.09.20 20181
1074 Hibernate로 페이징 처리시 오류발생에 대한 내용입니다. 4 백화요란 2011.09.16 12913
1073 select count 한 개수와 select 한 개수가 다른이유는 뭘까요? 4 file 인경수 2011.09.16 11911
1072 계층적질의 결과물과 조인 시 문제점 2 하루야 2011.09.09 9489
Board Pagination Prev 1 ... 141 142 143 144 145 146 147 148 149 150 ... 200 Next
/ 200

Contact Cubrid

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