ΠΡΠ΅Π΄Π»Π°Π³Π°Ρ Π΄Π° ΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°Π΅ΡΠ΅ Ρ Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° Π΄ΠΎΠΊΠ»Π°Π΄Π° Π½Π° ΠΠΈΠΊΠΎΠ»Π°ΠΉ Π‘Π°ΠΌΠΎΡ Π²Π°Π»ΠΎΠ² "ΠΠ½Π΄ΡΡΡΡΠΈΠ°Π»Π΅Π½ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΊΡΠΌ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΡΠ° Π½Π° PostgreSQL: Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈ Ρ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ"
Shared_buffers = 25% β ΡΠΎΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎ Π»ΠΈ Π΅ ΠΈΠ»ΠΈ ΠΌΠ°Π»ΠΊΠΎ? ΠΠ»ΠΈ ΡΠΎΡΠ½ΠΎ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ? ΠΠ°ΠΊ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ Π΄Π°Π»ΠΈ ΡΠ°Π·ΠΈ β Π΄ΠΎΡΡΠ° ΠΎΡΡΠ°ΡΡΠ»Π° β ΠΏΡΠ΅ΠΏΠΎΡΡΠΊΠ° Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠΈΠΌΠ° Π·Π° Π²Π°ΡΠΈΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ ΡΠ»ΡΡΠ°ΠΉ?
ΠΡΠ΅ΠΌΠ΅ Π΅ Π΄Π° ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡΠ΅ ΠΊΡΠΌ Π²ΡΠΏΡΠΎΡΠ° Π·Π° ΠΏΠΎΠ΄Π±ΠΎΡΠ° Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ Π½Π° postgresql.conf "ΠΏΡΠΎΡΠ΅ΡΠΈΠΎΠ½Π°Π»Π½ΠΎ". ΠΠ΅ ΡΡΠ΅Π· ΡΠ»Π΅ΠΏΠΈ "Π°Π²ΡΠΎΡΡΠ½Π΅ΡΠΈ" ΠΈΠ»ΠΈ ΠΎΡΡΠ°ΡΠ΅Π»ΠΈ ΡΡΠ²Π΅ΡΠΈ ΠΎΡ ΡΡΠ°ΡΠΈΠΈ ΠΈ Π±Π»ΠΎΠ³ΠΎΠ²Π΅, Π° Π½Π° ΠΎΡΠ½ΠΎΠ²Π°ΡΠ° Π½Π°:
- ΡΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½ΠΈ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈ Ρ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΏΡΠΎΠ²Π΅ΠΆΠ΄Π°Π½ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½ΠΎ, Π² Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΈ ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡ, ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΎ Π±Π»ΠΈΠ·ΠΊΠΈ Π΄ΠΎ "Π±ΠΎΠΉΠ½ΠΈ",
- Π΄ΡΠ»Π±ΠΎΡΠΈΠ½Π½ΠΎ ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΡΠΎΠ±Π΅Π½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° Π‘Π£ΠΠ ΠΈ ΠΠ‘.
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Nancy CLI (), ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ β Π½Π°ΡΡΠΌΠ΅Π»ΠΈΡΠ΅ shared_buffers β Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠΈΡΡΠ°ΡΠΈΠΈ, Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ ΠΈ ΡΠ΅ ΡΠ΅ ΠΎΠΏΠΈΡΠ°ΠΌΠ΅ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΊΠ°ΠΊ Π΄Π° ΠΏΠΎΠ΄Π±Π΅ΡΠ΅ΠΌ ΠΎΠΏΡΠΈΠΌΠ°Π»Π½Π°ΡΠ° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π·Π° Π½Π°ΡΠ°ΡΠ° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°, Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ ΠΈ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅.

Π©Π΅ ΡΡΠ°Π²Π° Π²ΡΠΏΡΠΎΡ Π·Π° Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈ Ρ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ. Π’ΠΎΠ²Π° Π΅ ΠΈΡΡΠΎΡΠΈΡ, ΠΊΠΎΡΡΠΎ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π° ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ ΡΠ΅ΡΡ ΠΌΠ΅ΡΠ΅ΡΠ°.

ΠΡΠΊΠΎΠ»ΠΊΠΎ Π΄ΡΠΌΠΈ Π·Π° ΠΌΠ΅Π½. Π‘ ΠΎΠΏΠΈΡ Ρ Postgres Π²Π΅ΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ 14 Π³ΠΎΠ΄ΠΈΠ½ΠΈ. ΠΡΠ½ΠΎΠ²Π°Π» ΡΡΠΌ ΡΠ΅Π΄ΠΈΡΠ° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π² ΡΠΎΡΠΈΠ°Π»Π½ΠΈΡΠ΅ ΠΌΡΠ΅ΠΆΠΈ. ΠΠ°Π²ΡΡΠΊΡΠ΄Π΅ Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Postgres ΠΈ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°.
Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° Π³ΡΡΠΏΠ°ΡΠ° RuPostgres ΠΏΡΠΈ Meetup, 2-ΡΠΎ ΠΌΡΡΡΠΎ Π² ΡΠ²Π΅ΡΠ°. ΠΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ Π΄ΠΎΡΡΠΈΠ³Π°Π½Π΅ Π½Π° ΠΏΠΎΡΡΠΈ 2 000 Π΄ΡΡΠΈ. RuPostgres.org.
ΠΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Highload, ΠΎΡΠ³ΠΎΠ²Π°ΡΡΠΌ Π·Π° Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΏΠΎ-ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ Postgres ΠΎΡ ΡΠ°ΠΌΠΎΡΠΎ Π½Π°ΡΠ°Π»ΠΎ.

Π Π² ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°ΡΠ° ΡΠΈ ΠΏΠΎ Postgres ΠΊΠΎΠ½ΡΡΠ»ΡΠΈΡΠ°Π½Π΅ Π² 11 ΡΠ°ΡΠΎΠ²ΠΈ Π·ΠΎΠ½ΠΈ ΠΎΡ ΡΡΠΊ.

ΠΠΎΠ³Π°ΡΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡ ΡΠΎΠ²Π° ΠΏΡΠ΅Π΄ΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π³ΠΎΠ΄ΠΈΠ½ΠΈ, Π±ΡΡ ΠΈΠΌΠ°Π» ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΠΏΠ΅ΡΠΈΠΎΠ΄ Π½Π° Π°ΠΊΡΠΈΠ²Π½Π° ΡΡΡΠ½Π° ΡΠ°Π±ΠΎΡΠ° Ρ Postgres, Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΠΎΡ 2010 Π³ΠΎΠ΄ΠΈΠ½Π°. Π£ΡΡΠ΄ΠΈΡ ΡΠ΅ ΠΊΠΎΠ»ΠΊΠΎ ΠΌΠ°Π»ΠΊΠΎ ΡΠ΅ Π΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠ» Π΅ΠΆΠ΅Π΄Π½Π΅Π²ΠΈΠ΅ΡΠΎ Π½Π° DBA, ΠΊΠΎΠ»ΠΊΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΡΠ΅Π½ ΡΡΡΠ΄ Π²ΡΠ΅ ΠΎΡΠ΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ. Π Π²Π΅Π΄Π½Π°Π³Π° ΡΠΈ ΠΏΠΎΠΌΠΈΡΠ»ΠΈΡ , ΡΠ΅ Π½Π΅ΡΠΎ Π½Π΅ Π΅ Π½Π°ΡΠ΅Π΄, ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ° ΠΏΠΎΠ²Π΅ΡΠ΅.
Π ΡΡΠΉ ΠΊΠ°ΡΠΎ Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° Π±Π΅ΡΠ΅ Π² ΠΎΠ±Π»Π°ΠΊΠ°, ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ Π±ΡΡ Π° Π² ΠΎΠ±Π»Π°ΡΠ½ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ. Π Π²ΡΠΈΡΠΊΠΎ ΡΠΆΠ΅ Π±Π΅ ΡΡΠ½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½ΠΎ. ΠΠ° ΡΠΎΠ²Π° ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ. Π’ΠΎΠ΅ΡΡ, Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π° Π² ΠΈΠ΄Π΅ΡΡΠ°, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ ΡΠ΅Π΄ΠΈΡΠ° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ, Ρ.Π΅. Π½ΡΠΊΠ°ΠΊΠ²Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°, ΠΊΠΎΡΡΠΎ Π΄Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ° ΠΏΠΎΡΡΠΈ Π²ΡΠΈΡΠΊΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π½Π° DBA, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ²Π° Π³ΠΎΠ»ΡΠΌ Π±ΡΠΎΠΉ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ.

Π ΡΠΎΠ·ΠΈ Π΄ΠΎΠΊΠ»Π°Π΄ Π½ΡΠΌΠ° Π΄Π° ΠΈΠΌΠ°:
- βΠ‘ΡΠ΅Π±ΡΡΠ½ΠΈ ΠΊΡΡΡΡΠΌΠΈβ ΠΈ ΠΈΠ·ΠΊΠ°Π·Π²Π°Π½ΠΈΡ ΠΊΠ°ΡΠΎ β ΠΏΠΎΡΡΠ°Π²ΡΠΉΡΠ΅ 8 GB ΠΈΠ»ΠΈ 25 % shared_buffers ΠΈ Π²ΡΠΈΡΠΊΠΎ ΡΠ΅ Π΅ Π½Π°ΡΠ΅Π΄. ΠΠ° shared_buffers ΡΠ΅ ΠΈΠΌΠ° Π½Π΅ ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎ.
- Π₯Π°ΡΠ΄ΠΊΠΎΡΠ½ΠΈ "Π²ΡΡΡΠ΅ΡΠ½ΠΎΡΡΠΈ".

ΠΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΡΠ΅ ΡΠ»ΡΡΠΈ?
- Π©Π΅ ΠΈΠΌΠ° ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈ Π½Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ, ΠΊΠΎΠΈΡΠΎ Π½ΠΈΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°ΠΌΠ΅ ΠΈ ΡΠ°Π·Π²ΠΈΠ²Π°ΠΌΠ΅. Π©Π΅ ΠΈΠΌΠ° Π²ΡΡΠΊΠ°ΠΊΠ²ΠΈ ΠΈΠ΄Π΅ΠΈ, ΠΊΠΎΠΈΡΠΎ Π²ΡΠ·Π½ΠΈΠΊΠ²Π°Ρ ΠΏΠΎ ΠΏΡΡΡ Π½ΠΈ ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎ ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ Π² Open Source, Ρ.Π΅. ΠΎΡΠ½ΠΎΠ²Π°ΡΠ° Π΅ Π² Open Source. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° ΠΈΠΌΠ°ΠΌΠ΅ ΡΠΈΠΊΠ΅ΡΠΈ, Π²ΡΠΈΡΠΊΠΎΡΠΎ Π½ΠΈ ΠΎΠ±ΡΡΠ²Π°Π½Π΅ Π΅ ΠΏΠΎΡΡΠΈ Π² Open Source. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°Π±Π»ΡΠ΄Π°Π²Π°ΡΠ΅ ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΡΠ°Π²ΠΈΠΌ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ°, ΠΊΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΠΈΠΌΠ° Π² ΡΠ»Π΅Π΄Π²Π°ΡΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ Ρ.Π½.
- Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ΅ ΠΈΠΌΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΎΠΏΠΈΡ Π² ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅Π·ΠΈ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈ, ΡΠ΅Π·ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π² ΡΠ΅Π΄ΠΈΡΠ° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ: ΠΎΡ ΠΌΠ°Π»ΠΊΠΈ ΡΡΠ°ΡΡΠ°ΠΏΠΈ Π΄ΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ ΡΠΈΡΠΌΠΈ.

ΠΠ°ΠΊ ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π° Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π°?

ΠΠ° ΠΏΡΡΠ²ΠΎ ΠΌΡΡΡΠΎ, ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° Π·Π°Π΄Π°ΡΠ° Π½Π° DBA, ΠΎΡΠ²Π΅Π½ ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ½ΡΡΠ°Π½ΡΠΈΠΈ, ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅ Π½Π° ΡΠ΅Π·Π΅ΡΠ²Π½ΠΈ ΠΊΠΎΠΏΠΈΡ ΠΈ Ρ.Π½., Π΅ ΠΎΡΠΊΡΠΈΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ»Π°Π±ΠΈ ΠΌΠ΅ΡΡΠ° ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°.

Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π΅ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½ΠΎ ΠΏΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡ Π½Π°ΡΠΈΠ½. ΠΠΈΠ΅ Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π°, Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ Π½Π΅ΡΠΎ, Π»ΠΈΠΏΡΠ²Π°Ρ Π½ΠΈ Π΄Π΅ΡΠ°ΠΉΠ»ΠΈ. ΠΠ°ΠΏΠΎΡΠ²Π°ΠΌΠ΅ Π΄Π° ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°ΠΌΠ΅ ΠΏΠΎ-Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»Π½ΠΎ, ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΡΡΠ½ΠΎ, ΠΈ ΡΠ°Π·Π±ΠΈΡΠ°ΠΌΠ΅ ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° ΠΏΡΠ°Π²ΠΈΠΌ Ρ ΡΠΎΠ²Π° ΠΏΠΎ Π΅Π΄ΠΈΠ½ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ Π½Π°ΡΠΈΠ½.

ΠΠΌΠ° Π΄Π²Π° ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°. Pg_stat_statements β ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π·Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Π½Π΅ Π½Π° Π±Π°Π²Π½ΠΈ Π·Π°ΡΠ²ΠΊΠΈ. Π Π°Π½Π°Π»ΠΈΠ· Π½Π° Π»ΠΎΠ³ΠΎΠ²Π΅ΡΠ΅ Π½Π° Postgres Ρ pgBadger.
ΠΡΠ΅ΠΊΠΈ ΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡΠ΅ ΠΈΠΌΠ° ΡΠ΅ΡΠΈΠΎΠ·Π½ΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΡΠΈ. ΠΡΠΈ ΠΏΡΡΠ²ΠΈΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΡΠΌΠ΅ Π·Π°Π³ΡΠ±ΠΈΠ»ΠΈ Π²ΡΠΈΡΠΊΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ. Π Π°ΠΊΠΎ Π²ΠΈΠ΄ΠΈΠΌ Π³ΡΡΠΏΠΈ SELECT * FROM table where ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° = Π·Π½Π°ΠΊ "?" ΠΈΠ»ΠΈ "$" ΠΎΡ Π²Π΅ΡΡΠΈΡ Postgres 10 Π½Π°ΡΠ°ΡΡΠΊ, Π½Π΅ Π·Π½Π°Π΅ΠΌ β ΡΠΎΠ²Π° Π΅ index scan ΠΈΠ»ΠΈ seq scan. ΠΠ½ΠΎΠ³ΠΎ Π·Π°Π²ΠΈΡΠΈ ΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ°. ΠΠΊΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΡ ΡΡΠ΄ΠΊΠΎ ΡΡΠ΅ΡΠ°Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡ, ΡΠ΅ Π±ΡΠ΄Π΅ index scan. ΠΠΊΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΡ ΡΡΠΎΠΉΠ½ΠΎΡΡ, ΠΊΠΎΡΡΠΎ Π·Π°Π΅ΠΌΠ° 90 % ΠΎΡ ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ°, ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ seq scan, Π·Π°ΡΠΎΡΠΎ Postgres Π·Π½Π°Π΅ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°ΡΠ°. Π ΡΠΎΠ²Π° Π΅ Π³ΠΎΠ»ΡΠΌ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΠΊ Π½Π° pg_stat_statements, ΠΌΠ°ΠΊΠ°Ρ ΡΠ΅ ΡΠ΅ ΠΏΡΠ°Π²ΡΡ ΠΎΠΏΠΈΡΠΈ Π·Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅.
ΠΡΠ½ΠΎΠ²Π½ΠΈΡΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΠΊ Π½Π° Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° Π»ΠΎΠ³ΠΎΠ²Π΅ΡΠ΅ Π΅, ΡΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΠ΅ "log_min_duration_statement = 0", ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ. Π Π·Π° ΡΠΎΠ²Π° ΡΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠΌ ΡΡΡΠΎ. Π‘ΡΠΎΡΠ²Π΅ΡΠ½ΠΎ, Π½Π΅ Π²ΠΈΠΆΠ΄Π°ΡΠ΅ ΡΡΠ»Π°ΡΠ° ΠΊΠ°ΡΡΠΈΠ½Π°. Π Π½ΡΠΊΠ°ΠΊΠ²Π° Π·Π°ΡΠ²ΠΊΠ°, ΠΊΠΎΡΡΠΎ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡΡΠ·Π°, ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΊΠΎΠ½ΡΡΠΌΠΈΡΠ° ΠΎΠ³ΡΠΎΠΌΠ½ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΡΡΡΡΠΈ, Π½ΠΎ Π½ΡΠΌΠ° Π΄Π° Ρ Π²ΠΈΠ΄ΠΈΡΠ΅, Π·Π°ΡΠΎΡΠΎ ΡΡ Π΅ ΠΏΠΎΠ΄ Π²Π°ΡΠΈΡ ΠΏΡΠ°Π³.
ΠΠ°ΠΊ ΡΠ΅ΡΠ°Π²Π°Ρ DBA ΠΎΡΠΊΡΠΈΡΠΈΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ?

ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½ΠΈΠ΅ ΠΎΡΠΊΡΠΈΡ ΠΌΠ΅ Π½ΡΠΊΠ°ΠΊΡΠ² ΠΏΡΠΎΠ±Π»Π΅ΠΌ. ΠΠ°ΠΊΠ²ΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ΅ ΠΏΡΠ°Π²ΠΈ? ΠΠΊΠΎ ΡΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ, ΡΠ΅ ΠΏΡΠ°Π²ΠΈΡΠ΅ Π½Π΅ΡΠΎ Π½Π° Π½ΡΠΊΠ°ΠΊΡΠ² ΠΈΠ½ΡΡΠ°Π½Ρ, ΠΊΠΎΠΉΡΠΎ Π½Π΅ Π΅ Ρ ΡΠ°ΠΊΡΠ² ΡΠ°Π·ΠΌΠ΅Ρ. ΠΠΊΠΎ ΡΡΠ΅ DBA, ΠΈΠΌΠ°ΡΠ΅ staging. Π ΡΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ°ΠΌΠΎ Π΅Π΄ΠΈΠ½. Π ΡΠΎΠΉ Π΅ ΠΈΠ·ΠΎΡΡΠ°Π½Π°Π» Ρ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½ Π³ΠΎΠ΄ΠΈΠ½Π°. Π ΡΠΈ ΠΌΠΈΡΠ»ΠΈΡΠ΅, ΡΠ΅ ΡΠ΅ ΠΎΡΠΈΠ΄Π΅ΡΠ΅ Π½Π° production. Π Π΄ΠΎΡΠΈ ΠΎΠΏΠΈΡΠ½ΠΈΡΠ΅ DBA ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°Ρ ΠΏΠΎΡΠ»Π΅ Π½Π° production, Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°. Π ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° ΡΡΠ·Π΄Π°Π²Π°Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ, ΡΠ²Π΅ΡΡΠ²Π°Ρ ΡΠ΅, ΡΠ΅ ΠΏΠΎΠΌΠ°Π³Π°Ρ, ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ Π³ΠΈ ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°Ρ ΠΈ Π³ΠΈ Π΄Π°Π²Π°Ρ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅, Π·Π° Π΄Π° Π³ΠΈ Π²ΠΊΠ°ΡΠ°Ρ Π² ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. Π’Π°ΠΊΠΎΠ²Π° Π±Π΅Π·ΡΠΌΠΈΠ΅ ΡΠ΅ ΡΠ»ΡΡΠ²Π° ΡΠ΅Π³Π°. Π ΡΠΎΠ²Π° Π΅ Π±Π΅Π΄Π°.

- Π’ΡΠ½ΠΈΠ½Π³ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ.
- ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π½Π°Π±ΠΎΡΠ° ΠΎΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ.
- ΠΡΠΎΠΌΠ΅Π½ΡΠ½Π΅ Π½Π° ΡΠ°ΠΌΠΈΡ SQL-Π·Π°ΠΏΡΠΎΡ (ΡΠΎΠ²Π° Π΅ Π½Π°ΠΉ-ΡΡΡΠ΄Π½ΠΈΡΡ Π½Π°ΡΠΈΠ½).
- ΠΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° ΠΌΠΎΡΠ½ΠΎΡΡΠΈ (Π½Π°ΠΉ-ΠΏΡΠΎΡΡΠΈΡΡ Π½Π°ΡΠΈΠ½ Π² ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΡΠ»ΡΡΠ°ΠΈ).

Π‘ ΡΠ΅Π·ΠΈ Π½Π΅ΡΠ° ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π±ΠΎΡΠ°. ΠΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π² Postgres. ΠΡΠΆΠ½ΠΎ Π΅ Π΄Π° Π·Π½Π°Π΅ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ. ΠΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ Π² Postgres, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΎΡΠΈΡΠ΅ Π½Π° ΡΠ°Π·ΠΈ ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡ. ΠΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π·Π½Π°Π΅, ΠΈ ΡΠΎΡΠ½ΠΎ ΡΠΎΠ²Π° Ρ Π½Π΅ DBA ΡΡΠ·Π΄Π°Π²Π° ΡΡΠ΅ΡΠ°Π½Π΅ΡΠΎ, ΡΠ΅ DBA ΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π²Π°Ρ Ρ ΡΠ΅ΡΠ½Π° ΠΌΠ°Π³ΠΈΡ. Π’ΠΎΠ΅ΡΡ, Π½ΡΠΆΠ½ΠΎ Π΅ Π΄Π° ΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π²Π°ΡΠ΅ ΠΎΠΊΠΎΠ»ΠΎ 10 Π³ΠΎΠ΄ΠΈΠ½ΠΈ, Π·Π° Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΡΠ΅ Π΄Π° ΡΠ°Π·Π±ΠΈΡΠ°ΡΠ΅ Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° Π½ΠΎΡΠΌΠ°Π»Π½ΠΎ.
Π Π°Π· ΡΡΠΌ Π±ΠΎΡΠ΅Ρ Ρ ΡΠ°Π·ΠΈ ΡΠ΅ΡΠ½Π° ΠΌΠ°Π³ΠΈΡ. ΠΡΠΊΠ°ΠΌ Π΄Π° Π½Π°ΠΏΡΠ°Π²Ρ Π²ΡΠΈΡΠΊΠΎ ΡΠ°ΠΊΠ°, ΡΠ΅ Π΄Π° ΠΈΠΌΠ° ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ, Π° Π½Π΅ ΠΈΠ½ΡΡΠΈΡΠΈΡ Π²ΡΠ² Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π°.
ΠΡΠΈΠΌΠ΅ΡΠΈ ΠΎΡ ΠΆΠΈΠ²ΠΎΡΠ°

Π’ΠΎΠ²Π° ΡΡΠΌ Π½Π°Π±Π»ΡΠ΄Π°Π²Π°Π» ΠΌΠΈΠ½ΠΈΠΌΡΠΌ Π² Π΄Π²Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΌΠΎΡ. ΠΡΠ΅ Π΅Π΄Π½Π° ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ Π² Π±Π»ΠΎΠ³Π° Π½ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠΈΡΠ°, ΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° 1 000 Π·Π° default_statistict_target Π΅ Π΄ΠΎΠ±ΡΠ°. ΠΠΎΠ±ΡΠ΅, Π½Π΅ΠΊΠ° ΠΎΠΏΠΈΡΠ°ΠΌΠ΅ Π² production.

Π ΡΡΠΊ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Π½Π°ΡΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π²Π΅ Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈ Ρ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, Π·Π° ΠΊΠΎΠΈΡΠΎ Π³ΠΎΠ²ΠΎΡΠΈΠΌ Π΄Π½Π΅Ρ, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΡΠ°Π²Π½ΠΈΠΌ ΠΊΠ°ΠΊΠ²ΠΎ Π΅ Π±ΠΈΠ»ΠΎ ΠΈ ΠΊΠ°ΠΊΠ²ΠΎ ΡΡΠ°Π½Π°.

Π Π·Π° ΡΠΎΠ²Π° ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ. Π‘ΡΡΡΠΎΠΈ ΡΠ΅ ΠΎΡ ΡΠ΅ΡΠΈΡΠΈ ΡΠ°ΡΡΠΈ.
- ΠΡΡΠ²Π°ΡΠ° β Π΅ ΡΡΠ΅Π΄Π°ΡΠ°. ΠΡΠΆΠ΄Π°Π΅ΠΌ ΡΠ΅ ΠΎΡ Hardware. Π ΠΊΠΎΠ³Π°ΡΠΎ ΠΎΡΠΈΠ΄Π° Π² Π½ΡΠΊΠΎΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ ΠΈ ΡΠΊΠ»ΡΡΠ° Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ, ΠΊΠ°Π·Π²Π°ΠΌ, ΡΠ΅ ΠΈΡΠΊΠ°ΠΌ Π΄Π° ΠΌΠΈ Π΄Π°Π΄Π°Ρ ΡΡΡΠΈΡ hardware ΠΊΠ°ΡΠΎ Π½Π° production. ΠΠ° Π²ΡΠ΅ΠΊΠΈ ΠΎΡ Π²Π°ΡΠΈΡΠ΅ ΠΌΠ°ΡΡΠ΅ΡΠΈ ΠΌΠΈ Π΅ Π½ΡΠΆΠ΅Π½ ΠΏΠΎΠ½Π΅ Π΅Π΄ΠΈΠ½ ΡΠ°ΠΊΡΠ² hardware. ΠΠ»ΠΈ ΡΠΎΠ²Π° Π΅ Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π° Π² Amazon ΠΈΠ»ΠΈ Google, ΠΈΠ»ΠΈ ΠΌΠΈ ΡΡΡΠ±Π²Π° ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊΡΠ² hardware. Π’ΠΎΠ΅ΡΡ, ΠΈΡΠΊΠ°ΠΌ Π΄Π° Π²ΡΠ·ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π° ΡΡΠ΅Π΄Π°ΡΠ°. Π Π² ΠΏΠΎΠ½ΡΡΠΈΠ΅ΡΠΎ ΡΡΠ΅Π΄Π° Π²ΠΊΠ»ΡΡΠ²Π°ΠΌΠ΅ Π³Π»Π°Π²Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° Postgres.
- ΠΡΠΎΡΠ°ΡΠ° ΡΠ°ΡΡ β Π΅ ΠΎΠ±Π΅ΠΊΡΡΡ Π½Π° Π½Π°ΡΠΈΡΠ΅ ΠΈΠ·ΡΠ»Π΅Π΄Π²Π°Π½ΠΈΡ. Π’ΠΎΠ²Π° Π΅ Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ. ΠΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½Π° ΠΏΠΎ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π½Π°ΡΠΈΠ½Π°. Π©Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ° ΠΊΠ°ΠΊ.
- Π’ΡΠ΅ΡΠ°ΡΠ° ΡΠ°ΡΡ β Π΅ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ. Π’ΠΎΠ²Π° Π΅ Π½Π°ΠΉ-ΡΡΡΠ΄Π½ΠΈΡΡ ΠΌΠΎΠΌΠ΅Π½Ρ.
- Π ΡΠ΅ΡΠ²ΡΡΡΠ°ΡΠ° ΡΠ°ΡΡ β ΡΠΎΠ²Π° Π΅, ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΠΌΠ΅, Ρ.Π΅. Ρ ΠΊΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΡΡΠ°Π²Π½ΡΠ²Π°ΠΌΠ΅. ΠΠ° ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠΌ Π΅Π΄ΠΈΠ½ ΠΈΠ»ΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ°, ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΈ Ρ.Π½.

ΠΠ°ΠΏΠΎΡΠ²Π°ΠΌΠ΅ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ. ΠΡΠΎ pg_stat_statements. ΠΡΠ»ΡΠ²ΠΎ β ΠΊΠ°ΠΊΠ²ΠΎ Π±Π΅ΡΠ΅. ΠΡΠ΄ΡΡΠ½ΠΎ β ΠΊΠ°ΠΊΠ²ΠΎ ΡΡΠ°Π½Π°.

ΠΡΠ»ΡΠ²ΠΎ default_statistics_target = 100, ΠΎΡΠ΄ΡΡΠ½ΠΎ = 1 000. ΠΠΈΠΆΠ΄Π°ΠΌΠ΅, ΡΠ΅ ΡΠΎΠ²Π° Π½ΠΈ Π΅ ΠΏΠΎΠΌΠΎΠ³Π½Π°Π»ΠΎ. ΠΠ° 8 % Π²ΡΠΈΡΠΊΠΎ ΡΡΠ°Π½Π° ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅.

ΠΠΎ Π°ΠΊΠΎ ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΠΌ Π½Π°Π΄ΠΎΠ»Ρ, ΡΠ°ΠΌ ΡΠ΅ Π²ΠΈΠ΄ΠΈΠΌ Π³ΡΡΠΏΠΈ Π·Π°ΡΠ²ΠΊΠΈ ΠΎΡ pgBadger ΠΈΠ»ΠΈ pg_stat_statements. ΠΠΌΠ° Π΄Π²Π° Π²Π°ΡΠΈΠ°Π½ΡΠ°. Π©Π΅ Π²ΠΈΠ΄ΠΈΠΌ, ΡΠ΅ Π½ΡΠΊΠΎΡ Π·Π°ΡΠ²ΠΊΠ° Π΅ ΡΠΏΠ°Π΄Π½Π°Π»Π° Ρ 88 %. Π ΡΡΠΊ Π²Π΅ΡΠ΅ Π΅ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠ½ΠΈΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄. ΠΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΊΠΎΠΏΠ°Π΅ΠΌ ΠΏΠΎ-Π΄ΡΠ»Π±ΠΎΠΊΠΎ, Π·Π°ΡΠΎΡΠΎ Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ Π·Π°ΡΠΎ Π΅ ΡΠΏΠ°Π΄Π½Π°Π»Π°. Π’ΡΡΠ±Π²Π° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΊΠ°ΠΊΠ²ΠΎ Π΅ Π±ΠΈΠ»ΠΎ ΡΡΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°ΡΠ°. ΠΠ°ΡΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ Π±Π°ΠΊΠ΅ΡΠΈ Π² ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°ΡΠ° Π²ΠΎΠ΄ΡΡ Π΄ΠΎ ΠΏΠΎ-Π»ΠΎΡ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ.

Π ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π½Π΅ ΠΊΠΎΠΏΠ°Π΅ΠΌ, Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ βALTER TABLE β¦ ALTER COLUMNβ ΠΈ Π΄Π° Π²ΡΡΠ½Π΅ΠΌ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ 100 Π±Π°ΠΊΠ΅ΡΠ° Π² ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°ΡΠ° Π½Π° ΡΠ°Π·ΠΈ ΠΊΠΎΠ»ΠΎΠ½Π°. Π ΡΠ»Π΅Π΄ ΡΠΎΠ²Π°, Ρ ΠΎΡΠ΅ Π΅Π΄ΠΈΠ½ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΠ΅ ΡΠ²Π΅ΡΠΈΠΌ, ΡΠ΅ ΡΠΎΠ·ΠΈ ΠΏΠ°ΡΡ Π΅ ΠΏΠΎΠΌΠΎΠ³Π½Π°Π». ΠΡΠΈΡΠΊΠΎ. ΠΡΠΎ ΡΠΎΠ²Π° Π΅ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠ½ΠΈΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, ΠΊΠΎΠΉΡΠΎ Π½ΠΈ ΠΏΠΎΠΌΠ°Π³Π° Π΄Π° Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ ΠΊΠ°ΡΡΠΈΠ½Π°ΡΠ° ΠΈ Π΄Π° Π²Π·Π΅ΠΌΠ°ΠΌΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° Π΄Π°Π½Π½ΠΈ, Π° Π½Π΅ Π½Π° ΠΈΠ½ΡΡΠΈΡΠΈΡ.


ΠΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΎΡ Π΄ΡΡΠ³ΠΈ ΠΎΠ±Π»Π°ΡΡΠΈ. Π ΡΠ΅ΡΡΠΎΠ²Π΅ΡΠ΅ ΠΈΠΌΠ° CI ΡΠ΅ΡΡΠΎΠ²Π΅ ΠΎΡ ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ΄ΠΈΠ½ΠΈ. ΠΠΈΡΠΎ Π΅Π΄ΠΈΠ½ ΠΏΡΠΎΠ΅ΠΊΡ Π² ΡΡΠ΅Π·Π²Π° ΡΠΌΠ° Π½Π΅ Π±ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Π» Π±Π΅Π· Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΠ΅ΡΡΠΎΠ²Π΅.

Π Π΄ΡΡΠ³ΠΈ ΠΈΠ½Π΄ΡΡΡΡΠΈΠΈ: Π²θͺη©Ί, Π² Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»ΠΎΡΡΡΠΎΠ΅Π½Π΅ΡΠΎ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ΡΡΠ²Π°ΠΌΠ΅ Π°Π΅ΡΠΎΠ΄ΠΈΠ½Π°ΠΌΠΈΠΊΠ°, ΡΡΡΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π΄Π° ΠΏΡΠ°Π²ΠΈΠΌ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈ. ΠΡΠΌΠ° Π΄Π° ΠΏΡΡΠΊΠ°ΠΌΠ΅ Π½Π΅ΡΠΎ Π²Π΅Π΄Π½Π°Π³Π° Π² ΠΊΠΎΡΠΌΠΎΡΠ° ΠΈΠ»ΠΈ Π΄Π° ΠΈΠ·ΠΊΠ°ΡΠ°ΠΌΠ΅ ΠΊΠΎΠ»Π° Π½Π° ΠΏΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠΌΠ° Π°Π΅ΡΠΎΠ΄ΠΈΠ½Π°ΠΌΠΈΡΠ½Π° ΡΡΡΠ±Π°.
ΠΡ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡΡΠ° Π½Π° Π΄ΡΡΠ³ΠΈ ΠΈΠ½Π΄ΡΡΡΡΠΈΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΠΈΠ·Π²ΠΎΠ΄ΠΈ.

ΠΡΡΠ²ΠΎ, ΠΈΠΌΠ°ΠΌΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½Π° ΡΡΠ΅Π΄Π°. Π’Ρ Π΅ Π±Π»ΠΈΠ·ΠΊΠ° Π΄ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡ, Π½ΠΎ Π½Π΅ ΡΡΠ²ΡΠ΅ΠΌ. ΠΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΠΉ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ° Π΅, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ Π΅Π²ΡΠΈΠ½Π°, ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΠΌΠ° ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½Π°. Π ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠΌΠ°ΠΌΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π° Π·Π° ΠΏΡΠΎΠ²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π΄Π΅ΡΠ°ΠΉΠ»Π΅Π½ Π°Π½Π°Π»ΠΈΠ·.
ΠΠ΅ΡΠΎΡΡΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π·Π°ΠΏΡΡΡΠΈΠ»ΠΈ ΡΠ°ΠΌΠΎΠ»Π΅Ρ ΠΈ Π»Π΅ΡΠΈΠΌ, Ρ Π½Π°Ρ ΠΌΠ΅Π½ΡΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΌΠΈΠ»Π»ΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠΈ ΠΊΡΡΠ»Π°, ΡΠ΅ΠΌ Π² Π°ΡΡΠΎΠ΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡΡΠ±Π΅. Π£ Π½Π°Ρ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π»Ρ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ ΡΠ΅Π±Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΡΠΆΠ΅Π»ΠΎΠ³ΠΎ, ΡΡΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π½Π° ΡΠ°ΠΌΠΎΠ»Π΅Ρ Π² Π²ΠΎΠ·Π΄ΡΡ Π΅. Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΈ Ρ Postgres. Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΏΠΎΠ»Π½ΠΎΠ΅ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ². Π ΠΌΡ ΡΡΠΎΠ³ΠΎ Π½Π΅ Ρ ΠΎΡΠΈΠΌ Π΄Π΅Π»Π°ΡΡ Π½Π° production. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΌΡ Π΄Π°ΠΆΠ΅ ΡΠ΄Π΅Π»Π°Π΅ΠΌ ΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ auto_explain Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΏΠ»Π°Π½Π°Ρ .
ΠΠ°ΠΊ Ρ ΡΠΆΠ΅ ΡΠΊΠ°Π·Π°Π», Π²ΡΡΠΎΠΊΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΌΡ Π½Π°ΠΆΠ°Π»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΡ ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠΈΠ»ΠΈ. Π’Π°ΠΊ ΡΡΠΎ ΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ, ΡΡΠΎΠ±Ρ Π±ΡΠ»ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΏΠΎΡΠΎΠΊΠ΅.
Nancy CLI β ΡΡΠΎ ΠΎΡΠ½ΠΎΠ²Π° Β«Π»Π°Π±ΠΎΡΠ°ΡΠΎΡΠΈΠΈ ΠΠΒ»

Π Π²ΠΎΡ, ΠΌΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΡΠ°ΠΊΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. Π’ΠΎ Π΅ΡΡΡ, Ρ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π» ΠΎΠ± ΡΡΠΈΡ ΠΈΠ΄Π΅ΡΡ Π΅ΡΠ΅ Π² ΠΈΡΠ½Π΅, ΠΏΠΎΡΡΠΈ Π³ΠΎΠ΄ Π½Π°Π·Π°Π΄. Π£ Π½Π°Ρ ΡΠΆΠ΅ Π΅ΡΡΡ Π² Open Source ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠ°Ρ Nancy CLI. ΠΡΠΎ ΠΎΡΠ½ΠΎΠ²Π° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π»Π°Π±ΠΎΡΠ°ΡΠΎΡΠΈΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ .

β ΠΡΠΎ Π² Open Source, Π½Π° Gitlab. ΠΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΡ, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ. Π― ΠΎΡΡΠ°Π²ΠΈΠ» ΡΡΡΠ»ΠΊΡ Π² ΡΠ»Π°ΠΉΠ΄Π°Ρ . ΠΠ° Π½Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ»ΠΈΠΊΠ½ΡΡΡ ΠΈ ΠΏΠΎΠΏΠ°ΡΡΡ ΡΡΠ΄Π°. ΠΏΠΎ Π²ΡΠ΅ΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌ.
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΅ΡΠ΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΡΠ°Π΄ΠΈΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. Π’Π°ΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ΄Π΅ΠΉ. ΠΠΎ ΡΡΠΎ ΡΠΆΠ΅ ΡΠΎ, ΡΡΠΎ ΠΌΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ. Π ΠΊΠΎΠ³Π΄Π° Ρ Π½Π°Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΈΠ΄Π΅Ρ β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ ΠΏΡΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ 40 000 000 ΡΡΡΠΎΠΊ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΡΠΏΠΈΡΠ°Π΅ΠΌΡΡ Π² IO, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΈ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΠΎ Π½Π° Ρ ΠΎΠ΄Ρ. Π’ΠΎ Π΅ΡΡΡ, ΠΌΡ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΠΌ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΡ Π²Π½ΠΎΡΠΈΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈ ΡΠΌΠΎΡΡΠΈΠΌ, ΡΡΠΎ Π² ΠΈΡΠΎΠ³Π΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ. Π ΡΡΠΎ Π½Π΅ Π½Π° production. ΠΡΠΎ ΠΈ Π΅ΡΡΡ ΡΡΡΡ ΠΈΠ΄Π΅ΠΈ.

ΠΠ΄Π΅ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ? ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ, ΡΠΎ Π΅ΡΡΡ, ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ Π³Π΄Π΅ ΡΠ³ΠΎΠ΄Π½ΠΎ, Π΄Π°ΠΆΠ΅ Π½Π° MacBook. ΠΡΠΆΠ΅Π½ Docker, ΠΏΠΎΠ΅Ρ Π°Π»ΠΈ. Π Π²ΡΡ. ΠΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ Π² ΠΊΠ°ΠΊΠΎΠΌ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΈΠ½ΡΡΠ°Π½ΡΠ΅ Π½Π° ΠΆΠ΅Π»Π΅Π·ΠΊΠ΅ ΠΈΠ»ΠΈ Π² Π²ΠΈΡΡΡΠ°Π»ΠΊΠ΅, Π³Π΄Π΅ ΡΠ³ΠΎΠ΄Π½ΠΎ.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ²Π° ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° Π΄ΠΈΡΡΠ°Π½ΡΠΈΠΎΠ½Π½ΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π² Amazon Π² EC2 Instance, Π² ΡΠΏΠΎΡ ΠΏΠ»Π°Π½ΠΎΠ²Π΅ΡΠ΅. Π’ΠΎΠ²Π° Π΅ Π½Π°ΠΈΡΡΠΈΠ½Π° ΡΡΡΠ°Ρ ΠΎΡΠ½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΠ΅ΡΠ° ΠΏΡΠΎΠ²Π΅Π΄ΠΎΡ ΠΌΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ 500 Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈ Π½Π° i3 instance, Π·Π°ΠΏΠΎΡΠ²Π°ΠΉΠΊΠΈ ΠΎΡ Π½Π°ΠΉ-ΠΌΠ»Π°Π΄ΡΠΈΡ Π΄ΠΎ i3-16-xlarge. Π Π·Π° 500 Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ° ΠΈΠ·ΡΠ°Π·Ρ ΠΎΠ΄Π²Π°Ρ ΠΌΠ΅ 64 Π΄ΠΎΠ»Π°ΡΠ°. ΠΡΠ΅ΠΊΠΈ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ ΡΡΠ°Π΅ΡΠ΅ 15 ΠΌΠΈΠ½ΡΡΠΈ. Π’ΠΎΠ΅ΡΡ, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΏΠΎΡ ΠΏΠ»Π°Π½ΠΎΠ²Π΅ΡΠ΅, ΡΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π΅Π²ΡΠΈΠ½ΠΎ β 70% ΠΎΡΡΡΡΠΏΠΊΠ°, ΡΠ°ΠΊΡΡΠ²Π°Π½Π΅ Π½Π° Amazon Π½Π° ΡΠ΅ΠΊΡΠ½Π΄Π°. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΠ²Π΅ΠΆΠ΄Π°ΡΠ΅ ΠΈΡΡΠΈΠ½ΡΠΊΠΈ ΠΈΠ·ΡΠ»Π΅Π΄Π²Π°Π½ΠΈΡ.

ΠΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΡΠ΅ ΡΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΈ Π²Π΅ΡΡΠΈΠΈ Π½Π° Postgres. ΠΠ΅ Π΅ ΡΠΎΠ»ΠΊΠΎΠ²Π° ΡΠ»ΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ Π°Π΄Π°ΠΏΡΠΈΡΠ°Ρ Π½ΡΠΊΠΎΠΈ ΡΡΠ°ΡΠΈ ΠΈ Π½ΠΎΠ²Π°ΡΠ° 12-Π° Π²Π΅ΡΡΠΈΡ ΡΡΡΠΎ.

ΠΠΎΠΆΠ΅ΠΌ Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΠΌ ΠΎΠ±Π΅ΠΊΡ ΠΏΠΎ ΡΡΠΈ Π½Π°ΡΠΈΠ½Π°. Π’ΠΎΠ²Π° ΡΠ°:
- Dump/sql ΡΠ°ΠΉΠ».
- ΠΡΠ½ΠΎΠ²Π½ΠΈΡΡ Π½Π°ΡΠΈΠ½ Π΅ ΠΊΠ»ΠΎΠ½ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° PGDATA. ΠΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ΅ Π²Π·ΠΈΠΌΠ° ΠΎΡ Π±Π΅ΠΊΡΠΏ ΡΡΡΠ²ΡΡΠ°. ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ Π½ΠΎΡΠΌΠ°Π»Π½ΠΈ Π±ΠΈΠ½Π°ΡΠ½ΠΈ Π±Π΅ΠΊΡΠΏΠΈ, ΠΎΡΡΠ°ΠΌ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΊΠ»ΠΎΠ½ΠΎΠ²Π΅. ΠΠΊΠΎ ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π°ΡΠ΅ Ρ ΠΎΠ±Π»Π°ΡΠΈ, ΡΠΎ ΠΎΠ±Π»Π°ΡΠ½Π°ΡΠ° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ, ΠΊΠ°ΡΠΎ Amazon ΠΈ Google, ΡΠ΅ ΡΠ΅ ΠΏΠΎΠ³ΡΠΈΠΆΠΈ Π·Π° ΡΠΎΠ²Π°. Π’ΠΎΠ²Π° Π΅ Π½Π°ΠΉ-ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΡ Π½Π°ΡΠΈΠ½ Π·Π° ΠΊΠ»ΠΎΠ½ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅Π°Π»Π΅Π½ production. ΠΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½ ΡΠ°Π·Π²ΠΈΠ²Π°ΠΌΠ΅.
- ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΡΡ Π½Π°ΡΠΈΠ½ Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π·Π° ΠΈΠ·ΡΠ»Π΅Π΄Π²Π°Π½ΠΈΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠΈ Π½Π΅ΡΠΎ Π² Postgres. Π’ΠΎΠ²Π° Π΅ pgbench. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° pgbench. Π’ΠΎΠ²Π° Π΅ ΠΏΡΠΎΡΡΠΎ Π΅Π΄Π½Π° ΠΎΠΏΡΠΈΡ βdb-pgbenchβ. ΠΠ°Π·Π²Π°ΡΠ΅ ΠΌΡ ΠΊΠ°ΠΊΡΠ² ΠΌΠ°ΡΠ°Π±. Π Π²ΡΠΈΡΠΊΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΎ Π² ΠΎΠ±Π»Π°ΠΊΠ°, ΠΊΠ°ΠΊΡΠΎ Π΅ ΠΏΠΎΡΠΎΡΠ΅Π½ΠΎ.

Π Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ:
- ΠΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΠΌΠ΅ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ Π² Π΅Π΄ΠΈΠ½ ΠΏΠΎΡΠΎΠΊ SQL. Π’ΠΎΠ²Π° Π΅ Π½Π°ΠΉ-ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΠΈΡΡ Π½Π°ΡΠΈΠ½.
- ΠΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΠΈΠΌΡΠ»ΠΈΡΠ°ΠΌΠ΅ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅. Π ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π³ΠΎ Π΅ΠΌΡΠ»ΠΈΡΠ°ΠΌΠ΅ ΠΏΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡ Π½Π°ΡΠΈΠ½. ΠΡΠΆΠ΄Π°Π΅ΠΌ ΡΠ΅ ΠΎΡ ΡΡΠ±ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π²ΡΠΈΡΠΊΠΈ Π»ΠΎΠ³ΠΎΠ²Π΅. Π ΡΠΎΠ²Π° Π΅ Π±ΠΎΠ»Π΅Π·Π½Π΅Π½ΠΎ. Π©Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ° Π·Π°ΡΠΎ. Π Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° pgreplay, ΠΊΠΎΠΉΡΠΎ Π΅ Π²Π³ΡΠ°Π΄Π΅Π½ Π² Nancy, Π³ΠΎ Π²ΡΠ·ΠΏΡΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π°ΠΌΠ΅.
- ΠΠ»ΠΈ Π΄ΡΡΠ³ Π²Π°ΡΠΈΠ°Π½Ρ. Π’Π°ΠΊΠ° Π½Π°ΡΠ΅ΡΠ΅Π½ΠΎΡΠΎ ΠΊΡΠ°ΡΡΠΎΠ²ΠΎ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅, ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠ°Π²ΠΈΠΌ Ρ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΈ ΡΡΠΈΠ»ΠΈΡ. ΠΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΉΠΊΠΈ ΡΠ΅ΠΊΡΡΠΎΡΠΎ Π½ΠΈ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΈΠ·Π²Π°ΠΆΠ΄Π°ΠΌΠ΅ Π²ΠΎΠ΄Π΅ΡΠΈΡΠ΅ Π³ΡΡΠΏΠΈ Π·Π°ΡΠ²ΠΊΠΈ. Π Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° pgbench ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π΅ΠΌΡΠ»ΠΈΡΠ°ΠΌΠ΅ ΡΠΎΠ²Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ Π² Π»Π°Π±ΠΎΡΠ°ΡΠΎΡΠΈΡ.

- ΠΠ»ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ Π½ΡΠΊΠ°ΠΊΡΠ² SQL, Ρ.Π΅. ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΠΌΠ΅ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ, ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡ, ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΠΌΠ΅ ANALYZE. Π Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊΠ²ΠΎ Π΅ Π±ΠΈΠ»ΠΎ ΠΏΡΠ΅Π΄ΠΈ Π²Π°ΠΊΡΡΠΌΠ° ΠΈ ΡΠ»Π΅Π΄ Π²Π°ΠΊΡΡΠΌΠ°. ΠΡΡΡΠ½ΠΎΡΡ, Π²ΡΠ΅ΠΊΠΈ SQL.
- ΠΠ»ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΌΠ΅ Π΅Π΄ΠΈΠ½ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ°. ΠΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΠΎΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 100 ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ Π² Amazon Π·Π° Π½Π°ΡΠ°ΡΠ° ΡΠ΅ΡΠ°Π±Π°ΠΉΡΠ½Π° Π±Π°Π·Π°. Π ΡΠ»Π΅Π΄ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ°ΡΠ° ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ. ΠΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ, ΡΠ΅ΡΠ°Π±Π°ΠΉΡΠ½Π°ΡΠ° Π±Π°Π·Π° ΡΠ΅ ΡΠ΅ ΡΠ°Π·Π³ΡΡΡΠ° Π·Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ°ΡΠ°. ΠΠΎ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° ΠΈΠΌΠ° ΠΏΠ°Ρ, ΠΏΡΠΈ ΠΊΠΎΠΉΡΠΎ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½Π° ΡΠ΅ΡΠΈΡ, Ρ.Π΅. ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ Π½Π° Π΅Π΄ΠΈΠ½ ΠΈ ΡΡΡ ΡΡΡΠ²ΡΡ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΡΡΠ°ΡΠ° pgdata ΠΈ Π΄Π° ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ. Postgres ΡΠ΅ ΡΠ΅ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°, ΠΊΠ΅ΡΠΎΠ²Π΅ΡΠ΅ ΡΠ΅ ΡΠ΅ Π½ΡΠ»ΠΈΡΠ°Ρ. Π ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°Π»ΠΈΠ²Π°ΡΠ΅ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅.

- ΠΠΎΡΡΡΠΏΠ²Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ, Π² ΠΊΠΎΡΡΠΎ ΠΈΠΌΠ° ΠΊΡΠΏΡΠΈΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, Π·Π°ΠΏΠΎΡΠ²Π°ΠΉΠΊΠΈ ΠΎΡ ΠΌΠΎΠΌΠ΅Π½ΡΠ½ΠΈ ΡΠ½ΠΈΠΌΠΊΠΈ pgstat***. Π ΡΠ°ΠΌ Π½Π°ΠΉ-ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΡΠΎ β ΡΠΎΠ²Π° ΡΠ° pg_stat_statements, pg_stat_cache. Π’ΠΎΠ²Π° ΡΠ° Π΄Π²Π΅ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Ρ Π·Π°ΡΠ²ΠΊΠΈΡΠ΅. Π pg_stat_bgwriter Π²ΠΊΠ»ΡΡΠ²Π° Π½Π΅ ΡΠ°ΠΌΠΎ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° pgwriter, Π° ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΠ΅ΠΊΠΏΠΎΠΉΠ½ΡΠΈΡΠ΅ ΠΈ Π·Π° Π½Π°ΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΠΉΡΠΎ ΡΠ°ΠΌΠΈΡΠ΅ Π±Π΅ΠΊΠ΅Π½Π΄ΠΈ ΠΈΠ·Ρ Π²ΡΡΠ»ΡΡ ΠΌΡΡΡΠ½ΠΈ Π±ΡΡΠ΅ΡΠΈ. Π Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ Π΄Π° ΡΠ΅ Π²ΠΈΠ΄ΠΈ Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π°ΡΠΎ Π½Π°ΡΡΡΠΎΠΉΠ²Π°ΠΌΠ΅ shared_buffers, Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠΎΠ»ΠΊΠΎ ΠΎΡ ΡΡΡ Π½ΡΠΊΠΎΠΉ Π΅ ΠΈΠ·Ρ Π²ΡΡΠ»ΠΈΠ».
- ΠΠΎΡΡΡΠΏΠ²Π°Ρ ΡΡΡΠΎ ΠΈ Π»ΠΎΠ³ΠΎΠ²Π΅ ΠΎΡ Postgres. ΠΠ²Π° Π»ΠΎΠ³Π° β Π»ΠΎΠ³ Π·Π° ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° ΠΈ Π»ΠΎΠ³ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅.
- ΠΡΠ½ΠΎΡΠΈΡΠ΅Π»Π½ΠΎ Π½ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΡ β FlameGraphs.
- Π‘ΡΡΠΎ ΡΠ°ΠΊΠ°, Π°ΠΊΠΎ ΡΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π»ΠΈ pgreplay ΠΈΠ»ΠΈ pgbench Π²Π°ΡΠΈΠ°Π½ΡΠΈ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅, ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π½ΠΈΡ ΠΈΠΌ ΠΈΠ·Ρ ΠΎΠ΄. Π ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ Π»Π°ΡΠ΅Π½ΡΠ½ΠΎΡΡΡΠ° ΠΈ TPS. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ ΠΊΠ°ΠΊ ΡΠ΅ ΡΠ° Π³ΠΎ Π²ΠΈΠΆΠ΄Π°Π»ΠΈ.
- ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°.
- ΠΡΠ½ΠΎΠ²Π½ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π° CPU ΠΈ IO. Π’ΠΎΠ²Π° Π΅ ΠΏΠΎΠ²Π΅ΡΠ΅ Π·Π° EC2 ΠΈΠ½ΡΡΠ°Π½ΡΠΈΠΈ Π² Amazon, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° Π·Π°Π΄Π΅ΠΉΡΡΠ²Π°ΡΠ΅ 100 ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΈ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΠΈ ΠΈ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ 100 ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΡΠΎΠ³ΠΎΠ½ΠΎΠ²Π΅, ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ 10 000 Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°. Π ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΡΠ²Π΅ΡΠΈΡΠ΅, ΡΠ΅ Π½Π΅ ΡΡΠ΅ ΠΏΠΎΠΏΠ°Π΄Π½Π°Π»ΠΈ Π½Π° ΠΏΠΎΠ²ΡΠ΅Π΄Π΅Π½Π° ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡ, ΠΊΠΎΡΡΠΎ Π²Π΅ΡΠ΅ Π½ΡΠΊΠΎΠΉ ΠΏΡΠΈΡΠ΅ΡΠ½ΡΠ²Π°. ΠΠ° ΡΠ°Π·ΠΈ ΠΌΠ°ΡΠΈΠ½Π° Π΄ΡΡΠ³ΠΈΡΠ΅ Π°ΠΊΡΠΈΠ²Π½ΠΈΡΡΡΠ°Ρ ΠΈ ΠΎΡΡΠ°Π²Π°Ρ ΠΌΠ°Π»ΠΊΠΎ ΡΠ΅ΡΡΡΡΠΈ Π·Π° Π²Π°Ρ. Π’Π°ΠΊΠΈΠ²Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ Π΅ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅ Π΄Π° Π³ΠΈ ΠΎΡΡ Π²ΡΡΠ»ΠΈΡΠ΅. ΠΠΌΠ΅Π½Π½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° sysbench ΠΎΡ ΠΠ»Π΅ΠΊΡΠ΅ΠΉ ΠΠΎΠΏΠΈΡΠΎΠ² ΠΏΡΠ°Π²ΠΈΠΌ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΊΡΠ°ΡΠΊΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΏΠΎΡΡΡΠΏΡΡ ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΠ°Π²Π½ΠΈΡΠ΅ Ρ Π΄ΡΡΠ³ΠΈΡΠ΅, Ρ.Π΅. ΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ ΠΊΠ°ΠΊ ΡΠ΅ Π΄ΡΡΠΆΠΈ CPU ΠΈ ΠΊΠ°ΠΊ IO.

ΠΠ°ΠΊΠ²ΠΈ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ° Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ?

ΠΠ° ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΠ΅ ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΠΏΠΎΠ²ΡΠ°ΡΡΠΌΠ΅ ΡΠ΅Π°Π»Π½ΠΎ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π»ΠΎΠ³ΠΎΠ²Π΅. Π§ΡΠ΄Π΅ΡΠ½Π° ΠΈΠ΄Π΅Ρ, Π°ΠΊΠΎ ΡΠΎΠ²Π° Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Π½Π° Open Source pgreplay. ΠΠΈΠ΅ Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅. ΠΠΎ, Π·Π° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π΄ΠΎΠ±ΡΠ΅, ΡΡΡΠ±Π²Π° Π΄Π° Π²ΠΊΠ»ΡΡΠΈΡΠ΅ ΠΏΡΠ»Π½ΠΎ Π»ΠΎΠ³ΠΈΡΠ°Π½Π΅ Π½Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π²ΠΈ ΠΌΠ°ΡΠΊΠΈ.
ΠΠΌΠ° Π½ΡΠΊΠΎΠΈ ΡΡΠ»ΠΎΠΆΠ½Π΅Π½ΠΈΡ ΠΎΡΠ½ΠΎΡΠ½ΠΎ duration ΠΈ timestamp. Π©Π΅ ΠΏΡΠΎΠΏΡΡΠ½Π΅ΠΌ ΡΡΠ»Π°ΡΠ° ΡΠ°Π·ΠΈ ΠΊΡΡ Π½Ρ. ΠΡΠ½ΠΎΠ²Π½ΠΈΡΡ Π²ΡΠΏΡΠΎΡ Π΅ β ΠΌΠΎΠΆΠ΅ΡΠ΅ Π»ΠΈ Π΄Π° ΡΠΈ Π³ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΠ΅ ΠΈΠ»ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅?

ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ Π΅, ΡΠ΅ ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π΅ Π΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ. Π’ΡΡΠ±Π²Π° ΠΏΡΡΠ²ΠΎ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ ΠΊΠ°ΠΊΡΠ² ΠΏΠΎΡΠΎΠΊ ΡΠ΅ ΡΠ΅ Π·Π°ΠΏΠΈΡΠ²Π° Π² Π»ΠΎΠ³Π°. ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ pg_stat_statements, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ ΠΊΠΎΠ»ΠΊΠΎ Π±Π°ΠΉΡΠ° ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ ΡΠ΅ ΡΠ΅ Π·Π°ΠΏΠΈΡΠ²Π°Ρ Π² ΡΠ΅ΠΊΡΠ½Π΄Π° Ρ ΡΠΎΠ·ΠΈ Π·Π°ΠΏΠΈΡ (Π»ΠΈΠ½ΠΊΡΡ ΡΠ΅ Π±ΡΠ΄Π΅ Π½Π°Π»ΠΈΡΠ΅Π½ Π² ΡΠ»Π°ΠΉΠ΄ΠΎΠ²Π΅ΡΠ΅).
ΠΠΈΠ΅ Π½Π°Π±Π»ΡΠ΄Π°Π²Π°ΠΌΠ΅ Π΄ΡΠ»ΠΆΠΈΠ½Π°ΡΠ° Π½Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ. ΠΡΠ΅Π½Π΅Π±ΡΠ΅Π³Π²Π°ΠΌΠ΅ ΡΠ°ΠΊΡΠ°, ΡΠ΅ ΡΠ°ΠΌ Π½ΡΠΌΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ, Π½ΠΎ Π·Π½Π°Π΅ΠΌ Π΄ΡΠ»ΠΆΠΈΠ½Π°ΡΠ° Π½Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ ΠΈ Π·Π½Π°Π΅ΠΌ ΠΊΠΎΠ»ΠΊΠΎ ΡΠ΅ΡΡΠΎ ΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° Π² ΡΠ΅ΠΊΡΠ½Π΄Π°. ΠΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡΠ΅ΡΠ΅Π½ΠΈΠΌ ΠΊΠΎΠ»ΠΊΠΎ Π±Π°ΠΉΡΠ° ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°. ΠΠΎΠΆΠ΅ΠΌ Π΄Π° Π³ΡΠ΅ΡΠΈΠΌ Π΄Π²Π° ΠΏΡΡΠΈ, Π½ΠΎ ΠΏΠΎΡΡΠ΄ΡΠΊΡΡ ΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΏΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½.
ΠΠΎΠΆΠ΅ΠΌ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ, ΡΠ΅ ΡΠΎΠ²Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° 802 ΠΏΡΡΠΈ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°. Π Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅, ΡΠ΅ bytes_per sec β 300 kB/s ΡΠ΅ ΡΠ΅ Π·Π°ΠΏΠΈΡΠ²Π°Ρ ΠΏΠ»ΡΡ-ΠΌΠΈΠ½ΡΡ. Π, ΠΊΠ°ΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠΌ ΡΠ°ΠΊΡΠ² ΠΏΠΎΡΠΎΠΊ.

ΠΠΎ! Π€Π°ΠΊΡ Π΅, ΡΠ΅ ΠΈΠΌΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° Π»ΠΎΠ³ΠΈΡΠ°Π½Π΅. Π ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Ρ ΠΎΡΠ°ΡΠ° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΈΠΌΠ°Ρ βsyslogβ.

Π Π°ΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ syslog, ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΏΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½. Π©Π΅ Π²Π·Π΅ΠΌΠ΅ΠΌ pgbench, ΡΠ΅ Π²ΠΊΠ»ΡΡΠΈΠΌ Π»ΠΎΠ³ΠΈΡΠ°Π½Π΅ Π½Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡΡΠ° ΠΈ ΡΠ΅ Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π²Π°.

ΠΠ΅Π· Π»ΠΎΠ³ΠΈΡΠ°Π½Π΅ β ΡΠΎΠ²Π° Π΅ ΠΊΠΎΠ»ΠΎΠ½Π°ΡΠ° ΠΎΡΠ»ΡΠ²ΠΎ. ΠΠΎΠ»ΡΡΠΈΡ ΠΌΠ΅ 161 000 TPS. Π‘ syslog β Π² Ubuntu 16.04 Π² ΠΠΌΠ°Π·ΠΎΠ½ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ 37 000 TPS. Π Π°ΠΊΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠΌ Π½Π° Π΄Π²Π° Π΄ΡΡΠ³ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° Π½Π° Π»ΠΎΠ³ΠΈΡΠ°Π½Π΅, ΡΠΈΡΡΠ°ΡΠΈΡΡΠ° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ°. Π’.Π΅. ΠΎΡΠ°ΠΊΠ²Π°Ρ ΠΌΠ΅, ΡΠ΅ ΡΠ΅ ΠΏΠ°Π΄Π½Π΅, Π½ΠΎ Π½Π΅ ΡΠΎΠ»ΠΊΠΎΠ²Π°.

Π Π½Π° CentOS 7, ΠΊΡΠ΄Π΅ΡΠΎ ΡΡΠΈΠ»ΠΈΡΠ°ΡΠ° journald ΡΡΠ°ΡΡΠ²Π°, ΠΏΡΠ΅Π²ΡΡΡΠ°ΠΉΠΊΠΈ Π»ΠΎΠ³ΠΎΠ²Π΅ΡΠ΅ Π² Π±ΠΈΠ½Π°ΡΠ΅Π½ ΡΠΎΡΠΌΠ°Ρ Π·Π° ΡΠ΄ΠΎΠ±Π½ΠΎ ΡΡΡΡΠ΅Π½Π΅ ΠΈ Ρ.Π½., ΡΠΎ ΡΠ°ΠΌ Π΅ Π½Π°ΠΏΡΠ°Π²ΠΎ ΡΠΆΠ°ΡΠ½ΠΎ, ΡΡΡΠΎ Π΄ΠΎ 44 ΠΏΡΡΠΈ ΡΠΏΠ°Π΄ Π½Π° TPS.

Π ΡΠΎΠ²Π° Π΅ Π½Π΅ΡΠΎΡΠΎ, Ρ ΠΊΠΎΠ΅ΡΠΎ Ρ ΠΎΡΠ°ΡΠ° ΠΆΠΈΠ²Π΅ΡΡ. Π ΡΠ΅ΡΡΠΎ Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈΡΠ΅, ΠΎΡΠΎΠ±Π΅Π½ΠΎ Π² Π³ΠΎΠ»Π΅ΠΌΠΈΡΠ΅, Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΡΠ΄Π½ΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ. ΠΠΊΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ ΠΎΡΠΊΠ°ΠΆΠ΅ΡΠ΅ ΠΎΡ syslog, ΠΌΠΎΠ»Ρ, Π½Π°ΠΏΡΠ°Π²Π΅ΡΠ΅ Π³ΠΎ.

- ΠΡΠ΅Π½Π΅ΡΠ΅ IOPS ΠΈ ΠΏΠΎΡΠΎΠΊΠ° Π½Π° Π·Π°ΠΏΠΈΡ.
- ΠΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΡΠΈ Π·Π° Π»ΠΎΠ³ΠΈΡΠ°Π½Π΅.
- ΠΠΊΠΎ ΠΏΡΠΎΠ³Π½ΠΎΠ·ΠΈΡΠ°Π½ΠΎΡΠΎ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ Π΅ ΠΏΡΠ΅ΠΊΠΎΠΌΠ΅ΡΠ½ΠΎ Π³ΠΎΠ»ΡΠΌΠΎ, ΠΎΠ±ΠΌΠΈΡΠ»Π΅ΡΠ΅ ΠΎΠΏΡΠΈΡ Π·Π° ΡΡΠΌΠΏΠ»ΠΈΡΠ°Π½Π΅.

ΠΠΌΠ°ΠΌΠ΅ pg_stat_statements. ΠΠ°ΠΊΡΠΎ ΠΊΠ°Π·Π°Ρ , ΡΠΎΠΉ Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ Π½Π°Π»ΠΈΡΠ΅Π½. ΠΠΎΠΆΠ΅ΠΌ Π΄Π° Π²Π·Π΅ΠΌΠ΅ΠΌ ΠΈ Π΄Π° ΠΎΠΏΠΈΡΠ΅ΠΌ Π²ΡΡΠΊΠ° Π³ΡΡΠΏΠ° ΠΎΡ Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ Π½Π°ΡΠΈΠ½ Π² ΡΠ°ΠΉΠ». Π ΠΏΠΎΡΠ»Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΄ΠΎΠ±Π½Π° ΡΡΠ½ΠΊΡΠΈΡ Π² pgbench β Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π΄Π° ΠΏΠΎΠ΄Π°Π΄Π΅ΠΌ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Ρ ΠΎΠΏΡΠΈΡΡΠ° β-fβ.
Π’ΠΎΠΉ ΡΠ°Π·Π±ΠΈΡΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π² Β«-fΒ». Π ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΠΎΡΠΎΡΠΈ Ρ Β«@Β» Π² ΠΊΡΠ°Ρ, ΠΊΠ°ΠΊΠ²Π° ΡΠ°ΡΡ ΠΎΡ Π²ΡΠ΅ΠΊΠΈ ΡΠ°ΠΉΠ» ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅. Π’.Π΅. ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΊΠ°ΠΆΠ΅ΠΌ, ΡΠ΅ ΡΠΎΠ²Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΠΉ Π² 10 % ΠΎΡ ΡΠ»ΡΡΠ°ΠΈΡΠ΅, Π° ΡΠΎΠ²Π° Π² 20 %. Π ΡΠΎΠ²Π° ΡΠ΅ Π½ΠΈ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠΈ Π΄ΠΎ ΡΠΎΠ²Π°, ΠΊΠΎΠ΅ΡΠΎ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ Π½Π° production.

Π ΠΊΠ°ΠΊ ΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΊΠ°ΠΊΠ²ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Π½Π° production? ΠΠ°ΠΊΠ²Π° ΡΠ°ΡΡ ΠΈ ΠΎΡ ΠΊΠ°ΠΊΠ²ΠΎ? Π’ΡΠΊ ΠΌΠ°Π»ΠΊΠΎ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅. ΠΠΌΠ°ΠΌΠ΅ ΠΎΡΠ΅ Π΅Π΄ΠΈΠ½ ΠΏΡΠΎΠ΄ΡΠΊΡ . Π‘ΡΡΠΎ Π±Π°Π·Π°ΡΠ° Π΅ Π² Open Source. Π Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π°ΠΊΡΠΈΠ²Π½ΠΎ Π³ΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°ΠΌΠ΅.
Π’ΠΎΠΉ ΡΠ΅ ΠΏΠΎΡΠ²ΠΈ ΠΏΠΎ ΠΌΠ°Π»ΠΊΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΡΠΈΡΠΈΠ½ΠΈ. ΠΠΎ ΠΏΡΠΈΡΠΈΠ½Π°, ΡΠ΅ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ΡΡ Π΅ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΡΠ΅Π½. Π’.Π΅. ΠΈΠ΄Π²Π°ΡΠ΅, Π³Π»Π΅Π΄Π°ΡΠ΅ Π±Π°Π·Π°ΡΠ°, ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ. Π, ΠΏΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΏΡΠ°Π²ΠΈΡΠ΅ health_check. ΠΠΊΠΎ ΡΡΠ΅ ΠΎΠΏΠΈΡΠ΅Π½ DBA, ΠΏΡΠ°Π²ΠΈΡΠ΅ health_check. ΠΠ»Π΅Π΄Π°ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ΅ ΠΈ Ρ.Π½. ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ OKmeter, ΡΡΠ΄Π΅ΡΠ½ΠΎ. Π’ΠΎΠ²Π° Π΅ ΡΡΡΠ°Ρ ΠΎΡΠ΅Π½ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π·Π° Postgres. OKmeter.io β ΠΌΠΎΠ»Ρ, ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅ Π³ΠΎ, ΠΌΠ½ΠΎΠ³ΠΎ Π΅ Π΄ΠΎΠ±ΡΠ΅ Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΎ. ΠΠ»Π°ΡΠ΅Π½ Π΅.
ΠΠΊΠΎ Π½ΡΠΌΠ°ΡΠ΅ ΡΠ°ΠΊΡΠ², ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π½ΡΠΌΠ°ΡΠ΅ ΠΏΠΎΡΡΠΈ Π½ΠΈΡΠΎ. Π ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΈΠΌΠ° ΡΠ°ΠΌΠΎ CPU, IO ΠΈ ΡΠΎ Ρ ΡΠ³ΠΎΠ²ΠΎΡΠΊΠΈ, ΠΈ ΡΠΎΠ»ΠΊΠΎΠ²Π°. Π Π½Π° Π½Π°Ρ Π½ΠΈ ΡΡΡΠ±Π²Π° ΠΏΠΎΠ²Π΅ΡΠ΅. Π’ΡΡΠ±Π²Π° Π΄Π° Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠΈ Π°Π²ΡΠΎΠ²Π°ΠΊΡΡΠΌ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠΈ checkpoint, Π² IO ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΡΠ΄Π΅Π»ΠΈΠΌ checkpoint ΠΎΡ bgwriter ΠΈ ΠΎΡ Π±Π΅ΠΊΠ΅Π½Π΄ΠΈΡΠ΅ ΠΈ Ρ.Π½.
ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ Π΅, ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΠΎΠΌΠ°Π³Π°Ρ Π½Π° Π½ΡΠΊΠΎΡ Π³ΠΎΠ»ΡΠΌΠ° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ, ΡΠ΅ Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π±ΡΡΠ·ΠΎ Π΄Π° Π²Π½Π΅Π΄ΡΡΡ Π½Π΅ΡΠΎ. ΠΠ΅ ΠΌΠΎΠ³Π°Ρ Π±ΡΡΠ·ΠΎ Π΄Π° ΠΊΡΠΏΡΡ OKmeter. ΠΠΎΠΆΠ΅ Π±ΠΈ ΡΠ»Π΅Π΄ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½ Π³ΠΎΠ΄ΠΈΠ½Π° ΡΠ΅ Π³ΠΎ ΠΊΡΠΏΡΡ. ΠΠ΅ ΠΌΠΎΠ³Π°Ρ Π±ΡΡΠ·ΠΎ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Ρ Π½ΡΠΊΠ°ΠΊΠ²ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ.
Π Π½ΠΈ Π΄ΠΎΠΉΠ΄Π΅ ΠΈΠ΄Π΅ΡΡΠ°, ΡΠ΅ Π½ΠΈ Π΅ Π½ΡΠΆΠ΅Π½ ΡΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠΎΠΉΡΠΎ Π½Π΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° Π½ΠΈΡΠΎ Π·Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡ, Ρ.Π΅. Π²ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠΎ Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ Π½ΠΈΡΠΎ Π½Π° production. ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ Π³ΠΎ Π½Π° Π»Π°ΠΏΡΠΎΠΏΠ° ΡΠΈ ΠΈΠ»ΠΈ Π½Π° Π½Π°Π±Π»ΡΠ΄Π°ΡΠ΅Π»Π΅Π½ ΡΡΡΠ²ΡΡ, ΠΎΡ ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π³ΠΎ ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅. Π ΡΠΎΠΉ ΡΠ΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π½Π΅ΡΠ°: ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΈ ΡΠ°ΠΌΠΈΡ Postgres, ΠΏΡΠ°Π²Π΅ΠΉΠΊΠΈ Π½ΡΠΊΠΎΠΈ Π»Π΅ΠΊΠΈ Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π½Π° production ΠΈ Π½ΠΈΡΠΎ Π½ΡΠΌΠ° Π΄Π° ΡΠ΅ ΡΡΠΈΠ½Π΅.
ΠΠ°Π·ΠΎΠ²Π°Ρ ΠΌΠ΅ Π³ΠΎ Postgres-checkup. ΠΠΊΠΎ Π³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΌΠ΅Π΄ΠΈΡΠΈΠ½ΡΠΊΠΈ, ΡΠΎΠ²Π° Π΅ ΡΠ΅Π΄ΠΎΠ²Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° Π·Π΄ΡΠ°Π²ΠΎΡΠ»ΠΎΠ²Π½ΠΎΡΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅. ΠΠΊΠΎ Π³ΠΎΠ²ΠΎΡΠΈΠΌ Π² Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»Π½Π° ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ°, ΡΠΎΠ²Π° Π΅ ΠΊΠ°ΡΠΎ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠ΅Π³Π»Π΅Π΄. ΠΡΠ°Π²ΠΈΡΠ΅ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° ΠΊΠΎΠ»Π°ΡΠ° ΡΠΈ Π½Π° Π²ΡΠ΅ΠΊΠΈ ΡΠ΅ΡΡ ΠΌΠ΅ΡΠ΅ΡΠ° ΠΈΠ»ΠΈ Π³ΠΎΠ΄ΠΈΠ½Π°, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ ΠΌΠ°ΡΠΊΠ°ΡΠ°. Π ΠΏΡΠ°Π²ΠΈΡΠ΅ Π»ΠΈ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° Π±Π°Π·Π°ΡΠ° ΡΠΈ? Π’.Π΅. ΠΏΡΠ°Π²ΠΈΡΠ΅ Π»ΠΈ Π΄ΡΠ»Π±ΠΎΡΠΈΠ½Π½ΠΎ ΠΈΠ·ΡΠ»Π΅Π΄Π²Π°Π½Π΅ ΡΠ΅Π΄ΠΎΠ²Π½ΠΎ? Π’ΡΡΠ±Π²Π° Π΄Π° Π³ΠΎ ΠΏΡΠ°Π²ΠΈΡΠ΅. ΠΠΊΠΎ ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΈ ΠΊΠΎΠΏΠΈΡ, ΠΏΡΠ°Π²Π΅ΡΠ΅ ΠΈ checkup, ΡΠΎΠ²Π° Π½Π΅ Π΅ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Π²Π°ΠΆΠ½ΠΎ.
Π ΠΈΠΌΠ°ΠΌΠ΅ ΡΠ°ΠΊΡΠ² ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ. Π’ΠΎΠΉ Π·Π°ΠΏΠΎΡΠ½Π° Π΄Π° ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π° Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΏΡΠ΅Π΄ΠΈ ΡΠ°ΠΌΠΎ ΡΡΠΈ ΠΌΠ΅ΡΠ΅ΡΠ°. ΠΡΠ΅ Π΅ ΠΌΠ»Π°Π΄, Π½ΠΎ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΡΠ°.

Π‘ΡΠ±ΠΈΡΠ°ΠΌΠ΅ Π½Π°ΠΉ-Π²Π»ΠΈΡΡΠ΅Π»Π½ΠΈΡΠ΅ Π³ΡΡΠΏΠΈ Π·Π°ΡΠ²ΠΊΠΈ β ΠΎΡΡΠ΅Ρ Π003 Π² Postgres-checkup
Π ΡΠ°ΠΌ ΠΈΠΌΠ° Π³ΡΡΠΏΠ° ΠΎΡΡΠ΅ΡΠΈ Π. Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΈΠΌΠ° ΡΡΠΈ ΠΎΡΡΠ΅ΡΠ°. Π ΠΈΠΌΠ° ΡΠ°ΠΊΡΠ² ΠΎΡΡΠ΅Ρ Π003. Π’Π°ΠΌ Π΅ "Π²ΡΡΡ ΡΡ" ΠΎΡ pg_stat_statements, ΡΠΎΡΡΠΈΡΠ°Π½ ΠΏΠΎ total_time.
ΠΠΎΠ³Π°ΡΠΎ ΡΠΎΡΡΠΈΡΠ°ΠΌΠ΅ ΠΏΠΎ total_time Π³ΡΡΠΏΠΈΡΠ΅ Π·Π°ΡΠ²ΠΊΠΈ, Π½Π° Π²ΡΡΡ Π° Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ ΡΠ°ΠΊΠ°Π²Π° Π³ΡΡΠΏΠ°, ΠΊΠΎΡΡΠΎ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π° Π½Π°ΡΠ°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π°ΠΉ-ΠΌΠ½ΠΎΠ³ΠΎ, Ρ.Π΅. ΠΏΠΎΡΡΠ΅Π±ΡΠ²Π° ΠΏΠΎ-Π³ΠΎΠ»ΡΠΌΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΡΡΡΡΠΈ. ΠΠ°ΡΠΎ Π½Π°ΡΠΈΡΠ°ΠΌ Π³ΡΡΠΏΠΈ Π·Π°ΡΠ²ΠΊΠΈ? ΠΠ°ΡΠΎΡΠΎ ΠΈΠ·ΠΊΠ»ΡΡΠΈΡ ΠΌΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅. Π’ΠΎΠ²Π° Π²Π΅ΡΠ΅ Π½Π΅ ΡΠ° Π·Π°ΡΠ²ΠΊΠΈ, Π° Π³ΡΡΠΏΠΈ Π·Π°ΡΠ²ΠΊΠΈ, Ρ.Π΅. ΡΠ΅ ΡΠ° Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΈ.
Π Π°ΠΊΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ ΠΎΡΠ³ΠΎΡΠ΅ Π½Π°Π΄ΠΎΠ»Ρ, ΡΠ΅ ΠΎΠ±Π»Π΅ΠΊΡΠΈΠΌ Π½Π°ΡΠΈΡΠ΅ ΡΠ΅ΡΡΡΡΠΈ ΠΈ ΡΠ΅ ΠΎΡΠ»ΠΎΠΆΠΈΠΌ ΠΌΠΎΠΌΠ΅Π½ΡΠ°, Π² ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΡΠΏΠ³ΡΠ΅ΠΉΠ΄. Π’ΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±ΡΡ Π½Π°ΡΠΈΠ½ Π΄Π° ΡΠΏΠ΅ΡΡΠΈΠΌ ΠΏΠ°ΡΠΈ.
ΠΠΎΠΆΠ΅ Π±ΠΈ Π½Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±ΡΡ Π½Π°ΡΠΈΠ½ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π° Π³ΡΠΈΠΆΠ°ΡΠ° Π·Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π΅ Π²ΠΈΠ΄ΠΈΠΌ ΡΠ΅Π΄ΠΊΠΈ, Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΡΠ°Π΄Π½ΠΈ ΡΠ»ΡΡΠ°ΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠΎΠ²Π΅ΠΊ ΡΠ°ΠΊΠ° 15 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ. ΠΠ±ΡΠΈΡΡ Π±ΡΠΎΠΉ Π½Π° ΡΠ΅Π·ΠΈ ΡΠ»ΡΡΠ°ΠΈ Π΅ ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΌΠ°Π»ΡΠΊ, ΡΠ΅ Π½Π΅ Π³ΠΈ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅, Π½ΠΎ Π²ΡΠ΅ ΠΏΠ°ΠΊ ΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π²Π°ΠΌΠ΅ Ρ ΡΠ΅ΡΡΡΡΠΈΡΠ΅.

ΠΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΡΠ»ΡΡΠΈ Π² ΡΠ°Π·ΠΈ ΡΠ°Π±Π»ΠΈΡΠ°? ΠΠ°ΠΏΡΠ°Π²ΠΈΡ ΠΌΠ΅ Π΄Π²Π° ΡΠ½ΠΈΠΌΠΊΠΈ. Postgres_checkup ΡΠ΅ Π²ΠΈ Π½Π°ΠΏΡΠ°Π²ΠΈ Π΄Π΅Π»ΡΠ° Π·Π° Π²ΡΡΠΊΠ° ΠΌΠ΅ΡΡΠΈΠΊΠ°: ΠΏΠΎ total-time, calls, rows, shared_blks_read ΠΈ Ρ.Π½. Π ΡΠ°ΠΊΠ°, Π΄Π΅Π»ΡΠ°ΡΠ° Π΅ ΠΈΠ·ΡΠΈΡΠ»Π΅Π½Π°. ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ Ρ pg_stat_statements Π΅, ΡΠ΅ ΡΠΎΠΉ Π½Π΅ ΠΏΠΎΠΌΠ½ΠΈ ΠΊΠΎΠ³Π° Π΅ Π±ΠΈΠ» Π½ΡΠ»ΠΈΡΠ°Π½. ΠΠΊΠΎ pg_stat_database ΠΏΠΎΠΌΠ½ΠΈ, ΡΠΎ pg_stat_statements Π½Π΅ ΠΏΠΎΠΌΠ½ΠΈ. ΠΠΈΠΆΠ΄Π°ΡΠ΅, ΡΠ΅ ΡΠ°ΠΌ ΠΈΠΌΠ° ΡΠΈΡΠ»ΠΎ ΠΎΡ 1 000 000, Π° ΠΎΡΠΊΡΠ΄Π΅ ΡΠΌΠ΅ Π³ΠΎ Π²Π·Π΅Π»ΠΈ, Π½Π΅ Π·Π½Π°Π΅ΠΌ.

Π ΡΡΠΊ Π·Π½Π°Π΅ΠΌ, ΡΡΠΊ ΠΈΠΌΠ°ΠΌΠ΅ Π΄Π²Π° ΡΠ½ΠΈΠΌΠΊΠΈ. ΠΠ½Π°Π΅ΠΌ, ΡΠ΅ Π΄Π΅Π»ΡΠ°ΡΠ° Π² ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ Π΅ 56 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ. ΠΠ½ΠΎΠ³ΠΎ ΠΌΠ°Π»ΡΠΊ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π». Π‘ΠΎΡΡΠΈΡΠ°Π½ΠΎ ΠΏΠΎ total_time. Π Π½Π°ΡΠ°ΡΡΠΊ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π΄ΠΈΡΠ΅ΡΠ΅Π½ΡΠΈΡΠ°ΠΌΠ΅, Ρ.Π΅. ΡΠ°Π·Π΄Π΅Π»ΡΠΌΠ΅ Π²ΡΠΈΡΠΊΠΈ ΠΌΠ΅ΡΡΠΈΠΊΠΈ Π½Π° duration. ΠΠΊΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΠΌ Π²ΡΡΠΊΠ° ΠΌΠ΅ΡΡΠΈΠΊΠ° Π½Π° duration, ΡΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ Π±ΡΠΎΠΉ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°.
Π‘Π»Π΅Π΄Π²Π° total_time Π½Π° ΡΠ΅ΠΊΡΠ½Π΄Π° β ΡΠΎΠ²Π° Π΅ ΠΌΠΎΡΡΠ° Π»ΡΠ±ΠΈΠΌΠ° ΠΌΠ΅ΡΡΠΈΠΊΠ°. Π’Ρ ΡΠ΅ ΠΈΠ·ΠΌΠ΅ΡΠ²Π° Π² ΡΠ΅ΠΊΡΠ½Π΄ΠΈ, Ρ.Π΅. ΠΊΠΎΠ»ΠΊΠΎ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° Π½Π° Π½Π°ΡΠ°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ°Π·ΠΈ Π³ΡΡΠΏΠ° Π·Π°ΡΠ²ΠΊΠΈ Π·Π° ΡΠ΅ΠΊΡΠ½Π΄Π°. ΠΠΊΠΎ Π²ΠΈΠΆΠ΄Π°ΡΠ΅ ΡΠ°ΠΌ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ Π΅Π΄Π½Π° ΡΠ΅ΠΊΡΠ½Π΄Π° Π½Π° ΡΠ΅ΠΊΡΠ½Π΄Π°, ΡΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ Π½ΡΠΆΠ΄Π° ΠΎΡ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ Π΅Π΄Π½ΠΎ ΡΠ΄ΡΠΎ. Π’ΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±ΡΠ° ΠΌΠ΅ΡΡΠΈΠΊΠ°. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅, ΡΠ΅ Π½Π° ΡΠΎΠ·ΠΈ ΡΠΎΠ²Π΅ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΡ ΡΡΡΠ±Π²Π°Ρ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΡΡΠΈ ΡΠ΄ΡΠ°.
ΠΡΠΎ ΡΠΎΠ²Π° Π΅ Π½Π°ΡΠ΅ΡΠΎ Π½ΠΎΡ-Ρ Π°Ρ, Π½Π΅ ΡΡΠΌ ΡΡΠ΅ΡΠ°Π» ΡΠ°ΠΊΠΎΠ²Π° Π½ΠΈΠΊΡΠ΄Π΅. ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ β ΡΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΠ° Π²Π΅Ρ β ΡΠ΅ΠΊΡΠ½Π΄Π° Π½Π° ΡΠ΅ΠΊΡΠ½Π΄Π°. ΠΠΎΠ½ΡΠΊΠΎΠ³Π°, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠΌΠ°ΡΠ΅ CPU Π½Π° 100 %, ΡΠΎ ΡΠΎΠ²Π° Π΅ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½ ΡΠ°Ρ Π½Π° ΡΠ΅ΠΊΡΠ½Π΄Π°, Ρ.Π΅. Π²ΠΈΠ΅ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½ ΡΠ°Ρ ΡΡΠ΅ ΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π²Π°Π»ΠΈ ΡΠ°ΠΌΠΎ Ρ ΡΠ΅Π·ΠΈ Π·Π°ΡΠ²ΠΊΠΈ.
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ ΡΠ΅Π΄ΠΎΠ²Π΅ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°. ΠΠ½Π°Π΅ΠΌ ΠΊΠΎΠ»ΠΊΠΎ ΡΠ΅Π΄Π° Π² ΡΠ΅ΠΊΡΠ½Π΄Π° Π΅ Π²ΡΡΠ½Π°Π»Π°.
Π ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΈΠΌΠ° Π½Π΅ΡΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ. ΠΠΎΠ»ΠΊΠΎ shared_buffers ΠΏΡΠΎΡΠ΅ΡΠΎΡ ΠΌΠ΅ Π² ΡΠ΅ΠΊΡΠ½Π΄Π° ΠΎΡ ΡΠ°ΠΌΠΈΡΠ΅ shared_buffers. Π₯ΠΈΡΠΎΠ²Π΅ΡΠ΅ Π²Π΅ΡΠ΅ Π±ΡΡ Π° ΡΠ°ΠΌ, Π° ΡΠ΅Π΄ΠΎΠ²Π΅ΡΠ΅ Π²Π·Π΅Ρ ΠΌΠ΅ ΠΎΡ ΠΊΠ΅ΡΠ° Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈΠ»ΠΈ ΠΎΡ Π΄ΠΈΡΠΊΠ°. ΠΡΡΠ²ΠΈΡΡ Π²Π°ΡΠΈΠ°Π½Ρ Π΅ Π±ΡΡΠ·, Π° Π²ΡΠΎΡΠΈΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π±ΡΡΠ·, Π½ΠΎ ΠΌΠΎΠΆΠ΅ ΠΈ Π΄Π° Π½Π΅ Π΅, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ ΡΠΈΡΡΠ°ΡΠΈΡΡΠ°.
Π Π²ΡΠΎΡΠΈΡΡ Π½Π°ΡΠΈΠ½ Π½Π° Π΄ΠΈΡΠ΅ΡΠ΅Π½ΡΠΈΡΠ°Π½Π΅ β Π΄Π΅Π»ΠΈΠΌ Π±ΡΠΎΡ Π½Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ Π² ΡΠ°Π·ΠΈ Π³ΡΡΠΏΠ°. ΠΡΠ² Π²ΡΠΎΡΠ°ΡΠ° ΠΊΠΎΠ»ΠΎΠ½Π° Π²ΠΈΠ½Π°Π³ΠΈ ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ Π΅Π΄Π½Π° Π·Π°ΡΠ²ΠΊΠ° ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π° Π½Π° Π·Π°ΡΠ²ΠΊΠ°. Π ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ β ΠΊΠΎΠ»ΠΊΠΎ ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄ΠΈ Π±ΡΡ Π° Π² ΡΠ°Π·ΠΈ Π·Π°ΡΠ²ΠΊΠ°. ΠΠ½Π°Π΅ΠΌ ΠΊΠ°ΠΊ ΡΠ΅ Π΄ΡΡΠΆΠΈ ΡΠ°Π·ΠΈ Π·Π°ΡΠ²ΠΊΠ° Π² ΡΡΠ΅Π΄Π½ΠΎ. 101 ΠΌΠΈΠ»ΠΈΡΠ΅ΠΊΡΠ½Π΄Π° Π±Π΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° Π½Π° Π²ΡΡΠΊΠ° Π·Π°ΡΠ²ΠΊΠ°. Π’ΠΎΠ²Π° Π΅ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π΅Π½ ΠΌΠ΅ΡΡΠΈΠΊΠ°, ΠΊΠΎΡΡΠΎ Π½ΠΈ ΡΡΡΠ±Π²Π° Π·Π° ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅.
ΠΠΎΠ»ΠΊΠΎ ΡΠ΅Π΄ΠΎΠ²Π΅ ΡΡΠ΅Π΄Π½ΠΎ Π²ΡΡΠΊΠ° Π·Π°ΡΠ²ΠΊΠ° Π΅ Π²ΡΡΠ½Π°Π»Π°. ΠΠΈΠΆΠ΄Π°ΠΌΠ΅, ΡΠ΅ 8 Π΅ ΠΏΠΎΠ΄ΠΏΠΈΡΡΡ, ΠΊΠΎΠΉΡΠΎ Π²ΡΡΡΠ°. ΠΠΎΠ»ΠΊΠΎ ΡΡΠ΅Π΄Π½ΠΎ ΠΎΡ ΠΊΠ΅ΡΠ° Π΅ Π²Π·Π΅ΡΠΎ ΠΈ ΠΏΡΠΎΡΠ΅ΡΠ΅Π½ΠΎ. ΠΠΈΠΆΠ΄Π°ΠΌΠ΅, ΡΠ΅ Π²ΡΠΈΡΠΊΠΎ Π΅ ΠΊΠ΅ΡΠΈΡΠ°Π½ΠΎ ΡΡΠ΄Π΅ΡΠ½ΠΎ. Π‘ΠΏΠ»ΠΎΡΠ½ΠΈ Ρ ΠΈΡΠΈ Π·Π° ΠΏΡΡΠ²Π°ΡΠ° Π³ΡΡΠΏΠ°.
Π§Π΅ΡΠ²ΡΡΡΠ°ΡΠ° ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠ° Π² Π²ΡΡΠΊΠ° ΡΠ΅Π΄ΠΈΡΠ° β ΡΠΎΠ²Π° Π΅ ΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΠΎΡΠ΅Π½ΡΠ° ΠΎΡ ΠΎΠ±ΡΠΎΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ. ΠΠΌΠ°ΠΌΠ΅ calls. ΠΠ° ΠΊΠ°ΠΆΠ΅ΠΌ, 1 000 000. Π ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΊΠ°ΠΊΡΠ² Π΅ ΠΏΡΠΈΠ½ΠΎΡΡΡ Π½Π° ΡΠ°Π·ΠΈ Π³ΡΡΠΏΠ°. ΠΠΈΠΆΠ΄Π°ΠΌΠ΅, ΡΠ΅ Π² ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΠΏΡΡΠ²Π°ΡΠ° Π³ΡΡΠΏΠ° Π²Π½Π°ΡΡ ΠΏΡΠΈΠ½ΠΎΡ ΠΏΠΎ-ΠΌΠ°Π»ΡΠΊ ΠΎΡ 0,01 %. Π’.Π΅. ΡΡ Π΅ ΡΠΎΠ»ΠΊΠΎΠ²Π° Π±Π°Π²Π½Π°, ΡΠ΅ Π½Π΅ Ρ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ Π² ΠΎΠ±ΡΠ°ΡΠ° ΠΊΠ°ΡΡΠΈΠ½Π°. Π Π²ΡΠΎΡΠ°ΡΠ° Π³ΡΡΠΏΠ° β 5 % ΠΎΡ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡΡΠ°. Π’.Π΅. 5 % ΠΎΡ Π²ΡΠΈΡΠΊΠΈ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ β ΡΠΎΠ²Π° Π΅ Π²ΡΠΎΡΠ°ΡΠ° Π³ΡΡΠΏΠ°.
ΠΠΎ total_time ΡΡΡΠΎ Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ. ΠΠ° ΠΏΡΡΠ²Π°ΡΠ° Π³ΡΡΠΏΠ° Π·Π°ΡΠ²ΠΊΠΈ ΠΏΠΎΡ Π°ΡΡΠΈΡ ΠΌΠ΅ 14 % ΠΎΡ ΠΎΠ±ΡΠΎΡΠΎ ΡΠ°Π±ΠΎΡΠ½ΠΎ Π²ΡΠ΅ΠΌΠ΅. Π Π½Π° Π²ΡΠΎΡΠ°ΡΠ° β 11 % ΠΈ Ρ.Π½.
ΠΡΠΌΠ° Π΄Π° Π²Π»ΠΈΠ·Π°ΠΌ Π² Π΄Π΅ΡΠ°ΠΉΠ»ΠΈ, Π½ΠΎ ΡΠ°ΠΌ ΠΈΠΌΠ° Π½ΡΠ°Π½ΡΠΈ. ΠΡΠ³ΠΎΡΠ΅ ΠΈΠ·Π²Π΅ΠΆΠ΄Π°ΠΌΠ΅ Π³ΡΠ΅ΡΠΊΠ°, Π·Π°ΡΠΎΡΠΎ ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΠ°Π²Π½ΡΠ²Π°ΠΌΠ΅, ΠΌΠΎΠΌΠ΅Π½ΡΠ½ΠΈΡΠ΅ ΡΠ½ΠΈΠΌΠΊΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΡΠ²Π°Ρ, Ρ.Π΅. Π½ΡΠΊΠΎΠΈ Π·Π°ΡΠ²ΠΊΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΎΡΠΏΠ°Π΄Π½Π°Ρ, Π° Π²ΡΠΎΡΠ°ΡΠ° Π²Π΅ΡΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π΅ ΠΏΡΠΈΡΡΡΡΠ²Π°, Π° Π½ΡΠΊΠΎΠΈ Π½ΠΎΠ²ΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΏΠΎΡΠ²ΡΡ. Π ΡΠ°ΠΌ ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π°ΠΌΠ΅ Π³ΡΠ΅ΡΠΊΠ°ΡΠ°. ΠΠΊΠΎ Π²ΠΈΠ΄ΠΈΡΠ΅ 0, Π·Π½Π°ΡΠΈ Π΅ Π΄ΠΎΠ±ΡΠ΅. ΠΡΠΌΠ° Π³ΡΠ΅ΡΠΊΠΈ. ΠΠΊΠΎ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΡΡ Π·Π° Π³ΡΠ΅ΡΠΊΠ° Π΅ Π΄ΠΎ 20 %, Π΅ ΠΠ.

Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ Π²ΡΡΡΠ°ΠΌΠ΅ Π½Π° Π½Π°ΡΠ°ΡΠ° ΡΠ΅ΠΌΠ°. Π’ΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·Π³ΡΠ°Π΄ΠΈΠΌ ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΏΠΎΡΠΎΠΊ. ΠΠ·Π΅ΠΌΠ°ΠΌΠ΅ ΠΎΡΠ³ΠΎΡΠ΅ Π½Π°Π΄ΠΎΠ»Ρ, Π΄ΠΎΠΊΠ°ΡΠΎ Π½Π΅ Π½Π°ΡΡΡΠΏΠ°ΠΌΠ΅ 80 % ΠΈΠ»ΠΈ 90 %. ΠΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠΎΠ²Π° ΡΠ° 10-20 Π³ΡΡΠΏΠΈ. Π ΠΏΡΠ°Π²ΠΈΠΌ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π·Π° pgbench. Π’Π°ΠΌ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ random. ΠΠΎΠ½ΡΠΊΠΎΠ³Π°, Π·Π° ΡΡΠΆΠ°Π»Π΅Π½ΠΈΠ΅, ΡΠΎΠ²Π° Π½Π΅ ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π²Π°. Π Π² Postgres 12 ΡΠ΅ ΠΈΠΌΠ° ΠΏΠΎΠ²Π΅ΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ°ΠΊΡΠ² ΠΏΠΎΠ΄Ρ ΠΎΠ΄.
Π ΠΏΠΎ-Π½Π°ΡΠ°ΡΡΠΊ ΡΠ°ΠΊΠ° Π½Π°Π±ΠΈΡΠ°ΠΌΠ΅ 80-90 % ΠΎΡ total_time. ΠΠ°ΠΊΠ²ΠΎ Π΄Π° ΡΠ»ΠΎΠΆΠΈΠΌ ΡΠ»Π΅Π΄ Β«@Β»? ΠΠ»Π΅Π΄Π°ΠΌΠ΅ Π½Π° calls, Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ ΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΠΎΡΠ΅Π½ΡΠ° ΡΠ° ΠΈ ΡΠ°Π·Π±ΠΈΡΠ°ΠΌΠ΅, ΡΠ΅ ΡΡΠΊ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠΌΠ°ΠΌΠ΅ ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΡΠΎΡΠ΅Π½ΡΠ°. ΠΡ ΡΠ΅Π·ΠΈ ΠΏΡΠΎΡΠ΅Π½ΡΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡΠ΅ΡΠ΅Π½ΠΈΠΌ ΠΊΠ°ΠΊ Π΄Π° Π±Π°Π»Π°Π½ΡΠΈΡΠ°ΠΌΠ΅ Π²ΡΠ΅ΠΊΠΈ ΠΎΡ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅. Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ pgbench ΠΈ Π·Π°ΠΏΠΎΡΠ²Π°ΠΌΠ΅ ΡΠ°Π±ΠΎΡΠ°.

ΠΠΌΠ°ΠΌΠ΅ ΠΎΡΠ΅ Π001 ΠΈ Π002.
Π001 β ΡΠΎΠ²Π° Π΅ Π΅Π΄Π½Π° Π³ΠΎΠ»ΡΠΌΠ° Π»ΠΈΠ½ΠΈΡ Ρ ΡΠ΅ΡΠΈΡΠΈ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΈ. Π’ΠΎΠ²Π° Π΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ° Π½Π° ΡΡΠ»ΠΎΡΠΎ Π½ΠΈ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅. ΠΠ»Π΅Π΄Π°ΠΉΡΠ΅ Π²ΡΠΎΡΠ°ΡΠ° ΠΊΠΎΠ»ΠΎΠ½Π° ΠΈ Π²ΡΠΎΡΠ°ΡΠ° ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠ°. ΠΠΈΠΆΠ΄Π°ΠΌΠ΅, ΡΠ΅ Π΅ ΠΎΠΊΠΎΠ»ΠΎ Π΅Π΄Π½Π° ΠΈ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° ΡΠ΅ΠΊΡΠ½Π΄ΠΈ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°, Ρ.Π΅. Π°ΠΊΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Π΄Π²Π° ΡΠ΄ΡΠ°, ΡΠ΅ Π±ΡΠ΄Π΅ Π΄ΠΎΠ±ΡΠ΅. Π©Π΅ ΠΈΠΌΠ° ΠΎΠΊΠΎΠ»ΠΎ 75 % Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅. Π ΡΠ°ΠΊΠ° ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ. ΠΠΊΠΎ ΠΈΠΌΠ°ΠΌΠ΅ 10 ΡΠ΄ΡΠ°, ΡΠ΅ ΡΠΌΠ΅ ΡΠΏΠΎΠΊΠΎΠΉΠ½ΠΈ. Π’Π°ΠΊΠ° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΡΠ΅Π½ΠΈΠΌ ΡΠ΅ΡΡΡΡΠΈΡΠ΅.
Π002 β ΡΠΎΠ²Π° Π½Π°ΡΠΈΡΠ°ΠΌ ΠΊΠ»Π°ΡΠΎΠ²Π΅ Π½Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ, Ρ.Π΅. SELECT, INSERT, UPDATE, DELETE. Π ΠΎΡΠ΄Π΅Π»Π½ΠΎ SELECT FOR UPDATE, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡΠ°.
Π ΡΡΠΊ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π·Π°ΠΊΠ»ΡΡΠΈΠΌ, ΡΠ΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡΠ΅ SELECT Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ ΡΠ° 82 % ΠΎΡ Π²ΡΠΈΡΠΊΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ, Π½ΠΎ ΠΏΡΠΈ ΡΠΎΠ²Π° β 74 % ΠΎΡ total_time. Π’ΠΎΠ΅ΡΡ, ΡΠ΅ ΡΠ΅ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎ, Π½ΠΎ ΠΏΠΎΡΡΠ΅Π±ΡΠ²Π°Ρ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΡΠ΅ΡΡΡΡΠΈ.

Π ΡΠ΅ Π²ΡΡΡΠ°ΠΌΠ΅ Π½Π° Π²ΡΠΏΡΠΎΡΠ°: Β«ΠΠ°ΠΊ Π΄Π° ΠΏΠΎΠ΄Π±Π΅ΡΠ΅ΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ shared_buffers?Β». ΠΠ°Π±Π»ΡΠ΄Π°Π²Π°ΠΌ, ΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ Π±Π΅Π½ΡΠΌΠ°ΡΠΊΠΎΠ²Π΅ ΡΠ΅ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Ρ Π½Π° ΠΈΠ΄Π΅ΡΡΠ° β Π½Π΅ΠΊΠ° Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊΠ²Π° ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°, Ρ.Π΅. ΠΊΠ°ΠΊΠ²Π° ΡΠ΅ Π΅ ΡΠΊΠΎΡΠΎΡΡΡΠ° Π½Π° ΠΏΡΠΎΠΏΡΡΠΊΠ°Π½Π΅. Π’Ρ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ΅ ΠΈΠ·ΠΌΠ΅ΡΠ²Π° Π² TPS ΠΈΠ»ΠΈ QPS.
Π Π½ΠΈΠ΅ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π°ΠΌΠ΅ Π΄Π° ΠΈΠ·Π²Π»Π΅ΡΠ΅ΠΌ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π² ΡΠ΅ΠΊΡΠ½Π΄Π° ΠΎΡ ΠΌΠ°ΡΠΈΠ½Π°ΡΠ° Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ Π½Π° ΡΡΠ½ΠΈΠ½Π³Π°. Π’ΡΠΊ ΡΠΎΡΠ½ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ 311 Π² ΡΠ΅ΠΊΡΠ½Π΄Π° Π·Π° select.

ΠΠΎ Π½ΠΈΠΊΠΎΠΉ Π½Π΅ ΠΏΡΡΡΠ²Π° Π½Π° ΡΠ°Π±ΠΎΡΠ° ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Ρ Π΄ΠΎΠΌΠ° Ρ ΠΊΠΎΠ»Π° Π½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½Π° ΡΠΊΠΎΡΠΎΡΡ. Π’ΠΎΠ²Π° Π΅ Π³Π»ΡΠΏΠ°Π²ΠΎ. Π‘ΡΡΠΎΡΠΎ Π²Π°ΠΆΠΈ ΠΈ Π·Π° Π±Π°Π·ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ. ΠΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ°Π±ΠΎΡΠΈΠΌ Π½Π° ΠΏΡΠ»Π½Π° ΡΠΊΠΎΡΠΎΡΡ, Π° Π½ΠΈΠΊΠΎΠΉ Π½Π΅ Π³ΠΎ ΠΏΡΠ°Π²ΠΈ. ΠΠΈΠΊΠΎΠΉ Π½Π΅ ΠΆΠΈΠ²Π΅Π΅ Π² ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡ, ΠΊΡΠ΄Π΅ΡΠΎ CPU-ΡΠΎ Π΅ Π½Π° 100 %. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΠΌΠΎΠΆΠ΅ Π±ΠΈ, Π½ΡΠΊΠΎΠΉ ΠΆΠΈΠ²Π΅Π΅, Π½ΠΎ Π½Π΅ Π΅ Π΄ΠΎΠ±ΡΠ΅.
ΠΠ΄Π΅ΡΡΠ° Π΅, ΡΠ΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ°Π±ΠΎΡΠΈΠΌ Π½Π° ΠΎΠΊΠΎΠ»ΠΎ 20 % ΠΎΡ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅, Π·Π° ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π½Π΅ Π½Π΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ 50 %. Π ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π°ΠΌΠ΅ Π΄Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡ Π·Π° Π½Π°ΡΠΈΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ Π½Π° ΠΏΡΡΠ²ΠΎ ΠΌΡΡΡΠΎ. Π’ΠΎΠ΅ΡΡ, ΡΡΡΠ±Π²Π° Π΄Π° Π²ΡΡΡΠΈΠΌ Π½Π°ΡΠΈΡΠ΅ ΡΡΡΠΊΠΈ ΡΠ°ΠΊΠ°, ΡΠ΅ Π΄Π° ΠΈΠΌΠ°ΠΌΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΎ latency ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²Π½Π° 20%-ΠΎΠ²Π° ΡΠΊΠΎΡΠΎΡΡ. Π’ΠΎΠ²Π° Π΅ ΠΈΠ΄Π΅ΡΡΠ°, ΠΊΠΎΡΡΠΎ ΡΡΡΠΎ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π°ΠΌΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π² Π½Π°ΡΠΈΡΠ΅ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈ.

Π Π½Π°ΠΊΡΠ°Ρ ΠΏΡΠ΅ΠΏΠΎΡΡΠΊΠΈ:
- ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π½Π°ΠΏΡΠ°Π²Π΅ΡΠ΅ Database Lab.
- ΠΠΎ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π½Π°ΠΏΡΠ°Π²Π΅ΡΠ΅ ΠΏΠΎ ΠΏΠΎΡΡΡΠΊΠ°, Π·Π° Π΄Π° ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ΅ Π·Π° ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ Π²ΡΠ΅ΠΌΠ΅ β ΠΏΠΎΠΈΠ³ΡΠ°ΠΉΡΠ΅ ΠΈ ΠΈΠ·Π±ΡΠΎΡΠ΅ΡΠ΅. ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ ΠΎΠ±Π»Π°ΡΠΈ, ΡΠΎΠ²Π° Π΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, Ρ.Π΅. ΠΈΠΌΠ°ΠΉΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ standing.
- ΠΡΠ΄Π΅ΡΠ΅ Π»ΡΠ±ΠΎΠΏΠΈΡΠ½ΠΈ. Π Π°ΠΊΠΎ Π½Π΅ΡΠΎ Π½Π΅ Π΅ Π½Π°ΡΠ΅Π΄, ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΠΉΡΠ΅ Ρ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈ ΠΊΠ°ΠΊ ΡΠ΅ Π΄ΡΡΠΆΠΈ. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Nancy, Π·Π° Π΄Π° ΡΠ΅ ΠΎΠ±ΡΡΠ°Π²Π°ΡΠ΅ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΡΠ΅ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠΈ Π±Π°Π·Π°ΡΠ°.
- Π ΡΠ΅Π»Π΅ΡΠ΅ ΡΠ΅ Π² ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅ Π·Π° ΡΠ΅Π°ΠΊΡΠΈΡ.
- Π Π½Π΅ ΡΠ΅ ΡΡΡΠ°Ρ ΡΠ²Π°ΠΉΡΠ΅ ΠΎΡ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄ Π½Π° Postgres. ΠΠΎΠ³Π°ΡΠΎ ΡΠ°Π±ΠΎΡΠΈΡΠ΅ Ρ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄, ΡΡΡΠ±Π²Π° Π΄Π° Π·Π½Π°Π΅ΡΠ΅ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈ. Π’Π°ΠΌ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈ, Π²ΡΠΈΡΠΊΠΎ Π΅ ΠΎΠ±ΡΡΠ½Π΅Π½ΠΎ.
- Π ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΠΉΡΠ΅ Π·Π΄ΡΠ°Π²Π΅ΡΠΎ Π½Π° Π±Π°Π·Π°ΡΠ° ΡΠ΅Π΄ΠΎΠ²Π½ΠΎ, ΠΏΠΎΠ½Π΅ Π½Π° Π²ΡΠ΅ΠΊΠΈ ΡΡΠΈ ΠΌΠ΅ΡΠ΅ΡΠ° Π½Π° ΡΡΠΊΠ° ΠΈΠ»ΠΈ Ρ Postgres-checkup.

ΠΡΠΏΡΠΎΡΠΈ
ΠΠ½ΠΎΠ³ΠΎ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ! ΠΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π° ΡΠ°Π±ΠΎΡΠ°.
ΠΠ²Π΅ Π½Π΅ΡΠ°.
ΠΠ°, Π΄Π²Π΅ Π½Π΅ΡΠ°. ΠΠ±Π°ΡΠ΅ Π½Π΅ ΡΡΠ²ΡΠ΅ΠΌ ΡΠ°Π·Π±ΡΠ°Ρ . ΠΠΎΠ³Π°ΡΠΎ ΡΠ°Π±ΠΎΡΠΈΠΌ Ρ Nancy, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π½Π°ΡΡΡΠΎΠΉΠ²Π°ΠΌΠ΅ ΡΠ°ΠΌΠΎ Π΅Π΄ΠΈΠ½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΈΠ»ΠΈ ΡΡΠ»Π° Π³ΡΡΠΏΠ°?
ΠΠΌΠ°ΠΌΠ΅ delta-config ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΡΡΡΠΎΠΈΡΠ΅ ΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π½Π°Π²Π΅Π΄Π½ΡΠΆ. ΠΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ°Π·Π±ΠΈΡΠ°ΡΠ΅, ΡΠ΅ ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΡΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΡΠ°, ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΈ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈ ΠΈΠ·Π²ΠΎΠ΄ΠΈ.
ΠΠ°. ΠΠ°ΡΠΎ ΠΏΠΈΡΠ°ΠΌ? ΠΠ°ΡΠΎΡΠΎ Π΅ ΡΡΡΠ΄Π½ΠΎ Π΄Π° ΠΏΡΠΎΠ²Π΅ΠΆΠ΄Π°ΡΠ΅ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠΌΠ°ΡΠ΅ ΡΠ°ΠΌΠΎ Π΅Π΄ΠΈΠ½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ. ΠΠ°ΡΡΡΠΎΠΉΠ²Π°ΡΠ΅ Π³ΠΎ, Π³Π»Π΅Π΄Π°ΡΠ΅ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠΈ, Π½Π°ΡΡΡΠΎΠΉΠ²Π°ΡΠ΅ Π³ΠΎ. ΠΠΎΡΠ»Π΅ Π·Π°ΠΏΠΎΡΠ²Π°ΡΠ΅ Ρ ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡ.
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΡΡΡΠΎΠΉΠ²Π°ΡΠ΅ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ, Π½ΠΎ Π·Π°Π²ΠΈΡΠΈ ΠΎΡ ΡΠΈΡΡΠ°ΡΠΈΡΡΠ°, ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅. ΠΠΎ Π΅ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΡΠ΅ Π΅Π΄Π½Π° ΠΈΠ΄Π΅Ρ. ΠΡΠ΅ΡΠ° ΠΈΠ·Π½ΠΈΠΊΠ½Π° ΠΈΠ΄Π΅Ρ. ΠΠΌΠ°Ρ ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π±Π»ΠΈΠ·ΠΊΠ° ΡΠΈΡΡΠ°ΡΠΈΡ. ΠΠΌΠ°Ρ ΠΌΠ΅ Π΄Π²Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ. Π Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΌΠ΅ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ Π·Π°ΡΠΎ ΠΈΠΌΠ° Π³ΠΎΠ»ΡΠΌΠ° ΡΠ°Π·Π»ΠΈΠΊΠ°. Π ΠΈΠ·Π½ΠΈΠΊΠ½Π° ΠΈΠ΄Π΅ΡΡΠ°, ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π΄ΠΈΡ ΠΎΡΠΎΠΌΠΈΡ, Π·Π° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ ΠΈ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΠΌ Π² ΠΊΠ°ΠΊΠ²ΠΎ Π΅ ΡΠ°Π·Π»ΠΈΠΊΠ°ΡΠ°. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π°ΡΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π΅Π΄Π½Π°ΠΊΠ²ΠΈ, ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π΅Π΄Π½Π° ΡΠ΅ΡΠ²ΡΡΡ ΠΈ Ρ.Π½. ΠΡΠΈΡΠΊΠΎ Π΅ Π³ΡΠ²ΠΊΠ°Π²ΠΎ.
Π ΠΎΡΠ΅ Π΅Π΄ΠΈΠ½ Π²ΡΠΏΡΠΎΡ. ΠΡΠΎΠ΅ΠΊΡΡΡ Π΅ Π½ΠΎΠ², ΡΠ°Π·Π²ΠΈΠ²Π° ΡΠ΅. ΠΠΌΠ° Π»ΠΈ Π²Π΅ΡΠ΅ Π³ΠΎΡΠΎΠ²Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅?
ΠΠ°ΠΏΡΠ°Π²ΠΈΡ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½Π° Π²ΡΡΠ·ΠΊΠ° ΠΊΡΠΌ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅. Π’ΠΎΠ²Π° Π³ΠΎ ΠΈΠΌΠ°. ΠΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΡΠ° ΠΎΡΠ΅ Π³ΠΈ Π½ΡΠΌΠ°. Π’ΡΡΡΡ ΡΡΠΌΠΈΡΠ»Π΅Π½ΠΈΡΠΈ. Π Π³ΠΈ Π½Π°ΠΌΠΈΡΠ°ΠΌ, ΠΊΠΎΠ³Π°ΡΠΎ Π³ΠΎΠ²ΠΎΡΡ. Π’ΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΊΠΎ. ΠΡΠΊΠΎΠΉ Π²Π΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ Ρ ΠΌΠ΅Π½, Π½ΡΠΊΠΎΠΉ ΠΏΠΎΠΌΠΎΠ³Π½Π° ΠΈ Π½Π°ΠΏΡΠ°Π²ΠΈ Π½Π΅ΡΠΎ. Π Π°ΠΊΠΎ Π²ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ²Π° ΡΠ°Π·ΠΈ ΡΠ΅ΠΌΠ°, Π΄Π°ΠΉΡΠ΅ ΠΎΠ±ΡΠ°ΡΠ½Π° Π²ΡΡΠ·ΠΊΠ° β ΠΊΠ°ΠΊΠ²ΠΎ Π½Π΅ Π΄ΠΎΡΡΠΈΠ³Π°.
ΠΠΎΠ³Π°ΡΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ Π»Π°Π±ΠΎΡΠ°ΡΠΎΡΠΈΡ, ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° ΠΎΠ±ΡΠ°ΡΠ½Π° Π²ΡΡΠ·ΠΊΠ°. Π©Π΅ Π²ΠΈΠ΄ΠΈΠΌ. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ!
ΠΠ΄ΡΠ°Π²Π΅ΠΉΡΠ΅! ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ Π·Π° Π΄ΠΎΠΊΠ»Π°Π΄Π°! ΠΠΈΠ΄ΡΡ , ΡΠ΅ ΠΈΠΌΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Amazon. ΠΠ»Π°Π½ΠΈΡΠ° Π»ΠΈ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° GSP?
ΠΠΎΠ±ΡΡ Π²ΡΠΏΡΠΎΡ. ΠΠ°ΠΏΠΎΡΠ½Π°Ρ ΠΌΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈΠΌ ΠΏΠΎ Π½Π΅Π³ΠΎ. Π Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π³ΠΎ Π·Π°ΠΌΡΠ°Π·ΠΈΡ ΠΌΠ΅, Π·Π°ΡΠΎΡΠΎ ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΡΠΏΠ΅ΡΡΡΠ²Π°ΠΌΠ΅. Π’.Π΅. ΠΈΠΌΠ°ΠΌΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° run on localhost. ΠΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΠΌΠΈ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡ ΠΈ Π΄Π° ΡΠ°Π±ΠΎΡΠΈΡΠ΅ Π»ΠΎΠΊΠ°Π»Π½ΠΎ. ΠΠ΅ΠΆΠ΄Ρ Π΄ΡΡΠ³ΠΎΡΠΎ, Π½ΠΈΠ΅ ΡΠ°ΠΊΠ° ΠΏΡΠ°Π²ΠΈΠΌ. Π Getlab ΠΏΡΠ°Π²Ρ ΡΠ°ΠΊΠ°, ΡΠ°ΠΌ Π½Π° GSP. ΠΠΎ Π½Π΅ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ ΡΠΌΠΈΡΡΠ» Π΄Π° ΠΏΡΠ°Π²ΠΈΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊΠ°Π²Π° ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΡ, Π·Π°ΡΠΎΡΠΎ Google Π½ΡΠΌΠ° Π΅Π²ΡΠΈΠ½ΠΈ ΡΠΏΠΎΡΠΎΠ²Π΅. ΠΠΌΠ° ??? ΠΈΠ½ΡΡΠ°Π½ΡΠΈΠΈ, Π½ΠΎ ΡΠ΅ ΠΈΠΌΠ°Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ. ΠΡΡΠ²ΠΎ, Π²ΠΈΠ½Π°Π³ΠΈ ΠΈΠΌΠ°Ρ ΡΠ°ΠΌΠΎ 70% ΠΎΡΡΡΡΠΏΠΊΠ° ΠΈ ΡΠ°ΠΌ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ³ΡΠ°Π΅ΡΠ΅ Ρ ΡΠ΅Π½Π°ΡΠ°. Π‘ΠΏΠΎΡΠΎΠ²Π΅ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Ρ ΡΠ΅Π½Π°ΡΠ° Ρ 5-10%, Π·Π° Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈΠΌ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡΠ° Π΄Π° Π²ΠΈ ΠΈΠ·Ρ Π²ΡΡΠ»ΡΡ. Π’.Π΅. ΡΠΏΠΎΡΠΎΠ²Π΅ΡΠ΅ ΡΠΏΠ΅ΡΡΡΠ²Π°Ρ, Π½ΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΎΡΠ½Π΅ΡΠΈ ΠΏΠΎ Π²ΡΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅. ΠΠΊΠΎ ΠΏΠΎΡΡΠ°Π²ΡΡΠ΅ ΡΠ΅Π½Π°ΡΠ° ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-Π²ΠΈΡΠΎΠΊΠ° ΠΎΡ Π΄ΡΡΠ³ΠΈΡΠ΅, ΡΠ΅ Π±ΡΠ΄Π΅ΡΠ΅ ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ ΡΠ±ΠΈΡΠΈ. Google ΠΈΠΌΠ° ΡΡΠ²ΡΠ΅ΠΌ ΡΠ°Π·Π»ΠΈΡΠ½Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°. ΠΠΌΠ° ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π»ΠΎΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ - ΡΠ΅ ΠΆΠΈΠ²Π΅ΡΡ ΡΠ°ΠΌΠΎ 24 ΡΠ°ΡΠ°. Π ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΠΏΡΠΎΠ²Π΅ΠΆΠ΄Π°ΠΌΠ΅ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ Π·Π° 5 Π΄Π½ΠΈ. ΠΠΎ ΡΠΎΠ²Π° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈ ΡΠΏΠΎΡΠΎΠ²Π΅ΡΠ΅, ΡΠΏΠΎΡΠΎΠ²Π΅ΡΠ΅ ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° ΠΆΠΈΠ²Π΅ΡΡ Ρ ΠΌΠ΅ΡΠ΅ΡΠΈ.
ΠΠ΄ΡΠ°Π²Π΅ΠΉΡΠ΅! ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ Π·Π° Π΄ΠΎΠΊΠ»Π°Π΄Π°! Π‘ΠΏΠΎΠΌΠ΅Π½Π°Ρ ΡΠ΅ Π·Π° checkup. ΠΠ°ΠΊ ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π°ΡΠ΅ Π³ΡΠ΅ΡΠΊΠΈΡΠ΅ stat_statements?
ΠΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±ΡΡ Π²ΡΠΏΡΠΎΡ. ΠΠΎΠ³Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ° ΠΈ ΡΠ°Π·ΠΊΠ°ΠΆΠ°. ΠΠ°ΠΊΡΠ°ΡΠΊΠΎ - Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊ ΡΠ΅ Π΄Π²ΠΈΠΆΠΈ Π½Π°Π±ΠΎΡΡΡ ΠΎΡ Π³ΡΡΠΏΠΈ Π·Π°ΡΠ²ΠΊΠΈ: ΠΊΠΎΠ»ΠΊΠΎ ΡΠ° ΡΠ΅ ΠΎΡΠΊΠ°Π·Π°Π»ΠΈ ΠΈ ΠΊΠΎΠ»ΠΊΠΎ Π½ΠΎΠ²ΠΈ ΡΠ° ΡΠ΅ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈ. Π ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°ΠΌΠ΅ Π΄Π²Π΅ ΠΌΠ΅ΡΡΠΈΠΊΠΈ: total_time ΠΈ calls, Π·Π°ΡΠΎΠ²Π° ΠΈΠΌΠ° Π΄Π²Π΅ Π³ΡΠ΅ΡΠΊΠΈ. Π Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊΡΠ² Π΅ ΠΏΡΠΈΠ½ΠΎΡΡΡ Π½Π° ΠΎΡΠΊΠ°Π·Π°Π»ΠΈΡΠ΅ ΡΠ΅ Π³ΡΡΠΏΠΈ. ΠΠΌΠ° Π΄Π²Π΅ ΠΏΠΎΠ΄Π³ΡΡΠΏΠΈ: ΠΈΠ·ΡΠ΅ΠΊΠ»Π° ΠΈ Π²ΡΡΠ½Π°ΡΠ°. ΠΠ»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊΡΠ² Π΅ ΡΠ΅Ρ Π½ΠΈΡΡ ΠΏΡΠΈΠ½ΠΎΡ Π² ΠΎΠ±ΡΠ°ΡΠ° ΠΊΠ°ΡΡΠΈΠ½Π°.
ΠΠΎ Π½Π΅ ΡΠ΅ Π»ΠΈ ΡΡΡΠ°Ρ ΡΠ²Π°ΡΠ΅, ΡΠ΅ ΡΡ ΡΠ°ΠΌ ΡΠ΅ ΡΠ΅ ΠΏΠΎΠ²ΡΠΎΡΠΈ Π΄Π²Π°-ΡΡΠΈ ΠΏΡΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠΎΠΌΠ΅Π½ΡΠΈΡΠ΅ Π½Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠ½Π΅ΠΏΡΠΎΡΠΎΠ²Π΅ΡΠ΅?
Π’.Π΅. ΡΠ΅ ΡΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°Ρ Π° ΠΎΡΠ½ΠΎΠ²ΠΎ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ?
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°Π·ΠΈ Π·Π°ΡΠ²ΠΊΠ° Π²Π΅ΡΠ΅ Π²Π΅Π΄Π½ΡΠΆ Π΅ Π±ΠΈΠ»Π° ΠΈΠ·ΡΠ΅Π³Π»Π΅Π½Π°, ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π΅ Π΄ΠΎΡΠ»Π° ΠΈ ΠΎΡΠ½ΠΎΠ²ΠΎ Π΅ Π±ΠΈΠ»Π° ΠΈΠ·ΡΠ΅Π³Π»Π΅Π½Π°, ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΎΡΠ½ΠΎΠ²ΠΎ Π΅ Π΄ΠΎΡΠ»Π° ΠΈ ΠΎΡΠ½ΠΎΠ²ΠΎ Π΅ Π±ΠΈΠ»Π° ΠΈΠ·ΡΠ΅Π³Π»Π΅Π½Π°. Π Π²ΠΈΠ΅ ΡΡΠΊ Π½Π΅ΡΠΎ ΡΡΠ΅ ΡΠΌΠ΅ΡΠ½Π°Π»ΠΈ, Π° ΠΊΡΠ΄Π΅ Π΅ Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π°?
ΠΠΎΠ±ΡΡ Π²ΡΠΏΡΠΎΡ, ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅.
ΠΡΠ°Π²ΠΈΡ Π½Π΅ΡΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ. Π Π°Π·Π±ΠΈΡΠ° ΡΠ΅, ΠΏΠΎ-ΠΏΡΠΎΡΡΠΎ, Π½Π°ΠΏΡΠ°Π²ΠΈΡ Π³ΠΎ ΡΠ°ΠΌ. ΠΠΎ ΠΌΠΈ ΡΠ΅ Π½Π°Π»ΠΎΠΆΠΈ Π΄Π° Π½ΡΠ»ΠΈΡΠ°ΠΌ, Π΄Π° Π½Π°ΠΏΡΠ°Π²Ρ reset Π½Π° stat_statements ΠΈ Π΄Π° ΡΠ΅ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°ΠΌ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½Π° ΡΠ½Π΅ΠΏΡΠΎΡΠ°, ΡΠ΅ ΡΠ°ΠΌ Π΅ ΠΏΠΎΠ΄ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π΄ΡΠ», ΡΠ΅ Π²ΡΠ΅ ΠΏΠ°ΠΊ Π½Π΅ Π΅ Π΄ΠΎΡΡΠΈΠ³Π½Π°Π»ΠΎ Π΄ΠΎ ΡΠ°Π²Π°Π½Π°, ΠΊΠΎΠ»ΠΊΠΎ stat_statements ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΡΡΡΠΏΠ°. ΠΡΠΈΠ΅Π½ΡΠΈΡΠ°ΠΌ ΡΠ΅, ΡΠ΅ Π½Π°ΠΉ-Π²Π΅ΡΠΎΡΡΠ½ΠΎ Π½ΠΈΡΠΎ Π½Π΅ Π΅ Π±ΠΈΠ»ΠΎ ΠΈΠ·ΡΠ΅Π³Π»Π΅Π½ΠΎ.
ΠΠ°-Π΄Π°.
ΠΠΎ ΠΊΠ°ΠΊ ΠΏΠΎ Π΄ΡΡΠ³ Π½Π°ΡΠΈΠ½ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²Ρ Π΄ΠΎΡΡΠΎΠ²Π΅ΡΠ½ΠΎ Π½Π΅ ΡΠ°Π·Π±ΠΈΡΠ°ΠΌ.
ΠΠ° ΡΡΠΆΠ°Π»Π΅Π½ΠΈΠ΅, ΡΠΎΡΠ½ΠΎ Π½Π΅ ΠΏΠΎΠΌΠ½Ρ - ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π»ΠΈ ΡΠ°ΠΌ ΡΠ΅ΠΊΡΡΠ° Π½Π° Π·Π°ΡΠ²ΠΊΠ°ΡΠ° ΠΈΠ»ΠΈ queryid Ρ pg_stat_statements ΠΈ Π½Π° Π½Π΅Π³ΠΎ ΡΠ΅ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°ΠΌΠ΅. ΠΠΊΠΎ ΡΠ΅ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°ΠΌΠ΅ Π½Π° queryid, ΡΠΎ ΠΏΠΎ ΠΈΠ΄Π΅Ρ ΡΡΠ°Π²Π½ΡΠ²Π°ΠΌΠ΅ ΡΡΠ°Π²Π½ΠΈΠΌΠΈ Π½Π΅ΡΠ°.
ΠΠ΅, ΡΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·Ρ Π²ΡΡΠ»Π΅Π½ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ½ΠΈΠΌΠΊΠΈΡΠ΅ ΠΈ Π΄Π° ΡΠ΅ Π²ΡΡΠ½Π΅ ΠΎΡΠ½ΠΎΠ²ΠΎ.
Π‘ΡΡ ΡΡΡΠΎΡΠΎ id?
ΠΠ°.
Π©Π΅ ΠΏΡΠΎΡΡΠΈΠΌ ΡΠΎΠ²Π°. ΠΠΎΠ±ΡΡ Π²ΡΠΏΡΠΎΡ. Π’ΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΡΠ»Π΅Π΄Π²Π°. ΠΠΎ Π·Π°ΡΠ΅Π³Π° ΡΠΎΠ²Π°, ΠΊΠΎΠ΅ΡΠΎ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅, Π΅ ΠΈΠ»ΠΈ 0 ΡΠ΅ Π·Π°ΠΏΠΈΡΠ²Π°...
Π’ΠΎΠ²Π°, ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅, Π΅ ΡΡΠ΄ΡΠΊ ΡΠ»ΡΡΠ°ΠΉ, Π½ΠΎ Π±ΡΡ ΡΠΎΠΊΠΈΡΠ°Π½, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ°Π·Π±ΡΠ°Ρ , ΡΠ΅ stat_statements ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·Ρ Π²ΡΡΠ»Π΅Π½.
Π Pg_stat_statements ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΡΠ°. Π‘ΡΠ΅ΡΠ°Π»ΠΈ ΡΠΌΠ΅ ΡΠ΅ Ρ ΡΠΎΠ²Π°, ΡΠ΅ Π°ΠΊΠΎ track_utility Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½, ΡΠΎ Π½Π°Π±ΠΎΡΠΈΡΠ΅ ΡΡΡΠΎ ΡΠ΅ ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Ρ.
ΠΠ°, ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅.
Π Π°ΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ java hibernate, ΠΊΠΎΠΉΡΠΎ Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½, ΡΠΎΠ³Π°Π²Π° Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° Π·Π°ΠΏΠΎΡΠ²Π° Π΄Π° ΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠ°. Π ΠΊΠΎΠ³Π°ΡΠΎ ΡΠΏΡΠ΅ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π°ΡΠΎΠ²Π°ΡΠ΅Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΡΠ΅ 50-100 Π³ΡΡΠΏΠΈ. Π ΡΠ°ΠΌ Π²ΡΠΈΡΠΊΠΎ Π΅ ΠΏΠΎ-ΠΈΠ»ΠΈ-ΠΌΠ΅Π½Π΅ ΡΡΠ°Π±ΠΈΠ»Π½ΠΎ. ΠΠ΄ΠΈΠ½ ΠΎΡ Π½Π°ΡΠΈΠ½ΠΈΡΠ΅ Π΄Π° ΡΠ΅ ΡΠΏΡΠ°Π²ΠΈΡΠ΅ Ρ ΡΠΎΠ²Π° Π΅ Π΄Π° ΡΠ²Π΅Π»ΠΈΡΠΈΡΠ΅ pg_stat_statements.max.
ΠΠ°, Π½ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π·Π½Π°Π΅ΡΠ΅ Π΄ΠΎΠΊΠΎΠ»ΠΊΠΎ. Π ΡΡΡΠ±Π²Π° Π΄Π° Π³ΠΎ Π½Π°Π±Π»ΡΠ΄Π°Π²Π°ΡΠ΅. ΠΠ· ΡΠ°ΠΊΠ° ΠΈ ΠΏΡΠ°Π²Ρ. Π’.Π΅. ΠΈΠΌΠ°ΠΌ pg_stat_statements.max. Π Π³Π»Π΅Π΄Π°ΠΌ, ΡΠ΅ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½Π° ΡΠ½ΠΈΠΌΠΊΠ°ΡΠ° Π½Π΅ ΡΡΠΌ Π΄ΠΎΡΡΠΈΠ³Π½Π°Π» 70%. ΠΠΎΠ±ΡΠ΅, Π·Π½Π°ΡΠΈ Π½Π΅ ΡΠΌΠ΅ Π·Π°Π³ΡΠ±ΠΈΠ»ΠΈ Π½ΠΈΡΠΎ. ΠΡΠ°Π²ΠΈΠΌ reset ΠΈ ΠΎΡΠ½ΠΎΠ²ΠΎ Π½Π°ΡΡΡΠΏΠ²Π°ΠΌΠ΅. ΠΠΊΠΎ Π² ΡΠ»Π΅Π΄Π²Π°ΡΠ°ΡΠ° ΡΠ½ΠΈΠΌΠΊΠ° Π΅ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ 70, ΡΠΎΠ³Π°Π²Π° Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΠΎΡΠ½ΠΎΠ²ΠΎ Π½Π΅ ΡΠΌΠ΅ Π·Π°Π³ΡΠ±ΠΈΠ»ΠΈ Π½ΠΈΡΠΎ.
ΠΠ°. ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΡΠ΅Π³Π° Π΅ 5 000. Π Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ ΡΡΡ ΡΠΎΠ²Π° Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ.
ΠΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ β Π΄Π°.
ΠΠΈΠ΄Π΅ΠΎ:

P.S. ΠΡ ΡΠ΅Π±Π΅ ΡΠΈ Π΄ΠΎΠ±Π°Π²ΡΠΌ, ΡΠ΅ Π°ΠΊΠΎ Π² Postgres ΠΈΠΌΠ° ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»Π½ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° Π²Π»ΠΈΠ·Π°Ρ Π² ΡΠ΅ΡΡΠΎΠ²Π°ΡΠ° ΡΡΠ΅Π΄Π°, ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π²ΡΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΎΡ . Π‘Ρ Π΅ΠΌΠ°ΡΠ° Π΅ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ ΡΠ»Π΅Π΄Π½Π°ΡΠ°:

ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
