mariadb partition table의 종류와 선택 기준 주의할 점
mariadb partition table의 종류와 선택 기준 주의할 점
안녕하세요.
오늘은 mariadb의 파티션 테이블에 대해서 서
mariadb에서도 partition table을 지원 하고 있습니다.
partition table의 종류 와 특징
mariadb에서 지원하는 partition table의 종류는 다음과 같습니다.
range | 특정 파티션키의 범위, 즉 날짜에서 년도별로 한다던지, 일련번호의 특정 범위로 지정하여 테이블을 파티셔닝 하는 방법 입니다. |
list | 특정 컬럼에 지정된 값만 들어올 경우에 그 값을 기준으로 테이블을 파티셔닝 하는 방법 입니다. |
hash | 특정 값이나 범위로 지정하는게 아니라 mariadb에서 hash값으로 균등하게 테이블을 파티셔닝 하는 방법 입니다. |
key | 테이블에 있는 primary key를 가지고 mariadb에서 균등하게 테이블을 파티셔닝 하는 방법 입니다. |
이렇게 4가지 주로 쓰이는 partition table 방법 입니다.
자, 그럼 어떤 경우에 어떤 파티션 테이블 방법을 사용해야 할까요?
partition table 선택 방법
파티션 테이블을 써야 할때는 우선 그 테이블에 데이터가 아주 많아야 하겠죠? 단일 테이블로 사용하게되면 덩어리가 커지면서 full scan을 하게되면 모든 테이블을 뒤져야 할지도 모릅니다.
그래서 보통은 해당테이블을 select 할때, 어떤 조회조건이 들어오는지를 참고해서 파티션닝을 하게 됩니다. 주로 날짜가 조회조건으로 꼭 들어온다면 range 파티션을 이용해야겠죠. 특정 일자의 데이터가 한 파티션 테이블에 모두 있을것이라 그렇게 만들어주는게 유리 합니다.
그럼 만약에, 어떤 큰 테이블에 국가코드가 있다고 합시다. 국가코드지만, 주로 아시아쪽 나라의 데이터만 들어온다면 몇개, 또는 몇십개의 코드값 데이터가 테이블에 있겠죠. 그리고 해당 테이블을 조회 할때 항상 국가코드가 조건절로 들어오게 된다면,range보다 list 파티션을 만들어주는게 유리 합니다. 국가별 데이터가 한 파티션 테이블에 있을꺼닌깐요.
그리고 그냥 테이블이 아주 큽니다. 조회할일도 그다지 많지 않다고 한다면, 균등하게 배분을 하는게 더 중요하겠죠? 그럴때는 hash나 key 파티션 테이블을 생성 하면 됩니다.
파티션 테이블을 하실때는 운영하시거나, 사용하시는 테이블 데이터와 조회시 해당 테이블을 어떻게 사용하는지를 잘 확인 하시고 파티셔닝을 해야 효과적으로 데이터를 분산 저장 할 수 있고, 성능또한 최대로 끌어 올릴 수 있습니다.
다른 mariadb, mysql 자료는 다음 링크에서 보실 수 있습니다.
2021.01.28 - [Database/mariaDB administrator] - mysql 커버링 인덱스란 무엇인가? | sTricky
감사합니다.
by.sTricky