From: | Simon Riggs <simon(dot)riggs(at)enterprisedb(dot)com> |
---|---|
To: | PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Max compact as an FSM strategy |
Date: | 2022-07-26 09:34:09 |
Message-ID: | CANbhV-E07p0Rqzkz3dh9LEU9Fhc0bGNN-UVC9ZMWZZ6dF17z_w@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
A long time ago, Tom Lane came up with the idea that when tables get
bloated, tables might be allowed to shrink down again in size
naturally by altering the way FSM allocates blocks. That's a very good
idea, but we didn't implement it back then...
This patch allows the Heap to specify what FreeSpaceStrategy it would
like to see.
(extract from attached patch...)
+typedef enum FreeSpaceStrategy
+{
+ FREESPACE_STRATEGY_MAX_CONCURRENCY = 0,
+ /*
+ * Each time we ask for a new block with freespace this will set
+ * the advancenext flag which increments the next block by one.
+ * The effect of this is to ensure that all backends are given
+ * a separate block, minimizing block contention and thereby
+ * maximising concurrency. This is the default strategy used by
+ * PostgreSQL since at least PostgreSQL 8.4.
+ */
+ FREESPACE_STRATEGY_MAX_COMPACT
+ /*
+ * All backends are given the earliest block in the table with
+ * sufficient freespace for the insert. This could cause block
+ * contention for concurrent inserts, but ensures maximum data
+ * compaction, which will then allow vacuum truncation
to release
+ * as much space as possible. This strategy may be appropriate
+ * for short periods if a table becomes bloated.
+ */
+} FreeSpaceStrategy;
All we need is a simple heuristic to allow us to choose between
various strategies.
Your input is welcome! Please read the short patch.
--
Simon Riggs http://www.EnterpriseDB.com/
Attachment | Content-Type | Size |
---|---|---|
freespace_strategy.v2.patch | application/octet-stream | 8.2 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | 王伟 (学弈) | 2022-07-26 09:51:07 | 回复:Re: PANIC: wrong buffer passed to visibilitymap_clear |
Previous Message | Dilip Kumar | 2022-07-26 09:33:33 | Re: Perform streaming logical transactions by background workers and parallel apply |