MVCC Π² PostgreSQL: ΠΊΠ°ΠΊ ΡΡΡΡΠΎΠ΅Π½Ρ Π²Π΅ΡΡΠΈΠΈ ΡΡΡΠΎΠΊ ΠΈ Π·Π°ΡΠ΅ΠΌ Π½ΡΠΆΠ΅Π½ VACUUM?
PostgreSQL Π½Π΅ ΠΌΠ΅Π½ΡΠ΅Ρ ΡΡΡΠΎΠΊΠΈ Π½Π° ΠΌΠ΅ΡΡΠ΅: UPDATE ΠΏΠΈΡΠ΅Ρ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ ΡΡΡΠΎΠΊΠΈ ΠΈ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ ΡΡΠ°ΡΡΡ ΠΊΠ°ΠΊ ΡΠ΄Π°Π»ΡΠ½Π½ΡΡ Π² ΡΡΠΎΠΉ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, DELETE ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ. ΠΠ°ΠΆΠ΄Π°Ρ Π²Π΅ΡΡΠΈΡ Π½Π΅ΡΡΡ xmin (ΠΊΠ°ΠΊΠ°Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ ΡΠΎΠ·Π΄Π°Π»Π°) ΠΈ xmax (ΠΊΠ°ΠΊΠ°Ρ ΡΠ΄Π°Π»ΠΈΠ»Π°), Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Π²ΠΈΠ΄ΠΈΡ ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Ρ Π΄ΠΎ Π΅Ρ ΡΠ½ΠΈΠΌΠΊΠ°. ΠΡΡΡΠ΄Π° ΡΡΠΈ ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡ. ΠΠ΅ΡΠ²ΠΎΠ΅ β ΡΠΈΡΠ°ΡΠ΅Π»ΠΈ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡΡΡΡ ΠΏΠΈΡΠ°ΡΠ΅Π»Π΅ΠΉ ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, ΡΡΠΎ ΠΈ Π΅ΡΡΡ Π³Π»Π°Π²Π½ΡΠΉ Π²ΡΠΈΠ³ΡΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ. ΠΡΠΎΡΠΎΠ΅ β ΠΌΡΡΡΠ²ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°ΡΡΡΡ, Π·Π°Π½ΠΈΠΌΠ°ΡΡ ΠΌΠ΅ΡΡΠΎ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ
, ΠΈ Π±Π΅Π· ΡΠ±ΠΎΡΠΊΠΈ ΡΠ°Π±Π»ΠΈΡΠ° Β«ΡΠ°Π·Π΄ΡΠ²Π°Π΅ΡΡΡΒ», Π° Π·Π°ΠΏΡΠΎΡΡ ΡΠΈΡΠ°ΡΡ Π»ΠΈΡΠ½ΠΈΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ. Π’ΡΠ΅ΡΡΠ΅ β ΡΠ±ΠΎΡΠΊΠΎΠΉ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ VACUUM, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ ΠΌΠ΅ΡΡΠΎ ΠΊΠ°ΠΊ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ΅ Π΄Π»Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ ΠΊΠ°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ Π΄Π»Ρ index-only scan ΠΈ Β«Π·Π°ΠΌΠΎΡΠ°ΠΆΠΈΠ²Π°Π΅ΡΒ» ΡΡΠ°ΡΡΠ΅ Π²Π΅ΡΡΠΈΠΈ, Π·Π°ΡΠΈΡΠ°Ρ ΠΎΡ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΡΡΡΠΈΠΊΠ° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ. VACUUM FULL β Π΄ΡΡΠ³ΠΎΠ΅: ΠΎΠ½ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΠ°Π±Π»ΠΈΡΡ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ ΠΏΠΎΠ΄ ΡΠΊΡΠΊΠ»ΡΠ·ΠΈΠ²Π½ΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΎΠΉ.