[PostgreSQL] Vacuum ํŠœ๋‹

https://blog.naver.com/sssang97/222939603415
์–ด๋А ์ •๋„ ์จ๋ณธ ์‚ฌ๋žŒ์€ ์•Œ๊ฒ ์ง€๋งŒ, PostgreSQL์€ Auto Vacuum์ด๋ผ๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ํ†ตํ•ด ๊ณผ๊ฑฐ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ฆฌํ•˜๋Š” ์ž‘์—…์„ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•œ๋‹ค.
Vacuum์ด ์ œ๋Œ€๋กœ ๋Œ์•„์•ผ์ง€ ๋””์Šคํฌ ๊ณต๊ฐ„์ด ์ ˆ์•ฝ๋˜๊ณ , ์ธ๋ฑ์Šค ์ •ํ™•๋„๋‚˜ ์ฟผ๋ฆฌ ํŠœ๋‹์„ ์œ„ํ•œ ํ†ต๊ณ„ ์ •๋ณด๊ฐ€ ์ปดํŒฉํŠธํ•˜๊ฒŒ ๋งž์ถฐ์งˆ ์ˆ˜ ์žˆ๋‹ค.

์ž‘์€ ์‚ฌ์šฉ ๊ทœ๋ชจ์—์„œ๋Š” ๊ทธ๋ƒฅ auto vacuum ๋„๋Š”๋Œ€๋กœ๋งŒ ๋‘ฌ๋„ ๋”ฑํžˆ ์„ฑ๋Šฅ์ƒ์˜ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€๋Š” ์•Š์ง€๋งŒ, ์‚ฌ์šฉ๋Ÿ‰์ด ์ž„๊ณ„์ ์„ ๋„˜์–ด๊ฐ€๊ฒŒ ๋˜๋ฉด vacuum์œผ๋กœ ์ธํ•œ ๋ฌธ์ œ๊ฐ€ ์กฐ๊ธˆ์”ฉ ๋ฐœ์ƒํ•˜๊ณ  auto vacuum๋งŒ ๋ฏฟ์„ ์ˆ˜๊ฐ€ ์—†๊ฒŒ ๋œ๋‹ค.




Auto Vacuum์ด ์‹คํ–‰๋˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ

PostgreSQL์€ MVCC ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฒ„์ „ ๋‹จ์œ„๋กœ ๊ด€๋ฆฌํ•œ๋‹ค.

๊ทธ๋ž˜์„œ update/delete๊ฐ€ ์ผ์–ด๋‚˜์„œ ์‚ฌ๋ผ์ง„ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด์„œ๋„ ์ผ๋‹จ ๋ณด๊ด€์„ ํ•˜๋Š”๋ฐ, ์ด๋Ÿฐ ์“ฐ๋ ˆ๊ธฐ ๋ฐ์ดํ„ฐ๋ฅผ dead tuple์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
์ด๊ฑธ ์ง€์šฐ๋Š”๊ฒŒ auto vacuum์˜ ์ฃผ๋œ ์—ญํ• ์ด๋ผ ํ•  ์ˆ˜ ์žˆ๊ฒ ๋‹ค.

๊ทธ๋ฆฌ๊ณ  auto vacuum์ด ์ œ๋•Œ ๋Œ์ง€ ์•Š์•„์„œ dead tuple์ด ๊ฐ€๋“ ์Œ“์—ฌ์žˆ๋‹ค๋ฉด, ์ฟผ๋ฆฌ ์„ฑ๋Šฅ์ด๋‚˜ ๋””์Šคํฌ ๊ณต๊ฐ„์ด ๋ฏธ์ณ๋‚ ๋›ฐ๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ทน๋‹จ์ ์ธ ์˜ˆ์ง€๋งŒ, ์˜ˆ๋ฅผ ๋“ค์–ด ํ…Œ์ด๋ธ”์— ์‹ค์ œ ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋Š” 1๊ฐœ์ธ๋ฐ dead tuple์ด 100๋งŒ๊ฐœ๊ฐ€ ์žˆ์œผ๋ฉด

select * from foo;

์ด๋Ÿฐ ๋‹จ์ˆœํ•œ ์ฟผ๋ฆฌ๋„ ๋ช‡์ดˆ์”ฉ ๊ฑธ๋ฆด ์ˆ˜๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ๋ž˜์„œ auto vacuum์ด ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์„ ์–ด๋А์ •๋„ ์•Œ์•„๋‘๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.




Auto Vacuum ํŠธ๋ฆฌ๊ฑฐ ์กฐ๊ฑด: dead tuple

Auto Vacuum์€ ํ•ญ์ƒ ๋งˆ๋ฒ•์ฒ˜๋Ÿผ ์™„๋ฒฝํ•œ ํƒ€์ด๋ฐ์— ์ˆ˜ํ–‰๋˜์ง€๋Š” ์•Š๋Š”๋‹ค.

autovacuum ์ œ์–ด์šฉ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๋Œ€ํ‘œ์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด 2๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

autovacuum_vacuum_thresholdย =ย 50ย # ๊ธฐ๋ณธ๊ฐ’
autovacuum_vacuum_scale_factorย =ย 0.2 # ๊ธฐ๋ณธ๊ฐ’

autovacuum_vacuum_scale_factor๋Š” dead tuple์ด ์Œ“์ด๋Š” ์ž„๊ณ„์น˜๊ณ , autovacuum_vacuum_threshold๋Š” ์ž„๊ณ„์น˜ ๊ธฐ์ค€์œผ๋กœ ๋ช‡๊ฐœ๋ฅผ ๋„˜์—ˆ์„๋•Œ autovacuum์„ ์‹คํ–‰ํ• ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์˜ต์…˜์ด๋‹ค.

๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ์ € ๊ธฐ๋ณธ ์˜ต์…˜๋Œ€๋กœ๋ผ๋ฉด dead tuple์˜ ๋น„์œจ์ด ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  row ์ค‘์—์„œ 20%+50๊ฐœ๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ๊ฒฝ์šฐ์— auto vacuum์ด ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ด๋‹ค.

์ด ๋น„์œจ์— ๋Œ€ํ•ด์„œ๋Š” ๋”ฑํžˆ ์ •๋‹ต์ด ์—†๋‹ค.
vacuum์ด ๋„ˆ๋ฌด ๋“œ๋ฌผ๊ฒŒ ๋Œ๋ฉด ์“ฐ๋ ˆ๊ธฐ๊ฐ€ ํ•œ๋ฒˆ์— ์Œ“์˜€๋‹ค๊ฐ€ ๋Œ€๊ทœ๋ชจ๋กœ ์ฒ˜๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ•œ๋ฒˆ ๋Œ๋•Œ๋งˆ๋‹ค ๋ง‰๋Œ€ํ•œ ๋ถ€ํ•˜๋ฅผ ๊ฐ๋‚ดํ•ด์•ผํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ทธ๋ ‡๋‹ค๊ณ  ๋„ˆ๋ฌด ๋นˆ๋ฒˆํ•˜๊ฒŒ ๋Œ๋ฉด autovacuum์ด ๊ณ„์†ํ•ด์„œ ๋ฑ…๋ฑ… ๋Œ๋ฉด์„œ ์ฟผ๋ฆฌ๋ฅผ ๋ฐฉํ•ดํ•  ์ˆ˜๋„ ์žˆ๋‹ค.




Auto Vacuum ํŠธ๋ฆฌ๊ฑฐ ์กฐ๊ฑด: age

์ด๊ฑด dead tuple์— ๋น„ํ•ด์„œ ์กฐ๊ธˆ ๋ณต์žกํ•˜๋‹ค. ๊ทธ๋ ‡์ง€๋งŒ ๊ผญ ์•Œ์•„์•ผ ํ•˜๋Š” ๋‚ด์šฉ์ด๊ธฐ๋„ ํ•˜๋‹ค.
์ด๊ฒŒ ์ž˜๋ชป๋˜๋ฉด ๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ๊ฐ€ ์ „๋ถ€ ๋‚ ๋ผ๊ฐ€๋Š” ๋”์ฐํ•œ ์ผ์ด ์ผ์–ด๋‚˜๊ฑฐ๋‚˜, write๊ฐ€ ์ „๋ถ€ ๋ธ”๋ฝ๋  ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์•Œ๋‹ค์‹œํ”ผ, postgresql์—์„œ์˜ update๋Š” ์‚ฌ์‹ค update๊ฐ€ ์•„๋‹Œ ์ƒˆ ๋ฒ„์ „์˜ insert๋‹ค.

https://techblog.woowahan.com/9478/
๊ฐ tuple์—๋Š” age๋ผ๋Š” ํ•„๋“œ๊ฐ€ ์žˆ๋Š”๋ฐ, 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ์—…๋ฐ์ดํŠธ๋ ๋•Œ๋งˆ๋‹ค +1์”ฉ ์ฆ๊ฐ€๋˜๋Š” ๊ฐ’์ด๋‹ค.
๊ทธ๋ฆฌ๊ณ  xmin, xmax๊ฐ€ transaction ID๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ํ•„๋“œ๋‹ค.

select๋ฅผ ๋‚ ๋ฆด ๋•Œ์—๋Š” transaction ID๊ฐ€ ์ œ์ผ ํฐ ๊ฒƒ์„ ๊ธฐ์ค€์œผ๋กœ ํ˜„์žฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ๋•Œ๋ฌธ์—, ์˜›๋‚  ๋ฒ„์ „ ๋ฐ์ดํ„ฐ๊ฐ€ ์ž”๋œฉ ์Œ“์—ฌ์žˆ์–ด๋„ ์ตœ์‹  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

๊ทผ๋ฐ ๋ฌธ์ œ๋Š” transaction ID์˜ ํ• ๋‹น๋Ÿ‰์ด ๋ฌดํ•œํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. xmin์™€ xmax๋Š” 4๋ฐ”์ดํŠธ ์ •์ˆ˜๋ผ์„œ ์•ฝ 40์–ต๊ฐœ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , 20์–ต์€ ๊ณผ๊ฑฐ, 20์–ต์€ ๋ฏธ๋ž˜๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.
์—ฌ๊ธฐ์„œ ํ• ๋‹น๋Ÿ‰์„ ๋‹ค ์“ฐ๊ฒŒ ๋œ๋‹ค๋ฉด, transaction ID๋Š” ๋‹ค์‹œ 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด 1 ์ดํ›„์˜ ๊ฐ’๋“ค์€ ์‹ค์ œ๋กœ๋Š” ๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์ธ๋ฐ ๋ฏธ๋ž˜์˜ ๋ฐ์ดํ„ฐ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ์ฐธ์‚ฌ๊ฐ€ ์ผ์–ด๋‚œ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ Transaction ID Wraparound๋ผ๊ณ  ํ•œ๋‹ค.

PostgreSQL์€ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด transaction ID ์†Œ์ง„์‹œ์— Anti Wraparound Vacuum๋ผ๋Š” ๊ฒƒ์„ ๋Œ๋ฆฐ๋‹ค.

https://techblog.woowahan.com/9478/
๊ทธ๋ƒฅ ๊ธฐ์กด์˜ transaction ID๋ฅผ ๋‹ค ๋‚ ๋ ค๋ฒ„๋ฆฌ๊ณ  ํ•˜๋“œ์ฝ”๋”ฉ๋œ frozen ๊ฐ’(2)๋กœ ๋ฎ์–ด์”Œ์›Œ๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ค.

์ด๊ฑด GC์˜ stop the world์ฒ˜๋Ÿผ ํ•ด๋‹น ํ…Œ์ด๋ธ”์„ ๊ฑฐ์˜ ํ†ต์งธ๋กœ freezing์‹œํ‚จ๋‹ค.
์„ฑ๋Šฅ์ ์œผ๋กœ ์žฅ์• ์— ์ค€ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋‚ผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋‹น์—ฐํžˆ ๊ฐ€๊ธ‰์  ํŠธ๋ฆฌ๊ฑฐ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

Anti Wraparound Vacuum์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ต์…˜์„ ํ†ตํ•ด ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋‹ค.

autovacuum_freeze_max_age = 200000000 # 2์–ต
vacuum_freeze_min_age = 50000000 # 5000๋งŒ
vacuum_freeze_table_age = 150000000 # 1์–ต 5000๋งŒ

transaction id๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํŠธ๋ฆฌ๊ฑฐ๋˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ age๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํŠธ๋ฆฌ๊ฑฐ๋จ์„ ์œ ์˜ํ•œ๋‹ค.

  1. autovacuum_freeze_max_age
    ์ด๊ฑธ ์„ค์ •ํ•˜๋ฉด ํ•ด๋‹น ๊ฐ’์„ ์ดˆ๊ณผํ•˜๋Š” age์„ ๊ฐ€์ง„ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด Anti Wraparound AutoVacuum์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ๊ธฐ๋ณธ๊ฐ’์—์„œ๋Š” 2์–ต์„ ๋„˜์–ด์•ผ ํŠธ๋ฆฌ๊ฑฐ๋˜๋Š” ๊ฒƒ์ด๋‹ค.
    ์ด๊ฑด autovacuum์„ ๊บผ๋„ ๊ฐ•์ œ๋กœ ์‹คํ–‰๋œ๋‹ค.

  2. vacuum_freeze_min_age
    vacuum ๋Œ๋•Œ, ์ด ๊ฐ’์„ ์ดˆ๊ณผํ•˜๋Š” age์˜ Tuple์„ Anti Wraparound Vacuum ์ž‘์—…์˜ ๋Œ€์ƒ์œผ๋กœ ํ•œ๋‹ค.
    autovacuum_freeze_max_age๋กœ ์ธํ•œ ์ „์ฒด ํ”„๋ฆฌ์ง•์ด ๋ฐœ์ƒํ•˜๊ธฐ ์ „์— ์›ฌ๋งŒํ•ด์„œ๋Š” ์ฒ˜๋ฆฌ๋˜๋„๋ก ์œ ๋„ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

  3. vacuum_freeze_table_age
    ์ด ๊ฐ’์„ ์ดˆ๊ณผํ•˜๋Š” age์˜ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด vacuum์ด ํ˜ธ์ถœ๋  ๋•Œ Anti Wraparound Vacuum ์ž‘์—…๋„ ๊ฐ™์ด ์ˆ˜ํ–‰ํ•œ๋‹ค.
    ๋‹ค์ˆ˜์˜ ํ…Œ์ด๋ธ”๋“ค์ด autovacuum_freeze_max_age์— ๊ฑธ๋ ค์„œ ๋™์‹œ์— Anti Wraparound AutoVacuum์ด ๋Œ์•„ ์ „๋ฐฉ์œ„์ ์œผ๋กœ ๋ป—๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด, vacuum์ด ํ˜ธ์ถœ๋œ ํ…Œ์ด๋ธ”๋“ค์— ๋Œ€ํ•ด์„œ๋งŒ์ด๋ผ๋„ ๋ถ€๋ถ„์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋ ค๋Š” ๋ฐฉ์–ด์  ์˜ต์…˜.




๋””์Šคํฌ ๋ฐ˜ํ™˜

vacuum์ด๋‚˜ autovacuum์ด dead tuple์„ ์ •๋ฆฌํ•ด์„œ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜๋Š” ๊ฐœ๋…์ด๊ธด ํ•œ๋ฐ, ์—ฌ๊ธฐ์—๋„ ์•ฝ๊ฐ„์˜ ํ•จ์ •์ด ์žˆ๋‹ค.
์ผ๋ฐ˜ vacuum์€ PostgreSQL์˜ ์ €์žฅ ๊ณต๊ฐ„์—์„œ dead tuple์„ ์ •๋ฆฌํ•˜๋Š”๊ฑฐ์ง€, ์ •๋ฆฌํ•œ ๊ณต๊ฐ„์„ OS์—๋„ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ vacuum์œผ๋กœ dead tuple 10gb์–ด์น˜๋ฅผ ์ •๋ฆฌํ•˜๋”๋ผ๋„, ์‹ค์ œ๋กœ DB๊ฐ€ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ๋Š” ๋””์Šคํฌ ์šฉ๋Ÿ‰์ด 10gb ์ค„์–ด๋“œ๋Š”๊ฒŒ ์•„๋‹ˆ๋‹ค.
๋ฏธ๋ž˜์— postgresql์ด ์‚ฌ์šฉํ•  ๊ฒƒ์„ ๋Œ€๋น„ํ•ด์„œ ๊ทธ๋ƒฅ ๋‘”๋‹ค.

์ •๋ง ๋””์Šคํฌ ์šฉ๋Ÿ‰์„ ์ปดํŒฉํŠธํ•˜๊ฒŒ ์ค„์ด๊ณ  ์‹ถ๋‹ค๋ฉด ๋‹ค์šดํƒ€์ž„์„ ๊ฐ์•ˆํ•ด์„œ๋ผ๋„ full vacuum์„ ๋Œ๋ ค์•ผ ํ•œ๋‹ค.




์‘๊ธ‰์กฐ์น˜

autovacuum๊ณผ ์ฟผ๋ฆฌ๊ฐ€ ์„œ๋กœ ์‹ฌ๊ฐํ•˜๊ฒŒ ๋งž๋ฌผ๋ฆฌ๊ฒŒ ๋˜๋ฉด vacuum๋„ ์ฒ˜๋ฆฌ๊ฐ€ ์ง€์—ฐ๋˜๊ณ  ์ฟผ๋ฆฌ๋„ ๋ธ”๋ฝ๊ฑธ๋ฆฐ ๊ฒƒ์ฒ˜๋Ÿผ ๋А๋ฆฌ๊ฒŒ ์ฒ˜๋ฆฌ๋˜๋Š” ๋”์ฐํ•œ ์žฅ์• ์ƒํ™ฉ์— ๋งž๋‹ฅ๋œจ๋ฆด ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋Ÿด๋•Œ๋Š” ์šฐ์„  autovacuum์„ ๋„๋Š” ๊ฒƒ๋„ ํ•˜๋‚˜์˜ ๋ฐฉ๋ฒ•์ผ ์ˆ˜ ์žˆ๋‹ค.

ALTER TABLE public.ํ…Œ์ด๋ธ”๋ช… SET (autovacuum_enabled = false);

์ด๋Ÿฌ๋ฉด autovacuum์„ ํŠน์ • ํ…Œ์ด๋ธ”์— ๋Œ€ํ•ด์„œ ๋น„ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํ•„์š”์— ๋”ฐ๋ผ์„œ ์ˆ˜๋™์œผ๋กœ vacuum์„ ๋Œ๋ฆฐ๋‹ค.

vacuum VERBOSE public.ํ…Œ์ด๋ธ”;

verbose ์˜ต์…˜์„ ์ฃผ๋ฉด vacuum์œผ๋กœ ์ธํ•œ ์‹คํ–‰ ๋กœ๊ทธ๋ฅผ ์ž์„ธํžˆ ๋ณผ ์ˆ˜ ์žˆ์œผ๋‹ˆ, ์ด๊ฑธ ๊ธฐ๋ฐ˜์œผ๋กœ ํ˜„์žฌ ์ƒํ™ฉ์— ๋Œ€ํ•œ ์ธ์‚ฌ์ดํ‹€ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‚˜์„œ๋Š” autovacuum ์˜ต์…˜์„ ์กฐ์ ˆํ•ด์„œ ์ตœ์ ํ™”ํ•˜๊ฑฐ๋‚˜, ์ฟผ๋ฆฌ๋ฅผ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ• ๋“ฑ์ด ์žˆ์„ ๊ฒƒ์ด๋‹ค.




๊ธฐํƒ€ ์Šคํฌ๋ฆฝํŠธ

์‹คํ–‰์ค‘์ธ vacuum ์ •๋ณด ํ™•์ธ

SELECT
 datname,
 usename,
 pid,
 CURRENT_TIMESTAMP - xact_start AS xact_runtime,
 query
FROM
 pg_stat_activity
WHERE
 upper(query)
 LIKE '%VACUUM%'
ORDER BY
 xact_start;

ํ…Œ์ด๋ธ”๋ณ„ ์˜ต์…˜ ์ •๋ณด ํ™•์ธ

SELECT
 relname,
 reloptions
FROM
 pg_class
WHERE
 reloptions IS NOT NULL;



์ฐธ์กฐ
https://medium.com/29cm/postgresql-autovacuum-%EC%9E%A5%EC%95%A0-%EB%8C%80%EC%9D%91%EA%B8%B0-1-8284955c0193
https://postgresql.kr/blog/postgresql_table_bloating.html
https://techblog.woowahan.com/9478/
https://aws.amazon.com/ko/blogs/tech/postgresql-architecture-considerations-for-application-developers-part-1/