আমি মশকরা করছি VACUUM
এবং কিছু অপ্রত্যাশিত আচরণ লক্ষ্য করেছি যেখানে SELECT
কোনও টেবিল থেকে সারিগুলিকে আইএনএস করা কাজটি হ্রাস করার VACUUM
পরে মনে হচ্ছে wards
পরীক্ষার ডেটা
দ্রষ্টব্য: স্বতঃব্যাকিউম অক্ষম
CREATE TABLE numbers (num bigint);
ALTER TABLE numbers SET (
autovacuum_enabled = 'f',
toast.autovacuum_enabled = 'f'
);
INSERT INTO numbers SELECT generate_series(1, 5000);
বিচার ঘ
এখন আমরা সমস্ত সারিটিতে একটি আপডেট চালনা করি,
UPDATE numbers SET num = 0;
এবং যখন আমরা চালাই VACUUM (VERBOSE) numbers;
আমরা পেতে,
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.
বিচার 2
এখন আমরা অন্যটি ইস্যু UPDATE
করি তবে এবার আমরা SELECT
পরে যুক্ত করব,
UPDATE numbers SET num = 1;
SELECT * FROM numbers;
এবং যখন আমরা চালাই VACUUM (VERBOSE) numbers;
আমরা পেতে,
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.
ঠিক এখানে কি ঘটছে? আমার দ্বিতীয় সংস্করণটি কেন এটি চালিত SELECT
পৃষ্ঠাগুলি থেকে মৃত টিপলগুলি সরিয়ে দেওয়ার পরে চলে VACUUM
?
আমি ম্যাকোস 10.14.5 এ পোস্টগ্রিস 11.3 চালাচ্ছি।