Postgres分区编号



我有一个在时间字段中分配的表。我有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 );

当前版本(9.2)具有有关分区数量的指南。(自8.3以来,该指南没有改变。)

检查了主表的所有分区的所有约束 在约束排除期间,可能会有大量分区 大大增加了查询计划时间。使用这些分区 技术将与多达一百个分区合作。 不要尝试使用数千个分区。

通过阅读PostgreSQL邮件列表,我相信增加查询计划的时间是您面临的主要问题。

如果您的分区可以将热数据从冷数据中隔离,或者您的分区可以分组您经常查询的数据集,则可能会没事的。但是测试是您最好的选择。EXPLAIN ANALYZE在未分十个表中的代表性查询,然后在分区后进行相同的查询。在分析任何一个之前,请选择代表性查询。

最新更新