FORUM

조회 수 13173 추천 수 0 댓글 5
?

단축키

Prev이전 문서

Next다음 문서

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

안녕하세요.

 

문의사항이 있어서 글을 남깁니다.

 

기존에 마스터 테이블에 pk, 제목, 내용, 속성1~속성N... 이런 테이블(게시판은 아닙니다)이 있습니다.

 

이 경우에 내용 컬럼이 다른 컬럼에 비해서 양이 매우 크다고 할 경우에 마스터 테이블의 대부분(95% 이상)을 차지한다고 할 경우에

내용만 다른 테이블(pk, 내용)에 저장을 하게 되면 마스터 테이블 검색 속도가 향상이 되나요?

 

대부분의 페이지가 속성1~속성N을 사용하여 제목 리스트를 가져오는 쿼리로 이루어져 있고, 상세보기 페이지에서만 내용을 조회합니다.

 

마스터 테이블 조회쿼리가 풀스캔을 하지만 않으면 마스터테이블 크기와는 관계가 없는지 궁금합니다.

  • ?
    남재우 2010.06.09 01:59

    예. 좋은 방법입니다. 자주보는 테이블의 레코드길이가 짧은 것은 검색에 매우 유리합니다. 말씀하신 것처럼 키,제목 정도로 목록에 보여주는 정보 위주로 테이블을 구성하고, 상세보기에 해당하는 본문은 별도 테이블로 가는 것이 좋습니다.

    다만 하나의 테이블이(데이터관점에서) 두개의 테이블로 분리되므로 목록테이블과 상세보기테이블에 대하여 작성자,작성일자 등에 대하여 중복될 수 있는 데이터의 위치에 대하여 관심을 가지셔야 합니다. 분리하시고 목록보기시 조인하여 질의하면 의미는 반감합니다.

    목록정보에 두고, 상세보기시 목록을 조인하면 조인대상이 한건일터이니 도움이 될 것으로 보입니다.


  • ?
    종이 2010.06.09 02:58

    리스트에서 내용 일부를 가져오는 쿼리를 생각을 못했네요.

     

    select pk, 제목, 속성1... 속성 N, (select substring(내용, 100) from 내용 테이블 D where M.pk = D.pk) 내용
    from 마스터테이블 M
    where 속성N = ...

    위의 쿼리처럼 수정을 하게 되면 마스터테이블에 내용 컬럼을 두었을때하고 내용 컬럼만 별도로 분리해서 사용하는 경우하고

    차이점이 없는건가요?

  • ?
    남재우 2010.06.09 03:17
    XpressEngine

    안녕하세요.

    서브 질의를 사용하시게 되면 질의 결과 개수만큼 서브질의가 수행되게 되므로 그것보다는 인라인 뷰를 활용하시는 것이 좋겠습니다.

    select 제목, substr(본문, ...)

    from (select 키, 제목 from 목록테이블 where rownum between 1 and 20) as t(키,제목), 내용테이블

    where t.키 = 내용테이블.FK

    where rownum 부분은 CUBRID의 페이징방법입니다.

     

    이조차 성능에 문제가 될 수 있다면, 본문이 거의 수정이 되지 않는다는 전제하에 목록에 보이는 본문의 일부를 아예 목록테이블에 중복시킬 수 도 있을 것입니다.

  • ?
    종이 2010.06.09 18:32

    안녕하세요.

     

    항상 빠르고 상세한 설명까지 감사합니다.

     

     

    현재 운영하는 사이트가 언론사라서 한번 올라간 기사는 내용 수정이 거의 없습니다.

     

    그리고 내용 수정하는 페이지는 관리자에 있는 하나의 메뉴에서 모두 이루어지기 때문에 마스터 테이블에 내용중 첫부분 일부(200byte)를 저장하는 방식으로 하는게 좋을꺼 같은데요, 그렇게 되면 내용 테이블 조회는 뷰페이지에서만 조회하게 될꺼 같습니다.

     

    그리고 내용 수정이 될 경우에는 마스터 테이블의 내용, 내용테이블의 내용을 같이 수정해 주는 로직으로 프로그램을 변경할까 합니다.

     

     

    그리고 pk가 yyyymmddNNNN(일련번호) 형식이기 때문에 내용 테이블을 파티션 테이블의 레인지 분할을 이용하여 월별로 분할하게 되면 성능 향상이 있을거 같은데요.

     

     

    이 방법이 맞는지 한번만 더 확인해 주시면 감사하겠습니다.

  • ?
    남재우 2010.06.10 05:15

    안녕하세요.

    금일 출장 관계로 이제서야 확인이 되었습니다.

    검색위주의 시스템이라면 잘아시겠지만 일정 부분 데이터의 중복은 성능을 위해서 충분히 고려해볼 가치가 있는 일입니다.

    분할 부분은 사용하시는데 특별한 문제는 없습니다. 다만 분할키로서 필드를 그냥 사용하시는 것이 성능상 좋습니다. 즉, 분할 조건을 수식으로 하지말고 필드를 그냥 이용하는 것입니다. 해당 테이블에 접근할때마다 분할키에 대한 평가가 이루어지기 때문입니다.

    따라서 월별로 분할을 한다면 yyyymm 을 저장하는 필드를 추가하여 관리하고 이 값을 분할키로 하여 구성하는 것이 좋습니다.

     

    현재 성능 관점에서 분할 자체가 기대만큼 좋은 성능을 주지는 못하고 있습니다. 따라서 기사종류별, 기간별로 테이블 자체를 별도로 하시는 것이 좋을 것 같습니다.


List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 9 admin 2024.04.23 22929
3511 autocommit off 방법 문의 9 소라게 2010.06.08 16153
» 테이블의 내용 컬럼을 다른 테이블에 분리시 성능 향상 여부 5 종이 2010.06.08 13173
3509 Java Stored Procedure 사용시 에러 문의드려요~ 2 file 나삐꾸 2010.06.09 13230
3508 테이블 생성 문의 1 지삭낭언 2010.06.09 9719
3507 큐브리드 2.2로 업그레이드시 single_byte_compare문제 18 지니보이 2010.06.10 10894
3506 테이블 수정 문의 1 유니콘 2010.06.10 8948
3505 cubrid.conf의 max_clients가 안늘어납니다. 4 김현성 2010.06.12 12859
3504 CUBRID Manager 오류메시지 문의드립니다. 1 file Ele 2010.06.12 12348
3503 데이터베이스 공간 정리중 오류메시지 7 file 종이 2010.06.12 9041
3502 max_clients값이 450이상 설정되지 않습니다. 1 김현성 2010.06.14 9381
3501 데이터 삽입 쿼리 1 지삭낭언 2010.06.15 9028
3500 VPN 연결된 컴퓨터에는 큐브리드메니져가 실행이 안되나요? 1 까망이 2010.06.16 9382
3499 사용자 권한부여가 안됩니다. 1 Ele 2010.06.18 10152
3498 Date 형 쿼리 문의 1 아이시에 2010.06.21 17090
3497 다중 rows 를 콤마로 연결하는 방법?? 1 yoon 2010.06.22 11870
3496 cci에서 유니코드 inert 문의 입니다. 1 마준 2010.06.29 8711
3495 CUBRID2008 Manager Client에서 서브쿼리 결과오류 문의드립니다. 1 아프로 2010.06.30 8411
3494 로그 볼륨 사이즈 문의 3 뿡뿡이당 2010.07.01 9030
3493 PHP 클라이어트 모듈 설치시... 2 뿡뿡이당 2010.07.01 9027
3492 트리거 inactive 오류 1 단순미학 2010.07.01 8457
Board Pagination Prev 1 ... 29 30 31 32 33 34 35 36 37 38 ... 209 Next
/ 209

Contact Cubrid

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

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

나눔고딕 사이트로 가기

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5