Ben bir tablodan satırları ing iş daha sonra yapmak zorunda azaltmak gibi görünüyor VACUUMbeklenmedik bazı davranışlar ile uğraşmış ve fark ettim .SELECTVACUUM
Test verisi
Not: otomatik vakum devre dışı
CREATE TABLE numbers (num bigint);
ALTER TABLE numbers SET (
autovacuum_enabled = 'f',
toast.autovacuum_enabled = 'f'
);
INSERT INTO numbers SELECT generate_series(1, 5000);
Deneme 1
Şimdi tüm satırlarda bir güncelleme gerçekleştiriyoruz,
UPDATE numbers SET num = 0;
Ve VACUUM (VERBOSE) numbers;koştuğumuzda,
INFO: vacuuming "public.numbers"
INFO: "numbers": removed 5000 row versions in 23 pages
INFO: "numbers": found 5000 removable, 5000 nonremovable row versions in 45 out of 45 pages
DETAIL: 0 dead row versions cannot be removed yet, oldest xmin: 6585
There were 0 unused item pointers.
Deneme 2
Şimdi başka UPDATEbir tane SELECTdaha yayınlıyoruz, ancak bu sefer bir sonrakini ekliyoruz ,
UPDATE numbers SET num = 1;
SELECT * FROM numbers;
Ve VACUUM (VERBOSE) numbers;koştuğumuzda,
INFO: vacuuming "public.numbers"
INFO: "numbers": removed 56 row versions in 22 pages
INFO: "numbers": found 56 removable, 5000 nonremovable row versions in 45 out of 45 pages
DETAIL: 0 dead row versions cannot be removed yet, oldest xmin: 6586
There were 56 unused item pointers.
Burada tam olarak ne oluyor? SELECTZiyaret ettiğim sayfalardaki ölü kaplumbağaları kaldırdıktan sonra neden çalıştığım ikinci sürümde olduğu gibi VACUUM?
MacOS 10.14.5 sürümünde Postgres 11.3 kullanıyorum.