PostgreSQL 13: рд╕рдорд╛рдирд╛рдВрддрд░ VACUUM

рджреВрд╕рд░реЗ рджрд┐рди, рдЕрдорд┐рдд рдХрдкрд┐рд▓рд╛ рдиреЗ рдорд╛рд╕рд╛рд╣рд┐рдХреЛ рд╕рд╡рджрд╛ рдкреИрдЪ рдХрд┐рдпрд╛, рдЬреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рд╕рдлрд╛рдИ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдЕрднреА рднреА рдПрдХ (рдЕрдЧреНрд░рдгреА) рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ рд╕рд╛рдлрд╝ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЕрдм рдкреГрд╖реНрдарднреВрдорд┐ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рд╕реВрдЪрдХрд╛рдВрдХ рдореЗрдВ рд╕реЗ рдПрдХред рдореИрдиреБрдЕрд▓ рдореЛрдб рдореЗрдВ, рдпрд╣ рдЖрдкрдХреЛ рдХрдИ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХреЗ рд╕рд╛рде рдмрдбрд╝реА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рд╕рдлрд╛рдИ рдореЗрдВ рддреЗрдЬреА рд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ; рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕рдлрд╛рдИ рдЕрднреА рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреА рд╣реИред

рд╕рдореНрдмрдВрдзрд┐рдд рд▓рд┐рдВрдХреНрд╕:


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ , рдЯреЗрдмрд▓ рдХреА рд╕рдлрд╛рдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХрдИ рдЪрд░рдг рд╣реЛрддреЗ рд╣реИрдВред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рд╕реНрдХреИрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ ("рдореГрдд") рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореЗрдореЛрд░реА рдореЗрдВрдЯреЗрдиреЗрдВрд╕_рд╡рд░реНрдХ_рдо рдкреИрд░рд╛рдореАрдЯрд░ рджреНрд╡рд╛рд░рд╛ рд╕реАрдорд┐рдд рд╣реИ , рдЗрд╕рд▓рд┐рдП рд╕рднреА рд▓рд┐рдВрдХ рдПрдХ рдмрд╛рд░ рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рдлрд┐рд░ рд╕рднреА рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рдерд╛), рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдореГрдд рд╕рдВрд╕реНрдХрд░рдг рдкрд╛рдП рдЧрдП рд╕рдВрдХреЗрдд рдЙрдирд╕реЗ рд╕рд╛рдлрд╝ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред

рдлрд┐рд░ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдкрд╣рд▓реЗ рд╕реЗ рджреЗрдЦреЗ рдЧрдП рднрд╛рдЧ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕реНрдХреИрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдореГрдд рд╕рдВрд╕реНрдХрд░рдг рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕рд╕реЗ рд╕рд╛рдл рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред

рдпрджрд┐ рдПрдХ рд╕рдордп рдореЗрдВ рддрд╛рд░ рдХреЗ рд╕рднреА рдореГрдд рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛, рддреЛ рдореЗрдореЛрд░реА рдХреЛ рд╕рд╛рдл рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЙрд╕ рд╕реНрдерд╛рди рд╕реЗ рдлрд┐рд░ рд╕реЗ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╣рдордиреЗ рдкрд┐рдЫрд▓реА рдмрд╛рд░ рд░реЛрдХрд╛ рдерд╛ред

рдпрд╣ рдкреВрд░реА рдпреЛрдЬрдирд╛ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдмрдиреА рд╣реБрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рд╕рд╛рдл рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓реАрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрдИ рд╡рд░реНрдХрдлрд╝реНрд▓реЛрдЬрд╝ рд╢реБрд░реВ рдХрд░рддреА рд╣реИ рдЬреЛ рдореМрдЬреВрджрд╛ рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддреА рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рддреА рд╣реИред рдПрдХ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрддрд╛ рд╣реИред рд╕рднреА рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рдПрдБ рд╕рд╛рдлрд╝ рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдкреВрд░реНрдг рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдХрд░реНрддрд╛ рдЕрдЧрд▓реЗ рдЪрд░рдг рдореЗрдВ рдкрд╣реБрдБрдЪ рдЬрд╛рддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ticket_flights рдбреЗрдореЛрдмреЗрд╕ рдлреНрд▓рд╛рдЗрдЯ рдЯреЗрдмрд▓ рдХреЛ рд▓реЗрдВ ред рдЗрд╕ рдкрд░ рдПрдХ рдЗрдВрдбреЗрдХреНрд╕ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдХреБрдЫ рдФрд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

demo=# CREATE index on ticket_flights (fare_conditions);
demo=# CREATE index on ticket_flights (amount);

рдХреЗрд╡рд▓ рд╡реЗ рдЗрдВрдбреЗрдХреНрд╕ рдЬрд┐рдирдХрд╛ рдЖрдХрд╛рд░ min_parallel_index_scan_size рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдорд╛рди рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ ред рд╣рдорд╛рд░реЗ рд╕реВрдЪрдХрд╛рдВрдХ рдЙрдкрдпреБрдХреНрдд рд╣реИрдВ:

demo=# SHOW min_parallel_index_scan_size;
 min_parallel_index_scan_size 
------------------------------
 512kB
(1 row)
demo=# SELECT pg_size_pretty(pg_relation_size(indexname::regclass))
FROM pg_indexes
WHERE tablename = 'ticket_flights';
 pg_size_pretty 
----------------
 325 MB
 187 MB
 180 MB
(3 rows)

рд╕рдлрд╛рдИ рдХрд╛рд░реНрдп рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдзреА рд▓рд╛рдЗрдиреЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ:

demo=# UPDATE ticket_flights SET amount = amount + 1 WHERE random() > 0.5;
UPDATE 4194262

рдЬрд╛рдУред

demo=# VACUUM VERBOSE ticket_flights;
INFO:  vacuuming "bookings.ticket_flights"
INFO:  launched 2 parallel vacuum workers for index vacuuming (planned: 2)
INFO:  scanned index "ticket_flights_fare_conditions_idx" to remove 4194262 row versions by parallel vacuum worker
DETAIL:  CPU: user: 1.84 s, system: 0.41 s, elapsed: 11.82 s
INFO:  scanned index "ticket_flights_amount_idx" to remove 4194262 row versions by parallel vacuum worker
DETAIL:  CPU: user: 2.31 s, system: 0.44 s, elapsed: 12.95 s
INFO:  scanned index "ticket_flights_pkey" to remove 4194262 row versions
...
INFO:  "ticket_flights": found 4194262 removable, 8391852 nonremovable row versions in 104885 out of 104885 pages
DETAIL:  0 dead row versions cannot be removed yet, oldest xmin: 630
There were 0 unused item identifiers.
Skipped 0 pages due to buffer pins, 0 frozen pages.
0 pages are entirely empty.
CPU: user: 9.91 s, system: 4.40 s, elapsed: 121.40 s.
VACUUM

рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧреНрд░рдгреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдиреЗ рджреЛ рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛, рдФрд░ рдПрдХ рд╕реВрдЪрдХрд╛рдВрдХ рд▓рд┐рдпрд╛ред

рдХрд╛рд░реНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ (рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдпрд╣ max_parallel_mainurance_workers рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрдЧреА , рдЬреЛ max_worker_processes рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИ )ред рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╕рдВрдХреЗрдд, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╕рдВрдЧрд╛рдорд┐рддрд┐ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

demo=# VACUUM (PARALLEL 0, VERBOSE) ticket_flights;

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЛ рдФрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдХрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рд╕реНрдХреИрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдпрд╣ рдореВрд▓ рд╕рд╡рджрд╛ рдкреИрдЪ рдореЗрдВ рдерд╛, рд▓реЗрдХрд┐рди рдЕрдВрддрд┐рдо рдПрдХ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ), рдкреНрд░рддреНрдпреЗрдХ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рднреА рд╕рд╛рдл рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рдорд╛рдирддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕рдлрд╛рдИ рд╕рд┐рдЦрд╛рдирд╛ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИред

P. S. , . . - , , .

Source: https://habr.com/ru/post/undefined/


All Articles