숫자 쌍 (A, B)을 보유하고 있으며 각 테이블의 범위는 0에서 10,000까지이며 수레로 저장되어 있습니다.PostgreSQL : 테이블 자동 파티션
예를 들어,이 쌍은 매우 큰 성장 저장하는 PostgreSQL의 테이블 이후
(1, 9984.4), (2143.44, 124.243), (0.55, 0), ...
, 나는 partition it into inheriting sub-tables로 결정했다. 나는 각각 1000x1000의 범위를 저장하는 100 개의 테이블을 생성하려고합니다.
문제는이 수치가 가까운 숫자의 큰 덩어리로 나타나는 경향이 있다는 것입니다. 미래에 일부 테이블은 거의 비어있을 것이고 어떤 테이블은 데이터베이스의 매우 큰 부분을 차지할 것입니다. 불행히도 미래 쌍의 분포는 아직 알려지지 않았습니다.
테이블을 자동으로 다시 분할 할 방법을 찾고 있습니다. 즉, 특정 서브 테이블이 특정 수의 쌍 이상을 보유하면 자동으로 4 개의 서브 - 서브 테이블로 분할되는 식으로 진행됩니다.
내 질문은 :
- 재귀 분할 및 상속 PostgreSQL의 8.3에서 수 있습니까? 인덱스 및 쿼리 계획에서이를 이해합니까?
- 서브 테이블을 너무 크게 커지면 분할하는 가장 좋은 방법은 무엇입니까? 나는 이것이 라이브 데이터베이스가 아니라는 것을 지적해야한다. 그래서 매주 몇 시간 정도의 다운 타임이 허용된다.
- 업데이트 : 상속 테이블을 원본 테이블을 대체 할 4 개의 테이블 (즉, 마스터 테이블에서 직접 상속받는 테이블)로 분할 할 수 있습니다. 한 수준 이상의 상속을 피할 것이지만 한 테이블에서 직접 상속하는 테이블의 경우 수천 가지가 있습니다. 이 접근 방식의 장단점은 무엇입니까? 테이블이 이미 큰 경우 사전에
감사합니다,
아담 모든
"대형"이란 무엇이며 해결하려는 문제는 무엇입니까? 파티셔닝은 훌륭하지만 SELECT 문에 대한 의미가있는 경우에만 가능합니다. 전체 테이블의 모든 데이터를 삭제해도 편리하지만 매일하는 일은 아닙니다. –
a. 수억의 기록; 비. 그것은 실제로 SELECT 질의를위한 것이며, 앞으로 여러 대의 컴퓨터 사이에서 데이터베이스를 쉽게 분리 할 수 있습니다. –