Hi,
Not sure whether its relevant or not, however upon adding an ANALYSE before the second vacuum the issue has not presented when testing. I have managed 95 cycles thus far.
BEGIN;
CREATE TABLE x (id BIGSERIAL PRIMARY KEY, payload1 VARCHAR, payload2 VARCHAR, payload3 VARCHAR, payload4 BIGINT, payload5 BIGINT);
/* Repeat until 2,000,000 rows are inserted */
INSERT INTO x (id, payload1, payload2, payload3, payload4, payload5) VALUES (random values of varying length/size to force random toast usage);
COMMIT;
VACUUM (ANALYZE, FULL);
BEGIN;
/* Repeat until all 2,000,000 rows are updated */
UPDATE x SET payload1 = , payload2 = , payload3 = , payload4 = , payload5 = ... again random values of varying length/size to force random toast usage
COMMIT;
ANALYZE x; -- <== New analyse here.
VACCUM (ANALYZE, FULL);
(...)
Vacuum end. 30 sec sleep
Update selective
Inserting the rows
update 0
update 20000
update 40000
update 60000
update 80000
update 100000
update 120000
update 140000
update 160000
update 180000
Update all
Attempting vacuum
Vacuum completed
dropping the table
=========================================
New attempt - number 96
Inserting the rows
Executing 0
Executing 40000
Executing 80000
Executing 120000
Executing 160000
Executing 200000
Executing 240000
Executing 280000
(...)
Many thanks,
Harry