시간 필드에 partitoned 테이블이 있습니다. 25 개의 파티션이 있습니다. 이제는 객체 유형 필드를 사용하여 더 많이 분할하는 것을 고려합니다. 나는 10 개의 객체 유형을 가지므로 250 개의 파티션이 생성됩니다. 내가 읽은 바에 따르면 추천 된 파티션 번호는 수십 가지이지만, 제 경우에는 스키마가 매우 간단하고 조인을 포함하지 않으므로 o.k인지 궁금합니다. 그 많은 파티션을 정의합니다. 나는 포스트 그레스 버전 최신 버전 (9.2) 9.1.2postgres 파티션 번호
CREATE TABLE metric_store.lc_aggregated_data_master_10_minutes
(
from_time integer,
object_id integer,
object_type integer,
latencies_client_fetch_sec_sum bigint,
latencies_client_rttsec_sum bigint,
latencies_db_bci_res_sec_sum bigint,
latencies_net_infrastructure_ttlb_sec_sum bigint,
latencies_retransmissions_sec_sum bigint,
latencies_ttfbsec_sum bigint,
latencies_ttlbsec_sum bigint,
latencies_ttlbsec_sumsqr bigint,
latencies_ttlbsec_histogram_level0 integer,
latencies_ttlbsec_histogram_level1 integer,
latencies_ttlbsec_histogram_level2 integer,
latencies_ttlbsec_histogram_level3 integer,
latencies_ttlbsec_histogram_level4 integer,
latencies_ttlbsec_histogram_level5 integer,
latencies_ttlbsec_histogram_level6 integer,
latencies_ttlbsec_histogram_level7 integer,
usage_bytes_total bigint,
usage_hits_total integer,
latencies_server_net_ttlbsec_sum bigint,
latencies_server_rttsec_sum bigint,
avaiability_errors_total integer
)
WITH (
OIDS=FALSE
);
ALTER TABLE metric_store.lc_aggregated_data_master_10_minutes
OWNER TO postgres;
CREATE TABLE metric_store.lc_aggregated_data_10_minutes_from_1353070800
(
CONSTRAINT lc_aggregated_data_10_minutes_from_1353070800_pkey PRIMARY KEY (from_time , object_id),
CONSTRAINT lc_aggregated_data_10_minutes_from_1353070800_from_time_check CHECK (from_time >= 1353070800 AND from_time < 1353190800)
)
INHERITS (metric_store.lc_aggregated_data_master_10_minutes)
WITH (
OIDS=FALSE
);
ALTER TABLE metric_store.lc_aggregated_data_10_minutes_from_1353070800
OWNER TO postgres;
CREATE INDEX lc_aggregated_data_10_minutes_from_1353070800_obj_typ_idx
ON metric_store.lc_aggregated_data_10_minutes_from_1353070800
USING btree
(from_time , object_type);
몇 개의 행이 필요합니까? 당신은 파티션되지 않은 테이블에 대한 쿼리가 가능한 한 좋은 것으로 확신합니까? (파티션은 올바른 인덱싱을 대체 할 수있는 좋은 대안이 아닙니다.) 빠른 하드웨어가 더 나은 솔루션입니까? (파티션은 적절한 서버를 대체 할 수있는 빈약 한 것입니다.) –
약 1 천만 행입니다. 객체 유형에 대한 색인이 있지만 많은 무작위 액세스가 디스크를 탐색하기 때문에 100 개 이상의 시간 지점에 대한 많은 객체 ID에 대한 쿼리가 매우 느립니다. 작은 분할 영역으로 데이터를 분할하면 일반적으로 쿼리에서 동일한 객체 유형을 쿼리하기 때문에 성능이 향상됩니다. – user1817686
천만 행이 큰 테이블이 아닙니다. 내가 너라면, 먼저 분할되지 않은 테이블을 조정하는 것에 대한 조언을 구할거야. 또한 버전 9.2에는 색인 전용 검사가 있지만 여기서는 도움이 될 것이라고 생각하지 않습니다. –