테이블 관리 질문! 0 8 1,744

by playlyun [DB 모델링/설계] 테이블 파티션 유지보수 인덱스 [2017.09.01 09:52:46]


상태 모니터링을 위해 DB로 데이터를 수집하는 작업을 하고 있습니다.

장비마다 초당 5개의 데이터를 가져옵니다.

테이블 구조는 지역아이디+장비아이디 의 임의PK와 시간 속성, 상태 속성(약 10가지)를 갖습니다.

장비가 30개로 가정했을때 데이터양이 많아서 접근이 어려운데(시간이 오래걸립니다), 인덱스로 해결이 잘안되서요...

제가 생각하기에는 파티션 테이블을 미리 만들어 두기에도 기준이 모호하여 애매한것같은데 어떤방법이 좋을지모르겠습니다.

 

일반적으로 데이터 검색은 PK와 시간범위로 SELECT를 작업하며 해당 작업시 인덱스 타도록은 해놓았는데 효과는 모르겠습니다.. 

 

아이디어 부탁드립니다.

by 우리집아찌 [2017.09.01 10:05:28]

하루에 1296만 건이네요. 

기준으로 하려면 날짜로 파티션을 나누시고

지역아이디가 고정이시고 조건에 포함되시면 지역아이디로 서브파티션 나누시면 될듯한데요.

임의 PK는 의미 없어 보입니다.

장비아이디와 시간으로 대체하셔도 될듯한데요.

INDEX는 로컬가야할지 글로벌로 가야할지 판단이 안서네요.

 


by playlyun [2017.09.01 10:19:26]

날짜로 파티션 나누는게 나누기에는 애매한게 월단위로 쪼개도 많고, 주단위로하기엔 테이블을 다 만들기도 애매하지않나요?


by 우리집아찌 [2017.09.01 10:24:23]

양만 보면 일단위 해야하실거구요.

인덱스는 검색 조건에 따라 좀 틀려질것같은데

예상하기에 일자별로 끊어서(아니면 월단위) 통계정보를 볼것같은데

권장하진 않지만 월단위로 글로벌 INDEX를 해야하지않을까 생각해봅니다.

제가 일반 개발자라서 다른 전문가님들 답변 해주실것같습니다.

 

 


by 우리집아찌 [2017.09.01 10:26:06]

검색 단위가 월단위면 월단위로 파티션 하시면 될것같네요.


by playlyun [2017.09.01 11:03:47]

시간 범위는 24시간단위정도인데 이게 두날짜가 겹쳐요, 8월31일, 9월1일 이런식으로


by 우리집아찌 [2017.09.01 11:14:29]

일단위로 검색하신다면 일별 파티션을 추천합니다.

검색시 이틀이면 파티션 두개만 읽으면 되겠네요.

 


by playlyun [2017.09.01 12:33:21]

일별로 파티션 테이블 만들면 1년에 365개 데이터 보존 기간에 따라서 더 늘어나는거 아닌가요?

그리고 날짜 바뀔때마다 동적으로 테이블을 생성해줘야되는건가요??

 

좀 헷갈리네요 ㅠㅠ;


by 우리집아찌 [2017.09.01 12:47:39]

파티션 테이블에 대해서는 좀 더 공부해보시면 됩니다.

http://www.gurubee.net/oracle/oracle10g

5. Managing Partitioned Tables and Indexes <-  보시면 됩니다

년마다 갱신해도 되고

자동으로 갱신 옵션이 있을겁니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입