Π’ΡΠ°Π½ΡΠΊΡΠΈΠΏΡΠΈΡ Π½Π° Π΄ΠΎΠΊΠ»Π°Π΄Π° ΠΎΡ 2015 Π³. Π½Π° ΠΠ»Π΅ΠΊΡΠ΅ΠΉ ΠΠ΅ΡΠΎΠ²ΡΠΊΠΈ βΠΠ°Π΄ΡΠ»Π±ΠΎΡΠ΅Π½ΠΎ ΠΏΠΎΡΠ°ΠΏΡΠ½Π΅ Π²ΡΠ² Π²ΡΡΡΠ΅ΡΠ½Π°ΡΠ° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° Π½Π° PostgreSQLβ
ΠΡΠΊΠ°Π· ΠΎΡ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡ ΠΎΡ Π°Π²ΡΠΎΡΠ° Π½Π° Π΄ΠΎΠΊΠ»Π°Π΄Π°: ΠΠ±ΡΡΡΠ°ΠΌ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ ΡΠΎΠ·ΠΈ Π΄ΠΎΠΊΠ»Π°Π΄ Π΅ ΠΎΡ Π½ΠΎΠ΅ΠΌΠ²ΡΠΈ 2015 Π³. - ΠΈΠ·ΠΌΠΈΠ½Π°Ρ Π° ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ 4 Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅. ΠΠ΅ΡΡΠΈΡ 9.4, ΠΎΠ±ΡΡΠ΄Π΅Π½Π° Π² Π΄ΠΎΠΊΠ»Π°Π΄Π°, Π²Π΅ΡΠ΅ Π½Π΅ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°. ΠΡΠ΅Π· ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ 4 Π³ΠΎΠ΄ΠΈΠ½ΠΈ Π±ΡΡ Π° ΠΏΡΡΠ½Π°ΡΠΈ 5 Π½ΠΎΠ²ΠΈ ΠΈΠ·Π΄Π°Π½ΠΈΡ, Π² ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΏΠΎΡΠ²ΠΈΡ Π° ΠΌΠ½ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ²ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ, ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°ΡΠ°, Π° Π½ΡΠΊΠΎΠΈ ΠΎΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΡΠ΅ ΡΠ° ΠΎΡΡΠ°ΡΠ΅Π»ΠΈ ΠΈ Π½Π΅ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈ. ΠΠΎΠΊΠ°ΡΠΎ ΠΏΡΠ΅Π³Π»Π΅ΠΆΠ΄Π°Ρ , ΡΠ΅ ΠΎΠΏΠΈΡΠ°Ρ Π΄Π° ΠΌΠ°ΡΠΊΠΈΡΠ°ΠΌ ΡΠ΅Π·ΠΈ ΠΌΠ΅ΡΡΠ°, Π·Π° Π΄Π° Π½Π΅ Π²ΠΈ ΠΏΠΎΠ΄Π²Π΅Π΄Π° ΡΠΈΡΠ°ΡΠ΅Π»Ρ. ΠΠ΅ ΠΏΡΠ΅Π½Π°ΠΏΠΈΡΠ°Ρ ΡΠ΅Π·ΠΈ ΠΌΠ΅ΡΡΠ°, ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ ΡΡΡ ΠΈ Π² ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ²Π° ΡΠ΅ ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈ ΡΡΠ²ΡΠ΅ΠΌ ΡΠ°Π·Π»ΠΈΡΠ΅Π½ Π΄ΠΎΠΊΠ»Π°Π΄.
Π‘Π£ΠΠ PostgreSQL Π΅ ΠΎΠ³ΡΠΎΠΌΠ΅Π½ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΡΠΌ ΠΈ ΡΠΎΠ·ΠΈ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΡΠΌ ΡΠ΅ ΡΡΡΡΠΎΠΈ ΠΎΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠΈ, ΠΊΠΎΠΎΡΠ΄ΠΈΠ½ΠΈΡΠ°Π½Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ° Π½Π° ΠΊΠΎΠΈΡΠΎ ΠΏΡΡΠΊΠΎ Π²Π»ΠΈΡΠ΅ Π²ΡΡΡ
Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° Π‘Π£ΠΠ. ΠΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ° ΡΠ΅ ΡΡΠ±ΠΈΡΠ°Ρ ΡΡΠ°ΡΠΈΡΡΠΈΡΠ΅ΡΠΊΠΈ Π΄Π°Π½Π½ΠΈ ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈΡΠ΅, ΠΊΠΎΠ΅ΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΎΡΠ΅Π½ΠΈΡΠ΅ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ° Π½Π° PostgreSQL ΠΈ Π΄Π° ΠΏΡΠ΅Π΄ΠΏΡΠΈΠ΅ΠΌΠ΅ΡΠ΅ ΠΌΠ΅ΡΠΊΠΈ Π·Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°. Π’Π°Π·ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ±Π°ΡΠ΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈ Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½Π° Π² Π΄ΠΎΡΡΠ° ΠΎΠΏΡΠΎΡΡΠ΅Π½ Π²ΠΈΠ΄. ΠΠ±ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ°Π·ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠ°Π½Π΅ΡΠΎ ΠΉ ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ Π½Π΅ΡΡΠΈΠ²ΠΈΠ°Π»Π½Π° Π·Π°Π΄Π°ΡΠ° ΠΈ βΠ·ΠΎΠΎΠΏΠ°ΡΠΊΡΡβ ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΠΈ ΠΏΠΎΠΌΠΎΡΠ½ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ ΠΌΠΎΠΆΠ΅ Π»Π΅ΡΠ½ΠΎ Π΄Π° ΠΎΠ±ΡΡΠΊΠ° Π΄ΠΎΡΠΈ Π½Π°ΠΏΡΠ΅Π΄Π½Π°Π» DBA.
ΠΠΎΠ±ΡΡ Π΄Π΅Π½ ΠΠ°Π·Π²Π°ΠΌ ΡΠ΅ ΠΠ»Π΅ΠΊΡΠ΅ΠΉ. ΠΠ°ΠΊΡΠΎ ΠΊΠ°Π·Π° ΠΠ»Ρ, ΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ Π·Π° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°ΡΠ° Π½Π° PostgreSQL.
Π‘ΡΠ°ΡΠΈΡΡΠΈΠΊΠ° Π·Π° Π΄Π΅ΠΉΠ½ΠΎΡΡΡΠ° Π½Π° PostgreSQL. PostgreSQL ΠΈΠΌΠ° Π΄Π²Π΅ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ. Π‘ΡΠ°ΡΠΈΡΡΠΈΠΊΠ° Π½Π° Π΄Π΅ΠΉΠ½ΠΎΡΡΡΠ°, ΠΊΠΎΡΡΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΎΠ±ΡΡΠ΄Π΅Π½Π°. Π ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° Π½Π° ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠ° Π·Π° ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ. Π©Π΅ Π³ΠΎΠ²ΠΎΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ Π·Π° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°ΡΠ° Π·Π° Π΄Π΅ΠΉΠ½ΠΎΡΡΡΠ° Π½Π° PostgreSQL, ΠΊΠΎΡΡΠΎ Π½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΏΡΠ΅ΡΠ΅Π½ΠΈΠΌ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ° ΠΈ ΠΏΠΎ Π½ΡΠΊΠ°ΠΊΡΠ² Π½Π°ΡΠΈΠ½ Π΄Π° Ρ ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈΠΌ.
Π©Π΅ Π²ΠΈ ΠΊΠ°ΠΆΠ° ΠΊΠ°ΠΊ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°ΡΠ° Π·Π° ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΠΌΠ°ΡΠ΅ ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ°ΡΠ΅.
ΠΠ°ΠΊΠ²ΠΎ Π½ΡΠΌΠ° Π΄Π° ΠΈΠΌΠ° Π² ΠΎΡΡΠ΅ΡΠ°? Π Π΄ΠΎΠΊΠ»Π°Π΄Π° Π½ΡΠΌΠ° Π΄Π° Π·Π°ΡΡΠ³Π°ΠΌ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°ΡΠ° Π½Π° ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠ°, Π·Π°ΡΠΎΡΠΎ. ΡΠΎΠ²Π° Π΅ ΠΎΡΠ΄Π΅Π»Π½Π° ΡΠ΅ΠΌΠ° Π·Π° ΠΎΡΠ΄Π΅Π»Π΅Π½ Π΄ΠΎΠΊΠ»Π°Π΄ Π·Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊ Π΄Π°Π½Π½ΠΈΡΠ΅ ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ Π² Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ ΠΈ ΠΊΠ°ΠΊ ΠΏΠ»Π°Π½ΠΎΠ²ΡΠΈΠΊΡΡ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π° Π·Π° ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½ΠΈΡΠ΅ ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅Π½ΠΈΡΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π½Π° ΡΠ΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ.
Π Π½ΡΠΌΠ° Π΄Π° ΠΈΠΌΠ° ΠΏΡΠ΅Π³Π»Π΅Π΄ΠΈ Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ, Π½ΡΠΌΠ° Π΄Π° ΡΡΠ°Π²Π½ΡΠ²Π°ΠΌ Π΅Π΄ΠΈΠ½ ΠΏΡΠΎΠ΄ΡΠΊΡ Ρ Π΄ΡΡΠ³. ΠΡΠΌΠ° Π΄Π° ΠΈΠΌΠ° ΡΠ΅ΠΊΠ»Π°ΠΌΠ°. ΠΠ΅ΠΊΠ° Π³ΠΎ Π·Π°ΡΠ΅ΠΆΠ΅ΠΌ.
ΠΡΠΊΠ°ΠΌ Π΄Π° Π²ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ°, ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΅. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ Π³ΠΎ Π±Π΅Π·ΡΡΡΠ°ΡΠ½ΠΎ. ΠΡΠΈΡΠΊΠΎ, ΠΎΡ ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ Π½ΡΠΆΠ΄Π°Π΅ΠΌ, Π΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ SQL ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΈ ΠΏΠΎΠ·Π½Π°Π½ΠΈΡ ΠΏΠΎ SQL.
Π ΡΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΊΠΎΠΈ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΠΌ Π·Π° ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ.
ΠΠΊΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌ PostgreSQL ΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°, Π·Π° Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅, ΡΠ΅ Π²ΠΈΠ΄ΠΈΠΌ "ΡΠ΅ΡΠ½Π° ΠΊΡΡΠΈΡ". Π©Π΅ Π²ΠΈΠ΄ΠΈΠΌ Π½ΡΠΊΠ°ΠΊΠ²ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ°Π²ΡΡ Π½Π΅ΡΠΎ ΠΈ ΠΏΠΎ ΠΈΠΌΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ Π΄Π° ΡΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΡΠ°Π²ΡΡ ΡΠ°ΠΌ, ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΡΠ°Π²ΡΡ. ΠΠΎ Π²ΡΡΡΠ½ΠΎΡΡ ΡΠΎΠ²Π° Π΅ ΡΠ΅ΡΠ½Π° ΠΊΡΡΠΈΡ, Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌ Π²ΡΡΡΠ΅.
ΠΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ° top
, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΎΡ Π½ΡΠΊΠΎΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΏΠΎΠΌΠΎΡΠ½ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ, Π½ΠΎ Π½ΡΠΌΠ° Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌ Π²ΡΡΡΠ΅ Π² PostgreSQL. ΠΠ° ΡΠΎΠ²Π° ΠΈΠΌΠ°ΠΌΠ΅ Π½ΡΠΆΠ΄Π° ΠΎΡ Π΄ΡΡΠ³ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ.
Π ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°ΠΉΠΊΠΈ ΠΏΠΎ-Π½Π°ΡΠ°ΡΡΠΊ, ΡΠ΅ Π²ΠΈ ΠΊΠ°ΠΆΠ° ΠΊΡΠ΄Π΅ Π΅ ΠΏΡΠ΅ΠΊΠ°ΡΠ°Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ. ΠΠΊΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ PostgreSQL ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° ΡΠ°ΠΊΠ°Π²Π° ΡΡ Π΅ΠΌΠ°, ΡΠΎΠ³Π°Π²Π° ΡΠ΅ Π±ΡΠ΄Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈ ΠΊΡΠ΄Π΅ ΡΠ΅ ΠΈΠ·ΡΠ°Π·Ρ ΠΎΠ΄Π²Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ. Π’ΠΎΠ²Π° ΡΠ° Π΄Π²Π΅ Π½Π΅ΡΠ°: ΡΠΎΠ²Π° Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈ Π·Π°ΡΠ²ΠΊΠΈ ΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠΎΠ½ΠΎΠ²ΠΈΡΠ΅ Π·Π°Π΄Π°ΡΠΈ, ΠΊΠΎΠΈΡΠΎ PostgreSQL ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°, Π·Π° Π΄Π° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ.
ΠΠΊΠΎ Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ Π΄Π° Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π² Π³ΠΎΡΠ½ΠΈΡ Π»ΡΠ² ΡΠ³ΡΠ», ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊ ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡΠ΅ Π·Π°ΡΠ²ΠΊΠΈ. ΠΠ°ΡΠ²ΠΊΠ°ΡΠ° ΠΈΠ΄Π²Π° ΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΈ ΡΠ΅ ΠΎΡΠ²Π°ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠ° ΡΠ΅ΡΠΈΡ Π·Π° ΠΏΠΎ-Π½Π°ΡΠ°ΡΡΡΠ½Π° ΡΠ°Π±ΠΎΡΠ°. ΠΠ°ΡΠ²ΠΊΠ°ΡΠ° ΡΠ΅ ΠΏΡΠ΅Π΄Π°Π²Π° Π½Π° ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠ°. ΠΠ»Π°Π½ΠΈΡΠ°ΡΠΈΡΡ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π° ΠΏΠ»Π°Π½ Π·Π° Π·Π°ΡΠ²ΠΊΠ°. ΠΠ·ΠΏΡΠ°ΡΠ° Π³ΠΎ ΠΏΠΎ-Π½Π°ΡΠ°ΡΡΠΊ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅. ΠΠΌΠ° Π½ΡΠΊΠ°ΠΊΡΠ² Π²ΠΈΠ΄ Π±Π»ΠΎΠΊ I/O Π΄Π°Π½Π½ΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΡΠ°Π±Π»ΠΈΡΠΈ ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ ΡΠ΅ ΡΠ΅ΡΠ°Ρ ΠΎΡ Π΄ΠΈΡΠΊΠΎΠ²Π΅ΡΠ΅ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π² ΡΠΏΠ΅ΡΠΈΠ°Π»Π½Π° ΠΎΠ±Π»Π°ΡΡ, Π½Π°ΡΠ΅ΡΠ΅Π½Π° "ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈ Π±ΡΡΠ΅ΡΠΈ". Π Π΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΡ Π·Π°ΡΠ²ΠΊΠ°ΡΠ°, Π°ΠΊΠΎ ΡΠ° Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΈΠ·ΡΡΠΈΠ²Π°Π½ΠΈΡ, ΡΠ΅ Π·Π°ΠΏΠΈΡΠ²Π°Ρ Π² ΡΠ΅Π³ΠΈΡΡΡΡΠ° Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈΡΠ΅ Π² WAL. Π§Π°ΡΡ ΠΎΡ ΡΡΠ°ΡΠΈΡΡΠΈΡΠ΅ΡΠΊΠ°ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π²Π»ΠΈΠ·Π° Π² ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡ ΡΠ°ΠΉΠ» ΠΈΠ»ΠΈ ΠΊΠΎΠ»Π΅ΠΊΡΠΎΡΠ° Π½Π° ΡΡΠ°ΡΠΈΡΡΠΈΡΠ΅ΡΠΊΠΈ Π΄Π°Π½Π½ΠΈ. Π ΡΠ΅Π·ΡΠ»ΡΠ°ΡΡΡ ΠΎΡ Π·Π°ΡΠ²ΠΊΠ°ΡΠ° ΡΠ΅ Π²ΡΡΡΠ° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΠΊΠ»ΠΈΠ΅Π½ΡΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠ²ΡΠΎΡΠΈ Π²ΡΠΈΡΠΊΠΎ Ρ Π½ΠΎΠ²Π° Π·Π°ΡΠ²ΠΊΠ°.
ΠΠ°ΠΊΠ²ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Ρ ΡΠΎΠ½ΠΎΠ²ΠΈΡΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΈ ΡΠΎΠ½ΠΎΠ²ΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΈ? ΠΠΌΠ°ΠΌΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΠΎΡΠ΅ΡΠ°, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ Π² Π½ΠΎΡΠΌΠ°Π»Π΅Π½ ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΡΠ°Π±ΠΎΡΠ°. Π’Π΅Π·ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ ΡΡΡΠΎ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΡΠ°Π·Π³Π»Π΅Π΄Π°Π½ΠΈ Π² Π΄ΠΎΠΊΠ»Π°Π΄Π°: ΡΠΎΠ²Π° ΡΠ° autovacuum, checkpointer, ΠΏΡΠΎΡΠ΅ΡΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ, ΡΠΎΠ½ΠΎΠ² Π·Π°ΠΏΠΈΡ. Π©Π΅ Π·Π°ΡΠ΅Π³Π½Π° Π²ΡΠ΅ΠΊΠΈ ΠΎΡ ΡΡΡ , Π΄ΠΎΠΊΠ°ΡΠΎ Π΄ΠΎΠΊΠ»Π°Π΄Π²Π°ΠΌ.
ΠΠ°ΠΊΠ²ΠΈ ΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ ΡΡΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°ΡΠ°?
- ΠΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. PostgreSQL 9.4 ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ 109 ΠΌΠ΅ΡΡΠΈΠΊΠΈ Π·Π° ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° ΡΡΠ°ΡΠΈΡΡΠΈΡΠ΅ΡΠΊΠΈ Π΄Π°Π½Π½ΠΈ. ΠΠΊΠΎ ΠΎΠ±Π°ΡΠ΅ Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ ΡΡΡ ΡΠ°Π½ΡΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π±Π»ΠΈΡΠΈ, ΡΡ Π΅ΠΌΠΈ, Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, ΡΠΎΠ³Π°Π²Π° Π²ΡΠΈΡΠΊΠΈ ΡΠ΅Π·ΠΈ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈ ΠΏΠΎ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡ Π±ΡΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠΈ, Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ. Π’ΠΎΠ΅ΡΡ ΠΈΠΌΠ° ΠΎΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. Π Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅ΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΡΠ΄Π°Π²ΠΈΡ Π² Π½Π΅Π³ΠΎ.
- Π‘Π»Π΅Π΄Π²Π°ΡΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π΅, ΡΠ΅ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°ΡΠ° ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Ρ ΠΎΡ Π±ΡΠΎΡΡΠΈ. ΠΠΊΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌ ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°, ΡΠ΅ Π²ΠΈΠ΄ΠΈΠΌ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π½Π°ΡΠ°ΡΡΠ²Π°ΡΠΈ Π±ΡΠΎΡΡΠΈ. Π Π°ΠΊΠΎ Π΅ ΠΌΠΈΠ½Π°Π»ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΎΡ Π½ΡΠ»ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°ΡΠ°, ΡΠ΅ Π²ΠΈΠ΄ΠΈΠΌ ΠΌΠΈΠ»ΠΈΠ°ΡΠ΄ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ. Π Π½ΠΈΡΠΎ Π½Π΅ Π½ΠΈ ΠΊΠ°Π·Π²Π°Ρ.
- ΠΡΠΌΠ° ΠΈΡΡΠΎΡΠΈΡ. ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ Π½ΡΠΊΠ°ΠΊΠ²Π° ΠΏΠΎΠ²ΡΠ΅Π΄Π°, Π½Π΅ΡΠΎ Π΅ ΠΏΠ°Π΄Π½Π°Π»ΠΎ ΠΏΡΠ΅Π΄ΠΈ 15-30 ΠΌΠΈΠ½ΡΡΠΈ, Π½ΡΠΌΠ° Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°ΡΠ° ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΊΠ°ΠΊΠ²ΠΎ ΡΠ΅ Π΅ ΡΠ»ΡΡΠΈΠ»ΠΎ ΠΏΡΠ΅Π΄ΠΈ 15-30 ΠΌΠΈΠ½ΡΡΠΈ. Π’ΠΎΠ²Π° Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ.
- ΠΠΈΠΏΡΠ°ΡΠ° Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, Π²Π³ΡΠ°Π΄Π΅Π½ Π² PostgreSQL, Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° ΡΠ΄ΡΠΎΡΠΎ Π½Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ ΠΏΠΎΠΌΠΎΡΠ½ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ. Π’Π΅ Π½ΡΠΌΠ°Ρ Π½ΠΈΡΠΎ ΡΠ°ΠΊΠΎΠ²Π°. Π’Π΅ ΠΏΡΠΎΡΡΠΎ Π΄Π°Π²Π°Ρ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° Π² Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ Π³ΠΎ, ΠΎΡΠΏΡΠ°Π²Π΅ΡΠ΅ Π·Π°ΡΠ²ΠΊΠ° ΠΊΡΠΌ Π½Π΅Π³ΠΎ, ΠΊΠ°ΠΊΠ²ΠΎΡΠΎ ΠΈΡΠΊΠ°ΡΠ΅, ΡΠΎΠ³Π°Π²Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²Π΅ΡΠ΅.
- Π’ΡΠΉ ΠΊΠ°ΡΠΎ Π² PostgreSQL Π½ΡΠΌΠ° Π²Π³ΡΠ°Π΄Π΅Π½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΡΠΎΠ²Π° ΠΏΡΠΈΡΠΈΠ½ΡΠ²Π° Π΄ΡΡΠ³ ΠΏΡΠΎΠ±Π»Π΅ΠΌ. ΠΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π½Π° ΡΡΠ΅ΡΠΈ ΡΡΡΠ°Π½ΠΈ. ΠΡΡΠΊΠ° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ, ΠΊΠΎΡΡΠΎ ΠΈΠΌΠ° ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΈΠ»ΠΈ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΏΡΠ΅ΠΊΠΈ ΡΡΡΠ΅, ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π° Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ ΡΠ²ΠΎΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°. Π Π² ΡΠ΅Π·ΡΠ»ΡΠ°Ρ ΠΎΠ±ΡΠ½ΠΎΡΡΡΠ° ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π·Π° ΡΠ°Π±ΠΎΡΠ° ΡΡΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°. Π Π² Π½ΡΠΊΠΎΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΠΈΠΌΠ° Π½ΡΠΊΠΎΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, Π² Π΄ΡΡΠ³ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π½ΡΠΌΠ° Π΄ΡΡΠ³ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΈΠ»ΠΈ ΠΈΠΌΠ° Π½ΡΠΊΠΎΠΈ Π½ΠΎΠ²ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. Π Π²ΡΠ·Π½ΠΈΠΊΠ²Π° ΡΠΈΡΡΠ°ΡΠΈΡ, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π΄Π²Π°, ΡΡΠΈ ΠΈΠ»ΠΈ ΡΠ΅ΡΠΈΡΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΏΡΠΈΠΏΠΎΠΊΡΠΈΠ²Π°Ρ ΠΈ ΠΈΠΌΠ°Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. Π’ΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΠΏΡΠΈΡΡΠ½ΠΎ.
ΠΠ°ΠΊΠ²ΠΎ ΡΠ»Π΅Π΄Π²Π° ΠΎΡ ΡΠΎΠ²Π°? ΠΠ°ΠΆΠ½ΠΎ Π΅ Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²Π·ΠΈΠΌΠ°ΡΠ΅ ΡΡΠ°ΡΠΈΡΡΠΈΡΠ΅ΡΠΊΠΈ Π΄Π°Π½Π½ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ, Π·Π° Π΄Π° Π½Π΅ Π·Π°Π²ΠΈΡΠΈ ΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅, ΠΈΠ»ΠΈ ΠΏΠΎ Π½ΡΠΊΠ°ΠΊΡΠ² Π½Π°ΡΠΈΠ½ Π΄Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈΡΠ΅ ΡΠ΅Π·ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ ΡΠ°ΠΌΠΈ: Π΄ΠΎΠ±Π°Π²Π΅ΡΠ΅ Π½ΡΠΊΠΎΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, Π·Π° Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΏΠΎΠ»Π·Π°.
Π ΠΈΠΌΠ°ΡΠ΅ Π½ΡΠΆΠ΄Π° ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΈ ΠΏΠΎΠ·Π½Π°Π½ΠΈΡ ΠΏΠΎ SQL. ΠΠ° Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π½ΡΠΊΠΎΠΈ Π΄Π°Π½Π½ΠΈ ΠΎΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°ΡΠ°, ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ SQL Π·Π°ΡΠ²ΠΊΠΈ, Ρ.Π΅. ΡΡΡΠ±Π²Π° Π΄Π° Π·Π½Π°Π΅ΡΠ΅ ΠΊΠ°ΠΊ ΡΠ΅ ΠΏΡΠ°Π²ΡΡ select, join.
Π‘ΡΠ°ΡΠΈΡΡΠΈΠΊΠ°ΡΠ° Π½ΠΈ ΠΊΠ°Π·Π²Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π½Π΅ΡΠ°. Π’Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈ Π½Π° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ.
- ΠΡΡΠ²Π°ΡΠ° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ ΡΠ° ΡΡΠ±ΠΈΡΠΈΡΡΠ°, ΡΠ»ΡΡΠ²Π°ΡΠΈ ΡΠ΅ Π² Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ. Π’ΠΎΠ²Π° Π΅, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΡΠ»ΡΡΠΈ Π½ΡΠΊΠ°ΠΊΠ²ΠΎ ΡΡΠ±ΠΈΡΠΈΠ΅ Π² Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ: Π·Π°ΡΠ²ΠΊΠ°, Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠ°Π±Π»ΠΈΡΠ°, Π°Π²ΡΠΎΠ²Π°ΠΊΡΡΠΌ, Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈ, ΡΠΎΠ³Π°Π²Π° ΡΠΎΠ²Π° ΡΠ° Π²ΡΠΈΡΠΊΠΈ ΡΡΠ±ΠΈΡΠΈΡ. ΠΡΠΎΡΡΠΈΡΠ΅, ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π°ΡΠΈ Π½Π° ΡΠ΅Π·ΠΈ ΡΡΠ±ΠΈΡΠΈΡ, ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Ρ. Π ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΠΈΠΌ ΡΠ΅Π·ΠΈ ΡΡΠ±ΠΈΡΠΈΡ.
- ΠΡΠΎΡΠ°ΡΠ° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ ΡΠ° ΡΠ²ΠΎΠΉΡΡΠ²Π°ΡΠ° Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ ΠΊΠ°ΡΠΎ ΡΠ°Π±Π»ΠΈΡΠΈ, Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ. ΠΠΌΠ°Ρ ΡΠ²ΠΎΠΉΡΡΠ²Π°. Π’ΠΎΠ²Π° Π΅ ΡΠ°Π·ΠΌΠ΅ΡΡΡ Π½Π° ΠΌΠ°ΡΠΈΡΠ΅. ΠΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΠΈΠΌ ΡΠ°ΡΡΠ΅ΠΆΠ° Π½Π° ΡΠ°Π±Π»ΠΈΡΠΈΡΠ΅, ΡΠ°ΡΡΠ΅ΠΆΠ° Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ΅. ΠΠΎΠΆΠ΅ΠΌ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠ°ΡΠ°.
- Π ΡΡΠ΅ΡΠ°ΡΠ° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ Π΅ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ, ΠΏΡΠ΅ΠΊΠ°ΡΠ°Π½ΠΎ Π½Π° ΡΡΠ±ΠΈΡΠΈΠ΅ΡΠΎ. ΠΠ°ΡΠ²ΠΊΠ°ΡΠ° Π΅ ΡΡΠ±ΠΈΡΠΈΠ΅. ΠΠΌΠ° ΡΠ²ΠΎΡ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½Π° ΠΌΡΡΠΊΠ° Π·Π° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎΡΡ. ΠΠ°ΠΏΠΎΡΠ½Π° ΡΡΠΊ, Π·Π°Π²ΡΡΡΠΈ ΡΡΠΊ. ΠΠΎΠΆΠ΅ΠΌ Π΄Π° Π³ΠΎ ΠΏΡΠΎΡΠ»Π΅Π΄ΠΈΠΌ. ΠΠ»ΠΈ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΡΠ΅ΡΠ΅Π½Π΅ Π½Π° Π±Π»ΠΎΠΊ ΠΎΡ Π΄ΠΈΡΠΊΠ° ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡ. Π’Π΅Π·ΠΈ Π½Π΅ΡΠ° ΡΡΡΠΎ ΡΠ΅ ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Ρ.
ΠΠ·ΡΠΎΡΠ½ΠΈΡΠΈΡΠ΅ Π½Π° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° ΡΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ΠΈ, ΠΊΠ°ΠΊΡΠΎ ΡΠ»Π΅Π΄Π²Π°:
- Π ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½Π°ΡΠ° ΠΏΠ°ΠΌΠ΅Ρ (ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈ Π±ΡΡΠ΅ΡΠΈ) ΠΈΠΌΠ° ΡΠ΅Π³ΠΌΠ΅Π½Ρ Π·Π° ΠΏΠΎΡΡΠ°Π²ΡΠ½Π΅ Π½Π° ΡΡΠ°ΡΠΈΡΠ½ΠΈ Π΄Π°Π½Π½ΠΈ ΡΠ°ΠΌ, ΠΈΠΌΠ° ΠΈ ΡΠ°ΠΊΠΈΠ²Π° Π±ΡΠΎΡΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Ρ, ΠΊΠΎΠ³Π°ΡΠΎ Π½Π°ΡΡΡΠΏΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΡΡΠ±ΠΈΡΠΈΡ ΠΈΠ»ΠΈ Π²ΡΠ·Π½ΠΈΠΊΠ½Π°Ρ Π½ΡΠΊΠΎΠΈ ΠΌΠΎΠΌΠ΅Π½ΡΠΈ Π² ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ.
- ΠΡΠΈΡΠΊΠΈ ΡΠ΅Π·ΠΈ Π±ΡΠΎΡΡΠΈ Π½Π΅ ΡΠ° Π΄ΠΎΡΡΡΠΏΠ½ΠΈ Π·Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ ΠΈ Π΄ΠΎΡΠΈ Π½Π΅ ΡΠ° Π΄ΠΎΡΡΡΠΏΠ½ΠΈ Π·Π° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°. Π’ΠΎΠ²Π° ΡΠ° Π½Π΅ΡΠ° ΠΎΡ Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ. ΠΠ° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΡΡ PostgreSQL ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° SQL ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠΎΠΆΠ΅ΠΌ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΠΈΠ·Π±ΡΠ°Π½ΠΈ ΡΠ΅Π»Π΅ΠΊΡΠΈΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠ΅Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΠΌ Π½ΡΠΊΠ°ΠΊΡΠ² Π²ΠΈΠ΄ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π» (ΠΈΠ»ΠΈ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ).
- ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ Π΅ ΡΠ΄ΠΎΠ±Π½ΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΠ΅Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ°ΠΊΠ° ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ ΡΠ° ΠΎΡΠ½ΠΎΠ²Π°ΡΠ° Π·Π° ΠΈΠ·Π³Π»Π΅Π΄ΠΈ (VIEW). Π’ΠΎΠ²Π° ΡΠ° Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΡΠ°Π±Π»ΠΈΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° Π·Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π° ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈΠ»ΠΈ Π·Π° Π½ΡΠΊΠ°ΠΊΡΠ² Π½Π°Π±ΠΎΡ ΠΎΡ ΡΡΠ±ΠΈΡΠΈΡ Π² Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ.
- Π’Π΅Π·ΠΈ Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ ΠΈΠ·Π³Π»Π΅Π΄ΠΈ (VIEWs) ΡΠ° ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π·Π° ΡΠ°Π±ΠΎΡΠ° ΡΡΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°. Π’Π΅ ΡΠ° Π΄ΠΎΡΡΡΠΏΠ½ΠΈ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π±Π΅Π· Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²Π΅Π΄Π½Π°Π³Π° Π΄Π° Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅, Π΄Π° Π³Π»Π΅Π΄Π°ΡΠ΅, Π΄Π° Π²Π·Π΅ΠΌΠ΅ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΡ ΡΠ°ΠΌ. Π ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΈΠΌΠ° ΠΏΡΠΈΠ½ΠΎΡΠΈ. ΠΡΠΈΠ½ΠΎΡΠΈΡΠ΅ ΡΠ° ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΈ. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ° postgresql-contrib (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ postgresql94-contrib), Π΄Π° Π·Π°ΡΠ΅Π΄ΠΈΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡ ΠΌΠΎΠ΄ΡΠ» Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ°, Π΄Π° ΠΏΠΎΡΠΎΡΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π·Π° Π½Π΅Π³ΠΎ, Π΄Π° ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ PostgreSQL ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅. (ΠΠ°Π±Π΅Π»Π΅ΠΆΠΊΠ°. Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ΡΠΎ, Π² ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π½Π° contrib ΠΏΠ°ΠΊΠ΅ΡΡΡ Π΅ ΡΠ°ΡΡ ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ).
- ΠΠΌΠ° ΠΈ Π½Π΅ΠΎΡΠΈΡΠΈΠ°Π»Π΅Π½ ΠΏΡΠΈΠ½ΠΎΡ. Π’Π΅ Π½Π΅ ΡΠ΅ Π΄ΠΎΡΡΠ°Π²ΡΡ ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° PostgreSQL Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡ. Π’Π΅ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½ΠΈ ΠΈΠ»ΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΈ ΠΊΠ°ΡΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°. ΠΠΏΡΠΈΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ ΡΠΎΠ²Π° ΠΊΠ°ΠΊΠ²ΠΎ Π΅ ΠΈΠ·ΠΌΠΈΡΠ»ΠΈΠ» ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡΡ Π½Π° ΡΠΎΠ·ΠΈ Π½Π΅ΠΎΡΠΈΡΠΈΠ°Π»Π΅Π½ ΠΏΡΠΈΠ½ΠΎΡ.
Π’ΠΎΠ·ΠΈ ΡΠ»Π°ΠΉΠ΄ ΠΏΠΎΠΊΠ°Π·Π²Π° Π²ΡΠΈΡΠΊΠΈ ΡΠ΅Π·ΠΈ ΠΈΠ·Π³Π»Π΅Π΄ΠΈ (VIEWS) ΠΈ Π½ΡΠΊΠΎΠΈ ΠΎΡ ΡΠ΅Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ° Π½Π°Π»ΠΈΡΠ½ΠΈ Π² PostgreSQL 9.4. ΠΠ°ΠΊΡΠΎ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅, ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ ΡΡΡ . Π Π΅ Π΄ΠΎΡΡΠ° Π»Π΅ΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΎΠ±ΡΡΠΊΠ°ΡΠ΅, Π°ΠΊΠΎ Π³ΠΎ ΠΈΠ·ΠΏΠΈΡΠ²Π°ΡΠ΅ Π·Π° ΠΏΡΡΠ²ΠΈ ΠΏΡΡ.
ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, Π°ΠΊΠΎ Π²Π·Π΅ΠΌΠ΅ΠΌ ΠΏΡΠ΅Π΄ΠΈΡΠ½Π°ΡΠ° ΡΠ½ΠΈΠΌΠΊΠ° ΠΠ°ΠΊ ΡΡΠ°ΡΠΈΡΡΡ Π²ΡΠ΅ΠΌΡ Π½Π° PostgreSQL
ΠΈ ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ ΡΠΎΠ·ΠΈ ΡΠΏΠΈΡΡΠΊ, ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ ΡΠ°Π·ΠΈ ΠΊΠ°ΡΡΠΈΠ½Π°. ΠΡΠ΅ΠΊΠΈ ΠΈΠ·Π³Π»Π΅Π΄ (VIEWs) ΠΈΠ»ΠΈ Π²ΡΡΠΊΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π·Π° Π΅Π΄Π½Π° ΠΈΠ»ΠΈ Π΄ΡΡΠ³Π° ΡΠ΅Π», Π·Π° Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡΠ°ΡΠ° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ°Π±ΠΎΡΠΈ PostgreSQL. Π Π²Π΅ΡΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΈΠ·Π²Π΅ΡΡΠ½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°.
ΠΡΡΠ²ΠΎΡΠΎ Π½Π΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π΅ pg_stat_database
. ΠΠ°ΠΊΡΠΎ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅, ΡΠΎΠ²Π° Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΠ΅Π»ΡΡΠ²ΠΎ. Π‘ΡΠ΄ΡΡΠΆΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. ΠΠ°ΠΉ-ΡΠ°Π·Π½ΠΎΠΎΠ±ΡΠ°Π·Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. Π Π΄Π°Π²Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΡΠ»ΡΡΠ²Π° Π² Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ.
ΠΠ°ΠΊΠ²ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π²Π·Π΅ΠΌΠ΅ΠΌ ΠΎΡΡΠ°ΠΌ? ΠΠ° Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ Ρ Π½Π°ΠΉ-ΠΏΡΠΎΡΡΠΈΡΠ΅ Π½Π΅ΡΠ°.
select
sum(blks_hit)*100/sum(blks_hit+blks_read) as hit_ratio
from pg_stat_database;
ΠΡΡΠ²ΠΎΡΠΎ Π½Π΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅, Π΅ ΠΏΡΠΎΡΠ΅Π½ΡΡΡ Π½Π° ΠΊΠ΅ΡΠ°. ΠΡΠΎΡΠ΅Π½ΡΡΡ Π½Π° ΠΏΠΎΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Π² ΠΊΠ΅ΡΠ° Π΅ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π». ΠΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π²ΠΈ Π΄Π° ΠΎΡΠ΅Π½ΠΈΡΠ΅ ΠΊΠΎΠ»ΠΊΠΎ Π΄Π°Π½Π½ΠΈ ΡΠ΅ Π²Π·Π΅ΠΌΠ°Ρ ΠΎΡ ΠΊΠ΅ΡΠ° Π½Π° ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈΡΠ΅ Π±ΡΡΠ΅ΡΠΈ ΠΈ ΠΊΠΎΠ»ΠΊΠΎ ΡΠ΅ ΡΠ΅ΡΠ°Ρ ΠΎΡ Π΄ΠΈΡΠΊΠ°.
Π―ΡΠ½ΠΎ Π΅, ΡΠ΅ ΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΊΠ΅Ρ Ρ ΠΈΡΠΎΠ²Π΅ ΠΈΠΌΠ°ΠΌΠ΅, ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅. ΠΠΈΠ΅ ΠΎΡΠ΅Π½ΡΠ²Π°ΠΌΠ΅ ΡΠΎΠ·ΠΈ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π» ΠΊΠ°ΡΠΎ ΠΏΡΠΎΡΠ΅Π½Ρ. Π Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ ΠΈΠΌΠ°ΠΌΠ΅ ΠΏΡΠΎΡΠ΅Π½Ρ ΠΎΡ ΡΠ΅Π·ΠΈ ΠΏΠΎΡΠ΅ΡΠ΅Π½ΠΈΡ Π½Π° ΠΊΠ΅ΡΠ° Π½Π°Π΄ 90%, ΡΠΎΠ³Π°Π²Π° ΡΠΎΠ²Π° Π΅ Π΄ΠΎΠ±ΡΠ΅. ΠΠΊΠΎ ΠΏΠ°Π΄Π½Π΅ ΠΏΠΎΠ΄ 90%, ΡΠΎΠ³Π°Π²Π° Π½ΡΠΌΠ°ΠΌΠ΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ ΠΏΠ°ΠΌΠ΅Ρ, Π·Π° Π΄Π° Π·Π°ΠΏΠ°Π·ΠΈΠΌ Π³ΠΎΡΠ΅ΡΠ°ΡΠ° Π³Π»Π°Π²Π° ΠΎΡ Π΄Π°Π½Π½ΠΈ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ°. Π Π·Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ, PostgreSQL Π΅ ΠΏΡΠΈΠ½ΡΠ΄Π΅Π½ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π΄ΠΈΡΠΊΠ° ΠΈ ΡΠΎΠ²Π° Π΅ ΠΏΠΎ-Π±Π°Π²Π½ΠΎ, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ Π°ΠΊΠΎ Π΄Π°Π½Π½ΠΈΡΠ΅ ΡΠ΅ ΡΠ΅ΡΠ°Ρ ΠΎΡ ΠΏΠ°ΠΌΠ΅ΡΡΠ°. Π ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΠΌΠΈΡΠ»ΠΈΡΠ΅ Π·Π° ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ°: ΠΈΠ»ΠΈ ΡΠ²Π΅Π»ΠΈΡΠ΅ΡΠ΅ ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈΡΠ΅ Π±ΡΡΠ΅ΡΠΈ, ΠΈΠ»ΠΈ ΡΠ²Π΅Π»ΠΈΡΠ΅ΡΠ΅ ΠΆΠ΅Π»ΡΠ·Π½Π°ΡΠ° ΠΏΠ°ΠΌΠ΅Ρ (RAM).
select
datname,
(xact_commit*100)/(xact_commit+xact_rollback) as c_ratio,
deadlocks, conflicts,
temp_file, pg_size_pretty(temp_bytes) as temp_size
from pg_stat_database;
ΠΠ°ΠΊΠ²ΠΎ Π΄ΡΡΠ³ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π²Π·Π΅ΠΌΠ΅ ΠΎΡ ΡΠΎΠ²Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅? ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈΡΠ΅, Π²ΡΠ·Π½ΠΈΠΊΠ²Π°ΡΠΈ Π² Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ. ΠΠ°ΠΊΠ²ΠΎ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΡΡΠΊ? ΠΠΌΠ° Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈ, Π²ΡΡΡΠ°Π½ΠΈΡ Π½Π°Π·Π°Π΄, ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΡΠ΅Ρ Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅Ρ, Π±Π»ΠΎΠΊΠΈΡΠ°Π½ΠΈΡ ΠΈ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈ.
ΠΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠ°Π·ΠΈ Π·Π°ΡΠ²ΠΊΠ°. Π’ΠΎΠ·ΠΈ SQL Π΅ Π΄ΠΎΡΡΠ° ΠΏΡΠΎΡΡ. Π ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ°ΠΌΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΡΠ΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ.
Π Π΅ΡΠΎ ΠΈ ΠΏΡΠ°Π³ΠΎΠ²ΠΈΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ. Π Π°Π·Π³Π»Π΅ΠΆΠ΄Π°ΠΌΠ΅ ΡΡΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½ΡΠΈ ΠΈ Π²ΡΡΡΠ°Π½ΠΈΡ Π½Π°Π·Π°Π΄. ΠΠΎΠΌΠΈΡΠΈ Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΏΠΎΡΠ²ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡΠ°. Rollbacks Π΅ Π²ΡΡΡΠ°Π½Π΅ Π½Π°Π·Π°Π΄, Ρ.Π΅. ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡΠ° Π΅ ΡΠ²ΡΡΡΠΈΠ»Π° Π½ΡΠΊΠ°ΠΊΠ²Π° ΡΠ°Π±ΠΎΡΠ°, Π½Π°ΠΏΡΠ΅Π³Π½Π°Π»Π° Π΅ Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ, ΠΎΠ±ΠΌΠΈΡΠ»ΠΈΠ»Π° Π΅ Π½Π΅ΡΠΎ ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π΅ Π²ΡΠ·Π½ΠΈΠΊΠ½Π°Π»Π° Π³ΡΠ΅ΡΠΊΠ° ΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡΠ° ΡΠ° ΠΎΡΡ Π²ΡΡΠ»Π΅Π½ΠΈ. Ρ.Π΅. ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π½Π°ΡΠ°ΡΡΠ²Π°ΡΠΈΡΡ Π±ΡΠΎΠΉ Π²ΡΡΡΠ°Π½ΠΈΡ Π½Π°Π·Π°Π΄ Π΅ Π»ΠΎΡ. Π ΡΡΡΠ±Π²Π° ΠΏΠΎ Π½ΡΠΊΠ°ΠΊΡΠ² Π½Π°ΡΠΈΠ½ Π΄Π° Π³ΠΈ ΠΈΠ·Π±Π΅Π³Π½Π΅ΡΠ΅ ΠΈ Π΄Π° ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°ΡΠ΅ ΠΊΠΎΠ΄Π°, ΡΠ°ΠΊΠ° ΡΠ΅ ΡΠΎΠ²Π° Π΄Π° Π½Π΅ ΡΠ΅ ΡΠ»ΡΡΠΈ.
ΠΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈΡΠ΅ ΡΠ° ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡΠ°. Π ΡΠ΅ ΡΡΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π±ΡΠ³Π²Π°Ρ. ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ Π½ΡΠΊΠΎΠΈ Π·Π°ΡΠ²ΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠ° ΠΈ Π²ΡΠ·Π½ΠΈΠΊΠ½Π°Ρ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈ, ΡΠΎΠ³Π°Π²Π° ΡΡΡΠ±Π²Π° Π΄Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΡΠ΅Π·ΠΈ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈ ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΊΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΡΠ΅ ΡΠ»ΡΡΠΈ. ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π² Π΄Π½Π΅Π²Π½ΠΈΡΠΈΡΠ΅. Π ΡΠ°Π·ΡΠ΅ΡΠ°Π²Π°ΠΉΡΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈ, ΡΠ°ΠΊΠ° ΡΠ΅ Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ Π·Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π° ΡΠ°Π±ΠΎΡΡΡ Π±Π΅Π· Π³ΡΠ΅ΡΠΊΠΈ.
ΠΠ΅Π·ΠΈΠ·Ρ ΠΎΠ΄ΠΈΡΠ°ΡΠ° ΡΡΡΠΎ Π΅ Π»ΠΎΡΠ° ΡΠΈΡΡΠ°ΡΠΈΡ. ΠΠΎΠ³Π°ΡΠΎ Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ ΡΠ΅ ΠΊΠΎΠ½ΠΊΡΡΠΈΡΠ°Ρ Π·Π° ΡΠ΅ΡΡΡΡΠΈ, Π΅Π΄Π½Π° Π·Π°ΡΠ²ΠΊΠ° ΠΈΠΌΠ° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π΅Π΄ΠΈΠ½ ΡΠ΅ΡΡΡΡ ΠΈ Π·Π°ΠΊΠ»ΡΡΠ²Π°, Π²ΡΠΎΡΠ°ΡΠ° Π·Π°ΡΠ²ΠΊΠ° ΠΎΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π²ΡΠΎΡΠΈΡ ΡΠ΅ΡΡΡΡ ΠΈ ΡΡΡΠΎ Π²Π·Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½Π΅ΡΠΎ, ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ ΠΈ Π΄Π²Π΅ΡΠ΅ Π·Π°ΡΠ²ΠΊΠΈ ΠΎΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Π½Π° Π΄ΡΡΠ³Π°ΡΠ° ΠΈ Π±Π»ΠΎΠΊΠΈΡΠ°Ρ, ΡΠ°ΠΊΠ°ΠΉΠΊΠΈ ΡΡΡΠ΅Π΄ΡΡ Π΄Π° ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈ ΠΊΠ»ΡΡΠ°Π»ΠΊΠ°ΡΠ°. Π’ΠΎΠ²Π° ΡΡΡΠΎ Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½Π° ΡΠΈΡΡΠ°ΡΠΈΡ. Π’Π΅ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ°Π·Π³Π»Π΅Π΄Π°Π½ΠΈ Π½Π° Π½ΠΈΠ²ΠΎ ΠΏΡΠ΅Π½Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π΄ΠΎΡΡΡΠΏΠ° Π΄ΠΎ ΡΠ΅ΡΡΡΡΠΈ. Π Π°ΠΊΠΎ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΠ΅ Π·Π°Π΄ΡΠ½Π΅Π½ΠΈΡΠ΅ Π²ΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠΎ ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Ρ, ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈΡΠ΅ Π² ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, Π΄Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΡΠ΅ Π²ΡΠ·Π½ΠΈΠΊΠ½Π°Π»ΠΈΡΠ΅ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΊΠ°ΠΊΡΠ² Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡΡ.
ΠΡΠ΅ΠΌΠ΅Π½Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ (temp_files) ΡΡΡΠΎ ΡΠ° Π»ΠΎΡΠΈ. ΠΠΎΠ³Π°ΡΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠ° Π·Π°ΡΠ²ΠΊΠ° Π½ΡΠΌΠ° Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ ΠΏΠ°ΠΌΠ΅Ρ, Π·Π° Π΄Π° ΠΏΠΎΠ΅ΠΌΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΈΡΠ΅, Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈ Π΄Π°Π½Π½ΠΈ, ΡΡ ΡΡΠ·Π΄Π°Π²Π° ΡΠ°ΠΉΠ» Π½Π° Π΄ΠΈΡΠΊΠ°. Π Π²ΡΠΈΡΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π²ΡΡΡΠΈ Π²ΡΠ² Π²ΡΠ΅ΠΌΠ΅Π½Π΅Π½ Π±ΡΡΠ΅Ρ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ°, Π·Π°ΠΏΠΎΡΠ²Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ Π²Π΅ΡΠ΅ Π½Π° Π΄ΠΈΡΠΊΠ°. ΠΠ°Π²Π½ΠΎ Π΅. Π’ΠΎΠ²Π° ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°ΡΠ²ΠΊΠ°ΡΠ°. Π ΠΊΠ»ΠΈΠ΅Π½ΡΡΡ, ΠΈΠ·ΠΏΡΠ°ΡΠΈΠ» Π·Π°ΡΠ²ΠΊΠ° Π΄ΠΎ PostgreSQL, ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈ ΠΎΡΠ³ΠΎΠ²ΠΎΡ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ. ΠΠΊΠΎ Π²ΡΠΈΡΠΊΠΈ ΡΠ΅Π·ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°Ρ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ°, Postgres ΡΠ΅ ΡΠ΅Π°Π³ΠΈΡΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π±ΡΡΠ·ΠΎ ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΡ ΡΠ΅ ΡΠ°ΠΊΠ° ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ.
pg_stat_bgwriter - Π’ΠΎΠ·ΠΈ ΠΈΠ·Π³Π»Π΅Π΄ ΠΎΠΏΠΈΡΠ²Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° Π΄Π²Π΅ ΡΠΎΠ½ΠΎΠ²ΠΈ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠΈ Π½Π° PostgreSQL: checkpointer
ΠΈ background writer
.
ΠΠ°ΡΠΎ Π·Π° Π½Π°ΡΠ°Π»ΠΎ Π½Π΅ΠΊΠ° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΈΡΠ΅ ΡΠΎΡΠΊΠΈ, Ρ.Π½Π°Ρ. checkpoints
. ΠΠ°ΠΊΠ²ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π°Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΈΡΠ΅ ΡΠΎΡΠΊΠΈ? ΠΠΎΠ½ΡΡΠΎΠ»Π½Π° ΡΠΎΡΠΊΠ° Π΅ ΠΏΠΎΠ·ΠΈΡΠΈΡ Π² ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡ ΡΠ°ΠΉΠ» Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈΡΠ΅, ΠΏΠΎΠΊΠ°Π·Π²Π°ΡΠ°, ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² Π΄Π°Π½Π½ΠΈΡΠ΅, ΠΈΠ·Π²ΡΡΡΠ΅Π½ΠΈ Π² ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡ ΡΠ°ΠΉΠ», ΡΠ° ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Ρ Π΄Π°Π½Π½ΠΈΡΠ΅ Π½Π° Π΄ΠΈΡΠΊΠ°. ΠΡΠΎΡΠ΅ΡΡΡ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΡΠ΅, ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π΄ΡΠ»ΡΠ³ ΠΈ Π½Π°ΠΉ-Π²Π΅ΡΠ΅ ΡΠ΅ ΡΡΡΡΠΎΠΈ ΠΎΡ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΡΡΡΠ½ΠΈ ΡΡΡΠ°Π½ΠΈΡΠΈ Π² ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈ Π±ΡΡΠ΅ΡΠΈ Ρ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Ρ Π΄Π°Π½Π½ΠΈ Π½Π° Π΄ΠΈΡΠΊΠ°. ΠΠ° ΠΊΠ°ΠΊΠ²ΠΎ Π΅? ΠΠΊΠΎ PostgreSQL ΠΎΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠ΅ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π΄ΠΈΡΠΊΠ° ΠΏΡΠ΅Π· ΡΡΠ»ΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΈ Π²Π·Π΅ΠΌΠ°ΡΠ΅ Π΄Π°Π½Π½ΠΈ ΠΎΡ ΡΠ°ΠΌ ΠΈ Π·Π°ΠΏΠΈΡΠ²Π°ΡΠ΅ Π΄Π°Π½Π½ΠΈ ΠΏΡΠΈ Π²ΡΠ΅ΠΊΠΈ Π΄ΠΎΡΡΡΠΏ, ΡΠ΅ΡΠ΅ Π΄Π° Π΅ Π±Π°Π²Π½ΠΎ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ PostgreSQL ΠΈΠΌΠ° ΡΠ΅Π³ΠΌΠ΅Π½Ρ ΠΎΡ ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΡΠΈΠΉΡΠΎ ΡΠ°Π·ΠΌΠ΅Ρ Π·Π°Π²ΠΈΡΠΈ ΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ°. Postgres ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π² ΡΠ°Π·ΠΈ ΠΏΠ°ΠΌΠ΅Ρ Π·Π° ΠΏΠΎ-Π½Π°ΡΠ°ΡΡΡΠ½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΠ»ΠΈ Π·Π°ΡΠ²ΠΊΠΈ. Π ΡΠ»ΡΡΠ°ΠΉ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ Π·Π° ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° Π΄Π°Π½Π½ΠΈ, ΡΠ΅ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΡ. Π ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ Π΄Π²Π΅ Π²Π΅ΡΡΠΈΠΈ Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅. ΠΠ΄ΠΈΠ½ΠΈΡΡ Π΅ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ°, Π΄ΡΡΠ³ΠΈΡΡ Π΅ Π½Π° Π΄ΠΈΡΠΊΠ°. Π ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ½ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΡΠ΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ. ΠΡΠΆΠ΄Π°Π΅ΠΌ ΡΠ΅ ΠΎΡ ΡΠΎΠ²Π°, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Ρ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ°, Π΄Π° Π±ΡΠ΄Π΅ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°Π½ΠΎ Ρ Π΄ΠΈΡΠΊΠ°. Π’ΠΎΠ²Π° ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΎ-ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΠ΅Π»Π΅Π½ ΠΏΡΠ½ΠΊΡ.
ΠΠΎΠ½ΡΡΠΎΠ»Π½Π°ΡΠ° ΡΠΎΡΠΊΠ° ΠΌΠΈΠ½Π°Π²Π° ΠΏΡΠ΅Π· ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈ Π±ΡΡΠ΅ΡΠΈ, ΠΌΠ°ΡΠΊΠΈΡΠ° ΠΌΡΡΡΠ½ΠΈΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΠΈ, ΡΠ΅ ΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π° ΡΠΎΡΠΊΠ°. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° Π·Π°ΠΏΠΎΡΠ²Π° Π²ΡΠΎΡΠΎΡΠΎ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ ΠΏΡΠ΅Π· ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈ Π±ΡΡΠ΅ΡΠΈ. Π ΡΡΡΠ°Π½ΠΈΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΠ° ΠΌΠ°ΡΠΊΠΈΡΠ°Π½ΠΈ Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π° ΡΠΎΡΠΊΠ°, ΡΠΎΠΉ Π²Π΅ΡΠ΅ Π³ΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°. Π’Π°ΠΊΠ° Π΄Π°Π½Π½ΠΈΡΠ΅ Π²Π΅ΡΠ΅ ΡΠ΅ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°Ρ Ρ Π΄ΠΈΡΠΊΠ°.
ΠΠΌΠ° Π΄Π²Π° Π²ΠΈΠ΄Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΈ ΡΠΎΡΠΊΠΈ. ΠΠ΄Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π° ΡΠΎΡΠΊΠ° ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΠΏΡΠΈ ΠΈΠ·ΡΠ°ΠΊΠ²Π°Π½Π΅. Π’Π°Π·ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π° ΡΠΎΡΠΊΠ° Π΅ ΠΏΠΎΠ»Π΅Π·Π½Π° ΠΈ Π΄ΠΎΠ±ΡΠ° - checkpoint_timed
. Π ΠΈΠΌΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΈ ΡΠΎΡΠΊΠΈ ΠΏΡΠΈ ΠΏΠΎΠΈΡΠΊΠ²Π°Π½Π΅ - checkpoint required
. Π’Π°ΠΊΠ°Π²Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π° ΡΠΎΡΠΊΠ° Π²ΡΠ·Π½ΠΈΠΊΠ²Π°, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠΌΠ°ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ»ΡΠΌ Π·Π°ΠΏΠΈΡ Π½Π° Π΄Π°Π½Π½ΠΈ. ΠΠ°ΠΏΠΈΡΠ°Ρ
ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π·Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ. Π PostgreSQL Π²ΡΡΠ²Π°, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ° Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉ-Π±ΡΡΠ·ΠΎ, Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π° ΡΠΎΡΠΊΠ° ΠΈ Π΄Π° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈ Π½Π°ΠΏΡΠ΅Π΄.
Π Π°ΠΊΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°ΡΠ° pg_stat_bgwriter
ΠΈ Π²ΠΈΠΆ ΠΊΠ°ΠΊΠ²ΠΎ ΠΈΠΌΠ°Ρ checkpoint_req Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π³ΠΎΠ»ΡΠΌ ΠΎΡ checkpoint_timed, ΡΠΎΠ³Π°Π²Π° ΡΠΎΠ²Π° Π΅ Π»ΠΎΡΠΎ. ΠΠ°ΡΠΎ Π»ΠΎΡΠΎ? Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ PostgreSQL Π΅ ΠΏΠΎΠ΄ ΠΏΠΎΡΡΠΎΡΠ½Π΅Π½ ΡΡΡΠ΅Ρ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π·Π°ΠΏΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ Π½Π° Π΄ΠΈΡΠΊ. ΠΠΎΠ½ΡΡΠΎΠ»Π½Π°ΡΠ° ΡΠΎΡΠΊΠ° ΡΡΠ΅Π· ΠΈΠ·ΡΠ°ΠΊΠ²Π°Π½Π΅ Π΅ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΡΡΡΠ΅ΡΠΈΡΠ°ΡΠ° ΠΈ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΡΠΏΠΎΡΠ΅Π΄ Π²ΡΡΡΠ΅ΡΠ½ΠΈΡ Π³ΡΠ°ΡΠΈΠΊ ΠΈ, ΡΠ°ΠΊΠ° Π΄Π° ΡΠ΅ ΠΊΠ°ΠΆΠ΅, ΡΠ΅ ΡΠ°Π·ΡΡΠ³Π° Π²ΡΠ² Π²ΡΠ΅ΠΌΠ΅ΡΠΎ. PostgreSQL ΠΈΠΌΠ° ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡΠ° Π΄Π° ΡΠΏΠΈΡΠ° ΡΠ°Π±ΠΎΡΠ°ΡΠ° ΡΠΈ ΠΈ Π΄Π° Π½Π΅ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π° Π΄ΠΈΡΠΊΠΎΠ²Π°ΡΠ° ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ°. Π’ΠΎΠ²Π° Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π·Π° PostgreSQL. Π Π·Π°ΡΠ²ΠΊΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π° ΡΠΎΡΠΊΠ°, Π½ΡΠΌΠ° Π΄Π° ΠΈΠ·ΠΏΠΈΡΠ²Π°Ρ ΡΡΡΠ΅Ρ ΠΎΡ ΡΠ°ΠΊΡΠ°, ΡΠ΅ Π΄ΠΈΡΠΊΠΎΠ²Π°ΡΠ° ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ° Π΅ Π·Π°Π΅ΡΠ°.
Π ΠΈΠΌΠ° ΡΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° Π·Π° ΡΠ΅Π³ΡΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π°ΡΠ° ΡΠΎΡΠΊΠ°:
-
Ρheckpoint_segments
. -
Ρheckpoint_timeout
. -
Ρheckpoint_competion_target
.
Π’Π΅ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π΄Π° ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΈΡΠ΅ ΡΠΎΡΠΊΠΈ. ΠΠΎ Π½ΡΠΌΠ° Π΄Π° ΡΠ΅ ΡΠΏΠΈΡΠ°ΠΌ Π½Π° ΡΡΡ . Π’ΡΡ Π½ΠΎΡΠΎ Π²Π»ΠΈΡΠ½ΠΈΠ΅ Π΅ ΠΎΡΠ΄Π΅Π»Π΅Π½ Π²ΡΠΏΡΠΎΡ.
ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: ΠΠ΅ΡΡΠΈΡ 9.4, ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°Π½Π° Π² Π΄ΠΎΠΊΠ»Π°Π΄Π°, Π²Π΅ΡΠ΅ Π½Π΅ Π΅ Π°ΠΊΡΡΠ°Π»Π½Π°. Π ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π½Π° PostgreSQL ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΡΡ checkpoint_segments
Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΈ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ min_wal_size
ΠΈ max_wal_size
.
Π‘Π»Π΅Π΄Π²Π°ΡΠ°ΡΠ° ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ° Π΅ ΡΠΎΠ½ΠΎΠ²ΠΈΡΡ Π·Π°ΠΏΠΈΡ β background writer
. ΠΠ°ΠΊΠ²ΠΎ ΠΏΡΠ°Π²ΠΈ ΡΠΎΠΉ? Π’ΠΎΠΉ ΡΠ°Π±ΠΎΡΠΈ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π² Π±Π΅Π·ΠΊΡΠ°Π΅Π½ ΡΠΈΠΊΡΠ». Π’ΠΎΠΉ ΡΠΊΠ°Π½ΠΈΡΠ° ΡΡΡΠ°Π½ΠΈΡΠΈ Π² ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈ Π±ΡΡΠ΅ΡΠΈ ΠΈ ΠΈΠ·ΡΡΠΈΠ²Π° ΠΌΡΡΡΠ½ΠΈΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΎΡΠΊΡΠΈΠ²Π°, Π½Π° Π΄ΠΈΡΠΊΠ°. ΠΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½ ΠΏΠΎΠΌΠ°Π³Π° Π½Π° ΡΠ΅ΠΊΠΏΠΎΠΉΠ½ΡΠ΅ΡΠ° Π΄Π° Π²ΡΡΡΠΈ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΡΠ°Π±ΠΎΡΠ° ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ΅ΠΊΠΏΠΎΠΉΠ½ΡΡΡΠ°.
ΠΠ° ΠΊΠ°ΠΊΠ²ΠΎ Π΄ΡΡΠ³ΠΎ ΠΌΡ ΡΡΡΠ±Π²Π°? Π’ΠΎΠΉ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΠ° ΠΎΡ ΡΠΈΡΡΠΈ ΡΡΡΠ°Π½ΠΈΡΠΈ Π² ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈΡΠ΅ Π±ΡΡΠ΅ΡΠΈ, Π°ΠΊΠΎ ΡΠ΅ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ ΡΠ° Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΈ (Π² Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΈ Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ) Π·Π° Π½Π°ΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ. ΠΠ° ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΠ΅ Π²ΡΠ·Π½ΠΈΠΊΠ½Π° ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π°ΡΠΎ Π·Π°ΡΠ²ΠΊΠ°ΡΠ° ΠΈΠ·ΠΈΡΠΊΠ²Π° ΡΠΈΡΡΠΈ ΡΡΡΠ°Π½ΠΈΡΠΈ ΠΈ ΡΠ΅ Π²Π΅ΡΠ΅ ΡΠ° Π² ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈ Π±ΡΡΠ΅ΡΠΈ. Postgres backend
ΡΠΎΠΉ ΠΏΡΠΎΡΡΠΎ Π³ΠΈ Π²Π·Π΅ΠΌΠ° ΠΈ Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°, Π½Π΅ ΡΡΡΠ±Π²Π° ΡΠ°ΠΌ Π΄Π° ΡΠΈΡΡΠΈ Π½ΠΈΡΠΎ. ΠΠΎ Π°ΠΊΠΎ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ Π½ΡΠΌΠ° ΡΠ°ΠΊΠΈΠ²Π° ΡΡΡΠ°Π½ΠΈΡΠΈ, Π±Π΅ΠΊΠ΅Π½Π΄ΡΡ ΡΠΏΠΈΡΠ° ΠΈ Π·Π°ΠΏΠΎΡΠ²Π° Π΄Π° ΡΡΡΡΠΈ ΡΡΡΠ°Π½ΠΈΡΠΈ, Π·Π° Π΄Π° Π³ΠΈ ΠΈΠ·Ρ
Π²ΡΡΠ»ΠΈ Π½Π° Π΄ΠΈΡΠΊΠ° ΠΈ Π΄Π° Π³ΠΈ Π²Π·Π΅ΠΌΠ΅ Π·Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΡΠ΅ ΡΠΈ Π½ΡΠΆΠ΄ΠΈ - ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΠΎΡΡΠ°Π·ΡΠ²Π° Π½Π΅Π³Π°ΡΠΈΠ²Π½ΠΎ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΡΠ΅ΠΊΡΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Π½Π°ΡΠ° Π·Π°ΡΠ²ΠΊΠ°. ΠΠΊΠΎ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ maxwritten_clean
Π³ΠΎΠ»ΡΠΌ, ΡΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΡΠΎΠ½ΠΎΠ²ΠΈΡΡ Π·Π°ΠΏΠΈΡ Π½Π΅ Π²ΡΡΡΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΠ° ΡΠΈ ΠΈ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ²Π΅Π»ΠΈΡΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ bgwriter_lru_maxpages
Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ²ΡΡΡΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠ° Π² Π΅Π΄ΠΈΠ½ ΡΠΈΠΊΡΠ», ΠΈΠ·ΡΠΈΡΡΠ΅ΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΠΈ.
Π Π΄ΡΡΠ³ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡ Π΅ buffers_backend_fsync
. ΠΠ΅ΠΊΠ΅Π½Π΄ΠΎΠ²Π΅ΡΠ΅ Π½Π΅ ΠΏΡΠ°Π²ΡΡ fsync, Π·Π°ΡΠΎΡΠΎ Π΅ Π±Π°Π²Π΅Π½. Π’Π΅ ΠΏΡΠ΅Π΄Π°Π²Π°Ρ fsync Π½Π°Π³ΠΎΡΠ΅ ΠΏΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π°ΡΠ° ΡΠΎΡΠΊΠ° Π½Π° IO ΡΡΠ΅ΠΊΠ°. ΠΠΎΠ½ΡΡΠΎΠ»Π½Π°ΡΠ° ΡΠΎΡΠΊΠ° ΠΈΠΌΠ° ΡΠΎΠ±ΡΡΠ²Π΅Π½Π° ΠΎΠΏΠ°ΡΠΊΠ°, ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° fsync ΠΈ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ° ΡΡΡΠ°Π½ΠΈΡΠΈΡΠ΅ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ° Ρ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ Π½Π° Π΄ΠΈΡΠΊΠ°. ΠΠΊΠΎ ΠΎΠΏΠ°ΡΠΊΠ°ΡΠ° Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π½Π°ΡΠ° ΡΠΎΡΠΊΠ° Π΅ Π³ΠΎΠ»ΡΠΌΠ° ΠΈ ΠΏΡΠ»Π½Π°, ΡΠΎΠ³Π°Π²Π° Π±Π΅ΠΊΠ΅Π½Π΄ΡΡ Π΅ ΠΏΡΠΈΠ½ΡΠ΄Π΅Π½ ΡΠ°ΠΌ Π΄Π° ΠΈΠ·Π²ΡΡΡΠΈ fsync ΠΈ ΡΠΎΠ²Π° Π·Π°Π±Π°Π²Ρ Π±Π΅ΠΊΠ΅Π½Π΄Π°, Ρ.Π΅. ΠΊΠ»ΠΈΠ΅Π½ΡΡΡ ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈ ΠΎΡΠ³ΠΎΠ²ΠΎΡ ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ Π±ΠΈ ΠΌΠΎΠ³ΡΠ». ΠΠΊΠΎ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΠ΅ ΡΠ°Π·ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡ Π΅ ΠΏΠΎ-Π³ΠΎΠ»ΡΠΌΠ° ΠΎΡ Π½ΡΠ»Π°, ΡΠΎΠ²Π° Π²Π΅ΡΠ΅ Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΈ ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΡΠ΅ Π½Π° ΡΠΎΠ½ΠΎΠ²ΠΈΡ Π·Π°ΠΏΠΈΡ ΠΈ ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π΄Π° ΠΎΡΠ΅Π½ΠΈΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° Π΄ΠΈΡΠΊΠΎΠ²Π°ΡΠ° ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ°.
ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: _Π‘Π»Π΅Π΄Π²Π°ΡΠΈΡΡ ΡΠ΅ΠΊΡΡ ΠΎΠΏΠΈΡΠ²Π° ΡΡΠ°ΡΠΈΡΡΠΈΡΠ΅ΡΠΊΠΈΡΠ΅ ΠΈΠ·Π³Π»Π΅Π΄ΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡΠ°. ΠΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΎΡ ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° ΠΈΠ·Π³Π»Π΅Π΄ΠΈΡΠ΅ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ ΡΠ° ΠΏΡΠ΅ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½ΠΈ Π² Postgres 10. Π‘ΡΡΠ½ΠΎΡΡΡΠ° Π½Π° ΠΏΡΠ΅ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½ΠΈΡΡΠ° Π±Π΅ΡΠ΅ Π΄Π° Π·Π°ΠΌΠ΅Π½ΡΡ xlog
Π½Π° wal
ΠΈ location
Π½Π° lsn
Π² ΠΈΠΌΠ΅Π½Π° Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ/ΠΈΠ·Π³Π»Π΅Π΄ΠΈ ΠΈ Ρ.Π½. ΠΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ½ΠΊΡΠΈΡ pg_xlog_location_diff()
Π΅ ΠΏΡΠ΅ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½ Π½Π° pg_wal_lsn_diff()
._
Π’ΡΠΊ ΡΡΡΠΎ ΠΈΠΌΠ°ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ. ΠΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Π½ΡΠΆΠ΄Π° ΡΠ°ΠΌΠΎ ΠΎΡ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ.
ΠΠΊΠΎ Π²ΠΈΠ΄ΠΈΠΌ, ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ ΡΠ° ΡΠ°Π²Π½ΠΈ, ΡΠΎΠ³Π°Π²Π° ΡΠΎΠ²Π° Π΅ ΠΈΠ΄Π΅Π°Π»Π½ΠΎ ΠΈ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠ° Π½Π΅ ΠΈΠ·ΠΎΡΡΠ°Π²Π° ΠΎΡ ΠΊΠ°ΠΏΠΈΡΠ°Π½Π°.
Π’Π°Π·ΠΈ ΡΠ΅ΡΡΠ½Π°Π΄Π΅ΡΠ΅ΡΠΈΡΠ½Π° ΠΏΠΎΠ·ΠΈΡΠΈΡ ΡΡΠΊ Π΅ ΠΏΠΎΠ·ΠΈΡΠΈΡΡΠ° Π² ΡΠ΅Π³ΠΈΡΡΡΡΠ° Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈΡΠ΅. ΠΠΎΡΡΠΎΡΠ½Π½ΠΎ ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°, Π°ΠΊΠΎ ΠΈΠΌΠ° Π½ΡΠΊΠ°ΠΊΠ²Π° Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡ Π² Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ: Π²ΠΌΡΠΊΠ²Π°Π½ΠΈΡ, ΠΈΠ·ΡΡΠΈΠ²Π°Π½ΠΈΡ ΠΈ Ρ.Π½.
ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΏΠΈΡΠ°Π½ΠΎ xlog Π² Π±Π°ΠΉΡΠ°Ρ
$ select
pg_xlog_location_diff(pg_current_xlog_location(),'0/00000000');
Π»Π°Π³ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π² Π±Π°ΠΉΡΠ°Ρ
$ select
client_addr,
pg_xlog_location_diff(pg_current_xlog_location(), replay_location)
from pg_stat_replication;
Π»Π°Π³ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ
$ select
extract(epoch from now() - pg_last_xact_replay_timestamp());
ΠΠΊΠΎ ΡΠ΅Π·ΠΈ Π½Π΅ΡΠ° ΡΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ, Π·Π½Π°ΡΠΈ ΠΈΠΌΠ° Π½ΡΠΊΠ°ΠΊΠ²ΠΎ Π·Π°Π±Π°Π²ΡΠ½Π΅. ΠΠ°ΠΊΡΡΠ½Π΅Π½ΠΈΠ΅ΡΠΎ Π΅ ΠΈΠ·ΠΎΡΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠ° ΠΎΡ Π³Π»Π°Π²Π½ΠΈΡ, Ρ.Π΅. Π΄Π°Π½Π½ΠΈΡΠ΅ ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ°Π²Π°Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡΠ²ΡΡΠΈΡΠ΅.
ΠΠΌΠ° ΡΡΠΈ ΠΏΡΠΈΡΠΈΠ½ΠΈ Π·Π° Π·Π°Π±Π°Π²ΡΠ½Π΅ΡΠΎ:
- Π’ΠΎΠ²Π° Π΅ Π΄ΠΈΡΠΊΠΎΠ²Π°ΡΠ° ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΊΠΎΡΡΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠΏΡΠ°Π²ΠΈ ΡΡΡ Π·Π°ΠΏΠΈΡΠΈΡΠ΅ ΠΏΡΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅.
- Π’ΠΎΠ²Π° ΡΠ° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΈ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ Π³ΡΠ΅ΡΠΊΠΈ ΠΈΠ»ΠΈ ΠΏΡΠ΅ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ Π½Π° ΠΌΡΠ΅ΠΆΠ°ΡΠ°, ΠΊΠΎΠ³Π°ΡΠΎ Π΄Π°Π½Π½ΠΈΡΠ΅ Π½ΡΠΌΠ°Ρ Π²ΡΠ΅ΠΌΠ΅ Π΄Π° Π΄ΠΎΡΡΠΈΠ³Π½Π°Ρ Π΄ΠΎ ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠ° ΠΈ ΡΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΈ Π²ΡΠ·ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅.
- Π ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ°. ΠΡΠΎΡΠ΅ΡΠΎΡΠ° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ΄ΡΠΊ ΡΠ»ΡΡΠ°ΠΉ. Π ΡΠΎΠ²Π° ΡΡΠΌ Π³ΠΎ Π²ΠΈΠΆΠ΄Π°Π» Π΄Π²Π°-ΡΡΠΈ ΠΏΡΡΠΈ, Π½ΠΎ ΠΈ ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠ»ΡΡΠΈ.
Π Π΅ΡΠΎ ΡΡΠΈ Π·Π°ΡΠ²ΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ Π½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°. ΠΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡΠ΅ΡΠ΅Π½ΠΈΠΌ ΠΊΠΎΠ»ΠΊΠΎ Π΅ Π·Π°ΠΏΠΈΡΠ°Π½ΠΎ Π² Π½Π°ΡΠΈΡ ΡΠ΅Π³ΠΈΡΡΡΡ Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈΡΠ΅. ΠΠΌΠ° ΡΠ°ΠΊΠ°Π²Π° ΡΡΠ½ΠΊΡΠΈΡ pg_xlog_location_diff
ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΡΠ΅Π½ΠΈΠΌ Π·Π°Π±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡΠ° Π² Π±Π°ΠΉΡΠΎΠ²Π΅ ΠΈ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ. ΠΠΈΠ΅ ΡΡΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° ΠΎΡ ΡΠΎΠ·ΠΈ ΠΈΠ·Π³Π»Π΅Π΄ (VIEWS) Π·Π° ΡΠΎΠ²Π°.
ΠΠ°Π±Π΅Π»Π΅ΠΆΠΊΠ°: _ΠΠΌΠ΅ΡΡΠΎ pg_xlog_locationΡΡΠ½ΠΊΡΠΈΡ diff(), ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Π·Π° ΠΈΠ·Π²Π°ΠΆΠ΄Π°Π½Π΅ ΠΈ Π΄Π° ΠΈΠ·Π²Π°Π΄ΠΈΡΠ΅ Π΅Π΄Π½ΠΎ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ Π΄ΡΡΠ³ΠΎ. Π£Π΄ΠΎΠ±Π΅Π½.
Π‘ΡΡ Π·Π°ΠΊΡΡΠ½Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅ΡΠΎ Π΅ Π² ΡΠ΅ΠΊΡΠ½Π΄ΠΈ, ΠΈΠΌΠ° Π΅Π΄ΠΈΠ½ ΠΌΠΎΠΌΠ΅Π½Ρ. ΠΠΊΠΎ Π½ΡΠΌΠ° Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡ Π½Π° Π³Π»Π°Π²Π½ΠΈΡ, ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡΠ° Π΅ Π±ΠΈΠ»Π° ΡΠ°ΠΌ ΠΏΡΠ΅Π΄ΠΈ ΠΎΠΊΠΎΠ»ΠΎ 15 ΠΌΠΈΠ½ΡΡΠΈ ΠΈ Π½ΡΠΌΠ° Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡ, ΠΈ Π°ΠΊΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌ ΡΠΎΠ²Π° Π·Π°Π±Π°Π²ΡΠ½Π΅ Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠ°, ΡΠ΅ Π²ΠΈΠ΄ΠΈΠΌ Π·Π°Π±Π°Π²ΡΠ½Π΅ ΠΎΡ 15 ΠΌΠΈΠ½ΡΡΠΈ. Π’ΠΎΠ²Π° ΡΠΈ ΡΡΡΡΠ²Π° Π΄Π° Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΠ΅. Π ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΡΡΡΠΏΠΎΡ, ΠΊΠΎΠ³Π°ΡΠΎ Π³Π»Π΅Π΄Π°ΡΠ΅ ΡΠΎΠ·ΠΈ Π»Π°Π³.
pg_stat_all_tables Π΅ Π΄ΡΡΠ³ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΈΠ·Π³Π»Π΅Π΄. ΠΠΎΠΊΠ°Π·Π²Π° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° Π½Π° ΡΠ°Π±Π»ΠΈΡΠΈ. ΠΠΎΠ³Π°ΡΠΎ ΠΈΠΌΠ°ΠΌΠ΅ ΡΠ°Π±Π»ΠΈΡΠΈ Π² Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ, ΠΈΠΌΠ° Π½ΡΠΊΠ°ΠΊΠ²Π° Π΄Π΅ΠΉΠ½ΠΎΡΡ Ρ Π½Π΅Ρ, Π½ΡΠΊΠΎΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠ°Π·ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΡ ΡΠΎΠ·ΠΈ ΠΈΠ·Π³Π»Π΅Π΄.
select
relname,
pg_size_pretty(pg_relation_size(relname::regclass)) as size,
seq_scan, seq_tup_read,
seq_scan / seq_tup_read as seq_tup_avg
from pg_stat_user_tables
where seq_tup_read > 0 order by 3,4 desc limit 5;
ΠΡΡΠ²ΠΎΡΠΎ Π½Π΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅, Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΠΎ ΡΠΊΠ°Π½ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°Π±Π»ΠΈΡΠΈ. Π‘Π°ΠΌΠΎΡΠΎ ΡΠΈΡΠ»ΠΎ ΡΠ»Π΅Π΄ ΡΠ΅Π·ΠΈ ΠΏΠ°ΡΠ°ΠΆΠΈ Π½Π΅ Π΅ Π½Π΅ΠΏΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π»ΠΎΡΠΎ ΠΈ Π½Π΅ ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ Π²Π΅ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ Π½Π΅ΡΠΎ.
ΠΠΌΠ° ΠΎΠ±Π°ΡΠ΅ Π²ΡΠΎΡΠ° ΠΌΠ΅ΡΡΠΈΠΊΠ° - seq_tup_read. Π’ΠΎΠ²Π° Π΅ Π±ΡΠΎΡΡ Π½Π° ΡΠ΅Π΄ΠΎΠ²Π΅ΡΠ΅, Π²ΡΡΠ½Π°ΡΠΈ ΠΎΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΠΎ ΡΠΊΠ°Π½ΠΈΡΠ°Π½Π΅. ΠΠΊΠΎ ΡΡΠ΅Π΄Π½ΠΈΡΡ Π±ΡΠΎΠΉ Π½Π°Π΄Π²ΠΈΡΠ°Π²Π° 1, 000 10, 000 50, 000 100, ΡΠΎΠ²Π° Π²Π΅ΡΠ΅ Π΅ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡ, ΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°Π»ΠΎΠΆΠΈ Π΄Π° ΠΈΠ·Π³ΡΠ°Π΄ΠΈΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡ Π½ΡΠΊΡΠ΄Π΅, ΡΠ°ΠΊΠ° ΡΠ΅ Π΄ΠΎΡΡΡΠΏΠΈΡΠ΅ Π΄Π° ΡΠ° ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡ, ΠΈΠ»ΠΈ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°ΡΠ΅ Π·Π°ΡΠ²ΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΠ°ΠΊΠΈΠ²Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΈ ΡΠΊΠ°Π½ΠΈΡΠ°Π½ΠΈΡ, ΡΠ°ΠΊΠ° ΡΠ΅ ΡΠΎΠ²Π° Π½Π΅ ΡΠ΅ ΡΠ»ΡΡΠ²Π°.Π±Π΅ΡΠ΅.
ΠΡΠΎΡΡ ΠΏΡΠΈΠΌΠ΅Ρ β Π΄Π° ΠΊΠ°ΠΆΠ΅ΠΌ, ΡΠ΅ Π·Π°ΡΠ²ΠΊΠ° Ρ Π³ΠΎΠ»ΡΠΌ OFFSET ΠΈ LIMIT ΡΠΈ Π·Π°ΡΠ»ΡΠΆΠ°Π²Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΊΠ°Π½ΠΈΡΠ°Ρ ΡΠ΅ 100 000 ΡΠ΅Π΄Π° Π² ΡΠ°Π±Π»ΠΈΡΠ° ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ Π²Π·Π΅ΠΌΠ°Ρ 50 000 Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ ΡΠ΅Π΄Π°, Π° ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡΠ΅ ΡΠΊΠ°Π½ΠΈΡΠ°Π½ΠΈ ΡΠ΅Π΄ΠΎΠ²Π΅ ΡΠ΅ ΠΈΠ·Ρ Π²ΡΡΠ»ΡΡ. Π’ΠΎΠ²Π° ΡΡΡΠΎ Π΅ Π»ΠΎΡ ΡΠ»ΡΡΠ°ΠΉ. Π ΡΠ°ΠΊΠΈΠ²Π° Π·Π°ΡΠ²ΠΊΠΈ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½ΠΈ. Π Π΅ΡΠΎ ΡΠ°ΠΊΠ°Π²Π° ΠΏΡΠΎΡΡΠ° SQL Π·Π°ΡΠ²ΠΊΠ°, Π½Π° ΠΊΠΎΡΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Ρ Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΈ Π΄Π° ΠΎΡΠ΅Π½ΠΈΡΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡΠ΅ ΡΠΈΡΠ»Π°.
select
relname,
pg_size_pretty(pg_total_relation_size(relname::regclass)) as
full_size,
pg_size_pretty(pg_relation_size(relname::regclass)) as
table_size,
pg_size_pretty(pg_total_relation_size(relname::regclass) -
pg_relation_size(relname::regclass)) as index_size
from pg_stat_user_tables
order by pg_total_relation_size(relname::regclass) desc limit 10;
Π Π°Π·ΠΌΠ΅ΡΠΈΡΠ΅ Π½Π° ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° ΡΡΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠ°Π·ΠΈ ΡΠ°Π±Π»ΠΈΡΠ° ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ pg_total_relation_size()
, pg_relation_size()
.
ΠΠ°ΡΠΎ ΡΡΠ»ΠΎ ΠΈΠΌΠ° ΠΌΠ΅ΡΠ°ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ dt
ΠΈ di
, ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π² PSQL ΠΈ ΡΡΡΠΎ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠΈΡΠ΅ Π½Π° ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ°.
ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ Π½ΠΈ ΠΏΠΎΠΌΠ°Π³Π° Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠΈΡΠ΅ Π½Π° ΡΠ°Π±Π»ΠΈΡΠΈΡΠ΅, Π΄ΠΎΡΠΈ ΠΊΠ°ΡΠΎ Π²Π·Π΅ΠΌΠ΅ΠΌ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ΅ ΠΈΠ»ΠΈ Π±Π΅Π· Π΄Π° Π²Π·Π΅ΠΌΠ΅ΠΌ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ΅, ΠΈ Π²Π΅ΡΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ Π½ΡΠΊΠΎΠΈ ΠΎΡΠ΅Π½ΠΊΠΈ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΡΠ°ΡΡΠ΅ΠΆΠ° Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ, Ρ.Π΅. ΠΊΠ°ΠΊ ΡΡ ΡΠ°ΡΡΠ΅ Ρ Π½Π°Ρ, Ρ ΠΊΠ°ΠΊΠ²Π° ΠΈΠ½ΡΠ΅Π½Π·ΠΈΠ²Π½ΠΎΡΡ ΠΈ Π²Π΅ΡΠ΅ Π½Π°ΠΏΡΠ°Π²Π΅ΡΠ΅ Π½ΡΠΊΠΎΠΈ Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΡΠ½ΠΎΡΠ½ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠ°Π·ΠΌΠ΅ΡΠ°.
ΠΠ΅ΠΉΠ½ΠΎΡΡ ΠΏΠΎ ΠΏΠΈΡΠ°Π½Π΅. ΠΠ°ΠΊΠ²ΠΎ Π΅ Π·Π°ΠΏΠΈΡ? ΠΠ΅ΠΊΠ° Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ° UPDATE
β ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ° ΠΏΠΎ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅Π΄ΠΎΠ²Π΅ Π² ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ°. ΠΡΡΡΠ½ΠΎΡΡ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π΅ Π΄Π²Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ (ΠΈΠ»ΠΈ Π΄ΠΎΡΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅). Π’ΠΎΠ²Π° Π΅ Π²ΠΌΡΠΊΠ²Π°Π½Π΅ Π½Π° Π½ΠΎΠ²Π° Π²Π΅ΡΡΠΈΡ Π½Π° ΡΠ΅Π΄ ΠΈ ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ°ΡΠ°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° ΡΠ΅Π΄ ΠΊΠ°ΡΠΎ ΠΎΡΡΠ°ΡΡΠ»Π°. ΠΠΎ-ΠΊΡΡΠ½ΠΎ Π°Π²ΡΠΎΠ²Π°ΠΊΡΡΠΌΡΡ ΡΠ΅ Π΄ΠΎΠΉΠ΄Π΅ ΠΈ ΡΠ΅ ΠΈΠ·ΡΠΈΡΡΠΈ ΡΠ΅Π·ΠΈ ΠΎΡΡΠ°ΡΠ΅Π»ΠΈ Π²Π΅ΡΡΠΈΠΈ Π½Π° Π»ΠΈΠ½ΠΈΠΈΡΠ΅, ΡΠ΅ ΠΌΠ°ΡΠΊΠΈΡΠ° ΡΠΎΠ²Π° ΠΌΡΡΡΠΎ ΠΊΠ°ΡΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Π·Π° ΠΏΠΎΠ²ΡΠΎΡΠ½Π° ΡΠΏΠΎΡΡΠ΅Π±Π°.
ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π΅ Π΅ ΠΏΡΠΎΡΡΠΎ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°Π±Π»ΠΈΡΠ°. ΠΡΠ΅ ΠΎΡΠ΅ Π΅ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠ°. ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ Π² ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ°, ΡΠΎΠ³Π°Π²Π° Ρ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π²ΡΠΈΡΠΊΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ, Π² ΠΊΠΎΠΈΡΠΎ ΡΡΠ°ΡΡΠ²Π°Ρ ΠΏΠΎΠ»Π΅ΡΠ°ΡΠ°, Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π² Π·Π°ΡΠ²ΠΊΠ°ΡΠ°, ΡΡΡΠΎ ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ. Π’Π΅Π·ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ ΡΡΡΠΎ ΡΠ΅ ΠΈΠΌΠ°Ρ ΠΎΡΡΠ°ΡΠ΅Π»ΠΈ Π²Π΅ΡΡΠΈΠΈ Π½Π° ΡΠ΅Π΄ΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΠΈΠ·ΡΠΈΡΡΠ΅Π½ΠΈ.
select
s.relname,
pg_size_pretty(pg_relation_size(relid)),
coalesce(n_tup_ins,0) + 2 * coalesce(n_tup_upd,0) -
coalesce(n_tup_hot_upd,0) + coalesce(n_tup_del,0) AS total_writes,
(coalesce(n_tup_hot_upd,0)::float * 100 / (case when n_tup_upd > 0
then n_tup_upd else 1 end)::float)::numeric(10,2) AS hot_rate,
(select v[1] FROM regexp_matches(reloptions::text,E'fillfactor=(\d+)') as
r(v) limit 1) AS fillfactor
from pg_stat_all_tables s
join pg_class c ON c.oid=relid
order by total_writes desc limit 50;
Π ΠΏΠΎΡΠ°Π΄ΠΈ ΡΠ²ΠΎΡ Π΄ΠΈΠ·Π°ΠΉΠ½, UPDATE Π΅ ΡΠ΅ΠΆΠΊΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ. ΠΠΎ ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΡΠ»Π΅ΡΠ½Π΅Π½ΠΈ. Π―ΠΆΡΠ΅ hot updates
. Π’Π΅ ΡΠ΅ ΠΏΠΎΡΠ²ΠΈΡ
Π° Π² PostgreSQL Π²Π΅ΡΡΠΈΡ 8.3. Π ΠΊΠ°ΠΊΠ²ΠΎ Π΅ ΡΠΎΠ²Π°? Π’ΠΎΠ²Π° Π΅ Π»Π΅ΠΊΠ° Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ, ΠΊΠΎΡΡΠΎ Π½Π΅ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ΅. Π’ΠΎΠ΅ΡΡ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Ρ
ΠΌΠ΅ Π·Π°ΠΏΠΈΡΠ°, Π½ΠΎ ΡΠ°ΠΌΠΎ Π·Π°ΠΏΠΈΡΡΡ Π² ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° (ΠΊΠΎΠΉΡΠΎ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈ Π½Π° ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ°) Π±Π΅ΡΠ΅ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½, Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ΅ Π²ΡΠ΅ ΠΎΡΠ΅ ΡΠΎΡΠ°Ρ ΠΊΡΠΌ ΡΡΡΠΈΡ Π·Π°ΠΏΠΈΡ Π² ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ°. ΠΠΌΠ° ΠΌΠ°Π»ΠΊΠΎ ΡΠ°ΠΊΠ°Π²Π° ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π° Π»ΠΎΠ³ΠΈΠΊΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ°, ΠΊΠΎΠ³Π°ΡΠΎ Π΄ΠΎΠΉΠ΄Π΅ Π²Π°ΠΊΡΡΠΌ, ΡΠΎΠ³Π°Π²Π° ΠΈΠΌΠ° ΡΠ΅Π·ΠΈ Π²Π΅ΡΠΈΠ³ΠΈ hot
ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π° ΠΎΡΠ½ΠΎΠ²ΠΎ ΠΈ Π²ΡΠΈΡΠΊΠΎ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π±Π΅Π· Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ΅ ΠΈ Π²ΡΠΈΡΠΊΠΎ ΡΠ΅ ΡΠ»ΡΡΠ²Π° Ρ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Π·Π°Π³ΡΠ±Π° Π½Π° ΡΠ΅ΡΡΡΡΠΈ.
Π ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠΌΠ°ΡΠ΅ n_tup_hot_upd
Π³ΠΎΠ»ΡΠΌ, ΠΌΠ½ΠΎΠ³ΠΎ Π΅ Π΄ΠΎΠ±ΡΡ. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±Π»Π°Π΄Π°Π²Π°Ρ Π»Π΅ΠΊΠΈΡΠ΅ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΡΠΎΠ²Π° Π½ΠΈ ΠΈΠ·Π»ΠΈΠ·Π° ΠΏΠΎ-Π΅Π²ΡΠΈΠ½ΠΎ ΠΎΡ Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ° Π½Π° ΡΠ΅ΡΡΡΡΠΈ ΠΈ Π²ΡΠΈΡΠΊΠΎ Π΅ Π½Π°ΡΠ΅Π΄.
ALTER TABLE table_name SET (fillfactor = 70);
ΠΠ°ΠΊ Π΄Π° ΡΠ²Π΅Π»ΠΈΡΠΈΡΠ΅ ΠΎΠ±Π΅ΠΌΠ° hot update
ΠΎΠ²? ΠΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ fillfactor
. Π’ΠΎΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° Π·Π°ΠΏΠ°Π·Π΅Π½ΠΎΡΠΎ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΏΡΠΈ ΠΏΠΎΠΏΡΠ»Π²Π°Π½Π΅ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ° Π² ΡΠ°Π±Π»ΠΈΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° INSERT. ΠΠΎΠ³Π°ΡΠΎ Π²Π»ΠΎΠΆΠΊΠΈΡΠ΅ ΠΎΡΠΈΠ΄Π°Ρ Π² ΠΌΠ°ΡΠ°ΡΠ°, ΡΠ΅ Π·Π°ΠΏΡΠ»Π²Π°Ρ ΠΈΠ·ΡΡΠ»ΠΎ ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ°, Π½Π΅ ΠΎΡΡΠ°Π²ΡΡ ΠΏΡΠ°Π·Π½ΠΎ ΠΌΡΡΡΠΎ Π² Π½Π΅Ρ. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ ΠΌΠ°ΡΠΊΠΈΡΠ° Π½ΠΎΠ²Π° ΡΡΡΠ°Π½ΠΈΡΠ°. ΠΠ°Π½Π½ΠΈΡΠ΅ ΡΠ΅ ΠΏΠΎΠΏΡΠ»Π²Π°Ρ ΠΎΡΠ½ΠΎΠ²ΠΎ. Π ΡΠΎΠ²Π° Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΡΠΎ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅, fillfactor = 100%.
ΠΠΎΠΆΠ΅ΠΌ Π΄Π° Π½Π°ΡΡΡΠΎΠΈΠΌ ΡΠ°ΠΊΡΠΎΡΠ° Π½Π° Π·Π°ΠΏΡΠ»Π²Π°Π½Π΅ Π½Π° 70%. Π’ΠΎΠ΅ΡΡ, Ρ Π²Π»ΠΎΠΆΠΊΠΈ, Π±Π΅ΡΠ΅ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° Π½ΠΎΠ²Π° ΡΡΡΠ°Π½ΠΈΡΠ°, Π½ΠΎ ΡΠ°ΠΌΠΎ 70% ΠΎΡ ΡΡΡΠ°Π½ΠΈΡΠ°ΡΠ° Π±Π΅ΡΠ΅ Π·Π°ΠΏΡΠ»Π½Π΅Π½Π°. Π ΠΈΠΌΠ°ΠΌΠ΅ 30% Π² ΡΠ΅Π·Π΅ΡΠ². ΠΠΎΠ³Π°ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ, ΡΠΎΠ²Π° Π½Π°ΠΉ-Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΡΠ΅ ΡΠ΅ ΡΠ»ΡΡΠΈ Π½Π° ΡΡΡΠ°ΡΠ° ΡΡΡΠ°Π½ΠΈΡΠ° ΠΈ Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° ΡΠ΅Π΄Π° ΡΠ΅ ΡΠ΅ ΠΏΠΎΠ±Π΅ΡΠ΅ Π½Π° ΡΡΡΠ°ΡΠ° ΡΡΡΠ°Π½ΠΈΡΠ°. Π hot_update ΡΠ΅ Π±ΡΠ΄Π΅ Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΎ. Π’ΠΎΠ²Π° ΡΠ»Π΅ΡΠ½ΡΠ²Π° ΠΏΠΈΡΠ°Π½Π΅ΡΠΎ Π²ΡΡΡ Ρ ΡΠ°Π±Π»ΠΈΡΠΈ.
select c.relname,
current_setting('autovacuum_vacuum_threshold') as av_base_thresh,
current_setting('autovacuum_vacuum_scale_factor') as av_scale_factor,
(current_setting('autovacuum_vacuum_threshold')::int +
(current_setting('autovacuum_vacuum_scale_factor')::float * c.reltuples))
as av_thresh,
s.n_dead_tup
from pg_stat_user_tables s join pg_class c ON s.relname = c.relname
where s.n_dead_tup > (current_setting('autovacuum_vacuum_threshold')::int
+ (current_setting('autovacuum_vacuum_scale_factor')::float * c.reltuples));
ΠΠ²ΡΠΎΠ²Π°ΠΊΡΡΠΌΠ½Π° ΠΎΠΏΠ°ΡΠΊΠ°. Autovacuum Π΅ ΡΠ°ΠΊΠ°Π²Π° ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ°, Π·Π° ΠΊΠΎΡΡΠΎ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ°Π»ΠΊΠΎ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ Π² PostgreSQL. ΠΠΎΠΆΠ΅ΠΌ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΡΠ°ΠΌΠΎ Π² ΡΠ°Π±Π»ΠΈΡΠΈΡΠ΅ Π² pg_stat_activity ΠΊΠΎΠ»ΠΊΠΎ Π²Π°ΠΊΡΡΠΌΠ° ΠΈΠΌΠ°ΠΌΠ΅ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ°. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΡΠ΄Π½ΠΎ Π΄Π° ΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ ΠΊΠΎΠ»ΠΊΠΎ ΠΌΠ°ΡΠΈ Π² ΠΎΠΏΠ°ΡΠΊΠ°ΡΠ° ΠΈΠΌΠ° Π² Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅.
ΠΠ°Π±Π΅Π»Π΅ΠΆΠΊΠ°: _ΠΡ Postgres 10 ΡΠΈΡΡΠ°ΡΠΈΡΡΠ° Ρ ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π²Π°ΠΊΡΡΠΌΠ½ΠΈΡ Π²Π°ΠΊΡΡΠΌ ΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎ - ΠΏΠΎΡΠ²ΠΈ ΡΠ΅ ΠΈΠ·Π³Π»Π΅Π΄ΡΡ pg_stat_progressΠ²Π°ΠΊΡΡΠΌ, ΠΊΠΎΠ΅ΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΎΠΏΡΠΎΡΡΡΠ²Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ Π°Π²ΡΠΎΠ²Π°ΠΊΡΡΠΌΠ½ΠΈΡ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³.
ΠΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΠ°Π·ΠΈ ΠΎΠΏΡΠΎΡΡΠ΅Π½Π° Π·Π°ΡΠ²ΠΊΠ°. Π ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠΎΠ³Π° ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ Π²Π°ΠΊΡΡΠΌΡΡ. ΠΠΎ ΠΊΠ°ΠΊ ΠΈ ΠΊΠΎΠ³Π° ΡΡΡΠ±Π²Π° Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ Π²Π°ΠΊΡΡΠΌΡΡ? Π’ΠΎΠ²Π° ΡΠ° ΡΡΠ°ΡΠΈΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π½Π° Π½ΠΈΠ·ΠΎΠ²Π΅ΡΠ΅, Π·Π° ΠΊΠΎΠΈΡΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡ
ΠΏΠΎ-ΡΠ°Π½ΠΎ. ΠΠ·Π²ΡΡΡΠ΅Π½Π° Π΅ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ, Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° ΡΠ΅Π΄Π° Π΅ Π²ΠΌΡΠΊΠ½Π°ΡΠ°. ΠΠΎΡΠ²ΠΈ ΡΠ΅ ΠΎΡΡΠ°ΡΡΠ»Π° Π²Π΅ΡΡΠΈΡ Π½Π° Π½ΠΈΠ·Π°. Π’Π°Π±Π»ΠΈΡΠ° pg_stat_user_tables
ΠΈΠΌΠ° ΡΠ°ΠΊΡΠ² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ n_dead_tup
. Π’ΠΎΠΉ ΠΏΠΎΠΊΠ°Π·Π²Π° Π±ΡΠΎΡ Π½Π° "ΠΌΡΡΡΠ²ΠΈΡΠ΅" ΡΠ΅Π΄ΠΎΠ²Π΅. Π Π²Π΅Π΄Π½Π°Π³Π° ΡΠΎΠΌ Π±ΡΠΎΡΡ Π½Π° ΠΌΡΡΡΠ²ΠΈΡΠ΅ ΡΠ΅Π΄ΠΎΠ²Π΅ ΡΡΠ°Π½Π΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΏΡΠ°Π³, Π½Π° ΠΌΠ°ΡΠ°ΡΠ° ΡΠ΅ Π΄ΠΎΠΉΠ΄Π΅ Π°Π²ΡΠΎΠ²Π°ΠΊΡΡΠΌ.
Π ΠΊΠ°ΠΊ ΡΠ΅ ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π° ΡΠΎΠ·ΠΈ ΠΏΡΠ°Π³? Π’ΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅Π½ ΠΏΡΠΎΡΠ΅Π½Ρ ΠΎΡ ΠΎΠ±ΡΠΈΡ Π±ΡΠΎΠΉ ΡΠ΅Π΄ΠΎΠ²Π΅ Π² ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ°. ΠΠΌΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ autovacuum_vacuum_scale_factor
. Π’ΠΎΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ ΠΏΡΠΎΡΠ΅Π½ΡΠ°. ΠΠ° ΠΊΠ°ΠΆΠ΅ΠΌ 10% + ΠΈΠΌΠ° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π΅Π½ Π±Π°Π·ΠΎΠ² ΠΏΡΠ°Π³ ΠΎΡ 50 ΡΠ΅Π΄Π°. Π ΠΊΠ°ΠΊΠ²ΠΎ ΡΡΠ°Π²Π°? ΠΠΎΠ³Π°ΡΠΎ ΠΈΠΌΠ°ΠΌΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΌΡΡΡΠ²ΠΈ ΡΠ΅Π΄ΠΎΠ²Π΅ ΠΎΡ "10% + 50" ΠΎΡ Π²ΡΠΈΡΠΊΠΈ ΡΠ΅Π΄ΠΎΠ²Π΅ Π² ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ°, ΠΏΠΎΡΡΠ°Π²ΡΠΌΠ΅ ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° Π½Π° Π°Π²ΡΠΎΠ²Π°ΠΊΡΡΠΌ.
select c.relname,
current_setting('autovacuum_vacuum_threshold') as av_base_thresh,
current_setting('autovacuum_vacuum_scale_factor') as av_scale_factor,
(current_setting('autovacuum_vacuum_threshold')::int +
(current_setting('autovacuum_vacuum_scale_factor')::float * c.reltuples))
as av_thresh,
s.n_dead_tup
from pg_stat_user_tables s join pg_class c ON s.relname = c.relname
where s.n_dead_tup > (current_setting('autovacuum_vacuum_threshold')::int
+ (current_setting('autovacuum_vacuum_scale_factor')::float * c.reltuples));
ΠΠΌΠ° ΠΎΠ±Π°ΡΠ΅ Π΅Π΄ΠΈΠ½ ΠΌΠΎΠΌΠ΅Π½Ρ. ΠΡΠ½ΠΎΠ²Π½ΠΈ ΠΏΡΠ°Π³ΠΎΠ²Π΅ Π·Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ av_base_thresh
ΠΈ av_scale_factor
ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»Π½ΠΎ. Π ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎ ΠΏΡΠ°Π³ΡΡ Π½ΡΠΌΠ° Π΄Π° Π΅ Π³Π»ΠΎΠ±Π°Π»Π΅Π½, Π° ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»Π΅Π½ Π·Π° ΠΌΠ°ΡΠ°ΡΠ°. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ, Π·Π° Π΄Π° ΠΈΠ·ΡΠΈΡΠ»ΠΈΡΠ΅, ΡΠ°ΠΌ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΡΠΈΠΊΠΎΠ²Π΅ ΠΈ ΡΡΠΈΠΊΠΎΠ²Π΅. Π ΠΏΡΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΡΠ΅ ΠΎΠΏΠΈΡΠ° Π½Π° ΠΊΠΎΠ»Π΅Π³ΠΈΡΠ΅ ΠΎΡ Avito (Π»ΠΈΠ½ΠΊΡΡ Π½Π° ΡΠ»Π°ΠΉΠ΄Π° Π΅ Π½Π΅Π²Π°Π»ΠΈΠ΄Π΅Π½ ΠΈ Π΅ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ Π² ΡΠ΅ΠΊΡΡΠ°).
ΠΠΈΡΠ°Ρ
Π° Π·Π°
ΠΠ°ΠΊΠ²ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΠΏΠΎ Π²ΡΠΏΡΠΎΡΠ°? ΠΠΊΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Π΄ΡΠ»Π³Π° ΠΎΠΏΠ°ΡΠΊΠ° ΠΈ Π°Π²ΡΠΎΠΏΡΠ°Ρ ΠΎΡΠΌΡΠΊΠ°ΡΠΊΠ°ΡΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠΏΡΠ°Π²ΠΈ, ΡΠΎΠ³Π°Π²Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΠ²Π΅Π»ΠΈΡΠΈΠΌ Π±ΡΠΎΡ Π½Π° ΠΏΡΠ°Ρ ΠΎΡΠΌΡΠΊΠ°ΡΠΊΠΈΡΠ΅ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΠΏΡΠ°Ρ ΠΎΡΠΌΡΠΊΠ°ΡΠΊΠ°ΡΠ° ΠΏΠΎ-Π°Π³ΡΠ΅ΡΠΈΠ²Π½Π°ΡΠ°ΠΊΠ° ΡΠ΅ Π΄Π° ΡΠ΅ Π·Π°Π΄Π΅ΠΉΡΡΠ²Π° ΠΏΠΎ-ΡΠ°Π½ΠΎ, ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° Π½Π° ΠΌΠ°Π»ΠΊΠΈ ΡΠ°ΡΡΠΈ. Π ΡΠ°ΠΊΠ° ΠΎΠΏΠ°ΡΠΊΠ°ΡΠ° ΡΠ΅ Π½Π°ΠΌΠ°Π»Π΅Π΅. - ΠΡΠ½ΠΎΠ²Π½ΠΎΡΠΎ ΡΡΠΊ Π΅ Π΄Π° ΡΠ΅ ΡΠ»Π΅Π΄ΠΈ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π΄ΠΈΡΠΊΠΎΠ²Π΅ΡΠ΅, Ρ.ΠΊ. ΠΠ΅ΡΠΎΡΠΎ Ρ Π²Π°ΠΊΡΡΠΌΠ° Π½Π΅ Π΅ Π±Π΅Π·ΠΏΠ»Π°ΡΠ½ΠΎ, Π²ΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ Ρ ΠΏΠΎΡΠ²Π°ΡΠ° Π½Π° SSD / NVMe ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΡΡ ΡΡΠ°Π½Π° ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΠΌ.
pg_stat_all_indexes Π΅ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° Π·Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ΅. Π’Ρ Π½Π΅ Π΅ Π³ΠΎΠ»ΡΠΌΠ°. Π ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈ ΠΎΡ Π½Π΅Π³ΠΎ. Π Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΠΊΠΎΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ ΠΈΠΌΠ°ΠΌΠ΅ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ.
ΠΊΠ°ΠΊΡΠΎ Π²Π΅ΡΠ΅ ΠΊΠ°Π·Π°Ρ
, Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π΅ Π½Π΅ ΡΠ°ΠΌΠΎ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°Π±Π»ΠΈΡΠΈ, Π½ΠΎ ΠΈ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈ. Π‘ΡΠΎΡΠ²Π΅ΡΠ½ΠΎ, Π°ΠΊΠΎ ΠΈΠΌΠ°ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ Π² ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ°, ΡΠΎΠ³Π°Π²Π° ΠΏΡΠΈ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅Π΄ΠΎΠ²Π΅ΡΠ΅ Π² ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Ρ ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ΅ Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ°Π½ΠΈΡΠ΅ ΠΏΠΎΠ»Π΅ΡΠ°, ΠΈ Π°ΠΊΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ, Π·Π° ΠΊΠΎΠΈΡΠΎ Π½ΡΠΌΠ° ΡΠΊΠ°Π½ΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈ, ΡΠΎΠ³Π°Π²Π° ΡΠ΅ Π²ΠΈΡΡΡ Ρ Π½Π°Ρ ΠΊΠ°ΡΠΎ Π±Π°Π»Π°ΡΡ. Π ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΎΡΡΡΠ²Π΅ΡΠ΅ ΠΎΡ ΡΡΡ
. ΠΠ° ΡΠΎΠ²Π° ΠΈΠΌΠ°ΠΌΠ΅ Π½ΡΠΆΠ΄Π° ΠΎΡ ΠΏΠΎΠ»Π΅ idx_scan
. ΠΠΈΠ΅ ΠΏΡΠΎΡΡΠΎ ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°ΠΌΠ΅ Π±ΡΠΎΡ ΡΠΊΠ°Π½ΠΈΡΠ°Π½ΠΈΡ Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠ°. ΠΠΊΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ΅ ΠΈΠΌΠ°Ρ Π½ΡΠ»Π΅Π²ΠΈ ΡΠΊΠ°Π½ΠΈΡΠ°Π½ΠΈΡ Π·Π° ΡΡΠ°Π²Π½ΠΈΡΠ΅Π»Π½ΠΎ Π΄ΡΠ»ΡΠ³ ΠΏΠ΅ΡΠΈΠΎΠ΄ Π½Π° ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° (ΠΏΠΎΠ½Π΅ 2-3 ΡΠ΅Π΄ΠΌΠΈΡΠΈ), ΡΠΎΠ³Π°Π²Π° Π½Π°ΠΉ-Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΡΠΎΠ²Π° ΡΠ° Π»ΠΎΡΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ, ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΎΡΡΡΠ²Π΅ΠΌ ΠΎΡ ΡΡΡ
.
ΠΠ°Π±Π΅Π»Π΅ΠΆΠΊΠ°: ΠΠΎΠ³Π°ΡΠΎ ΡΡΡΡΠΈΡΠ΅ Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ Π² ΡΠ»ΡΡΠ°ΠΉ Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠΈ Π·Π° ΠΏΠΎΡΠΎΡΠ½ΠΎ ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈΡΠ°Π½Π΅, ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅ Π²ΡΠΈΡΠΊΠΈ Π²ΡΠ·Π»ΠΈ Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ°, Ρ.ΠΊ. ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°ΡΠ° Π½Π΅ Π΅ Π³Π»ΠΎΠ±Π°Π»Π½Π° ΠΈ Π°ΠΊΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡΡ Π½Π΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½Π° Π³Π»Π°Π²Π½ΠΈΡ, ΡΠΎΠ³Π°Π²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠΈ (Π°ΠΊΠΎ ΠΈΠΌΠ° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅).
ΠΠ²Π΅ Π²ΡΡΠ·ΠΊΠΈ:
Π’ΠΎΠ²Π° ΡΠ° ΠΏΡΠΈΠΌΠ΅ΡΠΈ Π·Π° ΠΏΠΎ-ΡΡΡΠ²ΡΡΡΠ΅Π½ΡΡΠ²Π°Π½ΠΈ Π·Π°ΡΠ²ΠΊΠΈ Π·Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊ Π΄Π° ΡΡΡΡΠΈΡΠ΅ Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ.
ΠΡΠΎΡΠ°ΡΠ° Π²ΡΡΠ·ΠΊΠ° Π΅ Π΄ΠΎΡΡΠ° ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π° Π·Π°ΡΠ²ΠΊΠ°. Π Π½Π΅Π³ΠΎ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΡΡΠΈΠ²ΠΈΠ°Π»Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ°. ΠΡΠ΅ΠΏΠΎΡΡΡΠ²Π°ΠΌ Π³ΠΎ Π·Π° ΠΏΡΠ΅Π³Π»Π΅Π΄.
ΠΠ°ΠΊΠ²ΠΎ Π΄ΡΡΠ³ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΎΠ±ΠΎΠ±ΡΠΈ Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ?
-
ΠΠ΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ ΡΠ° Π»ΠΎΡΠΈ.
-
Π’Π΅ Π·Π°Π΅ΠΌΠ°Ρ ΠΌΡΡΡΠΎ.
-
ΠΠ°Π±Π°Π²Π΅ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ ΠΏΠΎ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅.
-
ΠΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π° ΡΠ°Π±ΠΎΡΠ° Π·Π° Π²Π°ΠΊΡΡΠΌΠ°.
ΠΠΊΠΎ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π΅ΠΌ Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ, ΡΠ°ΠΌΠΎ ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ°.
Π‘Π»Π΅Π΄Π²Π°ΡΠΈΡΡ ΠΈΠ·Π³Π»Π΅Π΄ Π΅ pg_stat_activity
. Π’ΠΎΠ²Π° Π΅ Π°Π½Π°Π»ΠΎΠ³ Π½Π° ΠΏΠΎΠΌΠΎΡΠ½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° ps
, ΡΠ°ΠΌΠΎ Π² PostgreSQL. ΠΠΊΠΎ ps
βΠ, ΡΠΎΠ³Π°Π²Π° Π½Π°Π±Π»ΡΠ΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° pg_stat_activity
ΡΠ΅ Π²ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅ Π΄Π΅ΠΉΠ½ΠΎΡΡΡΠ° Π² PostgreSQL.
ΠΠ°ΠΊΠ²ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π²Π·Π΅ΠΌΠ΅ΠΌ ΠΎΡΡΠ°ΠΌ?
select
count(*)*100/(select current_setting('max_connections')::int)
from pg_stat_activity;
ΠΠΎΠΆΠ΅ΠΌ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΡΡΠ»ΠΎΡΡΠ½Π°ΡΠ° Π΄Π΅ΠΉΠ½ΠΎΡΡ, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΡΠ»ΡΡΠ²Π° Π² Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ. ΠΠΎΠΆΠ΅ΠΌ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ Π½ΠΎΠ²ΠΎ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅. Π’Π°ΠΌ Π²ΡΠΈΡΠΊΠΎ ΠΈΠ·Π±ΡΡ Π½Π°, Π½ΠΎΠ²ΠΈ Π²ΡΡΠ·ΠΊΠΈ Π½Π΅ ΡΠ΅ ΠΏΡΠΈΠ΅ΠΌΠ°Ρ, Π³ΡΠ΅ΡΠΊΠΈ ΡΠ΅ ΠΈΠ·Π»ΠΈΠ²Π°Ρ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ.
select
client_addr, usename, datname, count(*)
from pg_stat_activity group by 1,2,3 order by 4 desc;
ΠΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ Π·Π°ΡΠ²ΠΊΠ° ΠΊΠ°ΡΠΎ ΡΠ°Π·ΠΈ ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΎΠ±ΡΠΈΡ ΠΏΡΠΎΡΠ΅Π½Ρ Π½Π° Π²ΡΡΠ·ΠΊΠΈΡΠ΅ ΡΠΏΡΡΠΌΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΈΡ Π»ΠΈΠΌΠΈΡ Π·Π° Π²ΡΡΠ·ΠΊΠΈ ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠΎΠΉ ΠΈΠΌΠ°ΠΌΠ΅ Π½Π°ΠΉ-ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΡΠ·ΠΊΠΈ. Π Π² Π΄Π°Π΄Π΅Π½ΠΈΡ ΡΠ»ΡΡΠ°ΠΉ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ ΡΠΎΠ·ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» cron_role
ΠΎΡΠ²ΠΎΡΠΈ 508 Π²ΡΡΠ·ΠΊΠΈ. Π Π½Π΅ΡΠΎ ΠΌΡ ΡΠ΅ ΡΠ»ΡΡΠΈ. Π’ΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΡΠΏΡΠ°Π²ΠΈΡΠ΅ Ρ ΡΠΎΠ²Π° ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅. Π Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ²Π° Π΄Π° Π΅ Π½ΡΠΊΠ°ΠΊΡΠ² Π°Π½ΠΎΠΌΠ°Π»Π΅Π½ Π±ΡΠΎΠΉ Π²ΡΡΠ·ΠΊΠΈ.
ΠΠΊΠΎ ΠΈΠΌΠ°ΠΌΠ΅ OLTP Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅, Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ° Π±ΡΡΠ·ΠΈ, ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡΡΠ·ΠΈ ΠΈ Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠΌΠ° Π΄ΡΠ»Π³ΠΈ Π·Π°ΡΠ²ΠΊΠΈ. ΠΠΊΠΎ ΠΎΠ±Π°ΡΠ΅ ΠΈΠΌΠ° Π΄ΡΠ»Π³ΠΈ Π·Π°ΡΠ²ΠΊΠΈ, ΡΠΎΠ³Π°Π²Π° Π² ΠΊΡΠ°ΡΠΊΠΎΡΡΠΎΡΠ΅Π½ ΠΏΠ»Π°Π½ Π½ΡΠΌΠ° ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠΈΡΠ΅ΡΠ½ΡΠ²Π°ΡΠ΅, Π½ΠΎ Π² Π΄ΡΠ»Π³ΠΎΡΡΠΎΡΠ΅Π½ ΠΏΠ»Π°Π½ Π΄ΡΠ»Π³ΠΈΡΠ΅ Π·Π°ΡΠ²ΠΊΠΈ Π²ΡΠ΅Π΄ΡΡ Π½Π° Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ, ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Ρ Π΅ΡΠ΅ΠΊΡΠ° Π½Π° ΡΠ°Π·Π΄ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π±Π»ΠΈΡΠΈΡΠ΅, ΠΊΠΎΠ³Π°ΡΠΎ Π½Π°ΡΡΡΠΏΠΈ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π½Π° ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ°. ΠΠ°ΠΊΡΠΎ ΡΠ°Π·Π΄ΡΠ²Π°Π½Π΅ΡΠΎ, ΡΠ°ΠΊΠ° ΠΈ Π΄ΡΠ»Π³ΠΈΡΠ΅ Π·Π°ΡΠ²ΠΊΠΈ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π°ΡΠΈ.
select
client_addr, usename, datname,
clock_timestamp() - xact_start as xact_age,
clock_timestamp() - query_start as query_age,
query
from pg_stat_activity order by xact_start, query_start;
ΠΠΎΠ»Ρ, ΠΎΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Ρ ΡΠ°ΠΊΠ°Π²Π° Π·Π°ΡΠ²ΠΊΠ° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΠΌΠ΅ Π΄ΡΠ»Π³ΠΈ Π·Π°ΡΠ²ΠΊΠΈ ΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΡΠ½ΠΊΡΠΈΡΡΠ° clock_timestamp()
Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅. ΠΡΠ»Π³ΠΈ ΠΈΡΠΊΠ°Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ Π½Π°ΠΌΠ΅ΡΠΈΡ
ΠΌΠ΅, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π³ΠΈ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΠΌ, Π΄Π° Π³ΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ explain
, ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ ΠΏΠ»Π°Π½ΠΎΠ²Π΅ΡΠ΅ ΠΈ ΠΏΠΎ Π½ΡΠΊΠ°ΠΊΡΠ² Π½Π°ΡΠΈΠ½ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°ΠΉΡΠ΅. Π‘Π½ΠΈΠΌΠ°ΠΌΠ΅ ΡΠ΅ΠΊΡΡΠΈΡΠ΅ Π΄ΡΠ»Π³ΠΈ Π·Π°ΡΠ²ΠΊΠΈ ΠΈ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°ΠΌΠ΅ Π΄Π° ΠΆΠΈΠ²Π΅Π΅ΠΌ.
select * from pg_stat_activity where state in
('idle in transaction', 'idle in transaction (aborted)';
ΠΠΎΡΠΈΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΡΠ° Π½Π΅Π°ΠΊΡΠΈΠ²Π½ΠΈ Π² ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ ΠΈ Π½Π΅Π°ΠΊΡΠΈΠ²Π½ΠΈ Π² ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ (ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½ΠΈ) ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ.
ΠΠ°ΠΊΠ²ΠΎ ΠΎΠ·Π½Π°ΡΠ°Π²Π°? Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈΡΠ΅ ΠΈΠΌΠ°Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΡ. Π Π΅Π΄Π½ΠΎ ΠΎΡ ΡΠ΅Π·ΠΈ ΡΡΡΡΠΎΡΠ½ΠΈΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΡΠ½Π΅ΠΌΠ΅ ΠΏΠΎ Π²ΡΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅. ΠΠΌΠ° ΠΏΠΎΠ»Π΅ Π·Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΡΡΠΎΡΠ½ΠΈΡ state
Π² ΡΠΎΠ·ΠΈ ΠΈΠ·Π³Π»Π΅Π΄. Π Π½ΠΈΠ΅ Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅, Π·Π° Π΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ.
select * from pg_stat_activity where state in
('idle in transaction', 'idle in transaction (aborted)';
Π, ΠΊΠ°ΠΊΡΠΎ ΠΊΠ°Π·Π°Ρ ΠΏΠΎ-Π³ΠΎΡΠ΅, ΡΠ΅Π·ΠΈ Π΄Π²Π΅ ΡΡΡΡΠΎΡΠ½ΠΈΡ Π½Π΅Π°ΠΊΡΠΈΠ²Π΅Π½ Π² ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ ΠΈ Π½Π΅Π°ΠΊΡΠΈΠ²Π΅Π½ Π² ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ (ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½) ΡΠ° Π»ΠΎΡΠΈ. ΠΠ°ΠΊΠ²ΠΎ Π΅? Π’ΠΎΠ²Π° Π΅ ΠΌΠΎΠΌΠ΅Π½ΡΡΡ, Π² ΠΊΠΎΠΉΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΎΡΠ²ΠΎΡΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ, ΠΈΠ·Π²ΡΡΡΠΈ Π½ΡΠΊΠΎΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΈ ΡΠ΅ Π·Π°Π΅ ΡΡΡ ΡΠ²ΠΎΡΡΠ° ΡΠ°Π±ΠΎΡΠ°. Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡΠ° ΠΎΡΡΠ°Π²Π° ΠΎΡΠ²ΠΎΡΠ΅Π½Π°. Π’ΠΎΠΉ Π²ΠΈΡΠΈ, Π½ΠΈΡΠΎ Π½Π΅ ΡΠ΅ ΡΠ»ΡΡΠ²Π° Π² Π½Π΅Π³ΠΎ, ΠΎΡΠ½Π΅ΠΌΠ° Π²ΡΡΠ·ΠΊΠ°, Π·Π°ΠΊΠ»ΡΡΠ²Π° ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ΠΈ ΡΠ΅Π΄ΠΎΠ²Π΅ ΠΈ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΎ Π²ΡΠ΅ ΠΎΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π° ΡΠ°Π·Π΄ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π΄ΡΡΠ³ΠΈ ΡΠ°Π±Π»ΠΈΡΠΈ, ΠΏΠΎΡΠ°Π΄ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΎΠ½Π½ΠΈΡ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π» Π½Π° Postrges. Π ΡΠ°ΠΊΠΈΠ²Π° ΡΠ΄Π΅Π»ΠΊΠΈ ΡΡΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΡΠ°Π·ΡΡΡΠ΅Π»Π²Π°Ρ, Π·Π°ΡΠΎΡΠΎ ΡΠ° Π²ΡΠ΅Π΄Π½ΠΈ ΠΊΠ°ΡΠΎ ΡΡΠ»ΠΎ, Π²ΡΠ² Π²ΡΠ΅ΠΊΠΈ ΡΠ»ΡΡΠ°ΠΉ.
ΠΠΊΠΎ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ 5-10-20 ΠΎΡ ΡΡΡ Π²ΡΠ² Π²Π°ΡΠ°ΡΠ° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ, ΡΠΎΠ³Π°Π²Π° ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΏΡΠΈΡΠ΅ΡΠ½ΠΈΡΠ΅ ΠΈ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΡΠ΅ Π΄Π° ΠΏΡΠ°Π²ΠΈΡΠ΅ Π½Π΅ΡΠΎ Ρ ΡΡΡ .
Π’ΡΠΊ ΡΡΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π·Π° ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π°Π½Π΅ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ clock_timestamp()
. Π‘Π½ΠΈΠΌΠ°ΠΌΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ.
ΠΠ°ΠΊΡΠΎ ΠΊΠ°Π·Π°Ρ
ΠΏΠΎ-Π³ΠΎΡΠ΅, Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½ΠΈΡΡΠ° ΡΠ°, ΠΊΠΎΠ³Π°ΡΠΎ Π΄Π²Π΅ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΡΠ΅ ΠΊΠΎΠ½ΠΊΡΡΠΈΡΠ°Ρ Π·Π° Π΅Π΄ΠΈΠ½ ΠΈΠ»ΠΈ Π³ΡΡΠΏΠ° ΡΠ΅ΡΡΡΡΠΈ. ΠΠ° ΡΠΎΠ²Π° ΠΈΠΌΠ°ΠΌΠ΅ ΠΏΠΎΠ»Π΅ waiting
Ρ Π±ΡΠ»Π΅Π²Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ true
ΠΈΠ»ΠΈ false
.
ΠΡΡΠ½ΠΎ - ΡΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ ΡΠ°ΠΊΠ°, ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ Π½Π΅ΡΠΎ. ΠΠΎΠ³Π°ΡΠΎ Π΄Π°Π΄Π΅Π½ ΠΏΡΠΎΡΠ΅Ρ ΡΠ°ΠΊΠ°, ΡΠΎΠ³Π°Π²Π° ΠΊΠ»ΠΈΠ΅Π½ΡΡΡ, ΠΊΠΎΠΉΡΠΎ Π΅ ΠΈΠ½ΠΈΡΠΈΠΈΡΠ°Π» ΠΏΡΠΎΡΠ΅ΡΠ°, ΡΡΡΠΎ ΡΠ°ΠΊΠ°. ΠΠ»ΠΈΠ΅Π½ΡΡΡ Π² Π±ΡΠ°ΡΠ·ΡΡΠ° ΡΠ΅Π΄ΠΈ ΠΈ ΡΡΡΠΎ ΡΠ°ΠΊΠ°.
ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: _ΠΠ°ΠΏΠΎΡΠ²Π°ΠΉΠΊΠΈ ΠΎΡ Postgres 9.6, ΠΏΠΎΠ»Π΅ΡΠΎ waiting
ΠΏΡΠ΅ΠΌΠ°Ρ
Π½Π°ΡΠΈ ΠΈ Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΈ Ρ ΠΎΡΠ΅ Π΄Π²Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ²Π½ΠΈ ΠΏΠΎΠ»Π΅ΡΠ° wait_event_type
ΠΈ wait_event
._
ΠΠ°ΠΊΠ²ΠΎ Π΄Π° ΠΏΡΠ°Π²Ρ? ΠΠΊΠΎ Π²ΠΈΠΆΠ΄Π°ΡΠ΅ ΠΈΡΡΠΈΠ½Π° Π·Π° Π΄ΡΠ»Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅, ΡΠΎΠ³Π°Π²Π° ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΎΡΡΡΠ²Π΅ΡΠ΅ ΠΎΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΈΡΠΊΠ°Π½ΠΈΡ. ΠΠΈΠ΅ ΠΏΡΠΎΡΡΠΎ ΡΠ½ΠΈΠΌΠ°ΠΌΠ΅ ΡΠ°ΠΊΠΈΠ²Π° ΡΠ΄Π΅Π»ΠΊΠΈ. ΠΠΈΡΠ΅ΠΌ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΠΊΠ°ΠΊΠ²ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ° ΠΏΠΎ Π½ΡΠΊΠ°ΠΊΡΠ² Π½Π°ΡΠΈΠ½, ΡΠ°ΠΊΠ° ΡΠ΅ Π΄Π° Π½ΡΠΌΠ° Π½Π°Π΄ΠΏΡΠ΅Π²Π°ΡΠ° Π·Π° ΡΠ΅ΡΡΡΡΠΈ. Π ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, ΡΠ°ΠΊΠ° ΡΠ΅ ΡΠΎΠ²Π° Π΄Π° Π½Π΅ ΡΠ΅ ΡΠ»ΡΡΠΈ.
Π Π΅ΠΊΡΡΡΠ΅ΠΌΠ½ΠΈΡΡ, Π½ΠΎ Π² ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΎ Π½Π΅ ΡΠ°ΡΠ°Π»Π΅Π½ ΡΠ»ΡΡΠ°ΠΉ Π΅ Π²ΡΠ·Π½ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° Π·Π°Π΄ΡΠ½Π΅Π½ΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ. ΠΠ²Π΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΡΠ° Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π»ΠΈ Π΄Π²Π° ΡΠ΅ΡΡΡΡΠ°, ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ ΠΈΠΌΠ°Ρ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΡΡ ΠΎΡΠ½ΠΎΠ²ΠΎ, Π²Π΅ΡΠ΅ ΠΊΡΠΌ ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΈ ΡΠ΅ΡΡΡΡΠΈ. PostgreSQL Π² ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ Π²Π·Π΅ΠΌΠ° ΠΈ ΠΈΠ·ΡΡΡΠ΅Π»Π²Π° ΡΠ°ΠΌΠ°ΡΠ° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄ΡΡΠ³Π°ΡΠ° Π΄Π° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ. Π’ΠΎΠ²Π° Π΅ Π·Π°Π΄ΡΠ½Π΅Π½Π° ΡΠΈΡΡΠ°ΡΠΈΡ ΠΈ ΡΡ Π½Π΅ ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅Π±Π΅ ΡΠΈ. ΠΡΠΎ Π·Π°ΡΠΎ PostgreSQL Π΅ ΠΏΡΠΈΠ½ΡΠ΄Π΅Π½ Π΄Π° ΠΏΡΠ΅Π΄ΠΏΡΠΈΠ΅ΠΌΠ΅ ΠΊΡΠ°ΠΉΠ½ΠΈ ΠΌΠ΅ΡΠΊΠΈ.
Π Π΅ΡΠΎ Π΄Π²Π΅ Π·Π°ΡΠ²ΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π΄Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°ΡΠ΅ ΠΊΠ»ΡΡΠ°Π»ΠΊΠΈ. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π³Π»Π΅Π΄ΠΊΠ°ΡΠ° pg_locks
, ΠΊΠΎΠ΅ΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°ΡΠ΅ ΡΠ΅ΠΆΠΊΠΈ ΠΊΠ»ΡΡΠ°Π»ΠΊΠΈ.
Π ΠΏΡΡΠ²Π°ΡΠ° Π²ΡΡΠ·ΠΊΠ° Π΅ ΡΠ°ΠΌΠΈΡΡ ΡΠ΅ΠΊΡΡ Π½Π° Π·Π°ΡΠ²ΠΊΠ°ΡΠ°. ΠΠΎΡΡΠ° Π΅ Π΄ΡΠ»ΡΠ³.
Π Π²ΡΠΎΡΠ°ΡΠ° Π²ΡΡΠ·ΠΊΠ° Π΅ ΡΡΠ°ΡΠΈΡ Π·Π° Π±ΡΠ°Π²ΠΈ. ΠΠΎΠ»Π΅Π·Π½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΡΠ΅ΡΠ΅, ΠΌΠ½ΠΎΠ³ΠΎ Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ.
Π ΡΠ°ΠΊΠ°, ΠΊΠ°ΠΊΠ²ΠΎ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅? ΠΠΈΠΆΠ΄Π°ΠΌΠ΅ Π΄Π²Π΅ ΠΈΡΠΊΠ°Π½ΠΈΡ. Π‘Π΄Π΅Π»ΠΊΠ° Ρ ALTER TABLE
Π΅ Π±Π»ΠΎΠΊΠΈΡΠ°ΡΠ° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ. ΠΠ°ΠΏΠΎΡΠ½Π°, Π½ΠΎ Π½Π΅ ΠΏΡΠΈΠΊΠ»ΡΡΠΈ ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π° ΡΠ°Π·ΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ, ΠΏΡΠ°Π²ΠΈ Π΄ΡΡΠ³ΠΈ Π½Π΅ΡΠ° Π½ΡΠΊΡΠ΄Π΅. Π Π²ΡΠΎΡΠ°ΡΠ° Π·Π°ΡΠ²ΠΊΠ° Π΅ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ. Π’ΠΎΠΉ ΠΈΠ·ΡΠ°ΠΊΠ²Π° ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° Π·Π° ΠΏΡΠΎΠΌΡΠ½Π° Π΄Π° Π·Π°Π²ΡΡΡΠΈ, ΠΏΡΠ΅Π΄ΠΈ Π΄Π° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΠ° ΡΠΈ.
Π’Π°ΠΊΠ° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΊΠΎΠΉ ΠΊΠΎΠ³ΠΎ Π΅ Π·Π°ΠΊΠ»ΡΡΠΈΠ», ΠΊΠΎΠΉ ΠΊΠΎΠ³ΠΎ Π΄ΡΡΠΆΠΈ ΠΈ ΠΏΠΎ-Π½Π°ΡΠ°ΡΡΠΊ Π΄Π° ΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π²Π°ΠΌΠ΅ Ρ ΡΠΎΠ²Π°.
Π‘Π»Π΅Π΄Π²Π°ΡΠΈΡΡ ΠΌΠΎΠ΄ΡΠ» Π΅ pg_stat_statements
. ΠΠ°ΠΊΡΠΎ ΠΊΠ°Π·Π°Ρ
, ΡΠΎΠ²Π° Π΅ ΠΌΠΎΠ΄ΡΠ». ΠΠ° Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅, ΡΡΡΠ±Π²Π° Π΄Π° Π·Π°ΡΠ΅Π΄ΠΈΡΠ΅ Π½Π΅Π³ΠΎΠ²Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ°, Π΄Π° ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ PostgreSQL, Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»Π° (Ρ Π΅Π΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°) ΠΈ ΡΠΎΠ³Π°Π²Π° ΡΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ Π½ΠΎΠ² ΠΈΠ·Π³Π»Π΅Π΄.
CΡΠ΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ Π·Π°ΠΏΡΠΎΡΠ° Π² ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄Π°Ρ
$ select (sum(total_time) / sum(calls))::numeric(6,3)
from pg_stat_statements;
Π‘Π°ΠΌΡΠ΅ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΏΠΈΡΡΡΠΈΠ΅ (Π² shared_buffers) Π·Π°ΠΏΡΠΎΡΡ
$ select query, shared_blks_dirtied
from pg_stat_statements
where shared_blks_dirtied > 0 order by 2 desc;
ΠΠ°ΠΊΠ²ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π²Π·Π΅ΠΌΠ΅ΠΌ ΠΎΡΡΠ°ΠΌ? ΠΠΊΠΎ Π³ΠΎΠ²ΠΎΡΠΈΠΌ Π·Π° ΠΏΡΠΎΡΡΠΈ Π½Π΅ΡΠ°, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π²Π·Π΅ΠΌΠ΅ΠΌ ΡΡΠ΅Π΄Π½ΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°ΡΠ²ΠΊΠ°ΡΠ°. ΠΡΠ΅ΠΌΠ΅ΡΠΎ ΡΠ°ΡΡΠ΅, ΠΊΠΎΠ΅ΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ PostgreSQL ΡΠ΅Π°Π³ΠΈΡΠ° Π±Π°Π²Π½ΠΎ ΠΈ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ Π½Π΅ΡΠΎ.
ΠΠΎΠΆΠ΅ΠΌ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ Π½Π°ΠΉ-Π°ΠΊΡΠΈΠ²Π½ΠΈΡΠ΅ Π·Π°ΠΏΠΈΡΠ²Π°ΡΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π² Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΡΡ Π΄Π°Π½Π½ΠΈ Π² ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈ Π±ΡΡΠ΅ΡΠΈ. ΠΠΈΠΆΡΠ΅ ΠΊΠΎΠΉ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ° ΠΈΠ»ΠΈ ΠΈΠ·ΡΡΠΈΠ²Π° Π΄Π°Π½Π½ΠΈ ΡΠ°ΠΌ.
Π ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎ Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ Π·Π° ΡΠ΅Π·ΠΈ Π·Π°ΡΠ²ΠΊΠΈ.
ΠΠΈΠ΅ pg_stat_statements
ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΎΡΡΠ΅ΡΠΈ. ΠΡΠ»ΠΈΡΠ°ΠΌΠ΅ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°ΡΠ° Π²Π΅Π΄Π½ΡΠΆ Π½Π° Π΄Π΅Π½. ΠΠ° Π³ΠΎ Π½Π°ΡΡΡΠΏΠ°ΠΌΠ΅. ΠΡΠ΅Π΄ΠΈ Π΄Π° Π½ΡΠ»ΠΈΡΠ°ΠΌΠ΅ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°ΡΠ° ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡ ΠΏΡΡ, ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°ΠΌΠ΅ ΠΎΡΡΠ΅Ρ. ΠΡΠΎ Π»ΠΈΠ½ΠΊ ΠΊΡΠΌ Π΄ΠΎΠΊΠ»Π°Π΄Π°. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ Π³Π»Π΅Π΄Π°ΡΠ΅.
ΠΠ°ΠΊΠ²ΠΎ ΠΏΡΠ°Π²ΠΈΠΌ? ΠΠΈΠ΅ ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π°ΠΌΠ΅ ΠΎΠ±ΡΠ°ΡΠ° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° Π·Π° Π²ΡΠΈΡΠΊΠΈ Π·Π°ΡΠ²ΠΊΠΈ. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° Π·Π° Π²ΡΡΠΊΠ° Π·Π°ΡΠ²ΠΊΠ° ΠΎΡΡΠΈΡΠ°ΠΌΠ΅ Π½Π΅ΠΉΠ½ΠΈΡ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»Π΅Π½ ΠΏΡΠΈΠ½ΠΎΡ ΠΊΡΠΌ ΡΠ°Π·ΠΈ ΠΎΠ±ΡΠ° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°.
Π ΠΊΠ°ΠΊΠ²ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ? ΠΠΎΠΆΠ΅ΠΌ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΎΠ±ΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ Π·Π°ΡΠ²ΠΊΠΈ ΠΎΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΡΠΈΠΏ Π½Π° ΡΠΎΠ½Π° Π½Π° Π²ΡΠΈΡΠΊΠΈ ΠΎΡΡΠ°Π½Π°Π»ΠΈ Π·Π°ΡΠ²ΠΊΠΈ. ΠΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° CPU ΠΈ I/O Π²ΡΠ² Π²ΡΡΠ·ΠΊΠ° Ρ ΡΡΠ»ΠΎΡΡΠ½Π°ΡΠ° ΠΊΠ°ΡΡΠΈΠ½Π°. Π Π²Π΅ΡΠ΅ Π·Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅Π·ΠΈ Π·Π°ΡΠ²ΠΊΠΈ. Π‘ΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ Π²ΠΎΠ΄Π΅ΡΠΈ Π·Π°ΡΠ²ΠΊΠΈ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΡΠΎΠ·ΠΈ ΠΎΡΡΠ΅Ρ ΠΈ Π²Π΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ Ρ ΡΠ°Π½Π° Π·Π° ΡΠ°Π·ΠΌΠΈΡΡΠ» ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°ΠΌΠ΅.
ΠΠ°ΠΊΠ²ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Π·Π°Π΄ ΠΊΡΠ»ΠΈΡΠΈΡΠ΅? ΠΡΠ΅ ΠΎΡΠ΅ ΠΈΠΌΠ° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°Ρ , Π·Π°ΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ.
ΠΠΌΠ° pgstattuple
ΡΡΡΠΎ Π΅ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π΅Π½ ΠΌΠΎΠ΄ΡΠ» ΠΎΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ Π·Π° ΠΏΡΠΈΠ½ΠΎΡ. ΠΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π²ΠΈ Π΄Π° ΠΎΡΠ΅Π½ΠΈΡΠ΅ bloat
ΠΌΠ°ΡΠΈ, Ρ.Π½Π°Ρ. ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π½Π° ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ°. Π Π°ΠΊΠΎ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° Π΅ Π³ΠΎΠ»ΡΠΌΠ°, ΡΡΡΠ±Π²Π° Π΄Π° Ρ ΠΏΡΠ΅ΠΌΠ°Ρ
Π½Π΅ΡΠ΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ. Π ΡΡΠ½ΠΊΡΠΈΡ pgstattuple
ΡΠ°Π±ΠΎΡΠΈ Π΄ΡΠ»Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅. Π ΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΌΠ°ΡΠΈ, ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎ-Π΄ΡΠ»Π³ΠΎ ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ.
Π‘Π»Π΅Π΄Π²Π°ΡΠΈΡΡ ΠΏΡΠΈΠ½ΠΎΡ Π΅ pg_buffercache
. ΠΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π²ΠΈ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΡΠ΅ ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈΡΠ΅ Π±ΡΡΠ΅ΡΠΈ: ΠΊΠΎΠ»ΠΊΠΎ ΠΈΠ½ΡΠ΅Π½Π·ΠΈΠ²Π½ΠΎ ΠΈ Π·Π° ΠΊΠΎΠΈ ΡΠ°Π±Π»ΠΈΡΠΈ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π±ΡΡΠ΅ΡΠ½ΠΈΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΠΈ. Π ΠΏΡΠΎΡΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΡΠ΅ Π² ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈΡΠ΅ Π±ΡΡΠ΅ΡΠΈ ΠΈ Π΄Π° ΠΎΡΠ΅Π½ΠΈΡΠ΅ ΠΊΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΡΠ»ΡΡΠ²Π° ΡΠ°ΠΌ.
Π‘Π»Π΅Π΄Π²Π°ΡΠΈΡΡ ΠΌΠΎΠ΄ΡΠ» Π΅ pgfincore
. Π’Ρ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΡΠ°Π±Π»ΠΈΡΠΈ Π½Π° Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ ΡΡΠ΅Π· ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ mincore()
, Ρ.Π΅. ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π²ΠΈ Π΄Π° Π·Π°ΡΠ΅Π΄ΠΈΡΠ΅ ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° Π² ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈ Π±ΡΡΠ΅ΡΠΈ ΠΈΠ»ΠΈ Π΄Π° Ρ ΡΠ°Π·ΡΠΎΠ²Π°ΡΠΈΡΠ΅. Π ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°, Π½Π°ΡΠ΅Π΄ Ρ Π΄ΡΡΠ³ΠΈ Π½Π΅ΡΠ°, Π΄Π° ΡΠ΅ ΠΈΠ½ΡΠΏΠ΅ΠΊΡΠΈΡΠ° ΠΊΠ΅ΡΠ° Π½Π° ΡΡΡΠ°Π½ΠΈΡΠΈΡΠ΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°, ΡΠΎΠ΅ΡΡ ΠΊΠΎΠ»ΠΊΠΎ ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° Π·Π°Π΅ΠΌΠ° Π² ΠΊΠ΅ΡΠ° Π½Π° ΡΡΡΠ°Π½ΠΈΡΠΈΡΠ΅, Π² ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈ Π±ΡΡΠ΅ΡΠΈ, ΠΈ ΠΏΡΠΎΡΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΎΡΠ΅Π½ΠΈΡΠ΅ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ°.
Π‘Π»Π΅Π΄Π²Π°ΡΠΈΡΡ ΠΌΠΎΠ΄ΡΠ» Π΅ pg_stat_kcache
. Π’ΠΎΠΉ ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΡΠΎ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ getrusage()
. Π Π³ΠΎ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΠΏΡΠ΅Π΄ΠΈ ΠΈ ΡΠ»Π΅Π΄ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°ΡΠ²ΠΊΠ°ΡΠ°. Π Π² ΠΏΠΎΠ»ΡΡΠ΅Π½Π°ΡΠ° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° Π½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΎΡΠ΅Π½ΠΈΠΌ ΠΊΠΎΠ»ΠΊΠΎ Π½Π°ΡΠ°ΡΠ° Π·Π°ΡΠ²ΠΊΠ° Π΅ ΠΈΠ·ΡΠ°Π·Ρ
ΠΎΠ΄Π²Π°Π»Π° Π·Π° I / O Π½Π° Π΄ΠΈΡΠΊΠ°, Ρ.Π΅. ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈ ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ°. ΠΠΎΠ΄ΡΠ»ΡΡ ΠΎΠ±Π°ΡΠ΅ Π΅ ΠΌΠ»Π°Π΄ (ΠΊΡ
Π΅-ΠΊΡ
Π΅) ΠΈ Π·Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° ΡΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π° PostgreSQL 9.4 ΠΈ pg_stat_statements, Π·Π° ΠΊΠΎΠΈΡΠΎ ΡΠΏΠΎΠΌΠ΅Π½Π°Ρ
ΠΏΠΎ-ΡΠ°Π½ΠΎ.
-
ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° Π΅ ΠΏΠΎΠ»Π΅Π·Π½Π°. ΠΡΠΌΠ°ΡΠ΅ Π½ΡΠΆΠ΄Π° ΠΎΡ ΡΠΎΡΡΡΠ΅Ρ Π½Π° ΡΡΠ΅ΡΠΈ ΡΡΡΠ°Π½ΠΈ. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³Π»Π΅Π΄Π°ΡΠ΅, Π΄Π° Π²ΠΈΠΆΠ΄Π°ΡΠ΅, Π΄Π° ΠΏΡΠ°Π²ΠΈΡΠ΅ Π½Π΅ΡΠΎ, Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΡΠ΅.
-
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° Π΅ Π»Π΅ΡΠ½ΠΎ, ΡΠΎΠ²Π° Π΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ SQL. Π‘ΡΠ±ΡΠ°Ρ ΡΠ΅ Π·Π°ΡΠ²ΠΊΠ°, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Ρ ΡΠ΅ Ρ, ΠΈΠ·ΠΏΡΠ°ΡΠΈΡ ΡΠ΅ Ρ, ΡΠ°Π·Π³Π»Π΅Π΄Π°Ρ ΡΠ΅ Ρ.
-
Π‘ΡΠ°ΡΠΈΡΡΠΈΠΊΠ°ΡΠ° ΠΏΠΎΠΌΠ°Π³Π° Π΄Π° ΡΠ΅ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈ Π½Π° Π²ΡΠΏΡΠΎΡΠΈ. ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ Π²ΡΠΏΡΠΎΡΠΈ, ΠΎΠ±ΡΡΡΠ°ΡΠ΅ ΡΠ΅ ΠΊΡΠΌ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°ΡΠ° - Π³Π»Π΅Π΄Π°ΠΉΡΠ΅, ΠΏΡΠ°Π²Π΅ΡΠ΅ ΠΈΠ·Π²ΠΎΠ΄ΠΈ, Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΉΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅.
-
Π Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠ°ΠΉΡΠ΅. ΠΠ½ΠΎΠ³ΠΎ Π·Π°ΡΠ²ΠΊΠΈ, ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π°Π½Π½ΠΈ. ΠΠΈΠ½Π°Π³ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°ΡΠ΅ Π½ΡΠΊΠΎΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈ Π·Π°ΡΠ²ΠΊΠΈ. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠ²ΠΎΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π° Π²Π΅ΡΡΠΈΡ Π½Π° Π·Π°ΡΠ²ΠΊΠ°ΡΠ°, ΠΊΠΎΡΡΠΎ Π²ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠΆΠ΄Π° ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π°, ΠΈ Π΄Π° Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅.
ΠΠΎΠ·ΠΎΠ²Π°Π²Π°Π½Π΅ΡΠΎ
ΠΠ°Π»ΠΈΠ΄Π½ΠΈ Π²ΡΡΠ·ΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ Π±ΡΡ Π° Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈ Π² ΡΡΠ°ΡΠΈΡΡΠ°, Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΊΠΎΠΈΡΠΎ, Π±ΡΡ Π° Π² Π΄ΠΎΠΊΠ»Π°Π΄Π°.
ΠΠ²ΡΠΎΡ ΠΏΠΈΡΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅
ΠΠΎΠ»Π΅ΠΊΡΠΎΡΡΡ Π½Π° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°
Π‘ΠΈΡΡΠ΅ΠΌΠ½ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ
ΠΠΎΠ΄ΡΠ»ΠΈ Π·Π° ΠΏΡΠΈΠ½ΠΎΡ
SQL ΠΏΠΎΠΌΠΎΡΠ½ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΈ Π·Π° sql ΠΊΠΎΠ΄
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ Π½Π° Π²ΡΠΈΡΠΊΠΈ Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ΡΠΎ!
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com