On Thu, Apr 11, 2019 at 03:34:30PM +1200, David Rowley wrote: > On Thu, 21 Mar 2019 at 00:51, David Rowley <david.row...@2ndquadrant.com> > wrote: > > Just so I don't forget about this, I've added it to the July 'fest. > > > > https://commitfest.postgresql.org/23/2065/ > > Now that we have 428b260f8, I think the version of this that goes into > master should be more like the attached.
I tweaked this patch some more (sorry): - remove "currently" since that's not expected to be changed (right?); - remove "especially"; - refer to "partition hierarchies" not "partitioning hierarchies"; - rewrite bit about "When partition pruning is not possible" Also, I noticed awhile ago while grepping for "probably be fixed in future releases" that some items under ddl-inherit-caveats are actually possible for relkind=p partitions in v11. I assume those will never be implemented for inheritence partitioning, so I propose another update to docs (if preferred, I'll bring up on a new thread). - unique constraints on parent table; - FK constraints on parent table; Note that FK constraints *referencing* a partitiond table are possible in v12 but not in v11. So if there's any finer-grained update to documentation of the individual limitations, it'd need to be tweaked for back branches (v10 and 11). Justin
>From 3a787b95f5a35b53cd958855ec6fc4ff9fc9a455 Mon Sep 17 00:00:00 2001 From: Justin Pryzby <pryz...@telsasoft.com> Date: Thu, 11 Apr 2019 00:24:44 -0500 Subject: [PATCH v1 1/2] Reinstate warnings regarding large heirarchies Put back warnings regarding high planning time and/or RAM use for large inheritance heirarchies, and high planning time for large number of partitions not pruned during planning with declaratively partitioned tables. Discussion: https://www.postgresql.org/message-id/CAKJS1f8RW-mHQ8aEWD5Dv0%2B8A1wH5tHHdYMGW9y5sXqnE0X9wA%40mail.gmail.com https://commitfest.postgresql.org/23/2065/ Author: Robert Haas, David Rowley Reviewed by: Amit Langote, Justin Pryzby --- doc/src/sgml/ddl.sgml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/doc/src/sgml/ddl.sgml b/doc/src/sgml/ddl.sgml index 244d5ce..83cbc66 100644 --- a/doc/src/sgml/ddl.sgml +++ b/doc/src/sgml/ddl.sgml @@ -3582,6 +3582,26 @@ VALUES ('Albany', NULL, NULL, 'NY'); offer flexibility but do not have some of the performance benefits of built-in declarative partitioning. </para> + + <note> + <para> + When using table inheritance, partition hierarchies with more than a few + hundred partitions are not recommended. Larger partition hierarchies may + incur long planning time, and, in the case of <command>UPDATE</command> + and <command>DELETE</command>, excessive memory usage. When inheritance + is used, see also the limitations described in + <xref linkend="ddl-partitioning-constraint-exclusion"/>. + </para> + + <para> + When using declarative partitioning, the overhead of query planning + is directly related to the number of unpruned partitions. Planning is + generally fast with small numbers of unpruned partitions, even in + partition hierarchies containing many thousands of partitions. However, + long planning time will be incurred by large partition hierarchies if + partition pruning is not possible during the planning phase. + </para> + </note> </sect2> <sect2 id="ddl-partitioning-declarative"> -- 2.1.4
>From 6bd80e7cdddc3c9552d44439b4b8e9843c1007e4 Mon Sep 17 00:00:00 2001 From: Justin Pryzby <pryz...@telsasoft.com> Date: Thu, 11 Apr 2019 00:22:56 -0500 Subject: [PATCH v1 2/2] Document features of declarative partitioning.. ..which will never be implemented for legacy inheritance. --- doc/src/sgml/ddl.sgml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/src/sgml/ddl.sgml b/doc/src/sgml/ddl.sgml index 83cbc66..3495a66 100644 --- a/doc/src/sgml/ddl.sgml +++ b/doc/src/sgml/ddl.sgml @@ -3450,8 +3450,9 @@ VALUES ('Albany', NULL, NULL, 'NY'); </listitem> </itemizedlist> - These deficiencies will probably be fixed in some future release, - but in the meantime considerable care is needed in deciding whether + Some functionality not implemented for inheritance hierarchies is + implemented for declarative partitioning. + Considerable care is needed in deciding whether partitioning with legacy inheritance is useful for your application. </para> -- 2.1.4