설계 시 데이터 사이즈가 시간에 비레해서 늘어난다거나 데이터가 큰 테이블에 서 select, insert, update가 빈번하게 일어나서 인덱스 역시 영향을 받을 거라 고 예상된다면 파티셔닝을 통해 인덱스를 분할하는 효과를 기대할 수 있다.
보통은 기간이나 값의 범위 같은 것으로 분할하거나 특정 칼럼의 값을 해싱
hashing하여 저장할 파티션을 선택하는 방식으로 진행한다. 파티셔닝 전략은 수직 분할vermical partutoning 과 수평분할horonal partitoning 로 구분지을 수 있다.
수직 분할은 테이블 칼럼을 기준으로 나누는 기법이고 자주 사용하는 칼럼 등을 분리시켜 성능 향상을 꾀한다. 수평 분할은 데이트 개수를 기준으로 나누고 이를 통해 인덱스 성능을 끌어올리는 것을 기대한다.
단, 테이블 간의 비용 증가나 애플리케 이션의 복잡도 증가가유발되므로 어떤 전략을 선택할지 꼼꼼히 따져봐야 한다.
테이블 파티셔닝을 위한 구문은 다음과 같다.
CREATE TABLE tablename (
table_id INT NOT NULL AUTO_ INGREMENT, table_date DATE NOT NULL, table _value INT NOT NULL, PRIMARY KEY (table_id)
) PARTITION BY RANGE (table_value) (
PARTITION tO VALUES LESS THAN (10000), PARTITION t1 VALUES LESS THAN (50000), PARTITION t2 VALUES LESS THAN (100000), PARTITION t3 VALUES LESS THAN MAXVALUE
);
주어진 코드는 수평 분할의 한 형태인 파티션을 사용하여 데이터를 분할하는 것입니다. 여기서는 table_value 열의 값에 따라 데이터를 여러 그룹으로 나누고, 각 그룹에 대한 별도의 파티션을 생성합니다. 이렇게 하면 테이블이나 인덱스가 물리적으로 여러 개의 파티션으로 나뉘어져 있어 데이터를 효율적으로 관리할 수 있습니다.
파티셔닝하면 행이 그룹화된다.
파티션은 데이터를 논리적 또는 물리적인 단위로 나누는 것을 말합니다. 파티션을 사용하면 데이터를 관리하고 쿼리 성능을 향상시킬 수 있습니다. 위의 쿼리는 table_value 열의 값을 기준으로 데이터를 분할하는 것을 명시하고 있습니다. 이것은 각 파티션에 해당하는 범위의 table_value 값을 가진 행들을 그룹화하는데 사용됩니다. 이러한 파티션은 데이터를 관리하고 쿼리 성능을 최적화하는 데 도움이 됩니다.
파티션을 사용하여 행을 그룹화하면 성능 향상을 기대할 수 있습니다. 몇 가지 이점이 있습니다:
데이터 관리 용이성: 파티션을 사용하면 데이터를 논리적인 단위로 분할하여 관리할 수 있습니다. 이렇게 하면 데이터 관리가 용이해지고 관련 데이터에 더 빠르게 액세스할 수 있습니다.
쿼리 최적화: 파티션을 사용하면 데이터베이스 시스템이 쿼리를 실행할 때 해당 파티션만 검색하면 되므로 쿼리 성능이 향상될 수 있습니다. 특히 파티션 키를 기준으로 자주 사용되는 쿼리가 있는 경우에 이점을 더 많이 누릴 수 있습니다.
I/O 분산: 파티션을 사용하면 데이터가 여러 개의 디스크에 분산될 수 있으므로 입출력 작업이 분산됩니다. 이렇게 하면 전체적인 시스템 성능이 향상될 수 있습니다.
데이터 삭제 및 유지 관리: 파티션을 사용하면 특정 파티션에서 데이터를 삭제하거나 유지 관리하기가 더 쉬워집니다. 이는 대규모 데이터베이스에서 데이터를 효율적으로 관리하는 데 도움이 됩니다.