>>sono0 님께서 쓰시길<<
:: 안녕하세요 소노공 이라고 합니다.^^;
::
:: 다름이 아니고 현재 회원정보를 공유하는DB를 만들려고합니다.
:: 여러사이트에서 회원을 같이 공유하는거니까 당근 회원수가 엄청 많겠지요.
:: 그리고 또 여러사이트에서 회원인증시 회원정보 요청또한 이 DB로 집중이 되겠지요.
:: 그래서 짧은 생각으로 회원정보테이블을 하나로 만드는것이 아니라 아이디첫글자별로
:: 테이블을 생성하면 응답속도가빨라지지 않을까하는 생각을 해보았읍니다.
:: 근데 오라클에 view라는 것이 있더라구요. 뷰테이블을 생성하는것이 나은지 테이블자체를 여러개로 설
:: 계하는것이 나은지 짧은 지식으로는 알수가 없어서 이렇게 질문을 드립니다.
:: 고수님들의 의견을 듣고싶습니다.
만약 unique 한 인덱스 ( 당연히 ID는 unique 하겠지요? )
를 search 하는 경우 10만건과 1억건의 차이가 어느 정도 날까요?
물론 오라클의 일반적인 인덱스는 B*tree 를 사용하므로
leaf node 까지의 depth가 조금 길어져서 1억건이 조금이라도 늦기는
하겠지요. 하지만 사람이 느낄수는 있을까요?
물론 동시 사용자 ( 같은 시간대에 같은 데이타를 조회하려고 하면 )가
엄청나게 많다면 시스템 용량에 따라서 느낄수도 있지만...
제 생각에는 오히려 이 정보가 디스크에 어떻게 분산이 되어 있냐에
따라서 더욱 영향을 받을 것이라고 생각합니다.
또한 많은 데이타가 동시에 입력된다면 freelist 도 20 이상 주는 것이
좋을 것이고, 많은 트랜잭션이 동일한 데이타 블락에 동시에 억세스할
가능성이 있다면 initrans 도 10 이상 ( 스페이스 낭비는 각오하셔야 합니다.)
주는 것과 pctfree도 충분하게 설정하도록 생각하셔야 할 것이구요.
실제 상황과 비슷한 리허설 상황을 시뮬레이션 하신 후에 정하셔야
나중에 원망을 듣지 않지요. 어려운 일입니다.
굳이 이렇게 어렵게 일을 하는 분들이 얼마나 될지...
님의 마지막 질문에는 파티션 테이블을 사용해 보시는 것이 어떨지?
1. 여러개의 테이블을 사용하면 다이내믹 SQL을 사용하게 되어서
DBMS 엔진에 파싱 부하를 주게 됩니다.
( 어느 정도일지는 모르겠지만 )
2. 8i를 사용하신다면 굳이 파티션 뷰를 사용하실 필요는 없습니다.
왜냐면 파티션 뷰는 DML 을 사용할 수 없으므로 ( Oracle7 7.3 )
1번 처럼 결국 다이내믹 SQL을 사용해야 하거든요.
3. 파티션 테이블을 사용하면 여러 테이블을 사용하는 것 같은
효과를 보면서 단일 테이블 사용하는 것 같은 효과도 있습니다.
다른 분들의 생각은 어떤지요?
|