ΠΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡΠ΄Ρ Π² Π΄Π°Π»ΡΠΊΠΎΠΌ Π±ΡΠ΄ΡΡΠ΅ΠΌ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π½Π΅Π½ΡΠΆΠ½ΡΡ Π΄Π°Π½Π½ΡΡ Π±ΡΠ΄Π΅Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π²Π°ΠΆΠ½ΡΡ Π·Π°Π΄Π°Ρ Π‘Π£ΠΠ [1]. ΠΠΎΠΊΠ° ΠΆΠ΅ Π½Π°ΠΌ ΡΠ°ΠΌΠΈΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π°Π±ΠΎΡΠΈΡΡΡΡ ΠΎΠ± ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠΈ Π½Π΅Π½ΡΠΆΠ½ΡΡ Π΄Π°Π½Π½ΡΡ Π½Π° ΠΌΠ΅Π½Π΅Π΅ Π΄ΠΎΡΠΎΠ³ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ. ΠΠΎΠΏΡΡΡΠΈΠΌ, Π²Ρ ΡΠ΅ΡΠΈΠ»ΠΈ ΡΠ΄Π°Π»ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² ΡΡΡΠΎΠΊ. ΠΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠ°Ρ Π·Π°Π΄Π°ΡΠ°, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΈ Π΅ΡΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ. "DELETE FROM table1 WHERE col1 = :value" β ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΎΡΠ΅, Π΄Π°?
ΠΠΈΠ΄Π΅ΠΎ:
-
Π― Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΌ ΠΊΠΎΠΌΠΈΡΠ΅ΡΠ΅ Highload Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π³ΠΎΠ΄Π°, Ρ. Π΅. Ρ 2007-Π³ΠΎ.
-
Π Ρ Postgres Ρ Ρ 2005-Π³ΠΎ Π³ΠΎΠ΄Π°. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Π΅Π³ΠΎ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ .
-
ΠΡΡΠΏΠΏΠ° Ρ RuPostges ΡΠΎΠΆΠ΅ Ρ 2007-Π³ΠΎ Π³ΠΎΠ΄Π°.
-
ΠΡ Π½Π° Meetup Π΄ΠΎΡΠΎΡΠ»ΠΈ Π΄ΠΎ 2100+ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ². ΠΡΠΎ Π²ΡΠΎΡΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ Π² ΠΌΠΈΡΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΡΡ-ΠΠΎΡΠΊΠ°, ΠΎΠ±ΠΎΠ³Π½Π°Π»ΠΈ Π‘Π°Π½-Π€ΡΠ°Π½ΡΠΈΡΠΊΠΎ ΡΠΆΠ΅ Π΄Π°Π²Π½ΠΎ.
-
ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»Π΅Ρ Ρ ΠΆΠΈΠ²Ρ Π² ΠΠ°Π»ΠΈΡΠΎΡΠ½ΠΈΠΈ. ΠΠ°Π½ΠΈΠΌΠ°ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π°ΠΌΠ΅ΡΠΈΠΊΠ°Π½ΡΠΊΠΈΠΌΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΠΌΠΈ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΊΡΡΠΏΠ½ΡΠΌΠΈ. ΠΠ½ΠΈ Π°ΠΊΡΠΈΠ²Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Postgres. Π ΡΠ°ΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ Π²ΡΡΠΊΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ ΡΡΡΠΊΠΈ.
ΠΡΠ»ΠΈ Π²Ρ ΡΡΠΎ-ΡΠΎ Π΄Π΅Π»Π°Π΅ΡΠ΅, ΡΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π²ΠΎΠΊΡΡΠ³ Postgres Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π·Π°ΡΡΠΊΠΈ. ΠΠΎΠΏΡΡΡΠΈΠΌ, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠΆΠ΄Π°ΡΡ, ΠΏΠΎΠΊΠ° Π°Π΄ΠΌΠΈΠ½ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ΅Ρ Π²Π°ΠΌ ΡΠ΅ΡΡΠΎΠ²ΡΠΉ ΡΡΠ΅Π½Π΄, Π»ΠΈΠ±ΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠΆΠ΄Π°ΡΡ, ΠΏΠΎΠΊΠ° DBA Π½Π° Π²Π°Ρ ΠΎΡΡΠ΅Π°Π³ΠΈΡΡΠ΅Ρ. Π ΠΌΡ Π½Π°Ρ ΠΎΠ΄ΠΈΠΌ ΡΠ°ΠΊΠΈΠ΅ ΡΠ·ΠΊΠΈΠ΅ ΠΌΠ΅ΡΡΠ° Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΈΡ ΡΡΡΡΠ°Π½ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π½ΠΎΠ²ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ².
Π― Π±ΡΠ» Π½Π΅Π΄Π°Π²Π½ΠΎ Π½Π° VLDB Π² ΠΠΎΡ-ΠΠ½Π΄ΠΆΠ΅Π»Π΅ΡΠ΅. ΠΡΠΎ ΡΠ°ΠΌΠ°Ρ Π±ΠΎΠ»ΡΡΠ°Ρ ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡ ΠΏΠΎ Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½ΡΡ . Π ΡΠ°ΠΌ Π±ΡΠ» Π΄ΠΎΠΊΠ»Π°Π΄ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ Π‘Π£ΠΠ Π±ΡΠ΄ΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΡΠ°Π½ΠΈΡΡ, Π° Π΅ΡΠ΅ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΄Π°Π»ΡΡΡ Π΄Π°Π½Π½ΡΠ΅. ΠΡΠΎ Π½ΠΎΠ²Π°Ρ ΡΠ΅ΠΌΠ°.
ΠΠ°Π½Π½ΡΡ Π²ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ Π² ΠΌΠΈΡΠ΅ Π·Π΅ΡΠ°Π±Π°ΠΉΡ β ΡΡΠΎ 1 000 000 ΠΏΠ΅ΡΠ°Π±Π°ΠΉΡ. Π ΡΠ΅ΠΉΡΠ°Ρ ΡΠΆΠ΅ ΠΎΡΠ΅Π½ΠΈΠ²Π°Π΅ΡΡΡ, ΡΡΠΎ Ρ Π½Π°Ρ Π±ΠΎΠ»ΡΡΠ΅ 100 Π·Π΅ΡΠ°Π±Π°ΠΉΡ Π΄Π°Π½Π½ΡΡ Π² ΠΌΠΈΡΠ΅ Ρ ΡΠ°Π½ΠΈΡΡΡ. Π ΠΈΡ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π²ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΈ Π±ΠΎΠ»ΡΡΠ΅.
Π ΡΡΠΎ Ρ ΡΡΠΈΠΌ Π΄Π΅Π»Π°ΡΡ? ΠΠΎΠ½ΡΡΠ½ΠΎ, ΡΡΠΎ Π½Π°Π΄ΠΎ ΡΠ΄Π°Π»ΡΡΡ. ΠΠΎΡ ΡΡΡΠ»ΠΊΠ° Π½Π° ΡΡΠΎΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ Π΄ΠΎΠΊΠ»Π°Π΄. ΠΠΎ ΠΏΠΎΠΊΠ° ΡΡΠΎ Π² Π‘Π£ΠΠ ΡΡΠΎ Π½Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ.
Π’Π΅, ΠΊΡΠΎ ΡΠΌΠ΅ΡΡ ΡΡΠΈΡΠ°ΡΡ Π΄Π΅Π½ΡΠ³ΠΈ, Ρ ΠΎΡΡΡ Π΄Π²ΡΡ Π²Π΅ΡΠ΅ΠΉ. ΠΠ½ΠΈ Ρ ΠΎΡΡΡ, ΡΡΠΎΠ±Ρ ΠΌΡ ΡΠ΄Π°Π»ΡΠ»ΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΌΠ΅ΡΡ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ.
Π’ΠΎ, ΡΡΠΎ Π΄Π°Π»ΡΡΠ΅ Ρ Π±ΡΠ΄Ρ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°ΡΡ, ΡΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΠ°Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠ½Π°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ ΠΊΡΡΡ ΡΠ΅Π°Π»ΡΠ½ΡΡ ΡΠΈΡΡΠ°ΡΠΈΠΉ, Ρ. Π΅. Π½Π΅ΠΊΠ°Ρ ΠΊΠΎΠΌΠΏΠ΅Π»ΡΡΠΈΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΠ»ΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠΎ ΠΌΠ½ΠΎΠΉ ΠΈ ΠΎΠΊΡΡΠΆΠ°ΡΡΠΈΠΌΠΈ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·, ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅Ρ. ΠΡΠ°Π±Π»ΠΈ Π²Π΅Π·Π΄Π΅ ΠΈ Π½Π° Π½ΠΈΡ Π²ΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠ΅ Π½Π°ΡΡΡΠΏΠ°ΡΡ.
ΠΠΎΠΏΡΡΡΠΈΠΌ Ρ Π½Π°Ρ Π΅ΡΡΡ Π±Π°Π·Π° ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±Π°Π·, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΡΡΡ. Π Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ β ΡΡΠΎ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΉ ΠΌΡΡΠΎΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΡΠΎ-ΡΠΎ ΡΠ°ΠΌ Π½Π°ΡΠ°Π» Π΄Π΅Π»Π°ΡΡ, Π½Π΅ Π·Π°ΠΊΠΎΠ½ΡΠΈΠ». Π ΡΠ΅ΡΠ΅Π· ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΌΡ Π·Π½Π°Π΅ΠΌ, ΡΡΠΎ ΡΡΠΎ Π½Π΅Π·Π°ΠΊΠΎΠ½ΡΠ΅Π½Π½ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΆΠ΅ Π½Π΅ Ρ ΡΠ°Π½ΠΈΡΡ. Π’. Π΅. ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΌΡΡΠΎΡΠ½ΡΠ΅ Π²Π΅ΡΠΈ ΠΌΡ Ρ ΠΎΡΠ΅Π»ΠΈ Π±Ρ ΠΏΠΎΡΠΈΡΡΠΈΡΡ, ΡΡΠΎΠ±Ρ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ ΠΌΠ΅ΡΡΠΎ, ΡΠ»ΡΡΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ Ρ. Π΄.
Π ΠΎΠ±ΡΠ΅ΠΌ, ΡΡΠ°Π²ΠΈΡΡΡ Π·Π°Π΄Π°ΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ Π²Π΅ΡΠ΅ΠΉ, ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΡΡΡΠΎΡΠ΅ΠΊ Π² ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΠ°Π±Π»ΠΈΡΠ΅.
Π Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠ°ΠΊΠΎΠΉ Π·Π°ΠΏΡΠΎΡ, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΡΠ΅Π³ΠΎΠ΄Π½Ρ Π³ΠΎΠ²ΠΎΡΠΈΡΡ, Ρ. Π΅. ΠΏΡΠΎ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΌΡΡΠΎΡΠ°.
ΠΠΎΠΏΡΠΎΡΠΈΠ»ΠΈ ΠΎΠΏΡΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ. ΠΠ½ Π²Π·ΡΠ» ΡΡΠΎΡ Π·Π°ΠΏΡΠΎΡ, ΠΏΡΠΎΠ²Π΅ΡΠΈΠ» Ρ ΡΠ΅Π±Ρ β Π²ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π» Π½Π° staging β Π²ΡΠ΅ Ρ ΠΎΡΠΎΡΠΎ. ΠΡΠΊΠ°ΡΠΈΠ»ΠΈ β Π²ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. Π Π°Π· Π² ΡΡΡΠΊΠΈ ΠΌΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΡΡΠΎ β Π²ΡΠ΅ Ρ ΠΎΡΠΎΡΠΎ.
ΠΠ ΡΠ°ΡΡΠ΅Ρ ΠΈ ΡΠ°ΡΡΠ΅Ρ. ΠΠΆΠ΅ΡΡΡΠΎΡΠ½ΡΠΉ DELETE Π½Π΅ΠΌΠ½ΠΎΠΆΠΊΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅ΠΉ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π°ΡΠΈΠ½Π°Π΅Ρ.
ΠΠΎΡΠΎΠΌ ΠΌΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, ΡΡΠΎ Ρ Π½Π°Ρ ΡΠ΅ΠΉΡΠ°Ρ ΠΌΠ°ΡΠΊΠ΅ΡΠΈΠ½Π³ΠΎΠ²Π°Ρ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ ΠΈ ΡΡΠ°ΡΠΈΠΊ Π±ΡΠ΄Π΅Ρ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· Π±ΠΎΠ»ΡΡΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ΅ΡΠ°Π΅ΠΌ Π»ΠΈΡΠ½ΠΈΠ΅ Π²Π΅ΡΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π½Π° ΠΏΠ°ΡΠ·Ρ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ. Π Π·Π°Π±ΡΠ²Π°Π΅ΠΌ Π²Π΅ΡΠ½ΡΡΡ.
Π§Π΅ΡΠ΅Π· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ΅ΡΡΡΠ΅Π² Π²ΡΠΏΠΎΠΌΠ½ΠΈΠ»ΠΈ. Π ΡΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠ²ΠΎΠ»ΠΈΠ»ΡΡ ΠΈΠ»ΠΈ Π·Π°Π½ΡΡ ΡΠ΅ΠΌ-ΡΠΎ Π΄ΡΡΠ³ΠΈΠΌ, ΠΏΠΎΡΡΡΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠΌΡ Π²Π΅ΡΠ½ΡΡΡ.
ΠΠ½ ΠΏΡΠΎΠ²Π΅ΡΠΈΠ» Π½Π° dev, Π½Π° staging β Π²ΡΠ΅ ΠΠΊ. ΠΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, Π½ΡΠΆΠ½ΠΎ Π΅ΡΠ΅ ΠΏΠΎΡΠΈΡΡΠΈΡΡ ΡΠΎ, ΡΡΠΎ Π½Π°ΠΊΠΎΠΏΠΈΠ»ΠΎΡΡ. ΠΠ½ ΠΏΡΠΎΠ²Π΅ΡΠΈΠ», Π²ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
Π§ΡΠΎ ΡΠ»ΡΡΠ°Π΅ΡΡΡ Π΄Π°Π»ΡΡΠ΅? ΠΠ°Π»ΡΡΠ΅ Ρ Π½Π°Ρ Π²ΡΠ΅ ΡΠΎΠ½ΡΠ΅ΡΡΡ. Π ΠΎΠ½ΡΠ΅ΡΡΡ ΡΠ°ΠΊ, ΡΡΠΎ Ρ Π½Π°Ρ Π² ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ Π»ΠΎΠΆΠΈΡΡΡ. ΠΡΠ΅ Π² ΡΠΎΠΊΠ΅, Π½ΠΈΠΊΡΠΎ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ. Π ΠΏΠΎΡΠΎΠΌ Π²ΡΡΡΠ½ΡΠ΅ΡΡΡ, ΡΡΠΎ Π΄Π΅Π»ΠΎ Π² ΡΡΠΎΠΌ DELETE Π±ΡΠ»ΠΎ.
Π§ΡΠΎ ΠΏΠΎΡΠ»ΠΎ Π½Π΅ ΡΠ°ΠΊ? ΠΠΎΡ Π·Π΄Π΅ΡΡ Π΄Π°Π½ ΡΠΏΠΈΡΠΎΠΊ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΌΠΎΠ³Π»ΠΎ ΠΏΠΎΠΉΡΠΈ Π½Π΅ ΡΠ°ΠΊ. Π§ΡΠΎ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΌΠΎΠ΅ Π²Π°ΠΆΠ½ΠΎΠ΅?
-
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅ Π±ΡΠ»ΠΎ review, Ρ. Π΅. DBA-ΡΠΊΡΠΏΠ΅ΡΡ Π½Π΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅Π». ΠΠ½ Π±Ρ ΠΎΠΏΡΡΠ½ΡΠΌ Π²Π·Π³Π»ΡΠ΄ΠΎΠΌ ΡΡΠ°Π·Ρ Π½Π°ΡΠ΅Π» Π±Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΊ ΡΠΎΠΌΡ ΠΆΠ΅ Ρ Π½Π΅Π³ΠΎ Π΅ΡΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ prod, Π³Π΄Π΅ Π½Π°ΠΊΠΎΠΏΠΈΠ»ΠΎΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² ΡΡΡΠΎΡΠ΅ΠΊ.
-
ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ, ΠΏΡΠΎΠ²Π΅ΡΡΠ»ΠΈ ΠΊΠ°ΠΊ-ΡΠΎ Π½Π΅ ΡΠ°ΠΊ.
-
ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΆΠ΅Π»Π΅Π·ΠΎ ΡΡΡΠ°ΡΠ΅Π»ΠΎ ΠΈ Π½ΡΠΆΠ½ΠΎ Π°ΠΏΠ³ΡΠ΅ΠΉΠ΄ Π΄Π»Ρ ΡΡΠΎΠΉ Π±Π°Π·Ρ Π΄Π΅Π»Π°ΡΡ.
-
ΠΠ»ΠΈ ΡΡΠΎ-ΡΠΎ Ρ ΡΠΎΠΌΠΎΠΉ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ Π½Π΅ ΡΠ°ΠΊ, ΠΈ Π½Π°ΠΌ Ρ Postgres Π½Π° MySQL Π½Π°Π΄ΠΎ ΠΏΠ΅ΡΠ΅Π΅Ρ Π°ΡΡ.
-
ΠΠ»ΠΈ, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ, Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ΅ΠΉ ΡΡΠΎ-ΡΠΎ Π½Π΅ ΡΠ°ΠΊ.
-
ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°Π±ΠΎΡΡ ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΊΠΎΠ³ΠΎ-ΡΠΎ ΡΠ²ΠΎΠ»ΠΈΡΡ, Π° Π½Π°Π½ΡΡΡ Π»ΡΡΡΠΈΡ Π»ΡΠ΄Π΅ΠΉ?
ΠΠ΅ Π±ΡΠ»ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ DBA. ΠΡΠ»ΠΈ DBA Π±ΡΠ» Π±Ρ, ΠΎΠ½ ΡΠ²ΠΈΠ΄Π΅Π» Π±Ρ ΡΡΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² ΡΡΡΠΎΡΠ΅ΠΊ ΠΈ Π΄Π°ΠΆΠ΅ Π±Π΅Π· Π²ΡΡΠΊΠΈΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ² ΡΠΊΠ°Π·Π°Π» Π±Ρ: Β«Π’Π°ΠΊ Π½Π΅ Π΄Π΅Π»Π°ΡΡΒ». ΠΠΎΠΏΡΡΡΠΈΠΌ, Π΅ΡΠ»ΠΈ Π±Ρ ΡΡΠΎΡ ΠΊΠΎΠ΄ Π±ΡΠ» Π² GitLab, GitHub ΠΈ Π±ΡΠ» Π±Ρ ΠΏΡΠΎΡΠ΅ΡΡ code review ΠΈ Π½Π΅ Π±ΡΠ»ΠΎ ΡΠ°ΠΊΠΎΠ³ΠΎ, ΡΡΠΎ Π±Π΅Π· ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ DBA ΡΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΡΠΎΠΉΠ΄Π΅Ρ Π½Π° prod, ΡΠΎ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ DBA ΡΠΊΠ°Π·Π°Π» Π±Ρ: Β«Π’Π°ΠΊ Π½Π΅Π»ΡΠ·Ρ Π΄Π΅Π»Π°ΡΡΒ».
Π ΠΎΠ½ Π±Ρ ΡΠΊΠ°Π·Π°Π», ΡΡΠΎ Ρ Π²Π°Ρ Ρ disk IO Π±ΡΠ΄ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈ Π²ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ Π²Π·Π±Π΅ΡΡΡΡΡ, ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π»ΠΎΠΊΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ Π²Ρ Π·Π°Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΡΠ΅ Π°Π²ΡΠΎΠ²Π°ΠΊΡΡΠΌ Π½Π° ΠΊΡΡΡ ΠΌΠΈΠ½ΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΠΎ Π½Π΅ Ρ ΠΎΡΠΎΡΠΎ.
ΠΡΠΎΡΠ°Ρ ΠΎΡΠΈΠ±ΠΊΠ° β ΠΏΡΠΎΠ²Π΅ΡΡΠ»ΠΈ Π½Π΅ ΡΠ°ΠΌ. ΠΡ ΠΏΠΎΡΡΡΠ°ΠΊΡΡΠΌ ΡΠ²ΠΈΠ΄Π΅Π»ΠΈ, ΡΡΠΎ ΠΌΡΡΠΎΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ Π½Π°ΠΊΠΎΠΏΠΈΠ»ΠΎΡΡ Π½Π° prod ΠΌΠ½ΠΎΠ³ΠΎ, Π° Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π½Π΅ Π±ΡΠ»ΠΎ Π² ΡΡΠΎΠΉ Π±Π°Π·Π΅ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ , Π΄Π° ΠΈ Π½Π° staging ΠΎΡΠΎΠ±ΠΎ Π½ΠΈΠΊΡΠΎ ΡΡΠΎΡ ΠΌΡΡΠΎΡ Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Π». Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΡΠ°ΠΌ Π±ΡΠ»ΠΎ 1 000 ΡΡΡΠΎΡΠ΅ΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΡΡΡΠΎ ΠΎΡΡΠ°Π±ΠΎΡΠ°Π»ΠΈ.
ΠΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, ΡΡΠΎ Π½Π°ΡΠΈ ΡΠ΅ΡΡΡ ΡΠ»Π°Π±ΡΠ΅, Ρ. Π΅. ΠΏΡΠΎΡΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΡΡΡΠΎΠ΅Π½, Π½Π΅ Π»ΠΎΠ²ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΠ΅ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΈ Π°Π΄Π΅ΠΊΠ²Π°ΡΠ½ΡΠΉ ΠΠ-ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ.
ΠΠ΄Π΅Π°Π»ΡΠ½ΡΠΉ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ Π½Π° ΡΠ°ΠΊΠΎΠΌ ΠΆΠ΅ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ. ΠΠ° ΡΠ°ΠΊΠΎΠΌ ΠΆΠ΅ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, Π½ΠΎ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΡΡΠΎ Π±ΡΠ»Π° ΠΏΠΎΠ»Π½ΠΎΡΠ°Π·ΠΌΠ΅ΡΠ½Π°Ρ ΠΊΠΎΠΏΠΈΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ . ΠΡΠΎ ΡΠΎ, ΡΡΠΎ Ρ ΠΏΡΠΎΠΏΠΎΠ²Π΅Π΄Π°Ρ ΡΠΆΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»Π΅Ρ. Π Π³ΠΎΠ΄ Π½Π°Π·Π°Π΄ Ρ ΠΎΠ± ΡΡΠΎΠΌ Π³ΠΎΠ²ΠΎΡΠΈΠ», ΠΌΠΎΠΆΠ΅ΡΠ΅ Π² YouTube ΡΡΠΎ Π²ΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ.
ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ, Ρ Π½Π°Ρ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ»ΠΎΡ ΠΎΠ΅? ΠΡΠ»ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΡΠΎ latency ΠΏΠΎΠ΄ΡΠΊΠΎΡΠΈΠ»ΠΎ. ΠΡ ΡΠ²ΠΈΠ΄Π΅Π»ΠΈ, ΡΡΠΎ ΡΡΠΈΠ»ΠΈΠ·Π°ΡΠΈΡ 100 %. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π΅ΡΠ»ΠΈ ΡΡΠΎ Π±ΡΠ»ΠΈ Π±Ρ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ NVMe Π΄ΠΈΡΠΊΠΈ, ΡΠΎ, Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅, Π½Π°ΠΌ Π±ΡΠ»ΠΎ Π±Ρ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅Π³ΡΠ΅. Π, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΌΡ Π±Ρ Π½Π΅ Π»Π΅Π³Π»ΠΈ ΠΎΡ ΡΡΠΎΠ³ΠΎ.
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΠΎΠ±Π»Π°ΠΊΠ°, ΡΠΎ ΡΠ°ΠΌ Π°ΠΏΠ³ΡΠ΅ΠΉΠ΄ Π»Π΅Π³ΠΊΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ. ΠΠΎΠ΄Π½ΡΠ»ΠΈ Π½ΠΎΠ²ΡΠ΅ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ Π½Π° Π½ΠΎΠ²ΠΎΠΌ ΠΆΠ΅Π»Π΅Π·Π΅. Switchover. Π Π²ΡΠ΅ Ρ ΠΎΡΠΎΡΠΎ. ΠΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ.
Π ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΊΠ°ΠΊ-ΡΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡΠ΅ Π΄ΠΈΡΠΊΠΈ ΡΡΠΎΠ³Π°ΡΡ? Π ΡΡΡ ΠΊΠ°ΠΊ ΡΠ°Π· Ρ ΠΏΠΎΠΌΠΎΡΡΡ DBA ΠΌΡ Π½ΡΡΡΠ΅ΠΌ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ΅ΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ checkpoint tuning. ΠΡΡΡΠ½ΡΠ΅ΡΡΡ, ΡΡΠΎ Ρ Π½Π°Ρ Π½Π΅ Π±ΡΠ» ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ checkpoint tuning.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ checkpoint? ΠΡΠΎ Π΅ΡΡΡ Π² Π»ΡΠ±ΠΎΠΉ Π‘Π£ΠΠ. ΠΠΎΠ³Π΄Π° Ρ Π²Π°Ρ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΌΠ΅Π½ΡΡΡΡΡ, ΠΎΠ½ΠΈ Π½Π΅ ΡΡΠ°Π·Ρ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π½Π° Π΄ΠΈΡΠΊΠΈ. ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈΡΡ, ΡΠ½Π°ΡΠ°Π»Π° Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² ΠΎΠΏΠ΅ΡΠ΅ΠΆΠ°ΡΡΠΈΠΉ ΠΆΡΡΠ½Π°Π», Π² write-ahead log. Π Π² ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ Π‘Π£ΠΠ ΡΠ΅ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΏΠΎΡΠ° ΡΠΆΠ΅ ΡΠ΅Π°Π»ΡΠ½ΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ Π½Π° Π΄ΠΈΡΠΊ ΡΠΊΠΈΠ½ΡΡΡ, ΡΡΠΎΠ±Ρ, Π΅ΡΠ»ΠΈ Ρ Π½Π°Ρ Π±ΡΠ΄Π΅Ρ ΡΠ±ΠΎΠΉ, ΠΏΠΎΠΌΠ΅Π½ΡΡΠ΅ Π΄Π΅Π»Π°ΡΡ REDO. ΠΡΠΎ ΠΊΠ°ΠΊ Π² ΠΈΠ³ΡΡΡΠΊΠ΅. ΠΡΠ»ΠΈ Π½Π°Ρ ΡΠ±ΡΡΡ, ΠΌΡ Π±ΡΠ΄Π΅ΠΌ Π½Π°ΡΠΈΠ½Π°ΡΡ ΠΈΠ³ΡΡ Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ checkpoint. Π Π²ΡΠ΅ Π‘Π£ΠΠ ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ.
ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ Π² Postgres ΠΎΡΡΡΠ°ΡΡ. ΠΠ½ΠΈ ΡΠ°ΡΡΡΠΈΡΠ°Π½Π° Π½Π° 10-15-Π»Π΅ΡΠ½Π΅ΠΉ Π΄Π°Π²Π½ΠΎΡΡΠΈ ΠΎΠ±ΡΠ΅ΠΌΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ. Π checkpoint β Π½Π΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅.
ΠΠΎΡ ΡΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ· Π½Π°ΡΠ΅Π³ΠΎ ΠΎΡΡΠ΅ΡΠ° c Postgres check-up, Ρ. Π΅. Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π·Π΄ΠΎΡΠΎΠ²ΡΡ. Π Π²ΠΎΡ ΠΊΠ°ΠΊΠ°Ρ-ΡΠΎ Π±Π°Π·Π° Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ°Π±Π°ΠΉΡ. Π Π²ΠΈΠ΄Π½ΠΎ Ρ ΠΎΡΠΎΡΠΎ, ΡΡΠΎ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ checkpoints ΠΏΠΎΡΡΠΈ Π² 90 % ΡΠ»ΡΡΠ°Π΅Π².
ΠΡΠΎ ΡΡΠΎ Π·Π½Π°ΡΠΈΡ? Π’Π°ΠΌ Π΅ΡΡΡ Π΄Π²Π΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ. Checkpoint ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎ timeout Π½Π°ΡΡΡΠΏΠΈΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² 10 ΠΌΠΈΠ½ΡΡ. ΠΠ»ΠΈ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΡΡΡΠΏΠΈΡΡ, ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΏΠΎΠ»Π½ΠΈΠ»ΠΎΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π°Π½Π½ΡΡ .
Π ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ max_wal_saze Π²ΡΡΡΠ°Π²Π»Π΅Π½ Π² 1 Π³ΠΈΠ³Π°Π±Π°ΠΉΡ. ΠΠΎ ΡΠ°ΠΊΡΡ, ΡΡΠΎ ΡΠ΅Π°Π»ΡΠ½ΠΎ ΡΠ»ΡΡΠ°Π΅ΡΡΡ Π² Postgres ΡΠ΅ΡΠ΅Π· 300-400 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ. ΠΡ ΠΏΠΎΠΌΠ΅Π½ΡΠ»ΠΈ ΡΡΠΎΠ»ΡΠΊΠΎ Π΄Π°Π½Π½ΡΡ ΠΈ Ρ Π²Π°Ρ checkpoint ΡΠ»ΡΡΠ°Π΅ΡΡΡ.
Π Π΅ΡΠ»ΠΈ ΡΡΠΎ Π½ΠΈΠΊΡΠΎ Π½Π΅ ΡΡΠ½ΠΈΠ», Π° ΡΠ΅ΡΠ²ΠΈΡ Π²ΡΡΠΎΡ, ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ Π·Π°ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΊΡΡΡ Π΄Π΅Π½Π΅Π³, Ρ Π½Π΅Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ, ΡΠΎ checkpoint Π½Π°ΡΡΡΠΏΠ°Π΅Ρ ΡΠ°Π· Π² ΠΌΠΈΠ½ΡΡΡ, ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈ ΡΠ°Π· Π² 30 ΡΠ΅ΠΊΡΠ½Π΄, Π° ΠΈΠ½ΠΎΠ³Π΄Π° Π΄Π°ΠΆΠ΅ ΠΈ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡΡΡ Π΄ΡΡΠ³ Π½Π° Π΄ΡΡΠ³Π°. ΠΡΠΎ ΡΠΎΠ²ΡΠ΅ΠΌ ΡΠΆΠ΅ ΠΏΠ»ΠΎΡ ΠΎ.
Π Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠ½ Π½Π°ΡΡΡΠΏΠ°Π» ΠΏΠΎΡΠ΅ΠΆΠ΅. Π’. Π΅. ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ΄Π½ΡΡΡ max_wal_size. Π ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π½Π°ΡΡΡΠΏΠ°ΡΡ ΡΠ΅ΠΆΠ΅.
ΠΠΎ ΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ Ρ ΡΠ΅Π±Ρ ΡΠ΅Π»ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΡ, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ, Ρ. Π΅. ΠΊΠ°ΠΊ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎ Π²ΡΠ±ΠΎΡΠ΅ Π½Π°ΡΡΡΠΎΠ΅ΠΊ, ΡΠ΅ΡΠΊΠΎ ΠΎΠΏΠΈΡΠ°ΡΡΡ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅.
Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ Π΄Π²Π΅ ΡΠ΅ΡΠΈΠΈ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ² Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ .
ΠΠ΅ΡΠ²Π°Ρ ΡΠ΅ΡΠΈΡ β ΠΌΡ ΠΌΠ΅Π½ΡΠ΅ΠΌ max_wal_size. Π ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΠΌ ΠΌΠ°ΡΡΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ. Π‘Π½Π°ΡΠ°Π»Π° Π΄Π΅Π»Π°Π΅ΠΌ Π΅Π΅ Π½Π° Π΄Π΅ΡΠΎΠ»ΡΠ½ΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ Π² 1 Π³ΠΈΠ³Π°Π±Π°ΠΉΡ. Π Π΄Π΅Π»Π°Π΅ΠΌ ΠΌΠ°ΡΡΠΎΠ²ΡΠΉ DELETE ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² ΡΡΡΠΎΡΠ΅ΠΊ.
ΠΠΈΠ΄Π½ΠΎ, ΠΊΠ°ΠΊ Π½Π°ΠΌ ΡΡΠΆΠ΅Π»ΠΎ. Π‘ΠΌΠΎΡΡΠΈΠΌ, ΡΡΠΎ disk IO ΠΎΡΠ΅Π½Ρ ΠΏΠ»ΠΎΡ . Π‘ΠΌΠΎΡΡΠΈΠΌ, ΡΠΊΠΎΠ»ΡΠΊΠΎ WAL ΠΌΡ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π»ΠΈ, Ρ. ΠΊ. ΡΡΠΎ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ. Π‘ΠΌΠΎΡΡΠΈΠΌ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· checkpoint ΡΠ»ΡΡΠΈΠ»ΡΡ. Π Π²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ Π½Π΅Ρ ΠΎΡΠΎΡΠΎ.
ΠΠ°Π»ΡΡΠ΅ ΠΌΡ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΠΌ max_wal_size. ΠΠΎΠ²ΡΠΎΡΡΠ΅ΠΌ. Π£Π²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΠΌ, ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΠΌ. Π ΡΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·. Π ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅, 10 ΡΠΎΡΠ΅ΠΊ β ΡΡΠΎ Ρ ΠΎΡΠΎΡΠΎ, Π³Π΄Π΅ 1, 2, 4, 8 Π³ΠΈΠ³Π°Π±Π°ΠΉΡ. Π ΡΠΌΠΎΡΡΠΈΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠΎΠ½ΡΡΠ½ΠΎ, ΡΡΠΎ Π·Π΄Π΅ΡΡ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΊΠ°ΠΊ Π½Π° prod. Π£ Π²Π°Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ΅ ΠΆΠ΅ Π΄ΠΈΡΠΊΠΈ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΆΠ΅ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Postgres ΡΠ°ΠΊΠΈΠ΅ ΠΆΠ΅.
Π ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΡ ΠΎΠ±ΠΌΠ΅Π½ΡΠ΅ΠΌ Π½Π°ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΈ Π·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ Π±ΡΠ΄Π΅Ρ ΡΠ΅Π±Ρ Π²Π΅ΡΡΠΈ Π‘Π£ΠΠ ΠΏΡΠΈ ΠΏΠ»ΠΎΡ ΠΎΠΌ ΠΌΠ°ΡΡΠΎΠ²ΠΎΠΌ DELETE, ΠΊΠ°ΠΊ Π±ΡΠ΄Π΅Ρ ΠΎΠ½Π° checkpointβΠΈΡΡΡΡ.
Checkpoint ΠΏΠΎ-ΡΡΡΡΠΊΠΈ β ΡΡΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΠ΅ ΡΠΎΡΠΊΠΈ.
ΠΡΠΈΠΌΠ΅Ρ: DELETE Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ»Π½ ΡΡΡΠΎΠΊ ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡ, ΡΡΡΠΎΠΊΠΈ Β«ΡΠ°Π·Π±ΡΠΎΡΠ°Π½ΡΒ» ΠΏΠΎ ΡΡΡΠ°Π½ΠΈΡΠ°ΠΌ.
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ. ΠΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΠ°Ρ Π±Π°Π·Π°. Π ΠΏΡΠΈ Π΄Π΅ΡΠΎΠ»ΡΠ½ΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ Π² 1 Π³ΠΈΠ³Π°Π±Π°ΠΉΡ Π΄Π»Ρ max_wal_size ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΎ Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ Ρ Π½Π°Ρ Π΄ΠΈΡΠΊΠΈ Π½Π° Π·Π°ΠΏΠΈΡΡ ΠΈΠ΄ΡΡ Π² ΠΏΠΎΠ»ΠΊΡ. ΠΠΎΡ ΡΠ°ΠΊΠ°Ρ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ° β ΡΡΠΎ ΡΠΈΠΏΠΈΡΠ½ΡΠΉ ΡΠΈΠΌΠΏΡΠΎΠΌ ΠΎΡΠ΅Π½Ρ Π±ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠΈΠ΅Π½ΡΠ°, Ρ. Π΅. Π΅ΠΌΡ ΡΠ΅Π°Π»ΡΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΏΠ»ΠΎΡ ΠΎ. Π ΡΡΡ Π±ΡΠ»Π° ΠΎΠ΄Π½Π° Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΡΡΡ Π±ΡΠ» ΠΊΠ°ΠΊ ΡΠ°Π· DELETE Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² ΡΡΡΠΎΡΠ΅ΠΊ.
ΠΡΠ»ΠΈ ΡΠ°ΠΊΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΡΡΠΊΠ°ΡΡ Π² prod, ΡΠΎ ΠΊΠ°ΠΊ ΡΠ°Π· ΠΌΡ ΠΈ Π»ΡΠΆΠ΅ΠΌ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΠΎΠ΄ΠΈΠ½ DELETE ΡΠ±ΠΈΠ²Π°Π΅Ρ Π½Π°Ρ Π² ΠΏΠΎΠ»ΠΊΡ.
ΠΠ°Π»ΡΡΠ΅, Π³Π΄Π΅ 16 Π³ΠΈΠ³Π°Π±Π°ΠΉΡ, Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΡΠΆΠ΅ Π·ΡΠ±ΡΠΈΠΊΠΈ ΠΏΠΎΡΠ»ΠΈ. ΠΡΠ±ΡΠΈΠΊΠΈ β ΡΡΠΎ ΡΠΆΠ΅ Π»ΡΡΡΠ΅, Ρ. Π΅. ΠΌΡ ΡΡΡΡΠΈΠΌΡΡ ΠΎ ΠΏΠΎΡΠΎΠ»ΠΎΠΊ, Π½ΠΎ ΡΠΆΠ΅ Π½Π΅ ΡΠ°ΠΊ ΠΏΠ»ΠΎΡ ΠΎ. ΠΠ΅Π±ΠΎΠ»ΡΡΠ°Ρ ΡΠ²ΠΎΠ±ΠΎΠ΄Π° ΡΠ°ΠΌ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ. Π‘ΠΏΡΠ°Π²Π° β ΡΡΠΎ Π·Π°ΠΏΠΈΡΡ. Π ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ β Π²ΡΠΎΡΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊ. Π Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΠΌΡ ΡΠΆΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π³ΡΠ΅ Π·Π°Π΄ΡΡΠ°Π»ΠΈ, ΠΊΠΎΠ³Π΄Π° 16 Π³ΠΈΠ³Π°Π±Π°ΠΉΡ.
Π Π³Π΄Π΅ 64 Π³ΠΈΠ³Π°Π±Π°ΠΉΡ Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΡΠΎΠ²ΡΠ΅ΠΌ Π»ΡΡΡΠ΅ ΡΡΠ°Π»ΠΎ. Π£ΠΆΠ΅ Π·ΡΠ±ΡΠΈΠΊΠΈ ΡΡΠΊΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½Π½ΡΠ΅, ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ, ΡΡΠΎΠ±Ρ Π²ΡΠΆΠΈΡΡ Π΄ΡΡΠ³ΠΈΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌ ΠΈ ΡΡΠΎ-ΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Ρ Π΄ΠΈΡΠΊΠΎΠΌ.
ΠΠΎΡΠ΅ΠΌΡ ΡΠ°ΠΊ?
Π― Π±ΡΠ΄Ρ Π½Π΅ΠΌΠ½ΠΎΠΆΠΊΠΎ ΠΎΠΊΡΠ½Π°ΡΡΡΡ Π² ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ, Π½ΠΎ ΡΡΠ° ΡΠ΅ΠΌΠ°, ΠΊΠ°ΠΊ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ checkpoint tuning, ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ»ΠΈΡΡΡΡ Π² ΡΠ΅Π»ΡΠΉ Π΄ΠΎΠΊΠ»Π°Π΄, ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π½Π΅ Π±ΡΠ΄Ρ ΡΠΈΠ»ΡΠ½ΠΎ Π³ΡΡΠ·ΠΈΡΡ, Π½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠΆΠΊΠΎ ΠΎΠ±ΠΎΠ·Π½Π°ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ°ΠΌ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ Π΅ΡΡΡ.
ΠΡΠ»ΠΈ checkpoint ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΠ°ΡΡΠΎ ΡΠ»ΡΡΠ°Π΅ΡΡΡ, ΠΈ ΠΌΡ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΠΌ Π½Π°ΡΠΈ ΡΡΡΠΎΡΠΊΠΈ Π½Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π° Π½Π°Ρ ΠΎΠ΄ΠΈΠΌ ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡ, ΡΡΠΎ Ρ ΠΎΡΠΎΡΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΡ Π½Π΅ Π²ΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΡΠ΄Π°Π»ΡΠ΅Ρ, ΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠ»ΡΡΠΈΡΡΡ ΡΠ°ΠΊ, ΡΡΠΎ ΡΠ½Π°ΡΠ°Π»Π° ΠΌΡ ΠΏΠ΅ΡΠ²ΡΡ ΡΡΡΠ°Π½ΠΈΡΠΊΡ ΠΏΠΎΡΡΠΎΠ³Π°Π»ΠΈ, ΠΏΠΎΡΠΎΠΌ ΡΡΡΡΡΠ½ΡΡ, Π° ΠΏΠΎΡΠΎΠΌ Π²Π΅ΡΠ½ΡΠ»ΠΈΡΡ ΠΊ ΠΏΠ΅ΡΠ²ΠΎΠΉ. Π Π΅ΡΠ»ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠΈΠΌΠΈ Π·Π°Ρ ΠΎΠ΄Π°ΠΌΠΈ Π² ΠΏΠ΅ΡΠ²ΡΡ ΡΡΡΠ°Π½ΠΈΡΠΊΡ checkpoint Π΅Π΅ ΡΠΆΠ΅ Π½Π° Π΄ΠΈΡΠΊ ΡΠΎΡ ΡΠ°Π½ΠΈΠ», ΡΠΎ ΠΎΠ½ Π΅ΡΠ΅ ΡΠ°Π· Π±ΡΠ΄Π΅Ρ Π΅Π΅ ΡΠΎΡ ΡΠ°Π½ΡΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΡ Π΅Π΅ Π²ΡΠΎΡΠΎΠΉ ΡΠ°Π· ΠΏΠΎΠΏΠ°ΡΠΊΠ°Π»ΠΈ.
Π ΠΌΡ Π±ΡΠ΄Π΅ΠΌ Π·Π°ΡΡΠ°Π²Π»ΡΡΡ checkpoint Π΅Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π· ΡΠΎΡ ΡΠ°Π½ΡΡΡ. ΠΠ°ΠΊ Π±Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΈΠ·Π±ΡΡΠΎΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π΄Π»Ρ Π½Π΅Π³ΠΎ.
ΠΠΎ ΡΡΠΎ Π΅ΡΠ΅ Π½Π΅ Π²ΡΠ΅. Π Postgres ΡΡΡΠ°Π½ΠΈΡΠΊΠΈ Π²Π΅ΡΡΡ 8 ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ, Π° Π² Linux 4 ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ. Π Π΅ΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° full_page_writes. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΎΠ½Π° Π²ΠΊΠ»ΡΡΠ΅Π½Π°. Π ΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ, Π΅ΡΠ»ΠΈ ΠΌΡ Π΅Π΅ Π²ΡΠΊΠ»ΡΡΠΈΠΌ, ΡΠΎ Π΅ΡΡΡ ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ, ΡΡΠΎ ΠΏΡΠΈ ΡΠ±ΠΎΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½ΠΊΠ° ΡΡΡΠ°Π½ΠΈΡΠΊΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡΡ.
ΠΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π·Π°ΠΏΠΈΡΠΈ Π² WAL ΠΎΠΏΠ΅ΡΠ΅ΠΆΠ°ΡΡΠ΅Π³ΠΎ ΠΆΡΡΠ½Π°Π»Π° ΡΠ°ΠΊΠΎΠ΅, ΡΡΠΎ, ΠΊΠΎΠ³Π΄Π° Ρ Π½Π°Ρ checkpoint ΡΠ»ΡΡΠΈΠ»ΡΡ ΠΈ ΠΌΡ ΡΡΡΠ°Π½ΠΈΡΠΊΡ Π² ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ°Π· ΠΌΠ΅Π½ΡΠ΅ΠΌ, ΡΠΎ Π² ΠΎΠΏΠ΅ΡΠ΅ΠΆΠ°ΡΡΠΈΠΉ ΠΆΡΡΠ½Π°Π» ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π²ΡΡ ΡΡΡΠ°Π½ΠΈΡΠ° ΡΠ΅Π»ΠΈΠΊΠΎΠΌ, Ρ. Π΅. Π²ΡΠ΅ 8 ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ, Ρ ΠΎΡΡ ΠΌΡ ΠΌΠ΅Π½ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΡΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²Π΅ΡΠΈΡ 100 Π±Π°ΠΉΡ. Π ΠΌΡ Π²ΡΠ½ΡΠΆΠ΄Π΅Π½Ρ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ ΡΡΡΠ°Π½ΠΈΡΡ Π·Π°ΠΏΠΈΡΠ°ΡΡ.
Π ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΡ Π±ΡΠ΄ΡΡ ΡΠΆΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΊΠΎΡΡΠ΅ΠΆ, Π½ΠΎ Π² ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ°Π· Π²ΡΡ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ.
Π, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π΅ΡΠ»ΠΈ checkpoint Π΅ΡΠ΅ ΡΠ°Π· ΡΠ»ΡΡΠΈΠ»ΡΡ, ΡΠΎ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ½ΠΎΠ²Π° Ρ Π½ΡΠ»Ρ Π²ΡΠ΅ Π½Π°ΡΠΈΠ½Π°ΡΡ ΠΈ Π²ΡΡ ΡΡΡΠ°Π½ΠΈΡΠΊΡ Π·Π°ΠΏΠΈΡ ΠΈΠ²Π°ΡΡ. ΠΡΠΈ ΡΠ°ΡΡΡΡ checkpoints, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π³ΡΠ»ΡΠ΅ΠΌ ΠΏΠΎ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ ΡΡΡΠ°Π½ΠΈΡΠΊΠ°ΠΌ, full_page_writes = on Π±ΡΠ΄Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ ΠΌΠΎΠ³Π»ΠΎ Π±Ρ Π±ΡΡΡ, Ρ. Π΅. ΠΌΡ Π±ΠΎΠ»ΡΡΠ΅ WAL Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌ. ΠΠΎΠ»ΡΡΠ΅ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ, Π² Π°ΡΡ ΠΈΠ², Π½Π° Π΄ΠΈΡΠΊ.
Π, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π΄Π²Π΅ ΠΈΠ·Π±ΡΡΠΎΡΠ½ΠΎΡΡΠΈ Ρ Π½Π°Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ.
ΠΡΠ»ΠΈ ΠΌΡ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΠΌ max_wal_size, ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ, ΡΡΠΎ ΠΌΡ ΠΎΠ±Π»Π΅Π³ΡΠ°Π΅ΠΌ ΡΠ°Π±ΠΎΡΡ ΠΈ checkpoint, ΠΈ wal writer. Π ΡΡΠΎ ΠΊΠ»Π°ΡΡΠ½ΠΎ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΠΈΠΌ ΡΠ΅ΡΠ°Π±Π°ΠΉΡ ΠΈ Π±ΡΠ΄Π΅ΠΌ Ρ ΡΡΠΈΠΌ ΠΆΠΈΡΡ. Π§ΡΠΎ Π² ΡΡΠΎΠΌ ΠΏΠ»ΠΎΡ ΠΎΠ³ΠΎ? ΠΡΠΎ ΠΏΠ»ΠΎΡ ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π² ΡΠ»ΡΡΠ°Π΅ ΡΠ±ΠΎΡ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°ΡΡΡΡ ΡΠ°ΡΠ°ΠΌΠΈ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ checkpoint Π±ΡΠ» Π΄Π°Π²Π½ΠΎ ΠΈ ΡΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ. Π Π½Π°ΠΌ Π½Π° Π²ΡΠ΅ ΡΡΠΎ REDO Π½Π°Π΄ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ. Π ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ Π²ΡΠΎΡΡΡ ΡΠ΅ΡΠΈΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ².
ΠΡ Π΄Π΅Π»Π°Π΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΈ ΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠΎΠ³Π΄Π° checkpoint Π±Π»ΠΈΠ·ΠΎΠΊ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎΠ±Ρ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ, ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ kill -9 Postgres ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ.
Π ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΡΡΠ°ΡΡΡΠ΅ΠΌ Π΅Π³ΠΎ Π·Π°Π½ΠΎΠ²ΠΎ, ΠΈ ΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ Π΄ΠΎΠ»Π³ΠΎ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°ΡΡΡΡ Π½Π° ΡΡΠΎΠΌ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ, Ρ. Π΅. ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π΄Π΅Π»Π°ΡΡ REDO Π² ΡΡΠΎΠΉ ΠΏΠ»ΠΎΡ ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ.
ΠΠ²Π°ΠΆΠ΄Ρ ΠΎΡΠΌΠ΅ΡΡ, ΡΡΠΎ ΡΠΈΡΡΠ°ΡΠΈΡ ΠΏΠ»ΠΎΡ Π°Ρ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΠΌΡ ΡΠΏΠ°Π»ΠΈ ΠΏΡΡΠΌΠΎ ΠΏΠ΅ΡΠ΅Π΄ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ΠΌ checkpoint, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π½Π°ΠΌ ΠΏΡΠΎΠΈΠ³ΡΡΠ²Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π°Π΄ΠΎ. Π, Π²ΠΎ-Π²ΡΠΎΡΡΡ , Ρ Π½Π°Ρ Π±ΡΠ»Π° ΠΌΠ°ΡΡΠΈΠ²Π½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ. Π Π΅ΡΠ»ΠΈ Π±Ρ checkpoints Π±ΡΠ»ΠΈ ΠΏΠΎ ΡΠ°ΠΉΠΌ-Π°ΡΡΡ, ΡΠΎ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, ΠΌΠ΅Π½ΡΡΠ΅ WAL ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π»ΠΎΡΡ Π±Ρ Ρ ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ checkpoint. Π’. Π΅. ΡΡΠΎ Π΄Π²Π°ΠΆΠ΄Ρ Π½Π΅ΡΠ΄Π°ΡΠ½ΠΈΠΊ.
ΠΡ Π·Π°ΠΌΠ΅ΡΡΠ΅ΠΌ ΡΠ°ΠΊΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ Π΄Π»Ρ ΡΠ°Π·Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° max_wal_size ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, ΡΡΠΎ, Π΅ΡΠ»ΠΈ max_wal_size 64 Π³ΠΈΠ³Π°Π±Π°ΠΉΡΠ°, ΡΠΎ Π² Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Ρ ΡΠ΄ΡΠ΅ΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°ΡΡΡΡ 10 ΠΌΠΈΠ½ΡΡ. Π Π΄ΡΠΌΠ°Π΅ΠΌ β ΡΡΡΡΠ°ΠΈΠ²Π°Π΅Ρ Π½Π°Ρ ΡΡΠΎ ΠΈΠ»ΠΈ Π½Π΅Ρ. ΠΡΠΎ Π±ΠΈΠ·Π½Π΅Ρ-Π²ΠΎΠΏΡΠΎΡ. ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ ΡΡΡ ΠΊΠ°ΡΡΠΈΠ½Ρ ΡΠ΅ΠΌ, ΠΊΡΠΎ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° Π±ΠΈΠ·Π½Π΅Ρ-ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΈ ΡΠΏΡΠΎΡΠΈΡΡ: Β«Π‘ΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΠ»Π΅ΠΆΠ°ΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌ Π² ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ? ΠΠΎΠΆΠ΅ΠΌ Π»ΠΈ ΠΌΡ ΠΏΠΎΠ»Π΅ΠΆΠ°ΡΡ Π² Ρ ΡΠ΄ΡΠ΅ΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ 3-5 ΠΌΠΈΠ½ΡΡ?Β». Π ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅.
Π ΡΡΡ Π΅ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ. Π£ Π½Π°Ρ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ Π΅ΡΡΡ ΠΏΠ°ΡΠ° Π΄ΠΎΠΊΠ»Π°Π΄ΠΎΠ² ΠΏΡΠΎ Patroni. Π, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅. ΠΡΠΎ autofailover Π΄Π»Ρ Postgres. GitLab ΠΈ Data Egret ΠΎΠ± ΡΡΠΎΠΌ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π»ΠΈ.
Π Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ autofailover, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΡΡΡΠΏΠΈΡ ΡΠ΅ΡΠ΅Π· 30 ΡΠ΅ΠΊΡΠ½Π΄, ΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΌΡ ΠΈ 10 ΠΌΠΈΠ½ΡΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΠ»Π΅ΠΆΠ°ΡΡ? ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΡ ΠΊ ΡΡΠΎΠΌΡ ΠΌΠΎΠΌΠ΅Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΠΌΡΡ Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΡ, ΠΈ Π²ΡΠ΅ Π±ΡΠ΄Π΅Ρ Ρ ΠΎΡΠΎΡΠΎ. ΠΡΠΎ Π²ΠΎΠΏΡΠΎΡ ΡΠΏΠΎΡΠ½ΡΠΉ. Π― Π½Π΅ Π·Π½Π°Ρ ΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΡΠ²Π΅ΡΠ°. Π― ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡΡΡΠ°Ρ, ΡΡΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΎΠΊΡΡΠ³ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅ ΡΠ±ΠΎΡ ΡΡΠ° ΡΠ΅ΠΌΠ°.
ΠΡΠ»ΠΈ Ρ Π½Π°Ρ Π΄ΠΎΠ»Π³ΠΎΠ΅ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΠ±ΠΎΡ, ΡΠΎ Π½Π°ΠΌ Π±ΡΠ΄Π΅Ρ Π½Π΅ΡΠ΄ΠΎΠ±Π½ΠΎ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ Π΄ΡΡΠ³ΠΈΡ ΡΠΈΡΡΠ°ΡΠΈΡΡ . ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠ΅Ρ ΠΆΠ΅ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Ρ , ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΡΡΠΎ-ΡΠΎ Π΄Π΅Π»Π°Π΅ΠΌ ΠΈ Π²ΡΠ½ΡΠΆΠ΄Π΅Π½Ρ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΆΠ΄Π°ΡΡ ΠΏΠΎ 10 ΠΌΠΈΠ½ΡΡ.
Π― Π±Ρ Π²ΡΠ΅-ΡΠ°ΠΊΠΈ Π½Π΅ Ρ ΠΎΠ΄ΠΈΠ» ΡΠ»ΠΈΡΠΊΠΎΠΌ Π΄Π°Π»Π΅ΠΊΠΎ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Ρ Π½Π°Ρ Π΅ΡΡΡ autofailover. ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΡΠ°ΠΊΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΊΠ°ΠΊ 64, 100 Π³ΠΈΠ³Π°Π±Π°ΠΉΡ β ΡΡΠΎ Ρ ΠΎΡΠΎΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΠ½ΠΎΠ³Π΄Π° Π΄Π°ΠΆΠ΅ ΡΡΠΎΠΈΡ ΠΌΠ΅Π½ΡΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ. Π ΠΎΠ±ΡΠ΅ΠΌ, ΡΡΠΎ ΡΠΎΠ½ΠΊΠ°Ρ Π½Π°ΡΠΊΠ°.
ΠΠ°ΠΌ, ΡΡΠΎΠ±Ρ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ Π΄Π΅Π»Π°ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, max_wal_size =1, 8, Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ²ΡΠΎΡΡΡΡ ΠΌΠ°ΡΡΠΎΠ²ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·. ΠΡ Π΅Π΅ ΡΠ΄Π΅Π»Π°Π»ΠΈ. Π Π½Π° ΡΠΎΠΉ ΠΆΠ΅ Π±Π°Π·Π΅ Ρ ΠΎΡΠΈΡΠ΅ Π΅Π΅ Π΅ΡΠ΅ ΡΠ°Π· ΡΠ΄Π΅Π»Π°ΡΡ, Π½ΠΎ Π²Ρ ΠΆΠ΅ ΡΠΆΠ΅ Π²ΡΠ΅ ΡΠ΄Π°Π»ΠΈΠ»ΠΈ. Π§ΡΠΎ Π΄Π΅Π»Π°ΡΡ?
Π― ΠΏΠΎΠΏΠΎΠ·ΠΆΠ΅ ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΏΡΠΎ Π½Π°ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΡΡΠΎ ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π² ΡΠ°ΠΊΠΈΡ ΡΠΈΡΡΠ°ΡΠΈΡΡ . Π ΡΡΠΎ ΡΠ°ΠΌΡΠΉ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄.
ΠΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π°ΠΌ ΠΏΠΎΠ²Π΅Π·Π»ΠΎ. ΠΡΠ»ΠΈ, ΠΊΠ°ΠΊ Π·Π΄Π΅ΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Β«BEGIN, DELETE, ROLLBACKΒ», ΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ DELETE ΠΏΠΎΠ²ΡΠΎΡΡΡΡ. Π’. Π΅. Π΅ΡΠ»ΠΈ ΠΌΡ Π΅Π³ΠΎ ΠΎΡΠΌΠ΅Π½ΠΈΠ»ΠΈ ΡΠ°ΠΌΠΈ, ΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π΅Π³ΠΎ ΠΏΠΎΠ²ΡΠΎΡΡΡΡ. Π ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ Ρ Π²Π°Ρ Π΄Π°Π½Π½ΡΠ΅ Π±ΡΠ΄ΡΡ ΡΠ°ΠΌ ΠΆΠ΅ Π»Π΅ΠΆΠ°ΡΡ. Π£ Π²Π°Ρ Π΄Π°ΠΆΠ΅ bloat Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Π½Π΅ ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΡΠ°ΠΊΠΈΡ DELETE.
Π’Π°ΠΊΠΎΠΉ DELETE c ROLLBACK ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΉ Π΄Π»Ρ checkpoint tuning, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π½Π΅Ρ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΠΎΠΉ database labs.
ΠΡ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΡΠ°Π±Π»ΠΈΡΠΊΡ Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΎΠΉ Β«iΒ». Π£ Postgres Π΅ΡΡΡ ΡΠ»ΡΠΆΠ΅Π±Π½ΡΠ΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ. ΠΠ½ΠΈ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡΠ΅, Π΅ΡΠ»ΠΈ ΠΈΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π½Π΅ ΠΏΠΎΠΏΡΠΎΡΠΈΡΡ. ΠΡΠΎ: ctid, xmid, xmax.
Ctid β ΡΡΠΎ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π΄ΡΠ΅Ρ. ΠΡΠ»Π΅Π²Π°Ρ ΡΡΡΠ°Π½ΠΈΡΠ°, ΠΏΠ΅ΡΠ²ΡΠΉ ΠΊΠΎΡΡΠ΅ΠΆ Π² ΡΡΡΠ°Π½ΠΈΡΠ΅.
ΠΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΠΏΠΎΡΠ»Π΅ ROOLBACK ΠΊΠΎΡΡΠ΅ΠΆ ΠΎΡΡΠ°Π»ΡΡ Π½Π° ΡΠΎΠΌ ΠΆΠ΅ ΠΌΠ΅ΡΡΠ΅. Π’. Π΅. ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π΅ΡΠ΅ ΡΠ°Π· ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ, ΠΎΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ΅Π±Ρ Π²Π΅ΡΡΠΈ ΡΠ°ΠΊ ΠΆΠ΅. ΠΡΠΎ Π³Π»Π°Π²Π½ΠΎΠ΅.
Xmax β ΡΡΠΎ Π²ΡΠ΅ΠΌΡ ΡΠΌΠ΅ΡΡΠΈ ΠΊΠΎΡΡΠ΅ΠΆΠ°. ΠΠ½ ΠΏΡΠΎΡΡΠ°Π²ΠΈΠ»ΡΡ, Π½ΠΎ Postgres Π·Π½Π°Π΅Ρ, ΡΡΠΎ ΡΡΠ° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Π±ΡΠ»Π° ΠΎΡΠΊΠ°ΡΠ΅Π½Π°, ΠΏΠΎΡΡΠΎΠΌΡ, ΡΡΠΎ 0, ΡΡΠΎ ΠΎΡΠΊΠ°ΡΠ΅Π½Π½Π°Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ β Π½Π΅Π²Π°ΠΆΠ½ΠΎ. ΠΡΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΏΠΎ DELETE ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΠΌΠ°ΡΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ database labs Π΄Π»Ρ Π±Π΅Π΄Π½ΡΡ .
ΠΡΠΎ ΡΠΆΠ΅ ΠΏΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ². ΠΡΠΎ DBA ΡΠΎΠΆΠ΅, ΠΎΠ½ΠΈ Π²ΡΠ΅Π³Π΄Π° Π·Π° ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² ΡΡΠ³Π°ΡΡ: Β«ΠΠ°ΡΠ΅ΠΌ Π²Ρ Π΄Π΅Π»Π°Π΅ΡΠ΅ ΡΠ°ΠΊΠΈΠ΅ Π΄ΠΎΠ»Π³ΠΈΠ΅ ΠΈ ΡΡΠΆΠ΅Π»ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ?Β». ΠΡΠΎ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π΄ΡΡΠ³Π°Ρ ΠΏΠ΅ΡΠΏΠ΅Π½Π΄ΠΈΠΊΡΠ»ΡΡΠ½Π°Ρ ΡΠ΅ΠΌΠ°. Π Π°Π½ΡΡΠ΅ Π±ΡΠ»ΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π° ΡΠ΅ΠΉΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°.
ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΠΌΡ Π½Π΅ ΡΠ°Π·Π±ΠΈΠ»ΠΈ Π½Π° ΡΠ°ΡΡΠΈ. ΠΡΠΎ ΠΏΠΎΠ½ΡΡΠ½ΠΎ. ΠΠ΅Π»ΡΠ·Ρ ΡΠ°ΠΊΠΎΠΉ DELETE Π΄Π»Ρ ΠΊΡΡΠΈ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² ΡΡΡΠΎΠΊ Π½Π΅ ΡΠ°Π·Π±ΠΈΠ²Π°ΡΡ Π½Π° ΡΠ°ΡΡΠΈ. ΠΠ½ Π±ΡΠ΄Π΅Ρ Π΄Π΅Π»Π°ΡΡΡΡ 20 ΠΌΠΈΠ½ΡΡ, ΠΈ Π²ΡΠ΅ Π±ΡΠ΄Π΅Ρ Π»Π΅ΠΆΠ°ΡΡ. ΠΠΎ, ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΠΎΡΠΈΠ±ΠΊΠΈ ΡΠΎΠ²Π΅ΡΡΠ°ΡΡ Π΄Π°ΠΆΠ΅ ΠΎΠΏΡΡΠ½ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ, Π΄Π°ΠΆΠ΅ Π² ΠΎΡΠ΅Π½Ρ ΠΊΡΡΠΏΠ½ΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡ .
ΠΠΎΡΠ΅ΠΌΡ Π²Π°ΠΆΠ½ΠΎ ΡΠ°Π·Π±ΠΈΠ²Π°ΡΡ?
-
ΠΡΠ»ΠΈ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ Π΄ΠΈΡΠΊΡ ΡΡΠΆΠ΅Π»ΠΎ, ΡΠΎ Π΄Π°Π²Π°ΠΉΡΠ΅ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΠΌ. Π Π΅ΡΠ»ΠΈ Ρ Π½Π°Ρ ΡΠ°Π·Π±ΠΈΡΠΎ, ΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ°ΡΠ·Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ, ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡΡ throttling.
-
Π ΠΌΡ Π΄ΡΡΠ³ΠΈΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ Π½Π°Π΄ΠΎΠ»Π³ΠΎ. Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ ΡΡΠΎ Π½Π΅Π²Π°ΠΆΠ½ΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ΄Π°Π»ΡΠ΅ΡΠ΅ ΡΠ΅Π°Π»ΡΠ½ΡΠΉ ΠΌΡΡΠΎΡ, Ρ ΠΊΠΎΡΠΎΡΡΠΌ Π½ΠΈΠΊΡΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΡΠΎ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, Π²Ρ Π½ΠΈΠΊΠΎΠ³ΠΎ Π½Π΅ Π·Π°Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΡΠ΅, ΠΊΡΠΎΠΌΠ΅ ΡΠ°Π±ΠΎΡΡ autovacuum, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΆΠ΄Π°ΡΡ, ΠΊΠΎΠ³Π΄Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ. ΠΠΎ Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ΄Π°Π»ΡΠ΅ΡΠ΅ ΡΠΎ, ΡΡΠΎ ΠΊΡΠΎ-ΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π΅ΡΠ΅ Π·Π°ΠΏΡΠΎΡΠΈΡΡ, ΡΠΎ ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡΡΡ, ΠΏΠΎΠΉΠ΄Π΅Ρ ΠΊΠ°ΠΊΠ°Ρ-ΡΠΎ ΡΠ΅ΠΏΠ½Π°Ρ ΡΠ΅Π°ΠΊΡΠΈΡ. ΠΠ° ΡΠ°ΠΉΡΠ°Ρ ΠΈ Π² ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ Π½ΡΠΆΠ½ΠΎ ΠΈΠ·Π±Π΅Π³Π°ΡΡ Π΄ΠΎΠ»Π³ΠΈΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ.
ΠΡΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ. Π― ΡΠ°ΡΡΠΎ Π²ΡΡΡΠ΅ΡΠ°Ρ, ΡΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ: Β«ΠΠ°ΠΊΠΎΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠ°ΡΠΊΠΈ Π²ΡΠ±ΡΠ°ΡΡ?Β».
ΠΠΎΠ½ΡΡΠ½ΠΎ, ΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠ°ΡΠΊΠΈ, ΡΠ΅ΠΌ ΠΌΠ΅Π½ΡΡΠ΅ transaction overhead, Ρ. Π΅. Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π½Π°ΠΊΠ»Π°Π΄Π½ΡΠ΅ ΡΠ°ΡΡ ΠΎΠ΄Ρ ΠΎΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ. ΠΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ Π²ΡΠ΅ΠΌΡ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ Ρ ΡΡΠΎΠΉ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ.
Π£ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ: Π²ΠΎΠ·ΡΠΌΠΈΡΠ΅ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅, Π½ΠΎ Π½Π΅ ΠΏΡΠ΅Π²ΡΡΠ°ΠΉΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ.
ΠΠΎΡΠ΅ΠΌΡ ΡΠ΅ΠΊΡΠ½Π΄Ρ? ΠΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΈ ΠΏΠΎΠ½ΡΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌ, Π΄Π°ΠΆΠ΅ Π½Π΅ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΌ Π»ΡΠ΄ΡΠΌ. ΠΡ Π²ΠΈΠ΄ΠΈΠΌ ΡΠ΅Π°ΠΊΡΠΈΡ. ΠΠΎΠ·ΡΠΌΠ΅ΠΌ 50 ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄. ΠΡΠ»ΠΈ ΡΡΠΎ-ΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ, ΡΠΎ Π³Π»Π°Π· Π½Π°Ρ ΡΡΠ΅Π°Π³ΠΈΡΡΠ΅Ρ. ΠΡΠ»ΠΈ ΠΌΠ΅Π½ΡΡΠ΅, ΡΠΎ ΡΠ»ΠΎΠΆΠ½Π΅Π΅. ΠΡΠ»ΠΈ ΡΡΠΎ-ΡΠΎ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ ΡΠ΅ΡΠ΅Π· 100 ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Ρ ΠΌΡΡΠΊΠΎΠΉ Π½Π°ΠΆΠ°Π»ΠΈ, ΠΈ ΠΎΠ½ΠΎ Π²Π°ΠΌ ΡΠ΅ΡΠ΅Π· 100 ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄ ΠΎΡΠ²Π΅ΡΠΈΠ»ΠΎ, Π²Ρ ΡΠΆΠ΅ ΡΡΠ²ΡΡΠ²ΡΠ΅ΡΠ΅ ΡΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΡ. Π‘Π΅ΠΊΡΠ½Π΄Π° ΡΠΆΠ΅ Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠΎΡΠΌΠΎΠ·Π°.
Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π΅ΡΠ»ΠΈ ΠΌΡ Π½Π°ΡΠΈ ΠΌΠ°ΡΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ°Π·ΠΎΠ±ΡΠ΅ΠΌ Π½Π° 10-ΡΠΈ ΡΠ΅ΠΊΡΠ½Π΄Π½ΡΠ΅ ΠΏΠ°ΡΠΊΠΈ, ΡΠΎ Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠΈΡΠΊ, ΡΡΠΎ ΠΌΡ ΠΊΠΎΠ³ΠΎ-ΡΠΎ Π·Π°Π±Π»ΠΎΡΠΈΠΌ. Π ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΊΡΠ½Π΄, ΠΈ ΡΡΠΎ Π»ΡΠ΄ΠΈ ΡΠΆΠ΅ Π·Π°ΠΌΠ΅ΡΡΡ. ΠΠΎΡΡΠΎΠΌΡ Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Ρ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ΅ΠΊΡΠ½Π΄Ρ Π½Π΅ Π΄Π΅Π»Π°ΡΡ. ΠΠΎ Π² ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ ΠΈ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΌΠ΅Π»ΠΊΠΎ Π½Π΅ ΡΠ°Π·Π±ΠΈΠ²Π°ΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ transaction overhead Π±ΡΠ΄Π΅Ρ Π·Π°ΠΌΠ΅ΡΠ΅Π½. ΠΠ°Π·Π΅ Π±ΡΠ΄Π΅Ρ ΡΡΠΆΠ΅Π»Π΅Π΅, ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ Π΅ΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ°Π·Π½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
ΠΡ ΠΏΠΎΠ΄Π±ΠΈΡΠ°Π΅ΠΌ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠ°ΡΠΊΠΈ. Π ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ. ΠΠΎΠΆΠ½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ. Π ΡΠ±Π΅ΠΆΠ΄Π°Π΅ΠΌΡΡ Π² ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°ΡΠΊΠΈ. Π’. Π΅. ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ DELETE ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°ΡΠΊΠΈ ΠΈΠ»ΠΈ UPDATE.
ΠΡΡΠ°ΡΠΈ, Π²ΡΠ΅, ΡΡΠΎ Ρ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Ρ, ΡΡΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎ DELETE. ΠΠ°ΠΊ Π²Ρ Π΄ΠΎΠ³Π°Π΄Π°Π»ΠΈΡΡ, ΡΡΠΎ Π»ΡΠ±ΡΠ΅ ΠΌΠ°ΡΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π°Π΄ Π΄Π°Π½Π½ΡΠΌΠΈ.
Π ΠΌΡ ΡΠΌΠΎΡΡΠΈΠΌ, ΡΡΠΎ ΠΏΠ»Π°Π½ ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ. ΠΠΈΠ΄Π½ΠΎ index scan, Π΅ΡΠ΅ Π»ΡΡΡΠ΅ index only scan. Π Ρ Π½Π°Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄Π°Π½Π½ΡΡ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½ΠΎ. Π Π²ΡΠ΅ ΠΌΠ΅Π½ΡΡΠ΅ ΡΠ΅ΠΊΡΠ½Π΄Ρ ΠΎΡΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ. Π‘ΡΠΏΠ΅Ρ.
Π ΠΌΡ Π΅ΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ Π΄Π΅Π³ΡΠ°Π΄Π°ΡΠΈΠΈ Π½Π΅Ρ. ΠΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΏΠ΅ΡΠ²ΡΠ΅ ΠΏΠ°ΡΠΊΠΈ Π±ΡΡΡΡΠΎ ΠΎΡΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ, Π° ΠΏΠΎΡΠΎΠΌ Π²ΡΠ΅ Ρ ΡΠΆΠ΅-Ρ ΡΠΆΠ΅ ΠΈ Ρ ΡΠΆΠ΅. ΠΡΠΎΡΠ΅ΡΡ ΡΠ°ΠΊΠΎΠΉ, ΡΡΠΎ Π½Π°Π΄ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΡΠ°Π· ΠΈ Π½ΡΠΆΠ½Π° database labs.
Π ΠΌΡ Π΅ΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡ ΡΡΠΎ-ΡΠΎ, ΡΡΠΎΠ±Ρ ΡΡΠΎ Π½Π°ΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π² production Π·Π° ΡΡΠΈΠΌ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠ»Π΅Π΄ΠΈΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π² Π»ΠΎΠ³Π΅ ΠΏΠΈΡΠ°ΡΡ Π²ΡΠ΅ΠΌΡ, ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΈΡΠ°ΡΡ, Π³Π΄Π΅ ΠΌΡ ΡΠ΅ΠΉΡΠ°Ρ ΠΈ ΠΊΠΎΠ³ΠΎ ΠΌΡ ΡΠ΅ΠΉΡΠ°Ρ ΡΠ΄Π°Π»ΠΈΠ»ΠΈ. Π ΡΡΠΎ Π½Π°ΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΏΠΎΡΠΎΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ. Π Π² ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΠΉΠ΄Π΅Ρ Π½Π΅ ΡΠ°ΠΊ, Π±ΡΡΡΡΠΎ Π½Π°ΠΉΡΠΈ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
ΠΡΠ»ΠΈ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·, ΡΠΎ ΠΊΠ°ΠΊ ΡΠ°Π· Π΅ΡΡΡ ΡΠ°ΠΊΠ°Ρ ΡΡΡΠΊΠ°, ΠΊΠ°ΠΊ ΡΠΎΠ²Π°ΡΠΈΡ Π±ΠΎΡ. ΠΠ½ ΡΠΆΠ΅ Π³ΠΎΡΠΎΠ². ΠΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π΅ΡΡΡΠΊΠ°ΠΌΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ. Π ΠΎΠ½ ΡΠΌΠ΅Π΅Ρ ΠΎΠ³ΡΠΎΠΌΠ½ΡΡ ΡΠ΅ΡΠ°Π±Π°ΠΉΡΠ½ΡΡ Π±Π°Π·Ρ Π΄Π°ΡΡ ΠΏΠΎ Π·Π°ΠΏΡΠΎΡΡ Π·Π° 30 ΡΠ΅ΠΊΡΠ½Π΄, Π²Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΊΠΎΠΏΠΈΡ. Π Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠΎ-ΡΠΎ ΡΠ°ΠΌ ΡΠ΄Π°Π»ΠΈΡΡ ΠΈ ΡΠΊΠ°Π·Π°ΡΡ RESET, ΠΈ Π΅ΡΠ΅ ΡΠ°Π· ΡΠ΄Π°Π»ΠΈΡΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Ρ Π½ΠΈΠΌ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. Π― Π²ΠΈΠΆΡ Π·Π° ΡΡΠΎΠΉ ΡΡΡΠΊΠΎΠΉ Π±ΡΠ΄ΡΡΠ΅Π΅. Π ΠΌΡ ΡΡΠΎ ΡΠΆΠ΅ Π΄Π΅Π»Π°Π΅ΠΌ.
ΠΠ°ΠΊΠΈΠ΅ Π΅ΡΡΡ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ ΡΠ°Π·Π±ΠΈΠ΅Π½ΠΈΡ? Π― Π²ΠΈΠΆΡ 3 ΡΠ°Π·Π½ΡΠ΅ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ ΡΠ°Π·Π±ΠΈΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π½Π° ΠΏΠ°ΡΠΊΠ΅.
ΠΠ΅ΡΠ²Π°Ρ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠ°Ρ. Π£ Π½Π°Ρ Π΅ΡΡΡ Π°ΠΉΠ΄ΠΈΡΠ½ΠΈΠΊ ΡΠΈΡΠ»ΠΎΠ²ΠΎΠΉ. Π Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΌΡ ΡΠ°Π·ΠΎΠ±ΡΠ΅ΠΌ Π½Π° ΡΠ°Π·Π½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Ρ, ΠΈ Π±ΡΠ΄Π΅ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΡΠΈΠΌ. ΠΠΈΠ½ΡΡ ΠΏΠΎΠ½ΡΡΠ΅Π½. Π ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΎΡΡΠ΅Π·ΠΊΠ΅ Ρ Π½Π°Ρ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΡΡΠΎΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΏΠ°ΡΡΡ 100 ΡΡΡΠΎΡΠ΅ΠΊ, Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ 5 ΡΡΡΠΎΡΠ΅ΠΊ ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΠΏΠΎΠΏΠ°ΡΡΡ, ΠΈΠ»ΠΈ Π²ΡΠ΅ 1 000 ΡΡΡΠΎΡΠ΅ΠΊ ΠΎΠΊΠ°ΠΆΡΡΡΡ ΠΌΡΡΠΎΡΠΎΠΌ. ΠΡΠ΅Π½Ρ Π½Π΅ΡΠ°Π²Π½ΠΎΠΌΠ΅ΡΠ½Π°Ρ ΡΠ°Π±ΠΎΡΠ°, Π½ΠΎ Π·Π°ΡΠΎ ΡΠ°Π·Π±ΠΈΠ²Π°ΡΡ Π»Π΅Π³ΠΊΠΎ. ΠΠ·ΡΠ»ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ID ΠΈ ΡΠ°Π·Π±ΠΈΠ»ΠΈ. ΠΡΠΎ Π½Π°ΠΈΠ²Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄.
ΠΡΠΎΡΠ°Ρ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ β ΡΡΠΎ ΡΠ±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄. ΠΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² Gitlab. ΠΠ·ΡΠ»ΠΈ ΠΈ ΠΏΡΠΎΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π»ΠΈ ΡΠ°Π±Π»ΠΈΡΡ. ΠΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΈ Π³ΡΠ°Π½ΠΈΡΡ ΠΏΠ°ΡΠ΅ΠΊ ID ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΏΠ°ΡΠΊΠ° Π±ΡΠ»Π° ΡΠΎΠ²Π½ΠΎ ΠΏΠΎ 10 000 Π·Π°ΠΏΠΈΡΠ΅ΠΉ. Π Π·Π°ΡΡΠ½ΡΠ»ΠΈ Π² ΠΊΠ°ΠΊΡΡ-ΡΠΎ ΠΎΡΠ΅ΡΠ΅Π΄Ρ. Π Π΄Π°Π»ΡΡΠ΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌ. ΠΠΎΠΆΠ½ΠΎ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ².
Π ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ ΡΠΎΠΆΠ΅, ΠΊΡΡΠ°ΡΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ². ΠΡΠΎ Π½Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎ.
ΠΠΎ Π΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΊΠ»Π°ΡΡΠ½ΡΠΉ ΠΈ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄. ΠΡΠΎ ΡΡΠ΅ΡΡΡ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ. Π ΠΊΠΎΠ³Π΄Π° ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠΎ Π»ΡΡΡΠ΅ Π΅Π΅ Π²ΡΠ±ΠΈΡΠ°ΡΡ. ΠΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΠΌ. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, ΠΈΠ½Π΄Π΅ΠΊΡ ΠΏΠΎ Π½Π°ΡΠ΅ΠΌΡ ΡΡΠ»ΠΎΠ²ΠΈΡ ΠΌΡΡΠΎΡΠ° ΠΈ ID. ΠΡ Π²ΠΊΠ»ΡΡΠΈΠΌ ID, ΡΡΠΎΠ±Ρ ΡΡΠΎ Π±ΡΠ» index only scan, ΡΡΠΎΠ±Ρ ΠΌΡ Π² heap Π½Π΅ Ρ ΠΎΠ΄ΠΈΠ»ΠΈ.
ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, index only scan β ΡΡΠΎ Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ index scan.
Π ΠΌΡ Π±ΡΡΡΡΠΎ Π½Π°Ρ
ΠΎΠ΄ΠΈΠΌ Π½Π°ΡΠΈ Π°ΠΉΠ΄ΠΈΡΠ½ΠΈΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Ρ
ΠΎΡΠΈΠΌ ΡΠ΄Π°Π»ΠΈΡΡ. BATCH_SIZE ΠΌΡ ΠΏΠΎΠ΄Π±ΠΈΡΠ°Π΅ΠΌ Π·Π°ΡΠ°Π½Π΅Π΅. Π ΠΌΡ ΠΈΡ
Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ, ΠΌΡ ΠΈΡ
ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΈ ΡΡΡ ΠΆΠ΅ Π»ΠΎΡΠΈΠΌ. ΠΠΎ ΡΠ°ΠΊ Π»ΠΎΡΠΈΠΌ, ΡΡΠΎ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ ΡΠΆΠ΅ Π·Π°Π»ΠΎΡΠ΅Π½Ρ, ΠΌΡ ΠΈΡ
Π½Π΅ Π»ΠΎΡΠΈΠΌ, Π° Π΅Π΄Π΅ΠΌ Π΄Π°Π»ΡΡΠ΅ ΠΈ Π±Π΅ΡΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅. ΠΡΠΎ for update skip locked. ΠΡΠ° ΡΡΠΏΠ΅ΡΡΠΈΡΠ° Postgres Π½Π°ΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΡΠ°Π±ΠΎΡΠ°ΡΡ, Π΅ΡΠ»ΠΈ ΠΌΡ Ρ
ΠΎΡΠΈΠΌ. ΠΠΎΠΆΠ½ΠΎ Π² ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡΠΎΠΊ. Π ΡΡΡ Π΅ΡΡΡ CTE β ΡΡΠΎ ΠΎΠ΄ΠΈΠ½ Π·Π°ΠΏΡΠΎΡ. Π Ρ Π½Π°Ρ Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ ΡΡΠ°ΠΆΠ΅ ΡΡΠΎΠ³ΠΎ CTE ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ΅ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ β returning *
. ΠΠΎΠΆΠ½ΠΎ returning id, Π½ΠΎ Π»ΡΡΡΠ΅ *
, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΄Π°Π½Π½ΡΡ
Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΡΠΊΠ΅.
ΠΠ°ΡΠ΅ΠΌ Π½Π°ΠΌ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ? ΠΡΠΎΠΌ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΡΡΠΈΡΠ°ΡΡΡΡ. ΠΡ ΡΠ΅ΠΉΡΠ°Ρ ΡΠ΄Π°Π»ΠΈΠ»ΠΈ ΡΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΡΠ΅ΠΊ ΠΏΠΎ ΡΠ°ΠΊΡΡ. Π Ρ Π½Π°Ρ Π³ΡΠ°Π½ΠΈΡΡ ΠΏΠΎ ID ΠΈΠ»ΠΈ ΠΏΠΎ created_at Π²ΠΎΡ ΡΠ°ΠΊΠΈΠ΅-ΡΠΎ. ΠΠΎΠΆΠ½ΠΎ min, max ΡΠ΄Π΅Π»Π°ΡΡ. ΠΡΠ΅ ΡΡΠΎ-ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ. Π’ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π·Π°ΠΏΠΈΡ Π°ΡΡ. Π ΡΡΠΎ Π΄Π»Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ.
ΠΠ°ΡΡΠ΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ° Π΅ΡΡΡ Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΎ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. ΠΡΠ»ΠΈ ΠΌΡ ΡΠ΅ΡΠΈΠ»ΠΈ, ΡΡΠΎ Π½Π°ΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΄Π»Ρ ΡΡΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ Π½ΡΠΆΠ΅Π½ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ, ΡΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΎΠ½ Π½Π΅ ΠΈΡΠΏΠΎΡΡΠΈΡ heap only tuples updates. Π’. Π΅. Π² Postgres Π΅ΡΡΡ ΡΠ°ΠΊΠ°Ρ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°. ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π² pg_stat_user_tables Π΄Π»Ρ Π²Π°ΡΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π»ΠΈ hot updates ΠΈΠ»ΠΈ Π½Π΅Ρ.
ΠΡΠ²Π°ΡΡ ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° Π²Π°Ρ Π½ΠΎΠ²ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡ ΠΏΡΠΎΡΡΠΎ ΠΎΠ±ΡΡΠ±ΠΈΡΡ. Π Ρ Π²Π°Ρ Π²ΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ updates, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ, Π·Π°ΠΌΠ΅Π΄Π»ΡΡΡΡ. ΠΠ΅ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ (ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ ΡΡΡΡ-ΡΡΡΡ Π·Π°ΠΌΠ΅Π΄Π»ΡΠ΅Ρ updates, Π½ΠΎ ΡΡΡΡ-ΡΡΡΡ), Π° ΡΡΡ ΠΎΠ½ Π΅ΡΠ΅ ΠΈΡΠΏΠΎΡΡΠΈΡ. Π ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΡΠ΄Π΅Π»Π°ΡΡ Π΄Π»Ρ ΡΡΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Π’Π°ΠΊΠΎΠ΅ ΠΈΠ½ΠΎΠ³Π΄Π° Π±ΡΠ²Π°Π΅Ρ. ΠΡΠΎ ΡΠ°ΠΊΠ°Ρ ΡΠΎΠ½ΠΊΠΎΡΡΡ, ΠΏΡΠΎ ΠΊΠΎΡΠΎΡΡΡ ΠΌΠ°Π»ΠΎ ΠΊΡΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ. Π Π½Π° ΡΡΠΈ Π³ΡΠ°Π±Π»ΠΈ Π»Π΅Π³ΠΊΠΎ Π½Π°ΡΡΡΠΏΠΈΡΡ. ΠΠ½ΠΎΠ³Π΄Π° Π±ΡΠ²Π°Π΅Ρ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Ρ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ Π½Π°ΠΉΡΠΈ ΠΈ Π²ΡΠ΅-ΡΠ°ΠΊΠΈ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ Π±Π΅Π· ΡΡΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ°, Π»ΠΈΠ±ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ, Π»ΠΈΠ±ΠΎ Π΅ΡΠ΅ ΠΊΠ°ΠΊ-Π½ΠΈΠ±ΡΠ΄Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΠΎΡΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄.
ΠΠΎ ΡΡΠΎ ΡΠ°ΠΌΠ°Ρ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½Π°Ρ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ, ΠΊΠ°ΠΊ ΡΠ°Π·Π±ΠΈΠ²Π°ΡΡ Π½Π° batches ΠΈ ΠΎΠ΄Π½ΠΈΠΌ Π·Π°ΠΏΡΠΎΡΠΎΠΌ ΡΡΡΠ΅Π»ΡΡΡ ΠΏΠΎ ΠΏΠ°ΡΠΊΠ°ΠΌ, ΡΠ΄Π°Π»ΡΡΡ ΠΏΠΎ ΡΡΡΡ-ΡΡΡΡ ΠΈ Ρ. Π΄.
ΠΠΎΠ»Π³ΠΈΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ β
Blocked autovacuum β
Blocking issue β
ΠΡΠΈΠ±ΠΊΠ° β 5 Π±ΠΎΠ»ΡΡΠ°Ρ. ΠΠΈΠΊΠΎΠ»Π°ΠΉ ΠΈΠ· Okmeter ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π» ΠΏΡΠΎ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Postgres. ΠΠ΄Π΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° Postgres, ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ. ΠΡΠΎ-ΡΠΎ Π±Π»ΠΈΠΆΠ΅, ΠΊΡΠΎ-ΡΠΎ Π΄Π°Π»ΡΡΠ΅. Okmeter β Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π±Π»ΠΈΠ·ΠΎΠΊ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎΠ±Ρ Π±ΡΡΡ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΌ, Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΎ Π½Π΅ Ρ Π²Π°ΡΠ°Π΅Ρ ΠΈ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ. Π ΡΡΠΎΠΌΡ Π½ΡΠΆΠ½ΠΎ Π±ΡΡΡ Π³ΠΎΡΠΎΠ²ΡΠΌ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, dead tuples Π»ΡΡΡΠ΅ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΡΡ. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ²Π΅ΡΠΈΠ½Ρ Π² ΡΠ°Π±Π»ΠΈΡΠ΅, ΡΠΎ ΡΡΡ ΡΡΠΎ-ΡΠΎ Π½Π΅ ΡΠ°ΠΊ. ΠΡΡΡΠ΅ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΠΉΡΠ°Ρ, Π° ΡΠΎ ΡΠ°ΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄Π΅Π³ΡΠ°Π΄Π°ΡΠΈΡ, ΠΈ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π»Π΅ΡΡ. Π’Π°ΠΊΠΎΠ΅ Π±ΡΠ²Π°Π΅Ρ.
ΠΡΠ»ΠΈ Π±ΠΎΠ»ΡΡΠΎΠ΅ IO, ΡΠΎ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, ΡΡΠΎ ΡΡΠΎ Π½Π΅Ρ ΠΎΡΠΎΡΠΎ.
ΠΠΎΠ»Π³ΠΈΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΡΠΎΠΆΠ΅. ΠΠ° OLTP Π΄ΠΎΠ»Π³ΠΈΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π½Π΅ ΡΡΠΎΠΈΡ ΠΏΡΡΠΊΠ°ΡΡ. Π Π²ΠΎΡ Π·Π΄Π΅ΡΡ ΡΡΡΠ»ΠΊΠ° Π½Π° ΡΠ½ΠΈΠΏΠΏΠ΅Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π·ΡΡΡ ΡΡΠΎΡ ΡΠ½ΠΈΠΏΠΏΠ΅Ρ ΠΈ ΡΠΆΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ»Π΅ΠΆΠ΅Π½ΠΈΠ΅ Π·Π° Π΄ΠΎΠ»Π³ΠΈΠΌΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΠΌΠΈ.
ΠΠΎΡΠ΅ΠΌΡ Π΄ΠΎΠ»Π³ΠΈΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ β ΡΡΠΎ ΠΏΠ»ΠΎΡ ΠΎ? ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²ΡΠ΅ Π»ΠΎΠΊΠΈ ΠΎΡΠΏΡΡΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΊΠΎΠ½ΡΠ΅. Π ΠΌΡ Π»ΠΎΡΠΈΠΌ Π²ΡΠ΅Ρ . ΠΠ»ΡΡ ΠΌΡ Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΠΌ ΡΠ°Π±ΠΎΡΡ autovacuum Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠ°Π±Π»ΠΈΡ. ΠΡΠΎ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ Ρ ΠΎΡΠΎΡΠΎ. ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ΅ Ρ Π²Π°Ρ hot standby Π²ΠΊΠ»ΡΡΠ΅Π½, ΡΡΠΎ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΠΏΠ»ΠΎΡ ΠΎ. Π ΠΎΠ±ΡΠ΅ΠΌ, Π½ΠΈΠ³Π΄Π΅ Π»ΡΡΡΠ΅ Π½Π΅ Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡ Π΄ΠΎΠ»Π³ΠΈΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ.
ΠΡΠ»ΠΈ Ρ Π½Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π±Π»ΠΈΡ Π½Π΅ Π²Π°ΠΊΡΡΠΌΡΡΡΡ, ΡΠΎ Π½ΡΠΆΠ½ΠΎ alert ΠΈΠΌΠ΅ΡΡ. Π’ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° ΡΠ°ΠΊΠ°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ ΠΊΠ°ΠΊ ΡΠ°Π·. ΠΡ ΠΊΠΎΡΠ²Π΅Π½Π½ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ²Π»ΠΈΡΡΡ Π½Π° ΡΠ°Π±ΠΎΡΡ autovacuum. ΠΡΠΎ ΡΠ½ΠΈΠΏΠΏΠ΅Ρ ΠΎΡ Avito, ΠΊΠΎΡΠΎΡΡΠΉ Ρ Π½Π΅ΠΌΠ½ΠΎΠΆΠΊΠΎ ΡΠ»ΡΡΡΠΈΠ». Π ΠΏΠΎΠ»ΡΡΠΈΠ»ΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΡΡΠΎ Ρ Π½Π°Ρ Ρ autovacuum. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΌ ΠΆΠ΄ΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΡΠ°Π±Π»ΠΈΡΡ ΠΈ Π½Π΅ Π΄ΠΎΠΆΠ΄ΡΡΡΡ ΡΠ²ΠΎΠ΅ΠΉ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ. Π’ΠΎΠΆΠ΅ Π½Π°Π΄ΠΎ Π·Π°ΡΡΠ½ΡΡΡ Π² ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΈ alert ΠΈΠΌΠ΅ΡΡ.
Π Π±Π»ΠΎΠΊΠΈ issues. ΠΠ΅Ρ Π΄Π΅ΡΠ΅Π²ΡΠ΅Π² Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ. Π― Π»ΡΠ±Π»Ρ Ρ ΠΊΠΎΠ³ΠΎ-ΡΠΎ ΡΡΠΎ-ΡΠΎ Π²Π·ΡΡΡ ΠΈ ΡΠ»ΡΡΡΠΈΡΡ. ΠΠ΄Π΅ΡΡ ΠΎΡ Data Egret Π²Π·ΡΠ» ΠΊΠ»Π°ΡΡΠ½ΡΠΉ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΠΉ CTE, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π»Π΅Ρ Π΄Π΅ΡΠ΅Π²ΡΠ΅Π² Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ. ΠΡΠΎ Ρ ΠΎΡΠΎΡΠ°Ρ ΡΡΡΠΊΠ° Π΄Π»Ρ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ. Π Π½Π° Π΅Π΅ ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠΎΡΡΠ΄ΠΈΡΡ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³. ΠΠΎ ΡΡΠΎ Π½Π°Π΄ΠΎ Π°ΠΊΠΊΡΡΠ°ΡΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ. ΠΡΠΆΠ½ΠΎ ΡΠ°ΠΌΠΎΠΌΡ ΡΠ΅Π±Π΅ statement_timeout ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ ΡΠ΄Π΅Π»Π°ΡΡ. Π lock_timeout ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ.
ΠΠ½ΠΎΠ³Π΄Π° Π²ΡΠ΅ ΡΡΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ Π² ΡΡΠΌΠΌΠ΅.
ΠΠ° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄, ΡΠ°ΠΌΠ°Ρ Π³Π»Π°Π²Π½Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ° Π·Π΄Π΅ΡΡ β ΡΡΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΎΠ½Π½Π°Ρ. ΠΠ½Π° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΎΠ½Π½Π°Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ΅Ρ Π½ΠΈΠΊΠ° Π½Π΅ ΡΡΠ½Π΅Ρ. ΠΡΠΎ Π½ΠΎΠΌΠ΅Ρ 2 β ΠΏΡΠΎΠ²Π΅ΡΡΠ»ΠΈ Π½Π΅ ΡΠ°ΠΌ.
ΠΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ»ΠΈ Π½Π΅ ΡΠ°ΠΌ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Ρ Π½Π°Ρ Π½Π΅ Π±ΡΠ»ΠΎ ΠΊΠ»ΠΎΠ½Π° production, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ Π»Π΅Π³ΠΊΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ. Π£ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π²ΠΎΠΎΠ±ΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ Π±ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ production.
Π ΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ»ΠΈ Π½Π΅ ΡΠ°ΠΌ. ΠΡΠ»ΠΈ Π±Ρ ΠΏΡΠΎΠ²Π΅ΡΡΠ»ΠΈ ΡΠ°ΠΌ, ΡΠ°ΠΌ ΠΌΡ ΡΠ°ΠΌΠΈ Π±Ρ ΡΡΠΎ ΡΠ²ΠΈΠ΄Π΅Π»ΠΈ. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΈ Π±Π΅Π· DBA ΡΡΠΎ Π²ΡΠ΅ ΡΠ²ΠΈΠ΄Π΅Π», Π΅ΡΠ»ΠΈ ΠΎΠ½ ΠΏΡΠΎΠ²Π΅ΡΡΠ» ΡΡΠΎ Π² Ρ ΠΎΡΠΎΡΠ΅ΠΌ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΈ, Π³Π΄Π΅ Π΄Π°Π½Π½ΡΡ ΡΡΠΎΠ»ΡΠΊΠΎ ΠΆΠ΅ ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎΠ΅ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΠ½ Π±Ρ Π²ΡΡ ΡΡΡ Π΄Π΅Π³ΡΠ°Π΄Π°ΡΠΈΡ ΡΠ²ΠΈΠ΄Π΅Π» Π±Ρ ΠΈ Π΅ΠΌΡ ΡΡΡΠ΄Π½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ.
ΠΡΠ΅ ΠΏΡΠΎ Π°Π²ΡΠΎΠ²Π°ΠΊΡΡΠΌ. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΠΌΠ°ΡΡΠΈΠ²Π½ΡΡ Π·Π°ΡΠΈΡΡΠΊΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² ΡΡΡΠΎΡΠ΅ΠΊ, Π΅ΡΠ΅ Π½ΡΠΆΠ½ΠΎ REPACK ΡΠ΄Π΅Π»Π°ΡΡ. ΠΡΠΎΠ±Π΅Π½Π½ΠΎ Π΄Π»Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² ΡΡΠΎ Π²Π°ΠΆΠ½ΠΎ. ΠΠΌ Π±ΡΠ΄Π΅Ρ ΠΏΠ»ΠΎΡ ΠΎ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ ΡΠ°ΠΌ Π²ΡΠ΅ ΠΏΠΎΡΠΈΡΡΠΈΠ»ΠΈ.
Π Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π²Π΅ΡΠ½ΡΡΡ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎ Π·Π°ΡΠΈΡΡΠΊΠ΅, ΡΠΎ Ρ Π±Ρ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ» ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ ΡΠ°ΡΠ΅, Π½ΠΎ ΠΌΠ΅Π»ΡΡΠ΅. ΠΠΎΠΆΠ½ΠΎ ΡΠ°Π· Π² ΠΌΠΈΠ½ΡΡ ΠΈΠ»ΠΈ Π΅ΡΠ΅ ΡΠ°ΡΠ΅ ΠΏΠΎ ΡΡΡΡ-ΡΡΡΡ. Π Π½ΡΠΆΠ½ΠΎ Π½Π°Π»Π°Π΄ΠΈΡΡ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π΄Π²ΡΡ Π²Π΅ΡΠ΅ΠΉ: ΡΡΠΎ ΠΎΡΠΈΠ±ΠΎΠΊ Π½Π΅Ρ Ρ ΡΡΠΎΠΉ ΡΡΡΡΠΊΠΈ ΠΈ ΡΡΠΎ ΠΎΠ½Π° Π½Π΅ ΠΎΡΡΡΠ°Π΅Ρ. Π’ΠΎΡ ΡΡΡΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π» ΠΊΠ°ΠΊ ΡΠ°Π· ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΡΡΠΎ ΡΠ΅ΡΠΈΡΡ.
Π’ΠΎ, ΡΡΠΎ ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ, ΡΡΠΎ open source. ΠΡΠΎ Π²ΡΠ»ΠΎΠΆΠ΅Π½ΠΎ Π½Π° GitLab. Π ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π»ΡΠ΄ΠΈ ΠΌΠΎΠ³Π»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π΄Π°ΠΆΠ΅ Π±Π΅Π· DBA. ΠΡ Π΄Π΅Π»Π°Π΅ΠΌ database lab, Ρ. Π΅. ΠΌΡ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ΅ΠΉΡΠ°Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Joe. Π Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²Π·ΡΡΡ ΠΊΠΎΠΏΠΈΡ production. Π‘Π΅ΠΉΡΠ°Ρ Π΅ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Joe Π΄Π»Ρ slack, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΠΌ ΡΠΊΠ°Π·Π°ΡΡ: Β«explain ΡΠ°ΠΊΠΎΠΉ-ΡΠΎ Π·Π°ΠΏΡΠΎΡΒ» ΠΈ ΡΡΡ ΠΆΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π΄Π»Ρ Π²Π°ΡΠ΅ΠΉ ΠΊΠΎΠΏΠΈΠΈ Π±Π°Π·Ρ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΠΌ Π΄Π°ΠΆΠ΅ DELETE ΡΠ΄Π΅Π»Π°ΡΡ, ΠΈ Π½ΠΈΠΊΡΠΎ ΡΡΠΎΠ³ΠΎ Π½Π΅ Π·Π°ΠΌΠ΅ΡΠΈΡ.
ΠΠΎΠΏΡΡΡΠΈΠΌ, Ρ Π²Π°Ρ 10 ΡΠ΅ΡΠ°Π±Π°ΠΉΡΠ°, ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ database lab ΡΠΎΠΆΠ΅ 10 ΡΠ΅ΡΠ°Π±Π°ΠΉΡ. Π Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ 10-ΡΠΈ ΡΠ΅ΡΠ°Π±Π°ΠΉΡΠ½ΡΠΌΠΈ Π±Π°Π·Π°ΠΌΠΈ ΠΌΠΎΠ³ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ 10 ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ². ΠΠ°ΠΆΠ΄ΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π΄Π΅Π»Π°ΡΡ ΡΠΎ, ΡΡΠΎ Ρ ΠΎΡΠ΅Ρ. ΠΠΎΠΆΠ΅Ρ ΡΠ΄Π°Π»ΡΡΡ, Π΄ΡΠΎΠΏΠ°ΡΡ ΠΈ Ρ. Π΄. ΠΠΎΡ ΡΠ°ΠΊΠ°Ρ ΡΠ°Π½ΡΠ°ΡΡΠΈΠΊΠ°. ΠΠ± ΡΡΠΎΠΌ ΠΌΡ Π·Π°Π²ΡΡΠ° Π±ΡΠ΄Π΅ΠΌ Π³ΠΎΠ²ΠΎΡΠΈΡΡ.
ΠΡΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ thin provisioning. ΠΡΠΎ ΡΠΎΠ½ΠΊΠΈΠΉ ΠΏΡΠΎΠ²ΠΈΠΆΠΈΠ½Π³. ΠΡΠΎ ΡΠ°ΠΊΠ°Ρ Π½Π΅ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°Π½ΡΠ°ΡΡΠΈΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΈΠ»ΡΠ½ΠΎ ΡΠ±ΠΈΡΠ°Π΅Ρ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅, Π² ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ Π΄Π΅Π»Π°Π΅Ρ ΠΌΠΈΡ Π»ΡΡΡΠ΅ Π² ΡΡΠΎΠΌ ΠΏΠ»Π°Π½Π΅. Π’. Π΅. ΠΊΠ°ΠΊ ΡΠ°Π· ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΠΌΠ°ΡΡΠΎΠ²ΡΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌΠΈ.
ΠΡΠΈΠΌΠ΅Ρ: Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ Π² 5 ΡΠ΅ΡΠ°Π±Π°ΠΉΡ, ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΏΠΈΠΈ ΠΌΠ΅Π½Π΅Π΅, ΡΠ΅ΠΌ Π·Π° 30 ΡΠ΅ΠΊΡΠ½Π΄. Π ΠΎΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΡΠΎ Π΄Π°ΠΆΠ΅ Π½Π΅ Π·Π°Π²ΠΈΡΠΈΡ, Ρ. Π΅. Π½Π΅Π²Π°ΠΆΠ½ΠΎ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ°Π±Π°ΠΉΡ.
Π£ΠΆΠ΅ ΡΠ΅Π³ΠΎΠ΄Π½Ρ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΉΡΠΈ Π½Π°
ΠΠΎΠΏΡΠΎΡΡ
ΠΡΠ΅Π½Ρ ΡΠ°ΡΡΠΎ Π² ΡΠ΅Π°Π»ΡΠ½ΡΡ ΡΠΈΡΡΠ°ΡΠΈΡΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΡΠ°ΠΊ, ΡΡΠΎ Π΄Π°Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΡΡΠ°ΡΡΡΡ Π² ΡΠ°Π±Π»ΠΈΡΠ΅, ΠΈΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΌΠ΅Π½ΡΡΠ΅, ΡΠ΅ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π°Π»ΠΈΡΡ. Π’. Π΅. Π² ΡΠ°ΠΊΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΡΠ°ΡΡΠΎ Π»Π΅Π³ΡΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²ΠΈΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ΄Π° ΡΠΎΠ»ΡΠΊΠΎ Π½ΡΠΆΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈ Π·Π°ΡΡΠ°Π½ΠΊΠ΅ΠΉΡΠΈΡΡ ΡΡΠ°ΡΡΡ ΡΠ°Π±Π»ΠΈΡΡ. ΠΠΎΠ½ΡΡΠ½ΠΎ, ΡΡΠΎ Π½ΡΠΆΠ΅Π½ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ°, ΠΏΠΎΠΊΠ° Ρ Π²Π°Ρ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅. ΠΠ°ΠΊ ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄?
ΠΡΠΎ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΈΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΈ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠ°Ρ Π·Π°Π΄Π°ΡΠ°. ΠΠ½Π° ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆΠ° Π½Π° ΡΠΎ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ pg_repack, ΠΎΠ½Π° ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆΠ° Π½Π° ΡΠΎ, ΡΡΠΎ Π²Π°ΠΌ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ Π΄Π΅Π»Π°ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π°ΠΉΠ΄ΠΈΡΠ½ΠΈΠΊΠΈ ΡΠ΄Π΅Π»Π°Π»ΠΈ 4-Ρ Π±Π°ΠΉΡΠ½ΡΠΌΠΈ. ΠΠ½ΠΎΠ³ΠΈΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ ΡΡΠΎ Π΄Π΅Π»Π°Π»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»Π΅Ρ Π½Π°Π·Π°Π΄, ΠΈ ΠΊΠ°ΠΊ ΡΠ°Π· ΡΠ°Π±Π»ΠΈΡΠΊΠΈ ΠΏΠΎΠ΄ΡΠΎΡΠ»ΠΈ, ΠΈ ΠΈΡ Π½ΡΠΆΠ½ΠΎ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π° 8 Π±Π°ΠΉΡ.
ΠΡΠ° Π·Π°Π΄Π°ΡΠ° Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΡΡΠ΄Π½Π°Ρ. ΠΡ ΡΡΠΎ Π΄Π΅Π»Π°Π»ΠΈ. Π Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΡΡ ΠΎΡΠ΅Π½Ρ Π°ΠΊΠΊΡΡΠ°ΡΠ½ΡΠΌΠΈ. Π’Π°ΠΌ Π»ΠΎΠΊΠΈ ΠΈ Ρ. Π΄. ΠΠΎ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ. Π’. Π΅. ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΡ ΠΎΠ΄ Π½Π° pg_repack. ΠΡ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΡΠ΅ ΡΠ°ΠΊΡΡ ΡΠ°Π±Π»ΠΈΡΠΊΡ. Π ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π² Π½Π΅Π΅ Π½Π°ΡΠ°ΡΡ Π·Π°Π»ΠΈΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΡΠ½Π°ΠΏΡΠΎΡΠΎΠΌ, Π²Ρ Π΅ΡΠ΅ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΡΠ΅ ΠΎΠ΄Π½Ρ ΡΠ°Π±Π»ΠΈΡΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅Ρ. Π’Π°ΠΌ Π΅ΡΡΡ Ρ ΠΈΡΡΠΎΡΡΡ, ΡΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ. ΠΡΡΡ ΡΠΎΠ½ΠΊΠΎΡΡΠΈ. Π ΠΏΠΎΡΠΎΠΌ Π²Ρ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°Π΅ΡΠ΅ΡΡ, Π½Π°ΠΊΠ°ΡΠΈΠ² ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ. Π’Π°ΠΌ Π±ΡΠ΄Π΅Ρ Π½Π΅Π΄ΠΎΠ»Π³Π°Ρ ΠΏΠ°ΡΠ·Π°, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π²ΡΠ΅Ρ Π·Π°Π»ΠΎΡΠΈΠΌ, Π½ΠΎ Π² ΡΠ΅Π»ΠΎΠΌ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ.
ΠΡΠ»ΠΈ Π²Ρ pg_repack Π½Π° GitHub ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅, ΡΠΎ ΡΠ°ΠΌ, ΠΊΠΎΠ³Π΄Π° Π±ΡΠ»Π° Π·Π°Π΄Π°ΡΠ° ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π°ΠΉΠ΄ΠΈΡΠ½ΠΈΠΊ Ρ int 4 Π½Π° int 8, ΡΠΎ Π±ΡΠ»Π° ΠΈΠ΄Π΅Ρ ΡΠ°ΠΌ pg_repack ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. ΠΡΠΎ ΡΠΎΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ ΡΡΠΎ Π½Π΅ΠΌΠ½ΠΎΠΆΠΊΠΎ Ρ Π°ΠΊΠ΅ΡΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄, Π½ΠΎ ΠΎΠ½ ΡΠΎΠΆΠ΅ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΌΠ΅ΡΠ°ΡΡΡΡ Π² ΡΡΠΈΠ³Π³Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ pg_repack ΠΈ ΡΠ°ΠΌ ΡΠΊΠ°Π·Π°ΡΡ: Β«ΠΠ°ΠΌ ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅ Π½Π΅ Π½ΡΠΆΠ½ΡΒ», Ρ. Π΅. ΠΌΡ ΠΏΠ΅ΡΠ΅Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎ, ΡΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ. Π ΠΏΠΎΡΠΎΠΌ ΠΎΠ½ ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠΈΡΡΡ ΠΈ Π²ΡΠ΅.
ΠΡΠΈ ΡΠ°ΠΊΠΎΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π΅ ΠΌΡ Π΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π²ΡΠΎΡΡΡ ΠΊΠΎΠΏΠΈΡ ΡΠ°Π±Π»ΠΈΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π΄Π°Π½Π½ΡΠ΅ ΡΠΆΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Ρ ΠΈ ΡΠ»ΠΎΠΆΠ΅Π½Ρ ΠΎΡΠ΅Π½Ρ ΡΠΎΠ²Π½ΠΎ Ρ ΠΊΡΠ°ΡΠΈΠ²ΡΠΌΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ.
Bloat Π½Π΅Ρ, ΡΡΠΎ Ρ ΠΎΡΠΎΡΠΈΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄. ΠΠΎ Ρ Π·Π½Π°Ρ, ΡΡΠΎ Π΅ΡΡΡ ΠΏΠΎΠΏΡΡΠΊΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ, Ρ. Π΅. ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. Π― ΠΌΠΎΠ³Ρ Π²Π°Ρ ΡΠ²Π΅ΡΡΠΈ Ρ ΡΡΠΎΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠ΅ΠΉ. ΠΠ½Π° Π½Π°ΠΏΠΈΡΠ°Π½Π° Π½Π° Python, Ρ ΠΎΡΠΎΡΠ°Ρ ΡΡΡΠΊΠ°.
Π― ΠΏΡΠΎΡΡΠΎ Π½Π΅ΠΌΠ½ΠΎΠΆΠΊΠΎ ΠΈΠ· ΠΌΠΈΡΠ° MySQL, ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΠΏΡΠΈΡΠ΅Π» ΠΏΠΎΡΠ»ΡΡΠ°ΡΡ. Π ΠΌΡ ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠΌ.
ΠΠΎ ΠΎΠ½ ΡΠΎΠ»ΡΠΊΠΎ, Π΅ΡΠ»ΠΈ Ρ Π½Π°Ρ 90 %. ΠΡΠ»ΠΈ Ρ Π½Π°Ρ 5 %, ΡΠΎ Π½Π΅ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΎ Π΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π΄ΠΎΠΊΠ»Π°Π΄! ΠΡΠ»ΠΈ Π½Π΅Ρ ΡΠ΅ΡΡΡΡΠΎΠ² ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΠΎΠ»Π½ΡΡ ΠΊΠΎΠΏΠΈΡ prod, Π΅ΡΡΡ Π»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΈΠ»ΠΈ ΡΠΎΡΠΌΡΠ»Π° Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΡΡΠΈΡΠ°ΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ ΠΈΠ»ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ?
Π₯ΠΎΡΠΎΡΠΈΠΉ Π²ΠΎΠΏΡΠΎΡ. ΠΠΎΠΊΠ° ΡΡΠΎ Ρ Π½Π°Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠ΅ΡΠ°Π±Π°ΠΉΡΠ½ΡΠ΅ Π±Π°Π·Ρ Π½Π°ΠΉΡΠΈ. ΠΡΡΡΡ Π΄Π°ΠΆΠ΅ ΡΠ°ΠΌ ΠΆΠ΅Π»Π΅Π·ΠΎ Π½Π΅ ΡΠ°ΠΊΠΎΠ΅ ΠΆΠ΅ Π±ΡΠ΄Π΅Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠΌΠ΅Π½ΡΡΠ΅ ΠΏΠ°ΠΌΡΡΠΈ, ΠΏΠΎΠΌΠ΅Π½ΡΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° ΠΈ Π΄ΠΈΡΠΊΠΈ Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΡΠ°ΠΊΠΈΠ΅ ΠΆΠ΅, Π½ΠΎ Π²ΡΠ΅-ΡΠ°ΠΊΠΈ ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ ΡΡΠΎ. ΠΡΠ»ΠΈ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅Π³Π΄Π΅, ΡΠΎ Π½Π°Π΄ΠΎ ΠΏΠΎΠ΄ΡΠΌΠ°ΡΡ. ΠΠ°Π²Π°ΠΉΡΠ΅ Ρ Π΄ΠΎ Π·Π°Π²ΡΡΠ° ΠΏΠΎΠ΄ΡΠΌΠ°Ρ, Π²Ρ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΈ, ΠΌΡ ΠΏΠΎΠΎΠ±ΡΠ°Π΅ΠΌΡΡ, ΡΡΠΎ Ρ ΠΎΡΠΎΡΠΈΠΉ Π²ΠΎΠΏΡΠΎΡ.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π΄ΠΎΠΊΠ»Π°Π΄! ΠΡ Π²Π½Π°ΡΠ°Π»Π΅ Π½Π°ΡΠ°Π»ΠΈ ΠΏΡΠΎ ΡΠΎ, ΡΡΠΎ Π΅ΡΡΡ ΠΊΡΡΡΠΎΠΉ Postgres, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²ΠΎΡ ΡΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ, Π½ΠΎ ΠΎΠ½ ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΡΡΡ. Π ΡΡΠΎ Π²ΡΠ΅ ΠΊΠΎΡΡΡΠ»Ρ ΠΏΠΎ Π±ΠΎΠ»ΡΡΠ΅ΠΌΡ ΡΡΠ΅ΡΡ. ΠΠ΅ ΠΈΠ΄Π΅Ρ Π»ΠΈ ΡΡΠΎ Π²ΡΠ΅ Π² ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠΈΠ΅ Ρ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΠΌ ΡΠ°ΠΌΠΎΠ³ΠΎ Postgres, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ DELETE deferent ΠΏΠΎΡΠ²ΠΈΡΡΡ ΠΈΠ»ΠΈ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ Π΅ΡΠ΅, ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π½Π° Π½ΠΈΠ·ΠΊΠΎΠΌ ΡΡΠΎΠ²Π½Π΅ ΡΠΎ, ΡΡΠΎ ΠΌΡ ΠΏΡΡΠ°Π΅ΠΌΡΡ Π·Π΄Π΅ΡΡ ΠΎΠ±ΠΌΠ°Π·Π°ΡΡ ΠΊΠ°ΠΊΠΈΠΌΠΈ-ΡΠΎ ΡΠ²ΠΎΠΈΠΌΠΈ ΡΡΡΠ°Π½Π½ΡΠΌΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ?
ΠΡΠ»ΠΈ ΠΌΡ Π² SQL ΡΠΊΠ°Π·Π°Π»ΠΈ ΡΠ΄Π°Π»ΠΈΡΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΠ°ΠΏΠ΄Π΅ΠΉΡΠΈΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π² ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, ΡΠΎ ΠΊΠ°ΠΊ ΡΠ°ΠΌ Postgres ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ? ΠΡ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Ρ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡ . ΠΡ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ Π±ΡΠ΄Π΅ΠΌ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ Π΄ΠΎΠ»Π³ΠΎ. Π ΠΌΡ Π±ΡΠ΄Π΅ΠΌ Π»ΠΎΡΠΈΡΡ Π² ΡΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΈ Ρ. Π΄.
Π‘ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ ΠΆΠ΅ ΡΠ΄Π΅Π»Π°Π»ΠΈ.
Π― ΠΌΠΎΠ³Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ, ΡΡΠΎ ΡΠΎΡ ΠΆΠ΅ checkpoint tuning ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ. ΠΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡΠ΄Ρ ΡΡΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π±ΡΠ΄Π΅Ρ. ΠΠΎ Ρ ΡΠΎΠ³Π΄Π° Π²ΠΎΠΏΡΠΎΡ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ.
ΠΠΎΠΏΡΠΎΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π½Π΅Ρ Π»ΠΈ ΡΠ°ΠΊΠΎΠ³ΠΎ Π²Π΅ΠΊΡΠΎΡΠ° ΡΠ°Π·Π²ΠΈΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠ΄Π΅Ρ Π²ΠΎΡ ΡΠ°ΠΌ Π²ΠΎΡ, Π° Π·Π΄Π΅ΡΡ ΠΈΠ΄Π΅Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ Π²Π°Ρ? Π’.Π΅. ΡΠ°ΠΌ ΠΏΠΎΠΊΠ° ΡΡΠΎ ΠΏΡΠΎ ΡΡΠΎ Π½Π΅ Π΄ΡΠΌΠ°ΡΡ?
Π― ΡΠ°ΡΡΠΊΠ°Π·Π°Π» ΠΏΡΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΠΉΡΠ°Ρ. ΠΡΡΡ Π΄ΡΡΠ³ΠΎΠΉ Π±ΠΎΡ
Π Π΄Π»Ρ checkpoint tuning ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊΡΡ ΡΡΡΠΊΡ: Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ ΡΡΡΡΡΠ° ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠ² ΠΈ ΡΠ°Π·Π½ΡΠ΅ ΠΆΠ΅Π»Π΅Π·ΠΊΠΈ, ΡΠ°Π·Π½ΡΠ΅ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΌΠ°ΡΠΈΠ½Ρ Π² cloud, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π°ΡΠ΅Π³ΠΎ Π±ΠΎΡΠ°
ΠΠΎΠ±ΡΡΠΉ Π΄Π΅Π½Ρ! ΠΡ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ ΠΎ Π²ΡΠ΅Π΄Π΅ Π΄ΠΎΠ»Π³ΠΈΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ. ΠΡ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ, ΡΡΠΎ Π±Π»ΠΎΠΊΠΈΡΡΡΡΡΡ autovacuum Π² ΡΠ»ΡΡΠ°Π΅ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΉ. Π§Π΅ΠΌ Π΅ΡΠ΅ Π½Π°ΠΌ ΡΡΠΎ Π²ΡΠ΅Π΄ΠΈΡ? ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΡ Π±ΠΎΠ»ΡΡΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎΠ± ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ ΠΌΠ΅ΡΡΠ° ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. Π§ΡΠΎ Π΅ΡΠ΅ ΠΌΡ ΡΠ΅ΡΡΠ΅ΠΌ?
Autovacuum β ΡΡΠΎ, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ, Π½Π΅ ΡΠ°ΠΌΠ°Ρ Π±ΠΎΠ»ΡΡΠ°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π΄Π΅ΡΡ. Π ΡΠΎ, ΡΡΠΎ Π΄ΠΎΠ»Π³Π°Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π»ΠΎΡΠΈΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, ΡΡΠ° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΠ°ΡΠ½Π°Ρ. ΠΠ½Π° ΠΌΠΎΠΆΠ΅Ρ Π²ΡΡΡΠ΅ΡΠΈΡΡΡΡ, Π° ΠΌΠΎΠΆΠ΅Ρ ΠΈ Π½Π΅ Π²ΡΡΡΠ΅ΡΠΈΡΡΡΡ. ΠΡΠ»ΠΈ ΠΎΠ½Π° Π²ΡΡΡΠ΅ΡΠΈΠ»Π°ΡΡ, ΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΠ»ΠΎΡ ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ. Π Ρ autovacuum β ΡΡΠΎ ΡΠΎΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°. Π’ΡΡ Π΄Π²Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ Π΄ΠΎΠ»Π³ΠΈΠΌΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΠΌΠΈ Π² OLTP: Π»ΠΎΠΊΠΈ ΠΈ autovacuum. Π Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ hot standby feedback Π²ΠΊΠ»ΡΡΠ΅Π½ Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ΅, ΡΠΎ Π²Π°ΠΌ Π΅ΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° autovacuum ΠΏΡΠΈΠ»Π΅ΡΠΈΡ Π½Π° ΠΌΠ°ΡΡΠ΅Ρ, ΠΎΠ½Π° ΠΏΡΠΈΠ»Π΅ΡΠΈΡ Ρ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ. ΠΠΎ, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, ΡΠ°ΠΌ Π»ΠΎΠΊΠΎΠ² Π½Π΅ Π±ΡΠ΄Π΅Ρ. Π Π·Π΄Π΅ΡΡ Π±ΡΠ΄ΡΡ Π»ΠΎΠΊΠΈ. ΠΡ Π³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΡ Π΄Π°Π½Π½ΡΡ , ΠΏΠΎΡΡΠΎΠΌΡ Π»ΠΎΠΊΠΈ β ΡΡΠΎ Π²Π°ΠΆΠ½ΡΠΉ Π·Π΄Π΅ΡΡ ΠΌΠΎΠΌΠ΅Π½Ρ. Π Π΅ΡΠ»ΠΈ ΡΡΠΎ Π²ΡΠ΅ Π΄ΠΎΠ»Π³ΠΎ-Π΄ΠΎΠ»Π³ΠΎ, ΡΠΎ Π²ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ Π»ΠΎΡΠΈΡΡΡ. ΠΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π»ΠΎΡΠΈΡΡ Π΄ΡΡΠ³ΠΈΠ΅. Π ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ Π΄Π΅ΡΠ΅Π²ΡΡ Π»ΠΎΠΊΠΎΠ². Π― ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠ» ΡΡΡΠ»ΠΊΡ Π½Π° ΡΠ½ΠΈΠΏΠΏΠ΅Ρ. Π ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π±ΡΡΡΡΠ΅Π΅ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π·Π°ΠΌΠ΅ΡΠ½Π΅ΠΉ, ΡΠ΅ΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ autovacuum, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°ΡΡΡΡ.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π΄ΠΎΠΊΠ»Π°Π΄! ΠΡ Π½Π°ΡΠ°Π»ΠΈ ΡΠ²ΠΎΠΉ Π΄ΠΎΠΊΠ»Π°Π΄ Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π»ΠΈ. ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠ»ΠΈ ΡΠ²ΠΎΡ ΠΈΠ΄Π΅Ρ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π²Π·ΡΡΡ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅, Ρ Π±Π°Π·ΠΎΠΉ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅. ΠΠΎΠΏΡΡΡΠΈΠΌ, ΠΌΡ Π΄Π°Π»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ Π±Π°Π·Ρ. Π ΠΎΠ½ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ» Π·Π°ΠΏΡΠΎΡ. Π Ρ Π½Π΅Π³ΠΎ Π²ΡΠΎΠ΄Π΅ Π±Ρ Π²ΡΠ΅ Ρ ΠΎΡΠΎΡΠΎ. ΠΠΎ ΠΎΠ½ ΠΆΠ΅ Π½Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π½Π° live, Π° Π½Π° live, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ Π½Π°Ρ Π½Π°Π³ΡΡΠ·ΠΊΠ΅ Π½Π° 60-70 %. Π Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠΎΡ ΡΡΠ½ΠΈΠ½Π³, ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ Π½Π΅ ΠΎΡΠ΅Π½Ρ
ΠΠΌΠ΅ΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΡΠΊΡΠΏΠ΅ΡΡΠ° ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠΊΡΠΏΠ΅ΡΡΠ°ΠΌ DBA, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΎΠ³Π½ΠΎΠ· ΡΠ΄Π΅Π»Π°ΡΡ, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈ ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΡΠΎΠ½ΠΎΠ²ΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠ΅, β ΡΡΠΎ Π²Π°ΠΆΠ½ΠΎ. ΠΠΎΠ³Π΄Π° ΠΌΡ ΠΏΡΠΎΡΡΠΎ ΡΠΈΡΡΡΠ΅ Π½Π°ΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³Π½Π°Π»ΠΈ, ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΡΡΠΈΠ½Ρ. ΠΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π΅ΡΠ΅ ΡΠ°Π· ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΡΠ΄Π΅Π»Π°Π»ΠΈ, Π½ΠΎ Π΅ΡΠ΅ ΡΠΎ ΡΠΈΠΌΡΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Ρ production Π½Π°Π³ΡΡΠ·ΠΊΠΎΠΉ. ΠΡΠΎ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠ½ΠΎ. ΠΠΎ ΡΡΠΎΠ³ΠΎ Π½Π°Π΄ΠΎ Π΅ΡΠ΅ Π΄ΠΎΡΠ°ΡΡΠΈ. ΠΡΠΎ ΠΏΠΎ-Π²Π·ΡΠΎΡΠ»ΠΎΠΌΡ. ΠΡ ΠΈ ΡΠΈΡΡΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅Π»ΠΈ, ΡΡΠΎ Π΅ΡΡΡ ΠΈ Π΅ΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅Π»ΠΈ β Ρ Π²Π°ΡΠ°Π΅Ρ Π»ΠΈ Π½Π°ΠΌ ΡΠ΅ΡΡΡΡΠΎΠ². ΠΡΠΎ Ρ ΠΎΡΠΎΡΠΈΠΉ Π²ΠΎΠΏΡΠΎΡ.
ΠΠΎΠ³Π΄Π° ΠΌΡ ΡΠΆΠ΅ Π΄Π΅Π»Π°Π΅ΠΌ garbage select ΠΈ Ρ Π½Π°Ρ Π΅ΡΡΡ, ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ, deleted flag
ΠΡΠΎ ΡΠΎ, ΡΡΠΎ autovacuum Π΄Π΅Π»Π°Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π² Postgres.
Π, ΠΎΠ½ ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ?
Autovacuum ΡΡΠΎ ΠΈ Π΅ΡΡΡ garbage collector.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ!
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π΄ΠΎΠΊΠ»Π°Π΄! ΠΡΡΡ Π»ΠΈ Π²Π°ΡΠΈΠ°Π½Ρ ΡΡΠ°Π·Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Ρ ΠΏΠ°ΡΡΠΈΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ°ΠΊΠΈΠΌ, ΡΡΠΎΠ±Ρ Π²Π΅ΡΡ ΠΌΡΡΠΎΡ ΠΎΡΠΏΠ°ΡΠΊΠΎΠ²ΡΠ²Π°Π»ΡΡ ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ ΠΊΡΠ΄Π°-Π½ΠΈΠ±ΡΠ΄Ρ Π² ΡΡΠΎΡΠΎΠ½Ρ?
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π΅ΡΡΡ.
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΠΎΠ³Π΄Π° ΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠΈΡΡ ΡΠ΅Π±Ρ, Π΅ΡΠ»ΠΈ ΠΌΡ Π·Π°Π»ΠΎΡΠΈΠ»ΠΈ ΡΠ°Π±Π»ΠΈΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ?
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π΅ΡΡΡ. ΠΠΎ ΡΡΠΎ Π²ΠΎΠΏΡΠΎΡ ΠΊΠ°ΠΊ ΠΏΡΠΎ ΠΊΡΡΠΈΡΡ ΠΈ ΡΠΉΡΠΎ. ΠΡΠ»ΠΈ ΠΌΡ Π²ΡΠ΅ Π·Π½Π°Π΅ΠΌ, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ, ΡΠΎ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΌΡ Π²ΡΠ΅ ΡΠ΄Π΅Π»Π°Π΅ΠΌ ΠΊΠ»Π°ΡΡΠ½ΠΎ. ΠΠΎ Π±ΠΈΠ·Π½Π΅Ρ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ, ΡΠ°ΠΌ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ, Π½ΠΎΠ²ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ. Π ΠΏΠΎΡΠΎΠΌ β ΠΎΠΏΠ°, ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΡΡΠΎ ΡΠ΄Π°Π»ΠΈΡΡ. ΠΠΎ ΡΡΠ° ΠΈΠ΄Π΅Π°Π»ΡΠ½Π°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ, Π² ΠΆΠΈΠ·Π½ΠΈ ΠΎΠ½Π° Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ, Π½ΠΎ Π½Π΅ Π²ΡΠ΅Π³Π΄Π°. ΠΠΎ Π² ΡΠ΅Π»ΠΎΠΌ ΡΡΠΎ Ρ ΠΎΡΠΎΡΠ°Ρ ΠΈΠ΄Π΅Ρ. ΠΡΠΎΡΡΠΎ truncate ΠΈ Π²ΡΠ΅.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com