postgres分区号码

时间:2012-11-12 09:58:55

标签: postgresql

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

1 个答案:

答案 0 :(得分:1)

当前版本(9.2)具有此guidance about the number of partitions。 (自8.3以来,该指导没有改变。)

  

检查主表的所有分区上的所有约束   在约束排除期间,可能存在大量分区   大大增加查询计划时间。使用这些分区   技术可以很好地与大约一百个分区一起使用;   不要试图使用数千个分区。

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

如果您的分区可以从冷数据中隔离热数据,或者您的分区可以对您经常查询的群集数据进行分组,那么您可能会没问题。但测试是你最好的选择。 EXPLAIN ANALYZE代表性查询未分区表,然后在分区后执行相同操作。在分析任何查询之前,请选择代表性查询。

相关问题