Re: Vacuum ERRORs out considering freezing dead tuples from before OldestXmin
От | John Naylor |
---|---|
Тема | Re: Vacuum ERRORs out considering freezing dead tuples from before OldestXmin |
Дата | |
Msg-id | CANWCAZaBzcr2gmcM=VpKc+XYdsi3Axdi22nU+OENHLTbW4iNUg@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Vacuum ERRORs out considering freezing dead tuples from before OldestXmin (John Naylor <johncnaylorls@gmail.com>) |
Ответы |
Re: Vacuum ERRORs out considering freezing dead tuples from before OldestXmin
|
Список | pgsql-hackers |
On Wed, Jul 24, 2024 at 2:42 PM John Naylor <johncnaylorls@gmail.com> wrote: > As for lowering the limit, we've experimented with 256kB here: > > https://www.postgresql.org/message-id/CANWCAZZUTvZ3LsYpauYQVzcEZXZ7Qe+9ntnHgYZDTWxPuL++zA@mail.gmail.com > > As I mention there, going lower than that would need a small amount of > reorganization in the radix tree. Not difficult -- the thing I'm > concerned about is that we'd likely need to document a separate > minimum for DSA, since that behaves strangely with 256kB and might not > work at all lower than that. For experimentation, here's a rough patch (really two, squashed together for now) that allows m_w_m to go down to 64kB. drop table if exists test; create table test (a int) with (autovacuum_enabled=false, fillfactor=10); insert into test (a) select i from generate_series(1,2000) i; create index on test (a); update test set a = a + 1; set maintenance_work_mem = '64kB'; vacuum (verbose) test; INFO: vacuuming "john.public.test" INFO: finished vacuuming "john.public.test": index scans: 3 pages: 0 removed, 91 remain, 91 scanned (100.00% of total) The advantage with this is that we don't need to care about MEMORY_CONTEXT_CHECKING or 32/64 bit-ness, since allocating a single large node will immediately blow the limit, and that will happen fairly quickly regardless. I suspect going this low will not work with dynamic shared memory and if so would need a warning comment.
Вложения
В списке pgsql-hackers по дате отправления: