我有一张在时间字段上分配的表格。我有25个分区。现在我考虑使用对象类型字段进一步划分它。我有十个对象类型,因此它将导致250个分区。根据我读到的,推荐的分区数是几十个,但在我的情况下,模式非常简单,不包括任何连接,所以我想知道它是否是o.k.定义那么多分区。我正在使用postgres版本9.1.2
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 );
答案 0 :(得分:1)
当前版本(9.2)具有此guidance about the number of partitions。 (自8.3以来,该指导没有改变。)
检查主表的所有分区上的所有约束 在约束排除期间,可能存在大量分区 大大增加查询计划时间。使用这些分区 技术可以很好地与大约一百个分区一起使用; 不要试图使用数千个分区。
通过阅读PostgreSQL邮件列表,我相信增加查询计划的时间是您面临的主要问题。
如果您的分区可以从冷数据中隔离热数据,或者您的分区可以对您经常查询的群集数据进行分组,那么您可能会没问题。但测试是你最好的选择。 EXPLAIN ANALYZE
代表性查询未分区表,然后在分区后执行相同操作。在分析任何查询之前,请选择代表性查询。