mysql 5.1 - 테이블 파티셔닝

불당   
   조회 9275  

30만건의 테이블이지만, lock이 걸리는 상황이라 테이블을 파티셔닝 하기로 했어요.

 

Range-Partition

데이터를 일정한 기간을 주기로 다른 물리적인 파티션에 나눌 수 있다.
예를 들면 파티션을 3개로 나눌 경우 첫 번째 파티션에는 1980년대 자료를 1990년대 자료는 두 번째 파티션에
나머지 자료(2000년대 포함)는 세 번째 파티션에 저장하게 할 수 있습니다.

List-Partition

데이터를 일정한 단위로 나눌 수 있습니다.
예를 들면 첫 번째 파티션에는 1월 자료를 두 번째 파티션에는 2월 자료를 세 번째 파티션에는
3월 자료를 나누어 보관할 수 있습니다.

여러 개의 테이블들을 모두 하나의 primary key로 묶을 수 있다.
또한 이 키는 시스템에서 생성된 hash 키로 지정될 수 있습니다.

Composite-Partition

Range와 List Partition을 합쳐서 사용 할 수 있습니다.

 

파티셔닝의 조건은

1. 파티션의 값은 정수형이어야 합니다. (integer)
2. 만약 테이블이 unique 키와 primary 키를 가지고 있다면,

   분할되는 컬럼(the partitioning column)은 해당키의 일부가 되어야 합니다.

 

http://www.linuxdata.co.kr/mysql/?midx=6_2

 

YEAR() 함수를 사용할 경우, 파티셔닝은 용이하고, 쉽게 읽을 수 있으며, 수월합니다.

CREATE TABLE by_year (
  d DATE
)
PARTITION BY RANGE (YEAR(d))
(
PARTITION P1 VALUES LESS THAN (2001),
PARTITION P2 VALUES LESS THAN (2002),
PARTITION P3 VALUES LESS THAN (2003),
PARTITION P4 VALUES LESS THAN (MAXVALUE)
)

- opencode.co.kr -


제목Page 7/9
     
2015-10   89243   불당
2014-06   139325   불당
2016-07   65250   불당
2015-05   105265   불당
2015-09   85550   불당
2010-10   5816   불당
2010-10   4930   불당
2010-10   5750   불당
2010-10   8990   불당
2010-10   16573   불당
2010-10   4570   불당
2010-06   23579   불당
2010-06   9992   불당
2010-06   3869   불당
2010-04   5652   불당
2010-03   7074   불당
2010-03   9276   불당
2010-03   4621   불당
2010-03   4325   불당
2010-03   5497   불당
2010-03   3426   불당
2010-03   5742   불당
2010-03   3603   불당
2010-03   3805   불당
2009-11   5119   불당