Postgres default FILLFACTOR value

From: Virender Singla <virender(dot)cse(at)gmail(dot)com>
To: pgsql-hackers(at)postgresql(dot)org
Subject: Postgres default FILLFACTOR value
Date: 2020-05-08 08:20:30
Message-ID: CAM6Zo8zZKjGinvanP4gro1xKgLRRic3h_noSjmgN5emWfpPP0A@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Why Postgres default FILLFACTOR for table is 100 and for Index is 90.

Although Oracle is having completely different MVCC architecture, it uses
default 90 for table and 100 for Index (exact reverse of Postgres)

Postgres blocks needed more spaces for row update compares to Oracle
(because Oracle keeps buffer space only for row expansion, whereas Postgres
need to create new versioned row). As I see Postgres is more suitable for
OLTP workload, keeping TABLE FILLFACTOR value to 90 is more suitable rather
than stressing to save storage space. Less FILLFACTOR value will be useful
to make UPDATEs as HOT applicable as well and that is going to benefit new
Postgres adopting users who are initially not aware of such setting and
only realize this later when VACUUM are really running long and Indexes
gets bloated. .

Other side Index FILLFACTOR makes sense only for existing populated tables
and for any row (new INSERTs or INSERT coming through UPDATEs), it can fill
the block above FILLFACTOR value. I think 100 default make more sense here.

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Sergei Kornilov 2020-05-08 08:26:31 Re: Why no "array_sort" function?
Previous Message Peter Eisentraut 2020-05-08 08:17:07 Re: ALTER TABLE ... SET STORAGE does not propagate to indexes