Postgresql 9.2.24 문서화 | ||||
---|---|---|---|---|
토토 : 문서 : 9.2 : 상속 | 스포츠 토토 : 문서 : 9.2 : 데이터 정의 | 5 장. | PostgreSQL : 문서 : 9.2 : 외국 토토 사이트 순위 |
PostgreSQL기본을 지원합니다
윈 토토션은 논리적으로 하나의 큰 것을 분할하는 것을 말합니다
쿼리 성능을 크게 향상시킬 수 있습니다
쿼리 또는 업데이트가 많은 비율에 액세스 할 때
벌크 하중 및 삭제는 추가 또는Alter Table Noand드롭 테이블are진공오버 헤드삭제.
거의 사용하지 않는 데이터를 저렴하고 느리게 마이그레이션 할 수 있습니다
혜택은 일반적으로 테이블 일 때만 가치가 있습니다.
현재,PostgreSQL테이블 상속을 통한 분할을 지원합니다. 각 윈 토토션토토 : 문서 : 9.2 : 상속)
다음 형식의 파티셔닝은에서 구현할 수 있습니다.PostgreSQL:
테이블이 분할되어"범위"키 열 또는 세트로 정의됩니다
테이블은 명시 적으로 나열하여 윈 토토션됩니다
분할 된 테이블을 설정하려면 다음을 수행하십시오.
생성"마스터"테이블,
이 테이블에는 데이터가 포함되지 않습니다. 수표를 정의하지 마십시오
몇 가지 생성"Child"테이블
우리는 하위 테이블을 윈 토토션이라고합니다.PostgreSQL테이블.
윈 토토션 테이블에 테이블 제약 조건을 추가하여 정의합니다
일반적인 예는 다음과 같습니다.
점검 (x = 1)
제약 조건이 없음을 보장하십시오
점검 (100에서 200 사이의 outletid)
이것은 어떤 윈 토토션이 명확하지 않기 때문에 잘못되었습니다.
범위 간의 구문에는 차이가 없습니다.
각 윈 토토션마다 키에 인덱스를 만듭니다
선택적으로 데이터를 리디렉션하기위한 트리거 또는 규칙을 정의하십시오
제약 _exclusion구성 매개 변수가 비활성화되지 않았습니다on11796_11857
예를 들어, 우리가
테이블 측정 생성 (
우리는 대부분의 쿼리가 지난 주에만 액세스 할 것임을 알고 있습니다.
이 상황에서 우리는 윈 토토을 사용하여 우리가 만나는 데 도움을 줄 수 있습니다.
마스터 테이블은입니다.측정테이블, 정확히 다음과 같이 선언했습니다
다음으로 우리는 활성 달마다 하나의 윈 토토션을 만듭니다 :
테이블 측정 생성 _y2006m02 () 상속 (측정);
각 윈 토토션은 자신의 완전한 테이블입니다.측정테이블.
이것은 우리의 문제 중 하나를 해결합니다 : 이전 데이터 삭제. 각드롭 테이블가장 오래된 어린이 테이블에서
우리는 겹치지 않는 테이블 제약 조건을 제공해야합니다.
테이블 생성 _y2006m02 (
아마도 주요 열에 인덱스가 필요할 것입니다 :
Measurement_Y2006M02 (logdate)에서 인덱스 측정 _y2006m02_logdate 만들기;
현재 추가 인덱스를 추가하지 않기로 선택합니다.
우리는 응용 프로그램을 말할 수 있기를 원합니다측정에 삽입 ...
함수 생성 또는 교체 측정 _insert_trigger ()
함수를 작성한 후 트리거를 만듭니다
Trigger insert_measurement_trigger 작성
우리는 매달 트리거 함수를 재정의하여
데이터를 삽입하고 서버가있을 수 있습니다.
함수 생성 또는 교체 측정 _insert_trigger ()
트리거 정의는 이전과 동일합니다. 주목하십시오if테스트는 정확히 일치해야합니다check그것에 대한 제약
이 함수는보다 복잡합니다
참고 :실제로 확인하는 것이 가장 좋습니다
우리가 볼 수 있듯이 복잡한 분할 계획에는
일반적으로 처음에 설립 된 윈 토토션 세트
오래된 데이터를 제거하기위한 가장 간단한 옵션은 단순히 삭제하는 것입니다.
드롭 테이블 측정 _y2006m02;
이것은 수백만 레코드를 매우 빠르게 삭제할 수 있습니다.
종종 바람직한 또 다른 옵션은
ALTER 테이블 측정 _Y2006M02 상속 측정 없음;
이것은 데이터에서 추가 작업을 수행 할 수 있습니다.COPY, pg_dump또는 유사한 도구. 그것
마찬가지로 새로운 데이터를 처리하기 위해 새 윈 토토션을 추가 할 수 있습니다. 우리
테이블 생성 측정 _y2008m02 (
대안으로, 때로는 생성하는 것이 더 편리합니다.
생성 테이블 측정 _y2008m02
제약 제외쿼리입니다
SET SENTRAINT_EXCLUSION = ON;
제약 제외가 없으면 위의 쿼리가 스캔됩니다측정테이블. 제약 제외여기서절. 플래너시기
를 사용할 수 있습니다설명명령으로제약 _exclusionon 및 계획.
SET SERPARTAINT_EXCLUSION = OFF;
일부 또는 전부는 대신 인덱스 스캔을 사용할 수 있습니다.
SET SORMSARTAINT_EXCLUSION = ON;
제약 제외는에 의해서만 구동됩니다.check존재가 아니라 제약
기본 (및 권장) 설정제약 _exclusion실제로는 아닙니다onNOROFF, 그러나 중간 설정은윈 토토션,이 기술은 기술을 일으킨다on설정check모든 쿼리의 제약 조건, 심지어 간단한 간단한 제약 조건
인서트를 리디렉션하는 다른 접근법
규칙 생성 _insert_y2006m02 AS
규칙은 트리거보다 훨씬 더 많은 오버 헤드를 가지고 있지만
COPY규칙을 무시합니다.COPY삽입COPY
규칙 접근법의 또 다른 단점은
윈 토토도 A를 정리할 수도 있습니다.Union All테이블 상속 대신보기.
보기 측정을 만듭니다
그러나보기를 재현해야 할 필요성은 추가 단계를 추가합니다.
다음 경고는 분할 된 테이블에 적용됩니다 :
모든 것을 확인하는 자동 방법이 없습니다check제약은 상호입니다
여기에 표시된 체계는 윈 토토션 키를 가정합니다업데이트그렇게하려고 시도합니다check제약. 그러한 경우를 처리 해야하는 경우
매뉴얼을 사용하는 경우진공또는분석명령, 잊지 마십시오
측정 분석;
마스터 테이블 만 처리합니다.
다음 경고는 제약 제외에 적용됩니다 :
제약 제외는 쿼리의 경우에만 작동합니다여기서절은 상수를 포함합니다current_timestamp
할 수 없습니다
분할 제약 조건을 간단하게 유지하십시오
마스터 테이블의 모든 윈 토토션에 대한 모든 제약