개발자

테이블 파티셔닝을 해야 하는 시점은 언제 일까요?

2023년 08월 22일조회 203

안녕하세요, 테이블의 데이터가 많아질 때를 대비하여 파티셔닝을 하는게 좋을지 고민입니다. 파티션을 나누는 시점에는 데이터가 어느정도 있어야 적합하다고 생각하시나요? 현재 데이터는 5백만개를 넘은 상황이나, 사용하는 쿼리문의 속도는 운영에 지장 없는 정도입니다. 다만 지속적으로 데이터는 증가될 가능성이 있어 미리 테이블 생성에 있어 대비를 하는게 맞을지요. 이정도의 데이터를 다룬 적이 많이 없어 대용량 데이터를 지닌 테이블을 운영하는데 고민이 많네요 ㅠ ㅠ 조언 주시면 감사합니다!

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 2

김도열님의 프로필 사진

현업에서 마주하는 파티셔닝의 목적은 크게 2가지입니다. 하나는 로그를 기록하는 테이블인 경우 로그 보관 기간을 초과한 레코드를 정기적으로 삭제하고 싶을 때인데요. 보통 로그 테이블은 레코드 수와 데이터의 양이 매우 큰 성격을 가지기 때문에, 예를 들어 1년이 지난 로그를 지울 때 파티션이 없다면 DELETE문을 써야 하는데 사실 이러면 답이 없죠. (테이블도 잠기고 부하도 크고 다 삭제될 때까지의 시간도 기약하지 못하기 때문) 하지만 날짜로 레인지 파티셔닝을 해 두면 삭제할 때 파티션 단위로 truncate하면 되기 때문에 작업이 순식간에 끝납니다. 상황에 따라 다른 저장소로 아카이빙하기도 좋구요. 다른 하나는 읽기, 쓰기 부하를 분산하기 위해서입니다. 이 경우 해시 파티션을 사용하거나 DBMS가 해시 파티션을 지원하지 않으면 리스트 파티션을 사용하는데요. 경험적으로 보면.. 이런 방식이 효과를 가질 정도의 대용량 데이터는 드뭅니다. 특히 MySQL 같은 경우 과도한 파티션은 INSERT 속도를 떨어뜨리는 부작용도 있죠. 질문 주신 분께선 대용량 데이터 운영을 말씀하셨지만, 어떤 목적으로 파티셔닝을 하시겠다고 밝히지 않으셔서 더 자세한 답변은 어려울 것 같습니다. 다만, 이미 데이터가 쌓인 상태에서 파티션을 나누기 시작하는게 아니라.. 미리 파티션을 나눠두고 적재를 시작하는게 맞습니다.

joseph님의 프로필 사진

좀 다른 이야기지만.. 파티셔닝은 문제 해결의 수단 중 하나로 보시고.. 저장하는 데이터의 성격을 먼저 고민하시는게 어떨까 싶습니다. 관련한 경험이 많지는 않지만 천만 정도의 데이터는 흔하다고 알고 있는데, RDB에 운영 데이터가 개발 당사자가 고민이 될 정도의 속도로 쌓인다면, 저라면 설계가 레거시화 된 상황이 아닌가 먼저 확인할 것 같습니다.

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!