Set pg_class.reltuples for partitioned tables
Alvaro Herrera <alvherre@alvh.no-ip.org>
Set pg_class.reltuples for partitioned tables When commit 0827e8af70f4 added auto-analyze support for partitioned tables, it included code to obtain reltuples for the partitioned table as a number of catalog accesses to read pg_class.reltuples for each partition. That's not only very inefficient, but also problematic because autovacuum doesn't hold any locks on any of those tables -- and doesn't want to. Replace that code with a read of pg_class.reltuples for the partitioned table, and make sure ANALYZE and TRUNCATE properly maintain that value. I found no code that would be affected by the change of relpages from zero to non-zero for partitioned tables, and no other code that should be maintaining it, but if there is, hopefully it'll be an easy fix. Per buildfarm. Author: Álvaro Herrera <alvherre@alvh.no-ip.org> Reviewed-by: Zhihong Yu <zyu@yugabyte.com> Discussion: https://postgr.es/m/1823909.1617862590@sss.pgh.pa.us
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/commands/analyze.c | modified | +12 −0 |
| src/backend/commands/tablecmds.c | modified | +46 −1 |
| src/backend/postmaster/autovacuum.c | modified | +1 −38 |
Discussion
- pgsql: autovacuum: handle analyze for partitioned tables 33 messages · 2021-04-08 → 2021-05-14