PostgreSQL기본 테이블 파티셔닝을 지원합니다. 이 섹션에서는 데이터베이스 설계의 일부로 분할을 구현하는 이유와 방법을 설명합니다.
파티션이란 논리적으로 하나의 큰 메이저 토토 사이트을 더 작은 물리적 조각으로 분할하는 것을 의미합니다. 파티셔닝은 여러 가지 이점을 제공할 수 있습니다.
특정 상황, 특히 메이저 토토 사이트에서 많이 액세스되는 행의 대부분이 단일 파티션 또는 소수의 파티션에 있는 경우 쿼리 성능이 크게 향상될 수 있습니다. 분할은 인덱스의 상위 트리 수준을 효과적으로 대체하므로 인덱스에서 많이 사용되는 부분이 메모리에 적합할 가능성이 높아집니다.
쿼리 또는 업데이트가 단일 파티션의 상당 부분에 액세스하는 경우 전체 메이저 토토 사이트에 분산된 무작위 액세스 읽기가 필요한 인덱스를 사용하는 대신 해당 파티션의 순차적 스캔을 사용하여 성능을 향상시킬 수 있습니다.
파티션 설계에서 사용 패턴을 고려한 경우 파티션을 추가하거나 제거하여 대량 로드 및 삭제를 수행할 수 있습니다. 다음을 사용하여 개별 파티션 삭제드롭 메이저 토토 사이트또는 수행 중메이저 토토 사이트 분리 파티션 변경는 대량 작업보다 훨씬 빠릅니다. 이 명령은 또한 다음을 완전히 피합니다.진공대량으로 인한 오버헤드삭제.
자주 사용하지 않는 데이터는 더 저렴하고 느린 저장 매체로 마이그레이션할 수 있습니다.
이러한 이점은 일반적으로 메이저 토토 사이트이 매우 클 경우에만 가치가 있습니다. 메이저 토토 사이트 분할로 이점을 얻을 수 있는 정확한 지점은 애플리케이션에 따라 다르지만 경험상 메이저 토토 사이트 크기는 데이터베이스 서버의 물리적 메모리를 초과해야 합니다.
PostgreSQL다음과 같은 형태의 파티셔닝을 기본적으로 지원합니다.
테이블은 다음과 같이 분할되어 있습니다.“범위”키 열 또는 열 집합으로 정의되며, 서로 다른 파티션에 할당된 값 범위 간에 중복되지 않습니다. 예를 들어 날짜 범위 또는 특정 비즈니스 개체에 대한 식별자 범위를 기준으로 분할할 수 있습니다. 각 범위의 경계는 낮은 쪽 끝에서는 포함되고 위쪽 끝에서는 제외되는 것으로 이해됩니다. 예를 들어, 한 파티션의 범위가 다음과 같은 경우1에10, 다음 범위는10에20, 그 다음 값10첫 번째 파티션이 아닌 두 번째 파티션에 속합니다.
메이저 토토 사이트은 각 파티션에 나타나는 키 값을 명시적으로 나열하여 분할됩니다.
메이저 토토 사이트은 각 파티션에 대한 모듈러스와 나머지를 지정하여 파티션됩니다. 각 파티션은 지정된 계수로 나눈 파티션 키의 해시 값이 지정된 나머지를 생성하는 행을 보유합니다.
애플리케이션이 위에 나열되지 않은 다른 형태의 파티셔닝을 사용해야 하는 경우 상속과 같은 대체 방법을 사용하고유니온 올15351_15498
PostgreSQL메이저 토토 사이트이 파티션으로 나누어져 있음을 선언할 수 있습니다. 분할된 메이저 토토 사이트을 a라고 합니다.분할된 메이저 토토 사이트. 선언에는 다음이 포함됩니다.파티셔닝 방법위에 설명된 것과 같이 사용할 열 또는 표현식의 목록파티션 키.
분할된 메이저 토토 사이트 자체는 다음과 같습니다.“가상”자체 저장공간이 없는 테이블입니다. 대신 저장소는 다음에 속합니다.파티션은 파티션을 나눈 테이블과 연결된 일반적인 테이블입니다. 각 파티션은 해당 파티션에 정의된 대로 데이터의 하위 집합을 저장합니다.파티션 경계. 분할된 메이저 토토 사이트에 삽입된 모든 행은 파티션 키 열의 값을 기반으로 파티션 중 적절한 파티션으로 라우팅됩니다. 행의 파티션 키를 업데이트하면 더 이상 원래 파티션의 파티션 경계를 충족하지 않는 경우 다른 파티션으로 이동됩니다.
파티션 자체는 파티션된 테이블로 정의될 수 있으며, 그 결과는 다음과 같습니다.하위 파티셔닝. 모든 파티션에는 분할된 상위 파티션과 동일한 열이 있어야 하지만 파티션에는 다른 파티션과 구별되는 고유한 인덱스, 제약 조건 및 기본값이 있을 수 있습니다. 참조메이저 토토 사이트 생성파티션을 나눈 테이블 및 파티션 생성에 대한 자세한 내용을 확인하세요.
일반 테이블을 파티션된 테이블로 전환하거나 그 반대로 전환하는 것은 불가능합니다. 그러나 기존 일반 테이블이나 분할된 메이저 토토 사이트을 분할된 메이저 토토 사이트의 파티션으로 추가하거나 분할된 메이저 토토 사이트에서 파티션을 제거하여 독립형 테이블로 전환하는 것이 가능합니다. 이는 많은 유지 관리 프로세스를 단순화하고 속도를 높일 수 있습니다. 참조메이저 토토 사이트 변경에 대해 자세히 알아보려면파티션 연결그리고파티션 분리하위 명령.
파티션도 가능합니다.PostgreSQL : 문서, 하지만 외부 메이저 토토 사이트의 내용이 파티셔닝 규칙을 충족하는 것은 사용자의 책임이므로 상당한 주의가 필요합니다. 다른 제한 사항도 있습니다. 참조외부 메이저 토토 사이트 생성더 많은 정보를 원하시면.
대규모 아이스크림 회사를 위한 데이터베이스를 구축한다고 가정해 보겠습니다. 회사는 매일 최고기온과 지역별 아이스크림 판매량을 측정하고 있다. 개념적으로 우리는 다음과 같은 테이블을 원합니다.
메이저 토토 사이트 측정 생성(
city_id int는 null이 아닙니다.
logdate 날짜가 null이 아닙니다.
피크 온도 정수,
단위 판매 정수
);
이 메이저 토토 사이트의 주요 용도는 관리를 위한 온라인 보고서를 준비하는 것이기 때문에 대부분의 쿼리는 지난 주, 월 또는 분기의 데이터에만 액세스한다는 것을 알고 있습니다. 저장해야 하는 오래된 데이터의 양을 줄이기 위해 가장 최근 3년치의 데이터만 보관하기로 결정했습니다. 매월 초에 가장 오래된 달의 데이터가 제거됩니다. 이러한 상황에서는 분할을 사용하여 측정 메이저 토토 사이트에 대한 다양한 요구 사항을 모두 충족할 수 있습니다.
이 경우 선언적 파티셔닝을 사용하려면 다음 단계를 따르십시오.
생성측정테이블을 파티션을 나눈 테이블로 지정하여파티션 기준절, 파티션 나누기 방법(범위이 경우) 및 파티션 키로 사용할 열 목록입니다.
테이블 측정 생성(
city_id int는 null이 아닙니다.
logdate 날짜가 null이 아닙니다.
피크 온도 정수,
단위 판매 정수
) 범위별 파티션(logdate);
파티션을 생성하십시오. 각 파티션의 정의는 상위 파티션의 파티션 키와 분할 방법에 해당하는 경계를 지정해야 합니다. 새 파티션의 값이 하나 이상의 기존 파티션의 값과 겹치도록 경계를 지정하면 오류가 발생합니다.
이렇게 생성된 파티션은 모든 면에서 정상입니다.PostgreSQL메이저 토토 사이트(또는 외부 메이저 토토 사이트). 각 파티션에 대해 테이블스페이스 및 스토리지 매개변수를 별도로 지정할 수 있습니다.
우리의 예에서 각 파티션은 한 번에 한 달 분량의 데이터를 삭제하는 요구 사항에 맞게 한 달 분량의 데이터를 보유해야 합니다. 따라서 명령은 다음과 같습니다.
CREATE TABLE 측정_y2006m02 측정 파티션
('2006-02-01')부터 ('2006-03-01')까지의 값에 대해;
측정 테이블 만들기_y2006m03 측정 부분
('2006-03-01')부터 ('2006-04-01')까지의 값에 대해;
...
측정 테이블 만들기_y2007m11 측정 부분
('2007-11-01')부터 ('2007-12-01')까지의 값에 대해;
측정 테이블 만들기_y2007m12 측정 부분
('2007-12-01')부터 ('2008-01-01')까지의 값에 대해
TABLESPACE 빠른테이블스페이스;
측정 테이블 만들기_y2008m01 측정 부분
('2008-01-01')부터 ('2008-02-01')까지의 값에 대해
와(parallel_workers = 4)
TABLESPACE 빠른테이블스페이스;
(범위 상한은 배타적 경계로 처리되므로 인접한 파티션은 경계 값을 공유할 수 있음을 기억하십시오.)
하위 파티션을 구현하려면 다음을 다시 지정하십시오.파티션 기준개별 파티션을 생성하는 데 사용되는 명령의 절, 예:
CREATE TABLE 측정_y2006m02 측정 부분
('2006-02-01')부터 ('2006-03-01')까지의 값에 대해
범위별 분할(최고 온도);
파티션 생성 후measurement_y2006m02, 삽입된 모든 데이터측정다음에 매핑됨measurement_y2006m02(또는 직접 삽입된 데이터measurement_y2006m02(파티션 제약 조건이 충족되는 경우 허용됨)은 다음을 기반으로 해당 파티션 중 하나로 추가로 리디렉션됩니다.최고온도열. 지정된 파티션 키는 상위 파티션 키와 겹칠 수 있지만 하위 파티션의 경계를 지정할 때는 허용되는 데이터 집합이 파티션 자체 경계에서 허용하는 하위 집합을 구성하도록 주의해야 합니다. 시스템은 그것이 실제로 사실인지 확인하려고 시도하지 않습니다.
기존 파티션 중 하나에 매핑되지 않은 상위 테이블에 데이터를 삽입하면 오류가 발생합니다. 적절한 파티션을 수동으로 추가해야 합니다.
파티션의 파티션 경계 조건을 설명하는 테이블 제약 조건을 수동으로 생성할 필요는 없습니다. 이러한 제약 조건은 자동으로 생성됩니다.
키 열에 인덱스를 생성하고 분할된 메이저 토토 사이트에서 원하는 다른 인덱스를 생성하십시오. (키 인덱스는 꼭 필요한 것은 아니지만 대부분의 시나리오에서 도움이 됩니다.) 이렇게 하면 각 파티션에 일치하는 인덱스가 자동으로 생성되고 나중에 생성하거나 연결하는 모든 파티션에도 이러한 인덱스가 있게 됩니다. 분할된 메이저 토토 사이트에 선언된 인덱스 또는 고유 제약 조건은 다음과 같습니다.“가상”분할된 메이저 토토 사이트과 같은 방식으로 실제 데이터는 개별 파티션 테이블의 하위 인덱스에 있습니다.
측정에 대한 인덱스 생성(로그 날짜);
다음을 확인하세요.enable_partition_pruning구성 매개변수는 다음에서 비활성화되지 않았습니다.postgresql.conf. 그렇다면 쿼리가 원하는 대로 최적화되지 않습니다.
위의 예에서는 매달 새 파티션을 생성하므로 필요한 DDL을 자동으로 생성하는 스크립트를 작성하는 것이 현명할 수 있습니다.
일반적으로 테이블을 처음 정의할 때 설정된 파티션 세트는 정적으로 유지되지 않습니다. 오래된 데이터가 들어 있는 파티션을 제거하고 새 데이터에 대해 주기적으로 새 파티션을 추가하려는 것이 일반적입니다. 파티셔닝의 가장 중요한 장점 중 하나는 대량의 데이터를 물리적으로 이동하는 대신 파티션 구조를 조작하여 이 힘든 작업을 거의 즉시 실행할 수 있다는 것입니다.
오래된 데이터를 제거하는 가장 간단한 옵션은 더 이상 필요하지 않은 파티션을 삭제하는 것입니다:
드롭 메이저 토토 사이트 측정_y2006m02;
모든 기록을 개별적으로 삭제할 필요가 없기 때문에 수백만 개의 기록을 매우 빠르게 삭제할 수 있습니다. 그러나 위 명령에는접속 독점상위 메이저 토토 사이트을 잠급니다.
흔히 선호되는 또 다른 옵션은 분할된 메이저 토토 사이트에서 파티션을 제거하지만 그 자체로 테이블로서 액세스를 유지하는 것입니다. 여기에는 두 가지 형식이 있습니다.
ALTER TABLE 측정 DETACH PARTITION 측정_y2006m02; ALTER TABLE 측정 DETACH PARTITION 측정_y2006m02 동시;
이를 통해 데이터가 삭제되기 전에 데이터에 대해 추가 작업을 수행할 수 있습니다. 예를 들어, 이는 종종 다음을 사용하여 데이터를 백업하는 데 유용한 시간입니다.복사, pg_dump또는 유사한 도구. 또한 데이터를 더 작은 형식으로 집계하거나, 다른 데이터 조작을 수행하거나, 보고서를 실행하는 데 유용한 시간이 될 수도 있습니다. 명령의 첫 번째 형식에는가 필요합니다.접속 독점상위 메이저 토토 사이트을 잠급니다. 추가하기동시두 번째 형식의 한정자는 분리 작업에 필요한 것만 허용업데이트 독점 공유상위 메이저 토토 사이트을 잠그지만 참조메이저 토토 사이트 변경 ...파티션 분리제한사항에 대한 자세한 내용을 확인하세요.
마찬가지로 우리는 새로운 데이터를 처리하기 위해 새로운 파티션을 추가할 수 있습니다. 위에서 원래 파티션을 생성한 것처럼 파티션된 테이블에 빈 파티션을 생성할 수 있습니다.
CREATE TABLE 측정_y2008m02 측정 파티션
('2008-02-01')부터 ('2008-03-01')까지의 값에 대해
TABLESPACE 빠른테이블스페이스;
새 파티션을 생성하는 대신 파티션 구조와 별도로 새 테이블을 생성하고 나중에 파티션으로 연결하는 것이 더 편리한 경우도 있습니다. 이를 통해 분할된 메이저 토토 사이트에 표시되기 전에 새 데이터를 로드하고 확인하고 변환할 수 있습니다. 게다가,파티션 연결작업에는 a만 필요합니다.업데이트 독점 공유파티션된 테이블 대신에 잠금을 설정하세요.접속 독점다음에 의해 잠금이 필요함메이저 토토 사이트 생성 ... 파티션, 따라서 분할된 메이저 토토 사이트의 동시 작업에 더 친숙합니다. 참조메이저 토토 사이트 변경...파티션 연결28597_28628메이저 토토 사이트 생성 ... LIKE옵션은 상위 메이저 토토 사이트의 정의를 지루하게 반복하는 것을 피하는 데 도움이 될 수 있습니다. 예를 들면:
메이저 토토 사이트 생성 측정_y2008m02
(제약 조건을 포함하는 기본값을 포함하는 측정과 유사)
TABLESPACE 빠른테이블스페이스;
ALTER TABLE 측정_y2008m02 제약조건 추가 y2008m02
CHECK ( logdate = DATE '2008-02-01' AND logdate < DATE '2008-03-01' );
\ 'measurement_y2008m02'에서 측정_y2008m02 복사
-- 아마도 다른 데이터 준비 작업
ALTER TABLE 측정 ATTACH PARTITION 측정_y2008m02
('2008-02-01')부터 ('2008-03-01' )까지의 값에 대해;
다음을 실행할 때 주의하세요파티션 연결명령을 실행하면 테이블을 스캔하여 파티션 제약 조건을 확인하는 동안접속 독점해당 파티션을 잠그세요. 위에 표시된 대로, 다음을 생성하여 이 스캔을 피하는 것이 좋습니다.확인제약조건은 연결하기 전에 테이블의 예상 파티션 제약조건과 일치합니다. 일단파티션 연결완료되었습니다. 이제 중복된 항목을 삭제하는 것이 좋습니다.확인제약. 연결되는 테이블 자체가 분할된 메이저 토토 사이트인 경우 각 하위 파티션은 적합할 때까지 반복적으로 잠기고 검색됩니다.확인제약조건이 발생했거나 리프 파티션에 도달했습니다.
마찬가지로, 파티션을 나눈 테이블에기본값파티션을 생성하는 것이 좋습니다.확인연결할 파티션의 제약 조건을 제외하는 제약 조건입니다. 이것이 완료되지 않으면,기본값파티션을 검사하여 연결된 파티션에 있어야 할 레코드가 없는지 확인합니다. 이 작업은를 누른 상태에서 수행됩니다.접속 독점자물쇠를 잠그세요기본값파티션. 만약기본값파티션 자체가 분할된 메이저 토토 사이트인 경우, 각 파티션은 위에서 언급한 것처럼 연결된 테이블과 동일한 방식으로 반복적으로 검사됩니다.
앞서 언급했듯이 분할된 메이저 토토 사이트에 인덱스를 생성하여 전체 계층 구조에 자동으로 적용할 수 있습니다. 이는 기존의 모든 파티션뿐만 아니라 향후 파티션도 모두 인덱싱되므로 매우 편리할 수 있습니다. 그러나 분할된 메이저 토토 사이트에 새 인덱스를 생성할 때 한 가지 제한 사항은 다음을 사용할 수 없다는 것입니다.동시한정자, 이로 인해 잠금 시간이 길어질 수 있습니다. 이를 방지하려면 다음을 사용할 수 있습니다.다음에만 인덱스 생성잘못된 것으로 표시된 새 인덱스를 생성하여 기존 파티션에 자동 적용을 방지하는 파티션된 테이블. 대신 다음을 사용하여 각 파티션에 인덱스를 개별적으로 생성할 수 있습니다.동시그리고첨부됨다음을 사용하여 상위의 분할된 인덱스에색인 변경...파티션 첨부. 모든 파티션의 인덱스가 상위 인덱스에 연결되면 상위 인덱스가 자동으로 유효한 것으로 표시됩니다. 예:
측정값(판매량)만 ON으로 INDEX 측정_usls_idx 생성;
동시에 인덱스 생성 측정_usls_200602_idx
ON 측정_y2006m02(판매량);
ALTER INDEX 측정_usls_idx
ATTACH PARTITION 측정_usls_200602_idx;
...
이 기술은 다음과 함께 사용할 수 있습니다.고유그리고기본 키제약조건도 포함됩니다. 제약 조건이 생성될 때 인덱스가 암시적으로 생성됩니다. 예:
ALTER TABLE ONLY 측정 ADD UNIQUE(city_id, logdate);
ALTER TABLE Measurement_y2006m02 ADD UNIQUE (city_id, logdate);
ALTER INDEX 측정_도시_ID_로그날짜_키
ATTACH PARTITION 측정_y2006m02_city_id_logdate_key;
...
파티션을 나눈 테이블에는 다음 제한 사항이 적용됩니다.
분할된 메이저 토토 사이트에 고유 키 또는 기본 키 제약 조건을 생성하려면 파티션 키에 표현식이나 함수 호출이 포함되어서는 안 되며 제약 조건의 열에는 모든 파티션 키 열이 포함되어야 합니다. 제약 조건을 구성하는 개별 인덱스는 자체 파티션 내에서만 직접적으로 고유성을 적용할 수 있기 때문에 이러한 제한이 존재합니다. 따라서 파티션 구조 자체는 다른 파티션에 중복이 없음을 보장해야 합니다.
마찬가지로 제외 제약 조건에는 모든 파티션 키 열이 포함되어야 합니다. 또한 제약 조건은 해당 열이 동일한지 비교해야 합니다(예:&&). 다시 말하지만, 이 제한은 파티션 간 제한을 적용할 수 없기 때문에 발생합니다. 제약 조건에는 파티션 키의 일부가 아닌 추가 열이 포함될 수 있으며 이를 원하는 연산자와 비교할 수 있습니다.
행 전트리거 켜짐삽입새 행의 최종 대상이 되는 파티션을 변경할 수 없습니다.
동일한 파티션 트리에서 임시 관계와 영구 관계를 혼합하는 것은 허용되지 않습니다. 따라서 분할된 메이저 토토 사이트이 영구적인 경우 해당 파티션도 영구적이어야 하며 분할된 메이저 토토 사이트이 임시인 경우에도 마찬가지입니다. 임시 관계를 사용할 때 파티션 트리의 모든 구성원은 동일한 세션에 속해야 합니다.
개별 파티션은 배후에서 상속을 사용하여 파티션된 테이블에 연결됩니다. 그러나 아래 설명된 것처럼 선언적으로 분할된 메이저 토토 사이트이나 해당 파티션에서는 상속의 일반적인 기능을 모두 사용할 수 없습니다. 특히, 파티션은 자신이 파티션인 분할된 메이저 토토 사이트 이외의 상위 항목을 가질 수 없으며 테이블은 분할된 메이저 토토 사이트과 일반 테이블 모두에서 상속될 수 없습니다. 즉, 파티션을 나눈 테이블과 해당 파티션은 일반 테이블과 상속 계층 구조를 공유하지 않습니다.
분할된 메이저 토토 사이트과 그 파티션으로 구성된 파티션 계층은 여전히 상속 계층이므로,메이저 토토 사이트로이드그리고 설명된 대로 모든 일반적인 상속 규칙이 적용됩니다.토토 PostgreSQL : 문서 : 17 : 5.11. 계승, 몇 가지 예외가 있음:
파티션은 상위 파티션에 없는 열을 가질 수 없습니다. 를 사용하여 파티션을 생성할 때 열을 지정할 수 없습니다.메이저 토토 사이트 생성, 또한 다음을 사용하여 나중에 파티션에 열을 추가하는 것도 불가능합니다.메이저 토토 사이트 변경. 테이블은 다음을 사용하여 파티션으로 추가될 수 있습니다.메이저 토토 사이트 변경 ...파티션 연결해당 열이 상위 열과 정확히 일치하는 경우에만 해당합니다.
둘 다확인그리고NULL이 아님분할된 메이저 토토 사이트의 제약 조건은 항상 모든 파티션에 상속됩니다. 생성이 허용되지 않습니다.상속 없음해당 유형의 제약. 상위 테이블에 동일한 제약 조건이 있는 경우 해당 유형의 제약 조건을 삭제할 수 없습니다.
사용 중만파티션이 없는 한 파티션을 나눈 테이블에만 제약 조건을 추가하거나 삭제하는 것이 지원됩니다. 파티션이 존재하면 다음을 사용하여만이외의 제약 조건에 대해서는 오류가 발생합니다고유그리고기본 키. 대신 파티션 자체에 대한 제약 조건을 추가하고 (상위 테이블에 없는 경우) 삭제할 수 있습니다.
분할된 메이저 토토 사이트 자체에는 데이터가 없으므로 다음을 사용하려고 합니다.잘라내기 만분할된 메이저 토토 사이트에서는 항상 오류가 반환됩니다.
내장된 선언적 파티셔닝은 가장 일반적인 사용 사례에 적합하지만, 보다 유연한 접근 방식이 유용할 수 있는 몇 가지 상황이 있습니다. 파티셔닝은 테이블 상속을 사용하여 구현할 수 있으며, 이는 다음과 같이 선언적 파티셔닝에서 지원되지 않는 여러 기능을 허용합니다.
선언적 파티셔닝의 경우 파티션은 파티션된 테이블과 정확히 동일한 열 세트를 가져야 하지만 테이블 상속의 경우 하위 테이블에는 상위 테이블에 없는 추가 열이 있을 수 있습니다.
메이저 토토 사이트 상속은 다중 상속을 허용합니다.
선언적 파티셔닝은 범위, 목록 및 해시 파티셔닝만 지원하는 반면, 테이블 상속을 사용하면 사용자가 선택한 방식으로 데이터를 나눌 수 있습니다. (그러나 제약 조건 제외가 하위 테이블을 효과적으로 정리할 수 없는 경우 쿼리 성능이 저하될 수 있습니다.)
이 예제는 위의 선언적 파티셔닝 예제와 동일한 파티셔닝 구조를 구축합니다. 다음 단계를 따르세요.
만들기“루트”메이저 토토 사이트, 그로부터 모든“아이”테이블이 상속됩니다. 이 테이블에는 데이터가 포함되지 않습니다. 모든 하위 테이블에 동일하게 적용하려는 경우가 아니면 이 테이블에 검사 제약 조건을 정의하지 마십시오. 인덱스나 고유 제약 조건을 정의하는 것도 의미가 없습니다. 이 예에서 루트 테이블은 다음과 같습니다.측정원래 정의된 메이저 토토 사이트:
메이저 토토 사이트 측정 생성(
city_id int는 null이 아닙니다.
logdate 날짜가 null이 아닙니다.
피크 온도 정수,
단위 판매 정수
);
여러 개 생성“아이”각각 루트 테이블에서 상속되는 테이블. 일반적으로 이러한 테이블은 루트에서 상속된 집합에 열을 추가하지 않습니다. 선언적 파티셔닝과 마찬가지로 이 테이블은 모든 면에서 정상입니다.포스트그레SQL메이저 토토 사이트(또는 외부 메이저 토토 사이트).
CREATE TABLE 측정_y2006m02 () 상속(측정); CREATE TABLE Measurement_y2006m03 () INHERITS (측정); ... CREATE TABLE Measurement_y2007m11 () INHERITS (측정값); CREATE TABLE Measurement_y2007m12 () INHERITS (측정값); CREATE TABLE Measurement_y2008m01 () INHERITS (측정값);
각 하위 메이저 토토 사이트에 허용되는 키 값을 정의하려면 하위 메이저 토토 사이트에 겹치지 않는 메이저 토토 사이트 제약 조건을 추가하세요.
일반적인 예는 다음과 같습니다:
확인( x = 1 ) CHECK( 카운티 IN( '옥스퍼드셔', '버킹엄셔', '워릭셔' )) 확인( 콘센트 ID = 100 AND 콘센트 ID < 200 )
제약조건이 서로 다른 하위 테이블에 허용된 키 값 사이에 중복이 없음을 보장하는지 확인하세요. 일반적인 실수는 다음과 같은 범위 제약 조건을 설정하는 것입니다.
확인(100과 200 사이의 콘센트 ID) 확인(200~300 사이의 콘센트 ID)
키 값 200이 어느 하위 테이블에 속하는지 명확하지 않기 때문에 이것은 잘못된 것입니다. 대신 범위는 다음 스타일로 정의되어야 합니다:
CREATE TABLE 측정_y2006m02(
CHECK( logdate = DATE '2006-02-01' AND logdate < DATE '2006-03-01' )
) 상속(측정);
CREATE TABLE 측정_y2006m03(
CHECK( logdate = DATE '2006-03-01' AND logdate < DATE '2006-04-01' )
) 상속(측정);
...
CREATE TABLE 측정_y2007m11(
CHECK( logdate = DATE '2007-11-01' AND logdate < DATE '2007-12-01' )
) 상속(측정);
CREATE TABLE 측정_y2007m12(
CHECK( logdate = DATE '2007-12-01' AND logdate < DATE '2008-01-01' )
) 상속(측정);
CREATE TABLE 측정_y2008m01(
CHECK( logdate = DATE '2008-01-01' AND logdate < DATE '2008-02-01' )
) 상속(측정);
각 하위 테이블에 대해 키 열에 대한 색인과 원하는 다른 색인을 생성하십시오.
측정 인덱스 생성 측정_y2006m02_logdate ON 측정_y2006m02(로그 날짜); CREATE INDEX 측정_y2006m03_logdate ON 측정_y2006m03(logdate); CREATE INDEX 측정_y2007m11_logdate ON 측정_y2007m11(logdate); CREATE INDEX 측정_y2007m12_logdate ON 측정_y2007m12(logdate); 측정_y2008m01_logdate ON 측정 INDEX 생성_y2008m01(로그 날짜);
우리는 우리 애플리케이션이 다음과 같이 말할 수 있기를 원합니다.측정에 삽입 ...그리고 데이터가 적절한 하위 테이블로 리디렉션되도록 합니다. 루트 테이블에 적절한 트리거 함수를 연결하여 이를 조정할 수 있습니다. 데이터가 최신 하위 항목에만 추가되는 경우 매우 간단한 트리거 함수를 사용할 수 있습니다.
함수 생성 또는 교체 Measurement_insert_trigger()
$$로 트리거 반환
시작
측정_y2008m01 값에 삽입(신규.*);
NULL을 반환합니다.
끝;
$$
언어 plpgsql;
함수를 생성한 후 트리거 함수를 호출하는 트리거를 생성합니다.
트리거 생성 insert_measurement_trigger
측정 시 삽입 전
각 행 실행 함수에 대해 Measurement_insert_trigger();
우리는 트리거 기능이 항상 현재 하위 테이블에 삽입되도록 매달 트리거 기능을 다시 정의해야 합니다. 그러나 트리거 정의는 업데이트할 필요가 없습니다.
우리는 데이터를 삽입하고 행이 추가되어야 하는 하위 테이블을 서버가 자동으로 찾도록 할 수 있습니다. 더 복잡한 트리거 함수를 사용하여 이를 수행할 수 있습니다. 예를 들면 다음과 같습니다.
함수 생성 또는 교체 Measurement_insert_trigger()
$$로 트리거 반환
시작
IF ( NEW.logdate = 날짜 '2006-02-01' AND
NEW.logdate < DATE '2006-03-01' ) THEN
측정_y2006m02 값에 삽입(신규.*);
ELSIF( NEW.logdate = 날짜 '2006-03-01' AND
NEW.logdate < DATE '2006-04-01' ) THEN
측정_y2006m03 값에 삽입(신규.*);
...
ELSIF( NEW.logdate = 날짜 '2008-01-01' AND
NEW.logdate < DATE '2008-02-01' ) THEN
측정_y2008m01 값에 삽입(신규.*);
그 외
RAISE EXEPTION '날짜가 범위를 벗어났습니다. Measurement_insert_trigger() 함수를 수정하세요!';
종료하면;
NULL을 반환합니다.
끝;
$$
언어 plpgsql;
트리거 정의는 이전과 동일합니다. 각IF테스트는 정확히 일치해야 합니다.확인하위 메이저 토토 사이트에 대한 제약 조건.
이 함수는 한 달의 경우보다 더 복잡하지만 분기가 필요하기 전에 추가될 수 있으므로 자주 업데이트할 필요는 없습니다.
실제로 대부분의 삽입이 해당 하위에 들어가는 경우 최신 하위를 먼저 확인하는 것이 가장 좋습니다. 단순화를 위해 이 예시의 다른 부분과 동일한 순서로 트리거 테스트를 표시했습니다.
삽입을 적절한 하위 테이블로 리디렉션하는 다른 접근 방식은 루트 테이블에 트리거 대신 규칙을 설정하는 것입니다. 예를 들면:
규칙 만들기 Measurement_insert_y2006m02 AS
측정 위치에 삽입 중
( logdate = DATE '2006-02-01' AND logdate < DATE '2006-03-01' )
대신에
측정_y2006m02 값에 삽입(신규.*);
...
측정 규칙 만들기_insert_y2008m01 AS
측정 위치에 삽입 중
( logdate = DATE '2008-01-01' AND logdate < DATE '2008-02-01' )
대신에
측정_y2008m01 값에 삽입(신규.*);
규칙은 트리거보다 훨씬 더 많은 오버헤드를 갖지만 오버헤드는 행당 한 번이 아닌 쿼리당 한 번 지불되므로 이 방법은 대량 삽입 상황에 유리할 수 있습니다. 그러나 대부분의 경우 트리거 방법이 더 나은 성능을 제공합니다.
조심하세요복사규칙을 무시합니다. 사용하고 싶다면복사데이터를 삽입하려면 루트에 직접 복사하기보다는 올바른 하위 테이블에 복사해야 합니다.복사트리거를 실행하므로 트리거 방식을 사용하면 정상적으로 사용할 수 있습니다.
규칙 접근 방식의 또 다른 단점은 규칙 집합이 삽입 날짜를 포함하지 않는 경우 오류를 강제할 수 있는 간단한 방법이 없다는 것입니다. 대신 데이터는 자동으로 루트 테이블로 이동합니다.
다음을 확인하세요.constraint_exclusion구성 매개변수는 다음에서 비활성화되지 않았습니다.postgresql.conf; 그렇지 않으면 하위 메이저 토토 사이트에 불필요하게 액세스할 수 있습니다.
보시다시피 복잡한 테이블 계층에는 상당한 양의 DDL이 필요할 수 있습니다. 위의 예에서는 매달 새로운 하위 테이블을 생성하므로 필요한 DDL을 자동으로 생성하는 스크립트를 작성하는 것이 현명할 수 있습니다.
오래된 데이터를 빠르게 제거하려면 더 이상 필요하지 않은 하위 테이블을 삭제하세요.
드롭 메이저 토토 사이트 측정_y2006m02;
상속 계층 메이저 토토 사이트에서 하위 메이저 토토 사이트을 제거하지만 자체 권한으로 메이저 토토 사이트에 대한 액세스 권한을 유지하려면:
ALTER TABLE Measurement_y2006m02 NO INHERIT 측정;
새 데이터를 처리하기 위해 새 하위 테이블을 추가하려면 위에서 원래 하위 테이블을 생성한 것처럼 빈 하위 테이블을 생성하십시오.
메이저 토토 사이트 생성 측정_y2008m02(
CHECK( logdate = DATE '2008-02-01' AND logdate < DATE '2008-03-01' )
) 상속(측정);
또는 테이블 계층 구조에 추가하기 전에 새 하위 테이블을 생성하고 채울 수도 있습니다. 이를 통해 상위 테이블의 쿼리에 표시되기 전에 데이터를 로드, 확인 및 변환할 수 있습니다.
메이저 토토 사이트 생성 측정_y2008m02 (제약 조건을 포함하는 기본값을 포함하는 측정과 유사); ALTER TABLE 측정_y2008m02 제약조건 추가 y2008m02 CHECK ( logdate = DATE '2008-02-01' AND logdate < DATE '2008-03-01' ); \ 'measurement_y2008m02'에서 측정_y2008m02 복사 -- 아마도 다른 데이터 준비 작업 ALTER TABLE Measurement_y2008m02 INHERIT 측정;
상속을 사용하여 구현된 분할에는 다음 주의 사항이 적용됩니다:
모든 내용을 확인하는 자동 방법은 없습니다.확인제약조건은 상호 배타적입니다. 하위 테이블을 생성하고 관련 객체를 생성 및/또는 수정하는 코드를 직접 작성하는 것보다 생성하는 것이 더 안전합니다.
인덱스 및 외래 키 제약 조건은 단일 메이저 토토 사이트에 적용되며 상속 하위 항목에는 적용되지 않으므로 일부가 있습니다.주의사항알고 있어야 합니다.
여기에 표시된 체계는 행의 키 열 값이 절대 변경되지 않거나 적어도 다른 파티션으로 이동해야 할 만큼 충분히 변경되지 않는다고 가정합니다. 안업데이트그 시도는 실패할 것입니다.확인제약. 이러한 경우를 처리해야 하는 경우 하위 테이블에 적절한 업데이트 트리거를 배치할 수 있지만 이로 인해 구조 관리가 훨씬 더 복잡해집니다.
수동진공그리고분석명령은 모든 상속 하위 테이블을 자동으로 처리합니다. 이것이 바람직하지 않은 경우 다음을 사용할 수 있습니다.만키워드. 다음과 같은 명령:
측정만 분석;
루트 테이블만 처리합니다.
삽입다음을 포함하는 진술충돌 중절이 예상대로 작동하지 않을 가능성이 높습니다.충돌 중하위 관계가 아닌 지정된 대상 관계에 대한 고유한 위반이 있는 경우에만 조치가 취해집니다.
애플리케이션이 파티션 구성표를 명시적으로 인식하지 않는 한 행을 원하는 하위 테이블로 라우팅하려면 트리거 또는 규칙이 필요합니다. 트리거는 작성하기가 복잡할 수 있으며 선언적 분할을 통해 내부적으로 수행되는 튜플 라우팅보다 훨씬 느립니다.
파티션 가지치기은 선언적으로 파티션을 나눈 테이블의 성능을 향상시키는 쿼리 최적화 기술입니다. 예를 들어:
SET 활성화_파티션_정리 = 켜기; -- 기본값 SELECT 개수(*) FROM 측정 WHERE logdate = DATE '2008-01-01';
파티션 정리 없이 위의 쿼리는 다음의 각 파티션을 스캔합니다.측정테이블. 파티션 정리가 활성화되면 플래너는 각 파티션의 정의를 검사하고 쿼리 조건을 충족하는 행을 포함할 수 없기 때문에 파티션을 스캔할 필요가 없음을 증명합니다.어디에서절. 플래너가 이를 증명할 수 있을 때 (자두) 쿼리 계획의 파티션입니다.
EXLAIN 명령을 사용하여enable_partition_pruning구성 매개변수를 사용하면 파티션이 정리된 계획과 그렇지 않은 계획 간의 차이를 표시할 수 있습니다. 이러한 유형의 테이블 설정에 대한 일반적인 최적화되지 않은 계획은 다음과 같습니다.
SET 활성화_파티션_프루닝 = 꺼짐;
EXPLAIN SELECT count(*) FROM 측정 WHERE logdate = DATE '2008-01-01';
쿼리 계획
----------------------------------------------------------------------
집계(비용=188.76..188.77행=1너비=8)
- 추가(비용=0.00..181.05행=3085 너비=0)
- 측정 시 시퀀스 스캔_y2006m02(비용=0.00..33.12행=617너비=0)
필터: (로그 날짜 = '2008-01-01'::날짜)
- 측정_y2006m03의 시퀀스 스캔(비용=0.00..33.12행=617너비=0)
필터: (로그 날짜 = '2008-01-01'::날짜)
...
- 측정_y2007m11의 시퀀스 스캔(비용=0.00..33.12행=617너비=0)
필터: (로그 날짜 = '2008-01-01'::날짜)
- 측정_y2007m12의 시퀀스 스캔(비용=0.00..33.12행=617너비=0)
필터: (로그 날짜 = '2008-01-01'::날짜)
- 측정_y2008m01의 시퀀스 스캔(비용=0.00..33.12행=617너비=0)
필터: (로그 날짜 = '2008-01-01'::날짜)
파티션 중 일부 또는 전부는 전체 테이블 순차 스캔 대신 인덱스 스캔을 사용할 수 있지만 여기서 중요한 점은 이 쿼리에 응답하기 위해 이전 파티션을 스캔할 필요가 전혀 없다는 것입니다. 파티션 정리를 활성화하면 동일한 답변을 제공하는 훨씬 더 저렴한 계획을 얻을 수 있습니다.
SET 활성화_파티션_정리 = 켜기;
EXPLAIN SELECT count(*) FROM 측정 WHERE logdate = DATE '2008-01-01';
쿼리 계획
----------------------------------------------------------------------
집계(비용=37.75..37.76행=1너비=8)
- 측정_y2008m01의 시퀀스 스캔(비용=0.00..33.12행=617너비=0)
필터: (로그 날짜 = '2008-01-01'::날짜)
파티션 정리는 인덱스의 존재가 아니라 파티션 키에 의해 암시적으로 정의된 제약 조건에 의해서만 구동된다는 점에 유의하세요. 따라서 키 열에 인덱스를 정의할 필요가 없습니다. 특정 파티션에 대해 인덱스를 만들어야 하는지 여부는 파티션을 검색하는 쿼리가 일반적으로 파티션의 큰 부분을 검색할지 아니면 작은 부분만 검색할지 여부에 따라 달라집니다. 후자의 경우에는 색인이 도움이 되지만 전자의 경우에는 도움이 되지 않습니다.
파티션 정리는 특정 쿼리를 계획하는 동안뿐만 아니라 쿼리를 실행하는 동안에도 수행될 수 있습니다. 이는 쿼리 계획 시 값을 알 수 없는 표현식(예: a에 정의된 매개변수)이 절에 포함된 경우 더 많은 파티션을 정리할 수 있으므로 유용합니다.준비문, 하위 쿼리에서 얻은 값 사용 또는 중첩 루프 조인의 내부에 매개변수화된 값 사용. 실행 중 파티션 정리는 다음 중 언제든지 수행될 수 있습니다.
쿼리 계획을 초기화하는 중. 실행의 초기화 단계 동안 알려진 매개변수 값에 대해 여기에서 파티션 프루닝을 수행할 수 있습니다. 이 단계에서 정리된 파티션은 쿼리에 표시되지 않습니다.설명또는분석 설명. 다음을 관찰하여 이 단계에서 제거된 파티션 수를 확인할 수 있습니다.“하위 계획이 제거됨”속성설명출력. 쿼리 플래너는 계획의 일부인 모든 파티션에 대한 잠금을 얻습니다. 그러나 실행자가 캐시된 계획을 사용하는 경우 실행 초기화 단계에서 파티션 정리가 수행된 후에 남아 있는 파티션(예:설명출력이 아닌 다음에서 참조하는 출력“하위 계획이 제거됨”속성.
실제 쿼리 계획 실행 중. 실제 쿼리 실행 중에만 알려진 값을 사용하여 파티션을 제거하기 위해 여기에서 파티션 정리를 수행할 수도 있습니다. 여기에는 하위 쿼리의 값과 매개변수화된 중첩 루프 조인의 값과 같은 실행 시간 매개변수의 값이 포함됩니다. 이러한 매개변수의 값은 쿼리 실행 중에 여러 번 변경될 수 있으므로 파티션 정리에 사용되는 실행 매개변수 중 하나가 변경될 때마다 파티션 정리가 수행됩니다. 이 단계에서 파티션이 정리되었는지 확인하려면 다음 사항을 주의 깊게 검사해야 합니다.루프속성분석 설명출력. 서로 다른 파티션에 해당하는 하위 계획은 실행 중에 각각이 정리된 횟수에 따라 서로 다른 값을 가질 수 있습니다. 일부는 다음과 같이 표시될 수 있습니다.(실행되지 않음)매번 가지치기를 했다면.
파티션 정리는 다음을 사용하여 비활성화할 수 있습니다.enable_partition_pruning설정.
제약조건 제외은 파티션 정리와 유사한 쿼리 최적화 기술입니다. 레거시 상속 방법을 사용하여 구현된 파티셔닝에 주로 사용되지만 선언적 파티셔닝을 포함한 다른 목적으로도 사용될 수 있습니다.
제약 제외는 각 테이블의 파티션을 사용한다는 점을 제외하면 파티션 정리와 매우 유사한 방식으로 작동합니다.확인제약 조건 - 이름을 부여함 - 반면 파티션 정리는 선언적 파티셔닝의 경우에만 존재하는 테이블의 파티션 경계를 사용합니다. 또 다른 차이점은 제약 조건 제외가 계획 시에만 적용된다는 것입니다. 실행 시 파티션을 제거하려는 시도가 없습니다.
제약 제외가 사용하는 사실확인파티션 정리에 비해 속도가 느린 제약 조건은 때때로 이점으로 사용될 수 있습니다. 선언적으로 분할된 메이저 토토 사이트에서도 제약 조건을 정의할 수 있기 때문에 내부 파티션 경계 외에도 제약 조건 제외를 통해 쿼리 계획에서 추가 파티션을 제거할 수 있습니다.
기본(권장) 설정은constraint_exclusion둘 다 아님켜짐아니요꺼짐, 그러나 중간 설정은파티션, 이는 상속으로 분할된 메이저 토토 사이트에서 작업할 가능성이 있는 쿼리에만 이 기술이 적용되도록 합니다.켜짐설정으로 인해 기획자가 조사하게 됩니다.확인모든 쿼리에 제약이 있으며, 이점이 없을 것 같은 간단한 쿼리도 마찬가지입니다.
제약조건 제외에는 다음 주의사항이 적용됩니다:
제약조건 제외는 쿼리 실행 중에도 적용될 수 있는 파티션 정리와 달리 쿼리 계획 중에만 적용됩니다.
제약조건 제외는 쿼리가 다음과 같은 경우에만 작동합니다.어디에서절에 상수(또는 외부에서 제공되는 매개변수)가 포함되어 있습니다. 예를 들어, 다음과 같은 불변 함수와의 비교는 다음과 같습니다.CURRENT_TIMESTAMP플래너는 런타임에 함수 값이 어떤 하위 메이저 토토 사이트에 포함될 수 있는지 알 수 없기 때문에 최적화할 수 없습니다.
파티셔닝 제약 조건을 단순하게 유지하세요. 그렇지 않으면 계획자가 하위 테이블을 방문할 필요가 없다는 것을 증명하지 못할 수도 있습니다. 이전 예제에 설명된 대로 목록 분할에는 간단한 동일 조건을 사용하고, 범위 분할에는 간단한 범위 테스트를 사용합니다. 경험상으로 분할 제약 조건에는 B-트리 색인 생성 가능 연산자를 사용하여 분할 열과 상수의 비교만 포함되어야 합니다. 왜냐하면 B-트리 색인 생성 가능 열만 파티션 키에 허용되기 때문입니다.
상위 메이저 토토 사이트의 모든 하위에 대한 모든 제약 조건은 제약 조건 제외 중에 검사되므로 하위 항목 수가 많으면 쿼리 계획 시간이 상당히 늘어날 수 있습니다. 따라서 레거시 상속 기반 분할은 최대 100개의 하위 메이저 토토 사이트까지 잘 작동합니다. 수천 명의 어린이를 이용하려고 하지 마십시오.
메이저 토토 사이트을 분할하는 방법은 신중하게 선택해야 합니다. 잘못된 설계로 인해 쿼리 계획 및 실행 성능이 부정적인 영향을 받을 수 있기 때문입니다.
가장 중요한 설계 결정 중 하나는 데이터를 분할하는 열입니다. 가장 일반적으로 나타나는 열 또는 열 집합을 기준으로 파티션을 나누는 것이 최선의 선택인 경우가 많습니다.어디파티션된 테이블에서 실행 중인 쿼리의 절.어디에서64693_64882기본 키또는고유제약. 원치 않는 데이터를 제거하는 것도 파티셔닝 전략을 계획할 때 고려해야 할 요소입니다. 전체 파티션은 상당히 빠르게 분리될 수 있으므로 한 번에 제거할 모든 데이터가 단일 파티션에 위치하도록 파티션 전략을 설계하는 것이 유리할 수 있습니다.
테이블을 나누어야 할 파티션의 목표 수를 선택하는 것도 중요한 결정입니다. 파티션이 충분하지 않으면 인덱스가 너무 크고 데이터 지역성이 좋지 않아 캐시 적중률이 낮아질 수 있습니다. 그러나 테이블을 너무 많은 파티션으로 나누면 문제가 발생할 수도 있습니다. 파티션이 너무 많으면 아래에 자세히 설명된 대로 쿼리 계획 및 실행 중에 쿼리 계획 시간이 길어지고 메모리 소비가 높아질 수 있습니다. 테이블을 분할하는 방법을 선택할 때 향후 발생할 수 있는 변경 사항을 고려하는 것도 중요합니다. 예를 들어, 고객당 하나의 파티션을 선택하고 현재 소수의 대규모 고객을 보유하고 있는 경우, 몇 년 후에 다수의 소규모 고객을 만나게 될 경우의 영향을 고려하십시오. 이 경우 파티션을 선택하는 것이 더 나을 수 있습니다.해시파티션을 시도하기보다는 합리적인 수의 파티션을 선택하세요.목록그리고 고객 수가 데이터를 분할하는 것이 실용적인 것 이상으로 증가하지 않기를 바라고 있습니다.
하위 파티션 나누기는 다른 파티션보다 커질 것으로 예상되는 파티션을 추가로 분할하는 데 유용할 수 있습니다. 또 다른 옵션은 파티션 키에 여러 열이 포함된 범위 파티셔닝을 사용하는 것입니다. 둘 중 하나는 파티션 수가 너무 많아지기 쉬우므로 자제하는 것이 좋습니다.
쿼리 계획 및 실행 중에 분할 오버헤드를 고려하는 것이 중요합니다. 쿼리 플래너는 일반적으로 쿼리 플래너가 소수의 파티션을 제외한 모든 파티션을 정리할 수 있는 경우 최대 수천 개의 파티션이 포함된 파티션 계층 구조를 꽤 잘 처리할 수 있습니다. 플래너가 파티션 정리를 수행한 후 더 많은 파티션이 남아 있으면 계획 시간이 길어지고 메모리 소비도 높아집니다. 많은 수의 파티션을 갖는 것에 대해 우려해야 하는 또 다른 이유는 특히 많은 세션이 많은 수의 파티션에 접근하는 경우 서버의 메모리 소비가 시간이 지남에 따라 크게 증가할 수 있다는 것입니다. 그 이유는 각 파티션에서 해당 파티션에 닿는 각 세션의 로컬 메모리에 해당 메타데이터를 로드해야 하기 때문입니다.
데이터 웨어하우스 유형의 작업 부하에서는 다른 작업 부하보다 더 많은 수의 파티션을 사용하는 것이 합리적일 수 있습니다.OLTP유형 작업 부하. 일반적으로 데이터 웨어하우스에서는 대부분의 처리 시간이 쿼리 실행 중에 소비되므로 쿼리 계획 시간은 그다지 중요하지 않습니다. 이 두 가지 유형의 워크로드 중 하나를 사용하면 대량의 데이터를 다시 분할하는 작업이 엄청나게 느려질 수 있으므로 조기에 올바른 결정을 내리는 것이 중요합니다. 의도한 작업 부하에 대한 시뮬레이션은 분할 전략을 최적화하는 데 도움이 되는 경우가 많습니다. 더 많은 파티션이 더 적은 수의 파티션보다 낫다고 가정하거나 그 반대도 마찬가지입니다.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.