我不明白为什么当我为表创建了太多分区时,postgreSQL会出现性能下降的原因。
以下是测试查询和解释结果。
select count(*) from test_sql_stat_daily
where partition_key=1000000099;
Aggregate (cost=20000000011.88..20000000011.89 rows=1 width=0)"
Output: count(*)"
-> Append (cost=10000000000.00..20000000011.88 rows=2 width=0)"
-> Seq Scan on test_sql_stat_daily (cost=10000000000.00..10000000000.00 rows=1 width=0)"
Filter: (test_sql_stat_daily.partition_key = 1000000099)"
-> Seq Scan on test_sql_stat_daily_p0000000099 test_sql_stat_daily (cost=10000000000.00..10000000011.88 rows=1 width=0)"
Filter: (test_sql_stat_daily.partition_key = 1000000099)"
我想克服这种情况。 对这种情况没有任何影响。
答案 0 :(得分:6)
documented approach是"不要这样做。"
检查主表的所有分区上的所有约束 在约束排除期间,可能存在大量分区 大大增加查询计划时间。使用这些分区 技术可以很好地与大约一百个分区一起使用; 不要尝试使用数千个分区。
强调补充。
如果我是你,我会尝试将分区数减少到1000.