InfoGrab DocsInfoGrab Docs

Int range 파티셔닝

PostgreSQL에서 정수 칼럼 기반의 Int range 파티셔닝을 사용하여 대형 테이블을 분할하고 쿼리 성능을 향상시키는 방법을 설명합니다.

Int range 파티셔닝을 새로 사용하지 마세요. cells와 호환되지 않아 더 이상 사용되지 않습니다. cells 간에 데이터를 마이그레이션할 때 지정된 키 범위에 대한 파티션이 대상 cell에 이미 존재해야 합니다. 더 근본적으로, 파티션 토폴로지는 cell 로컬 구현 세부 사항이며 cell 간 마이그레이션 계약의 일부가 아닙니다. 따라서 대상 cell이 소스 cell의 파티셔닝 방식을 알지 못하더라도 cell 간에 데이터를 마이그레이션할 수 있어야 합니다. 자세한 내용은 작업 항목 604729 를 참조하세요. 설명 # Int range 파티셔닝은 정수 칼럼을 기반으로 대형 테이블을 더 작고 관리하기 쉬운 청크로 분할하여 각 파티션이 특정 범위의 정수를 포함하도록 하는 기법입니다. 이 기법은 행 수가 많은 테이블에 특히 유용하며, 쿼리 성능을 크게 향상시키고 스토리지 요구사항을 줄이며 유지 관리 작업을 단순화할 수 있습니다. 이 유형의 파티셔닝이 잘 작동하려면 대부분의 쿼리가 특정 int 범위 내의 데이터에 접근해야 합니다. 더 자세히 살펴보기 위해, 간소화된 merge_request_diff_files 스키마를 상상해 보겠습니다: CREATE TABLE merge_request_diff_files ( merge_request_diff_id INT NOT NULL, relative_order INT NOT NULL, PRIMARY KEY (merge_request_diff_id, relative_order)); 이제 UI에서의 일반적인 쿼리가 특정 int 범위 내의 데이터를 표시한다고 가정해 보겠습니다: SELECT * FROM merge_request_diff_files WHERE merge_request_diff_id > 1 AND merge_request_diff_id < 10 LIMIT 100 테이블이 merge_request_diff_id 칼럼으로 파티셔닝된다면 기본 테이블은 다음과 같습니다: CREATE TABLE merge_request_diff_files ( merge_request_diff_id INT NOT NULL, relative_order INT NOT NULL, PRIMARY KEY (merge_request_diff_id, relative_order)) PARTITION BY RANGE(merge_request_diff_id); 파티셔닝된 테이블의 기본 키는 기본 키 정의의 일부로 파티션 키를 포함해야 합니다. 그리고 테이블에 대한 파티션 목록은 다음과 같을 수 있습니다: merge_request_diff_files_1 FOR VALUES FROM (1) TO (20) merge_request_diff_files_20 FOR VALUES FROM (20) TO (40) merge_request_diff_files_40 FOR VALUES FROM (40) TO (60) 각 파티션은 기본 merge_request_diff_files 테이블과 동일한 구조를 가진 별도의 물리적 테이블이지만, 파티션 키