Skip to content
5 / 15

MVCC Π² PostgreSQL: ΠΊΠ°ΠΊ устроСны вСрсии строк ΠΈ Π·Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½ VACUUM?

PostgreSQL Π½Π΅ мСняСт строки Π½Π° мСстС: UPDATE ΠΏΠΈΡˆΠ΅Ρ‚ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ строки ΠΈ ΠΏΠΎΠΌΠ΅Ρ‡Π°Π΅Ρ‚ ΡΡ‚Π°Ρ€ΡƒΡŽ ΠΊΠ°ΠΊ ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΡƒΡŽ Π² этой Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, DELETE Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠΌΠ΅Ρ‡Π°Π΅Ρ‚. КаТдая вСрсия нСсёт xmin (какая транзакция создала) ΠΈ xmax (какая ΡƒΠ΄Π°Π»ΠΈΠ»Π°), Π° транзакция Π²ΠΈΠ΄ΠΈΡ‚ Ρ‚Π΅ вСрсии, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ зафиксированы Π΄ΠΎ Π΅Ρ‘ снимка. ΠžΡ‚ΡΡŽΠ΄Π° Ρ‚Ρ€ΠΈ слСдствия. ΠŸΠ΅Ρ€Π²ΠΎΠ΅ β€” Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‚ писатСлСй ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, Ρ‡Ρ‚ΠΎ ΠΈ Π΅ΡΡ‚ΡŒ Π³Π»Π°Π²Π½Ρ‹ΠΉ Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Ρˆ ΠΌΠΎΠ΄Π΅Π»ΠΈ. Π’Ρ‚ΠΎΡ€ΠΎΠ΅ β€” ΠΌΡ‘Ρ€Ρ‚Π²Ρ‹Π΅ вСрсии Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°ΡŽΡ‚ΡΡ, Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ мСсто Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΈ индСксах, ΠΈ Π±Π΅Π· ΡƒΠ±ΠΎΡ€ΠΊΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π° «раздуваСтся», Π° запросы Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ лишниС страницы. Π’Ρ€Π΅Ρ‚ΡŒΠ΅ β€” ΡƒΠ±ΠΎΡ€ΠΊΠΎΠΉ занимаСтся VACUUM, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠ΅Ρ‡Π°Π΅Ρ‚ мСсто ΠΊΠ°ΠΊ свободноС для ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования, обновляСт ΠΊΠ°Ρ€Ρ‚Ρƒ видимости для index-only scan ΠΈ Β«Π·Π°ΠΌΠΎΡ€Π°ΠΆΠΈΠ²Π°Π΅Ρ‚Β» старыС вСрсии, защищая ΠΎΡ‚ пСрСполнСния счётчика Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ. VACUUM FULL β€” Π΄Ρ€ΡƒΠ³ΠΎΠ΅: ΠΎΠ½ пСрСписываСт Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ ΠΏΠΎΠ΄ эксклюзивной Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ.

MVCC Π² PostgreSQL: ΠΊΠ°ΠΊ устроСны вСрсии строк ΠΈ Π·Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½ VACUUM? | JScriptiser