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

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

ΠΡΠΊΠΎΠ»ΠΊΠΎ Π΄ΡΠΌΠΈ Π·Π° ΠΌΠ΅Π½. ΠΠΏΠΈΡΡΡ ΠΌΠΈ Ρ Postgres Π²Π΅ΡΠ΅ Π΅ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ 14 Π³ΠΎΠ΄ΠΈΠ½ΠΈ. ΠΡΠ½ΠΎΠ²Π°Ρ ΡΠ΅Π΄ΠΈΡΠ° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π² ΡΠΎΡΠΈΠ°Π»Π½ΠΈΡΠ΅ ΠΌΡΠ΅ΠΆΠΈ. ΠΡΡΠΊΡΠ΄Π΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Postgres ΠΈ Π²ΡΠ΅ ΠΎΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°.
Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° Π³ΡΡΠΏΠ°ΡΠ° RuPostgres Π½Π° Meetup, Π²ΡΠΎΡΠΎ ΠΌΡΡΡΠΎ Π² ΡΠ²Π΅ΡΠ°. ΠΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΡΠ΅ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ°Π²Π°ΠΌΠ΅ Π΄ΠΎ 2000 Π΄ΡΡΠΈ. 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. Π ΡΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ°ΠΌΠΎ Π΅Π΄ΠΈΠ½. Π ΡΠΎΠΉ Π΅ ΠΈΠ·ΠΎΡΡΠ°Π½Π°Π»Π° ΡΠ΅ΡΡ ΠΌΠ΅ΡΠ΅ΡΠ°. Π Π²ΠΈΠ΅ ΡΠΌΡΡΠ°ΡΠ΅, ΡΠ΅ ΡΠ΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ΡΠ΅ ΠΊΡΠΌ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡ. ΠΠΎΡΠΈ ΠΎΠΏΠΈΡΠ½ΠΈΡΠ΅ DBA ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°Ρ Π² ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡ, Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠ°. ΠΠΎΠ½ΡΠΊΠΎΠ³Π° ΡΡΠ·Π΄Π°Π²Π°Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π΅Π½ ΠΈΠ½Π΄Π΅ΠΊΡ, ΡΠ²Π΅ΡΡΠ²Π°Ρ ΡΠ΅, ΡΠ΅ Π΅ ΠΏΠΎΠ»Π΅Π·Π΅Π½, ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°Ρ Π³ΠΎ ΠΈ Π³ΠΎ Π΄Π°Π²Π°Ρ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅, Π·Π° Π΄Π° Π³ΠΎ Π²ΠΊΠ»ΡΡΠ°Ρ Π² ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. Π’Π°ΠΊΡΠ² Π°Π±ΡΡΡΠ΄ ΡΠ΅ ΡΠ»ΡΡΠ²Π° Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ°. Π ΡΠΎΠ²Π° Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ.

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

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

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

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

Π Π·Π° ΡΠΎΠ²Π° ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ. Π’ΠΎΠΉ ΡΠ΅ ΡΡΡΡΠΎΠΈ ΠΎΡ ΡΠ΅ΡΠΈΡΠΈ ΡΠ°ΡΡΠΈ.
- ΠΡΡΠ²Π°ΡΠ° ΡΠ°ΡΡ Π΅ ΠΎΠΊΠΎΠ»Π½Π°ΡΠ° ΡΡΠ΅Π΄Π°. ΠΡΠΆΠ΄Π°Π΅ΠΌ ΡΠ΅ ΠΎΡ Ρ Π°ΡΠ΄ΡΠ΅Ρ. Π ΠΊΠΎΠ³Π°ΡΠΎ Π²Π»ΡΠ·Π° Π² Π½ΡΠΊΠΎΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ ΠΈ ΡΠΊΠ»ΡΡΠ° Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ, ΠΊΠ°Π·Π²Π°ΠΌ, ΡΠ΅ ΠΈΡΠΊΠ°ΠΌ Π΄Π° ΠΌΠΈ Π΄Π°Π΄Π°Ρ ΡΠ°ΠΊΡΠ² Ρ Π°ΡΠ΄ΡΠ΅Ρ, ΠΊΠ°ΠΊΡΠ²ΡΠΎ Π΅ Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡ. ΠΠ° Π²ΡΠ΅ΠΊΠΈ ΠΎΡ Π²Π°ΡΠΈΡΠ΅ Master-ΠΈ ΠΌΠΈ Π΅ Π½ΡΠΆΠ΅Π½ ΠΏΠΎΠ½Π΅ Π΅Π΄ΠΈΠ½ ΡΠ°ΠΊΡΠ² Ρ Π°ΡΠ΄ΡΠ΅Ρ. ΠΠ»ΠΈ Π΅ Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π° Π½Π° ΠΈΠ½ΡΡΠ°Π½Ρ Π² ΠΠΌΠ°Π·ΠΎΠ½ ΠΈΠ»ΠΈ Google, ΠΈΠ»ΠΈ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊΡΠ² Ρ Π°ΡΠ΄ΡΠ΅Ρ ΠΌΠΈ Π΅ Π½ΡΠΆΠ΅Π½. Π’.Π΅. ΠΈΡΠΊΠ°ΠΌ Π΄Π° Π²ΡΠ·ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π° ΠΎΠΊΠΎΠ»Π½Π°ΡΠ° ΡΡΠ΅Π΄Π°. Π Π² ΠΏΠΎΠ½ΡΡΠΈΠ΅ΡΠΎ ΠΎΠΊΠΎΠ»Π½Π° ΡΡΠ΅Π΄Π° ΡΠ΅ Π²ΠΊΠ»ΡΡΠ²Π° ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° Postgres.
- ΠΡΠΎΡΠ°ΡΠ° ΡΠ°ΡΡ Π΅ ΠΎΠ±Π΅ΠΊΡΡΡ Π½Π° Π½Π°ΡΠΈΡΠ΅ ΠΈΠ·ΡΠ»Π΅Π΄Π²Π°Π½ΠΈΡ. Π’ΠΎΠ²Π° Π΅ Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ. ΠΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½Π° ΠΏΠΎ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π½Π°ΡΠΈΠ½Π°. Π©Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ° ΠΊΠ°ΠΊ.
- Π’ΡΠ΅ΡΠ°ΡΠ° ΡΠ°ΡΡ Π΅ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ. Π’ΠΎΠ²Π° Π΅ Π½Π°ΠΉ-ΡΠ»ΠΎΠΆΠ½Π°ΡΠ° ΡΠ°ΡΡ.
- Π§Π΅ΡΠ²ΡΡΡΠ°ΡΠ° ΡΠ°ΡΡ β ΡΠΎΠ²Π° Π΅, ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΠΌΠ΅, Ρ.Π΅. Ρ ΠΊΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΡΡΠ°Π²Π½ΡΠ²Π°ΠΌΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠΌ Π΅Π΄ΠΈΠ½ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ°, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΈ Ρ.Π½.

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

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

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

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


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

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

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

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

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

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

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

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

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

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

- ΠΡΠΈΡΡΠΈΠ³Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ, Π² ΠΊΠΎΡΡΠΎ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, Π·Π°ΠΏΠΎΡΠ²Π°ΠΉΠΊΠΈ ΠΎΡ ΡΠ½ΠΈΠΌΠΊΠΈ Π½Π° pgstat***. Π ΡΠ°ΠΌ Π½Π°ΠΉ-ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΡΠΎ Π΅ pg_stat_statements, pg_stat_kcacke. Π’ΠΎΠ²Π° ΡΠ° Π΄Π²Π΅ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Ρ Π·Π°ΡΠ²ΠΊΠΈΡΠ΅. Π pg_stat_bgwriter ΡΡΠ΄ΡΡΠΆΠ° Π½Π΅ ΡΠ°ΠΌΠΎ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° Π·Π° pgwriter, Π½ΠΎ ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° checkpoint ΠΈ Π·Π° Π½Π°ΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΠΉΡΠΎ ΡΠ°ΠΌΠΈΡΠ΅ Π±Π΅ΠΊΠ΅Π½Π΄ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Ρ ΠΌΡΡΡΠ½ΠΈ Π±ΡΡΠ΅ΡΠΈ. Π Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ Π΄Π° ΡΠ΅ Π²ΠΈΠ΄ΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π°ΡΠΎ Π½Π°ΡΡΡΠΎΠΉΠ²Π°ΠΌΠ΅ shared_buffers, ΠΌΠ½ΠΎΠ³ΠΎ Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠΎΠ»ΠΊΠΎ Π±ΡΡΠ΅ΡΠΈ ΡΠ° ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄Π΅Π½ΠΈ.
- Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° ΠΏΡΠΈΡΡΠΈΠ³Π°Ρ ΠΆΡΡΠ½Π°Π»ΠΈ Π½Π° Postgres. ΠΠ²Π° ΠΆΡΡΠ½Π°Π»Π° β ΠΆΡΡΠ½Π°Π» Π·Π° ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° ΠΈ ΠΆΡΡΠ½Π°Π» Π·Π° Π²ΡΠ·ΠΏΡΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ.
- ΠΡΠ½ΠΎΡΠΈΡΠ΅Π»Π½ΠΎ Π½ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΡ β FlameGraphs.
- Π‘ΡΡΠΎ ΡΠ°ΠΊΠ°, Π°ΠΊΠΎ ΡΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π»ΠΈ Π²Π°ΡΠΈΠ°Π½ΡΠΈ Π½Π° pgreplay ΠΈΠ»ΠΈ pgbench Π·Π° Π²ΡΠ·ΠΏΡΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ, ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΠ΅Ρ Π½ΠΈΡ ΠΈΠ·Ρ ΠΎΠ΄. Π ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ latency ΠΈ 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? ΠΠ°ΠΊΠ²Π° Π΅ ΡΠ°ΡΡΡΠ° ΠΈ ΠΊΠ°ΠΊΠ²ΠΎ? Π’ΡΠΊ Π»Π΅ΠΊΠΎ ΡΠ΅ ΠΎΡΠΊΠ»ΠΎΠ½ΡΠ²Π°ΠΌΠ΅. ΠΠΌΠ°ΠΌΠ΅ ΠΎΡΠ΅ Π΅Π΄ΠΈΠ½ ΠΏΡΠΎΠ΄ΡΠΊΡ . Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° Π΅ Π±Π°Π·Π° Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄. Π Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π°ΠΊΡΠΈΠ²Π½ΠΎ Π³ΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°ΠΌΠ΅.
Π’ΠΎΠΉ Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½ ΠΏΠΎ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΡΠΈΡΠΈΠ½ΠΈ. ΠΠΎ ΠΏΡΠΈΡΠΈΠ½ΠΈ, ΡΠ΅ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ΡΡ Π΅ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΡΠ΅Π½. Π’.Π΅. Π²ΠΈΠ΅ ΠΈΠ΄Π²Π°ΡΠ΅, ΡΠ°Π·Π³Π»Π΅ΠΆΠ΄Π°ΡΠ΅ Π±Π°Π·Π°ΡΠ°, Π²ΠΈΠΆΠ΄Π°ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΈΠΌΠ°ΡΠ΅. Π, ΠΊΠ°ΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΏΡΠ°Π²ΠΈΡΠ΅ health_check. ΠΠΊΠΎ ΡΡΠ΅ ΠΎΠΏΠΈΡΠ΅Π½ DBA, ΠΏΡΠ°Π²ΠΈΡΠ΅ health_check. Π Π°Π·Π³Π»Π΅ΠΆΠ΄Π°ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ΅ ΠΈ Ρ.Π½. ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ OKmeter, Π΅ ΡΡΡΠ°Ρ ΠΎΡΠ½ΠΎ. Π’ΠΎΠ²Π° Π΅ ΡΡΠ΄Π΅ΡΠ΅Π½ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π·Π° Postgres. OKmeter.io β ΠΌΠΎΠ»Ρ, ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅ Π³ΠΎ, Π²ΡΠΈΡΠΊΠΎ ΡΠ°ΠΌ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±ΡΠ΅ Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΎ. Π’ΠΎΠΉ Π΅ ΠΏΠ»Π°ΡΠ΅Π½.
ΠΠΊΠΎ Π½ΡΠΌΠ°ΡΠ΅ ΡΠ°ΠΊΠΎΠ²Π° Π½Π΅ΡΠΎ, ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π½ΡΠΌΠ°ΡΠ΅ ΠΏΠΎΡΡΠΈ Π½ΠΈΡΠΎ. Π ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΈΠΌΠ°ΡΠ΅ CPU, IO ΠΈ ΡΠΎ Ρ ΡΠ³ΠΎΠ²ΠΎΡΠΊΠΈ, ΠΈ ΡΠΎΠ²Π° Π΅ Π²ΡΠΈΡΠΊΠΎ. Π Π½Π° Π½Π°Ρ Π½ΠΈ ΡΡΡΠ±Π²Π° ΠΏΠΎΠ²Π΅ΡΠ΅. Π’ΡΡΠ±Π²Π° Π΄Π° Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠΈ Π°Π²ΡΠΎΠ²Π°ΠΊΡΡΠΌ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠΈ checkpoint, Π² IO ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΡΠ΄Π΅Π»ΠΈΠΌ checkpoint ΠΎΡ bgwriter ΠΈ ΠΎΡ Π±Π΅ΠΊΠ΅Π½Π΄ΠΈΡΠ΅ ΠΈ Ρ.Π½.
ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ Π΅, ΡΠ΅ ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΠΎΠΌΠ°Π³Π°Ρ Π½Π° Π½ΡΠΊΠΎΡ Π³ΠΎΠ»ΡΠΌΠ° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ, ΡΠ΅ Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π²Π½Π΅Π΄ΡΡΡ Π½Π΅ΡΠΎ Π±ΡΡΠ·ΠΎ. ΠΠ΅ ΠΌΠΎΠ³Π°Ρ Π±ΡΡΠ·ΠΎ Π΄Π° ΠΊΡΠΏΡΡ OKmeter. ΠΠΎΠΆΠ΅ Π±ΠΈ ΡΠ»Π΅Π΄ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½ Π³ΠΎΠ΄ΠΈΠ½Π° ΡΠ΅ Π³ΠΎ ΠΊΡΠΏΡΡ. ΠΠ΅ ΠΌΠΎΠ³Π°Ρ Π±ΡΡΠ·ΠΎ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Ρ Π½ΡΠΊΠ°ΠΊΠ²ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ.
Π Π½ΠΈ Ρ ΡΡΠΌΠ½Π° ΠΈΠ΄Π΅ΡΡΠ°, ΡΠ΅ Π½ΠΈ Π΅ Π½ΡΠΆΠ΅Π½ ΡΠ°ΠΊΡΠ² ΡΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠΎΠΉΡΠΎ Π½Π΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° Π½ΠΈΡΠΎ Π·Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡ, Ρ.Π΅. Π²ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠΎ Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ Π½ΠΈΡΠΎ Π½Π° production. ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ Π³ΠΎ Π½Π° Π»Π°ΠΏΡΠΎΠΏΠ° ΡΠΈ ΠΈΠ»ΠΈ Π½Π° observing server, ΠΎΡ ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π³ΠΎ ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅. Π ΡΠΎΠΉ ΡΠ΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΡΠ°: ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΈ ΡΠ°ΠΌΠΈΡ Postgres, ΠΏΡΠ°Π²Π΅ΠΉΠΊΠΈ Π»Π΅ΠΊΠΈ Π·Π°ΡΠ²ΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΏΡΡΠΊΠ°Ρ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π½Π° production ΠΈ Π½ΠΈΡΠΎ Π½ΡΠΌΠ° Π΄Π° ΡΠ΅ ΠΏΡΠΎΠ²Π°Π»ΠΈ.
ΠΠ°Π·ΠΎΠ²Π°Ρ ΠΌΠ΅ Π³ΠΎ Postgres-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 Π΅, ΡΠ΅ ΡΠΎΠΉ Π½Π΅ ΠΏΠΎΠΌΠ½ΠΈ ΠΊΠΎΠ³Π° Π΅ Π±ΠΈΠ» reset. ΠΠΊΠΎ 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 %, ΡΠΎΠ²Π° Π΅ ΠΠ.

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

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

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

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

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

ΠΡΠΏΡΠΎΡΠΈ
ΠΠ½ΠΎΠ³ΠΎ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ! ΠΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
ΠΠ²Π΅ Π½Π΅ΡΠ°.
ΠΠ°, Π΄Π²Π΅ Π½Π΅ΡΠ°. Π‘Π°ΠΌΠΎ ΡΠ΅ Π½Π΅ ΡΡΠ²ΡΠ΅ΠΌ ΡΠ°Π·Π±ΡΠ°Ρ . ΠΠΎΠ³Π°ΡΠΎ ΡΠ°Π±ΠΎΡΠΈΠΌ Ρ Nancy, ΠΌΠΎΠΆΠ΅ΠΌ Π»ΠΈ Π΄Π° Π½Π°ΡΡΡΠΎΠΉΠ²Π°ΠΌΠ΅ ΡΠ°ΠΌΠΎ Π΅Π΄ΠΈΠ½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΈΠ»ΠΈ ΡΡΠ»Π° Π³ΡΡΠΏΠ°?
ΠΠΌΠ°ΠΌΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ delta-config. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΡΡΡΠΎΠΈΡΠ΅ ΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΠΈΡΠΊΠ°ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π½Π°Π²Π΅Π΄Π½ΡΠΆ. ΠΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ°Π·Π±ΠΈΡΠ°ΡΠ΅, ΡΠ΅ ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΡΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΡΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈ Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ.
ΠΠ°. ΠΠ°ΡΠΎ ΠΏΠΈΡΠ°ΠΌ? ΠΠ°ΡΠΎΡΠΎ Π΅ ΡΡΡΠ΄Π½ΠΎ Π΄Π° ΠΏΡΠΎΠ²Π΅ΠΆΠ΄Π°ΡΠ΅ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠΌΠ°ΡΠ΅ ΡΠ°ΠΌΠΎ Π΅Π΄ΠΈΠ½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ. ΠΠ°ΡΡΡΠΎΠΉΠ²Π°ΡΠ΅ Π³ΠΎ, Π³Π»Π΅Π΄Π°ΡΠ΅ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠΈ. ΠΠ°ΡΡΡΠΎΠΉΠ²Π°ΡΠ΅ Π³ΠΎ. ΠΠΎΡΠ»Π΅ Π·Π°ΠΏΠΎΡΠ²Π°ΡΠ΅ ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡ.
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΡΡΡΠΎΠΉΠ²Π°ΡΠ΅ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ, Π½ΠΎ Π·Π°Π²ΠΈΡΠΈ ΠΎΡ ΡΠΈΡΡΠ°ΡΠΈΡΡΠ°, ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅. ΠΠΎ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅ Π΅ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΡΠ΅ Π΅Π΄Π½Π° ΠΈΠ΄Π΅Ρ. ΠΡΠ΅ΡΠ° ΠΈΠΌΠ°ΠΌΠ΅ ΠΈΠ΄Π΅Ρ. ΠΠΌΠ°Ρ ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π±Π»ΠΈΠ·ΠΊΠ° ΡΠΈΡΡΠ°ΡΠΈΡ. ΠΠΌΠ°Ρ ΠΌΠ΅ Π΄Π²Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ. Π Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΌΠ΅ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ Π·Π°ΡΠΎ ΠΈΠΌΠ° Π³ΠΎΠ»ΡΠΌΠ° ΡΠ°Π·Π»ΠΈΠΊΠ°. Π ΡΠ΅ ΡΠΎΠ΄ΠΈ ΠΈΠ΄Π΅ΡΡΠ° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π΄ΠΈΡ ΠΎΡΠΎΠΌΠΈΡ, Π·Π° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΈ Π½Π°ΠΌΠ΅ΡΠΈΠΌ Π² ΠΊΠ°ΠΊΠ²ΠΎ Π΅ ΡΠ°Π·Π»ΠΈΠΊΠ°ΡΠ°. ΠΠΎΠΆΠ΅ΡΠ΅ Π²Π΅Π΄Π½Π°Π³Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π°ΡΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π΅Π΄Π½Π°ΠΊΠ²ΠΈ, ΠΏΠΎΡΠ»Π΅ Π΅Π΄Π½Π° ΡΠ΅ΡΠ²ΡΡΡ ΠΈ Ρ.Π½. ΠΡΠΈΡΠΊΠΎ Π΅ Π³ΡΠ²ΠΊΠ°Π²ΠΎ.
Π ΠΎΡΠ΅ Π΅Π΄ΠΈΠ½ Π²ΡΠΏΡΠΎΡ. ΠΡΠΎΠ΅ΠΊΡΡΡ Π΅ ΠΌΠ»Π°Π΄, ΡΠ°Π·Π²ΠΈΠ²Π° ΡΠ΅. ΠΠΎΡΠΎΠ²Π° Π»ΠΈ Π΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ°, ΠΈΠΌΠ° Π»ΠΈ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ?
Π‘ΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡ Π»ΠΈΠ½ΠΊ ΠΊΡΠΌ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡΡΠ° Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅. Π’ΠΎΠ²Π° Π³ΠΎ ΠΈΠΌΠ°. ΠΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΡΠ° Π²ΡΠ΅ ΠΎΡΠ΅ Π³ΠΈ Π½ΡΠΌΠ°. Π’ΡΡΡΡ ΡΡΠΌΠΈΡΠ»Π΅Π½ΠΈΡΠΈ. Π Π³ΠΈ Π½Π°ΠΌΠΈΡΠ°ΠΌ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠ·Π½Π°ΡΡΠΌ Π»Π΅ΠΊΡΠΈΠΈ. Π’ΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΊΠΎ. ΠΡΠΊΠΎΠΉ Π²Π΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ Ρ ΠΌΠ΅Π½, Π½ΡΠΊΠΎΠΉ ΠΏΠΎΠΌΠΎΠ³Π½Π° ΠΈ Π½Π°ΠΏΡΠ°Π²ΠΈ Π½Π΅ΡΠΎ. Π Π°ΠΊΠΎ Π²ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ²Π° ΡΠ°Π·ΠΈ ΡΠ΅ΠΌΠ°, Π΄Π°ΠΉΡΠ΅ ΠΎΠ±ΡΠ°ΡΠ½Π° Π²ΡΡΠ·ΠΊΠ° β ΠΊΠ°ΠΊΠ²ΠΎ Π½Π΅ Π΄ΠΎΡΡΠΈΠ³Π°.
ΠΠΎΠ³Π°ΡΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ Π»Π°Π±ΠΎΡΠ°ΡΠΎΡΠΈΡ, ΠΌΠΎΠΆΠ΅ Π±ΠΈ ΡΠ΅ ΠΈΠΌΠ° ΠΎΠ±ΡΠ°ΡΠ½Π° Π²ΡΡΠ·ΠΊΠ°. Π©Π΅ Π²ΠΈΠ΄ΠΈΠΌ. ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ!
ΠΠ΄ΡΠ°Π²Π΅ΠΉΡΠ΅! ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ Π·Π° Π΄ΠΎΠΊΠ»Π°Π΄Π°! ΠΠΈΠ΄ΡΡ , ΡΠ΅ ΠΈΠΌΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Amazon. ΠΠ»Π°Π½ΠΈΡΠ° Π»ΠΈ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° GSP?
ΠΠΎΠ±ΡΡ Π²ΡΠΏΡΠΎΡ. ΠΠ°ΠΏΠΎΡΠ½Π°Ρ ΠΌΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈΠΌ. Π Π·Π° ΡΠ΅Π³Π° ΡΠΏΠΈΡΠ°ΠΌΠ΅, Π·Π°ΡΠΎΡΠΎ ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΠΈΠΊΠΎΠ½ΠΎΠΌΠΈΡΠ²Π°ΠΌΠ΅. Π’.Π΅. ΠΈΠΌΠ°ΠΌΠ΅ ΠΏΠΎΠ΄ΠΊΡΠ΅ΠΏΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° localhost. ΠΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΠΌΠΈ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡ ΠΈ Π΄Π° ΡΠ°Π±ΠΎΡΠΈΡΠ΅ Π»ΠΎΠΊΠ°Π»Π½ΠΎ. ΠΡΡΡΠ½ΠΎΡΡ, ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊΠ° ΠΏΡΠ°Π²ΠΈΠΌ. Π Getlab Π³ΠΎ ΠΏΡΠ°Π²Ρ ΠΏΠΎ ΡΡΡΠΈΡ Π½Π°ΡΠΈΠ½, ΡΠ°ΠΌ Π½Π° GSP. ΠΠΎ Π½Π΅ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ ΡΠΌΠΈΡΡΠ» Π² ΡΠΎΡΠ½Π°ΡΠ° ΡΠ°ΠΊΠ°Π²Π° ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΡ Π·Π° ΠΌΠΎΠΌΠ΅Π½ΡΠ°, Π·Π°ΡΠΎΡΠΎ Google Π½ΡΠΌΠ° Π΅Π²ΡΠΈΠ½ΠΈ ΡΠΏΠΎΡΠΎΠ²Π΅. ΠΠΌΠ° ??? ΠΈΠ½ΡΡΠ°Π½ΡΠΈΠΈ, Π½ΠΎ ΡΠ΅ ΠΈΠΌΠ°Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ. ΠΡΡΠ²ΠΎ, ΡΠ΅ Π²ΠΈΠ½Π°Π³ΠΈ ΠΈΠΌΠ°Ρ ΠΎΡΡΡΡΠΏΠΊΠ° ΠΎΡ 70 %, ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ³ΡΠ°Π΅ Ρ ΡΠ΅Π½Π°ΡΠ°. Π‘ΠΏΠΎΡΠΎΠ²Π΅ΡΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°ΠΌΠ΅ Ρ 5-10 % ΡΠ΅Π½Π°ΡΠ°, Π·Π° Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈΠΌ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡΠ° Π΄Π° Π²ΠΈ ΠΈΠ·ΠΊΠ»ΡΡΠ°Ρ. Π’.Π΅. ΡΠΏΠΎΡΠΎΠ²Π΅ΡΠ΅ ΡΠΏΠ΅ΡΡΡΠ²Π°Ρ, Π½ΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π·Π°Π±ΡΠ°Π½ΠΈ Π² Π²ΡΠ΅ΠΊΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ. ΠΠΊΠΎ ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠ΅Π½Π°ΡΠ° ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-Π²ΠΈΡΠΎΠΊΠ° ΠΎΡ Π΄ΡΡΠ³ΠΈΡΠ΅, ΡΠ΅ Π±ΡΠ΄Π΅ΡΠ΅ ΡΠ±ΠΈΡΠΈ ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ. Google ΠΈΠΌΠ° ΡΡΠ²ΡΠ΅ΠΌ Π΄ΡΡΠ³Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°. Π ΠΎΡΠ΅ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π»ΠΎΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ β ΡΠ΅ ΠΆΠΈΠ²Π΅ΡΡ ΡΠ°ΠΌΠΎ 24 ΡΠ°ΡΠ°. Π ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΡΡΡΡΠΈΠΌ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈ 5 Π΄Π½ΠΈ. ΠΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΠΈΡΠ΅, ΠΏΡΠ°Π²ΡΡ ΡΠΎΠ²Π°, ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° ΠΆΠΈΠ²Π΅ΡΡ ΠΌΠ΅ΡΠ΅ΡΠΈ.
ΠΠ΄ΡΠ°Π²Π΅ΠΉΡΠ΅! ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ Π·Π° Π΄ΠΎΠΊΠ»Π°Π΄Π°! ΠΠΈΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π°Ρ ΡΠ΅ Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°. ΠΠ°ΠΊ ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π°ΡΠ΅ Π³ΡΠ΅ΡΠΊΠΈΡΠ΅ stat_statements?
ΠΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±ΡΡ Π²ΡΠΏΡΠΎΡ. ΠΠΎΠ³Π° Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ° ΠΈ ΠΎΠ±ΡΡΠ½Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ. ΠΠ°ΠΊΡΠ°ΡΠΊΠΎ β Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Ρ Π½Π°Π±ΠΎΡΡΡ ΠΎΡ Π³ΡΡΠΏΠΈ Π·Π°ΡΠ²ΠΊΠΈ: ΠΊΠΎΠ»ΠΊΠΎ ΡΠ° ΠΏΠ°Π΄Π½Π°Π»ΠΈ ΠΈ ΠΊΠΎΠ»ΠΊΠΎ Π½ΠΎΠ²ΠΈ ΡΠ° ΡΠ΅ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈ. Π ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π΄Π²Π΅ ΠΌΠ΅ΡΡΠΈΠΊΠΈ: total_time ΠΈ calls, Π·Π°ΡΠΎΠ²Π° ΡΠ°ΠΌ ΠΈΠΌΠ° Π΄Π²Π΅ Π³ΡΠ΅ΡΠΊΠΈ. Π Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊΡΠ² Π΅ ΠΏΡΠΈΠ½ΠΎΡΡΡ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ΠΈΡΠ΅ Π³ΡΡΠΏΠΈ. Π’Π°ΠΌ ΠΈΠΌΠ° Π΄Π²Π΅ ΠΏΠΎΠ΄Π³ΡΡΠΏΠΈ: ΠΈΠ·ΡΠ΅Π·Π½Π°Π»ΠΈ ΠΈ Π½ΠΎΠ²ΠΎΠΏΠΎΡΠ²ΠΈΠ»ΠΈ ΡΠ΅. ΠΠ»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊΡΠ² Π΅ ΡΡΡ Π½ΠΈΡΡ ΠΏΡΠΈΠ½ΠΎΡ Π² ΠΎΠ±ΡΠ°ΡΠ° ΠΊΠ°ΡΡΠΈΠ½Π°.
Π Π²ΠΈΠ΅ Π½Π΅ ΡΠ΅ Π»ΠΈ ΡΡΡΠ°Ρ ΡΠ²Π°ΡΠ΅, ΡΠ΅ ΡΡ ΡΠ΅ ΡΠ΅ ΠΎΠ±ΡΡΠ½Π΅ Π΄Π²Π°-ΡΡΠΈ ΠΏΡΡΠΈ Π·Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ½ΠΈΠΌΠΊΠΈΡΠ΅?
Π’.Π΅. ΡΠ΅ ΡΠ° ΡΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°Π»ΠΈ ΠΎΡΠ½ΠΎΠ²ΠΎ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ?
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°Π·ΠΈ Π·Π°ΡΠ²ΠΊΠ° Π²Π΅Π΄Π½ΡΠΆ Π²Π΅ΡΠ΅ Π΅ Π±ΠΈΠ»Π° Π·Π°ΠΌΠ΅Π½Π΅Π½Π°, ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΎΡΠ½ΠΎΠ²ΠΎ Π΅ Π΄ΠΎΡΠ»Π° ΠΈ ΠΎΡΠ½ΠΎΠ²ΠΎ Π΅ Π±ΠΈΠ»Π° Π·Π°ΠΌΠ΅Π½Π΅Π½Π°, ΠΏΠΎΡΠ»Π΅ ΠΏΠ°ΠΊ Π΄ΠΎΡΠ»Π° ΠΈ ΠΎΡΠ½ΠΎΠ²ΠΎ Π·Π°ΠΌΠ΅Π½Π΅Π½Π°. Π Π²ΠΈΠ΅ ΡΡΠΊ ΡΡΠ΅ ΠΈΠ·ΡΠΈΡΠ»ΠΈΠ»ΠΈ Π½Π΅ΡΠΎ ΠΈ ΠΊΡΠ΄Π΅ Π΅ Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π°?
ΠΠΎΠ±ΡΡ Π²ΡΠΏΡΠΎΡ, ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅.
Π‘ΡΡΠΈΡ Π²ΠΈΠ΄ ΡΠ°Π±ΠΎΡΠ° ΡΡΠΌ ΠΏΡΠ°Π²ΠΈΠ». ΠΠΎ-ΠΏΡΠΎΡΡΠΎ, ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅, Π³ΠΎ ΠΏΡΠ°Π²ΠΈΡ ΡΠ°ΠΌ. ΠΠΎ ΠΌΠΈ ΡΠ΅ Π½Π°Π»ΠΎΠΆΠΈ Π΄Π° Π½ΡΠ»ΠΈΡΠ°ΠΌ ΡΡΠ°Ρ_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%. ΠΠΎΠ±ΡΠ΅, Π·Π½Π°ΡΠΈ, Π½Π΅ ΡΠΌΠ΅ Π·Π°Π³ΡΠ±ΠΈΠ»ΠΈ Π½ΠΈΡΠΎ. ΠΡΠ°Π²ΠΈΠΌ Π½ΡΠ»ΠΈΡΠ°Π½Π΅. Π ΡΡΠ±ΠΈΡΠ°ΠΌΠ΅ ΠΎΡΠ½ΠΎΠ²ΠΎ. ΠΠΊΠΎ Π² ΡΠ»Π΅Π΄Π²Π°ΡΠ°ΡΠ° ΠΌΠΎΠΌΠ΅Π½ΡΠ½Π° ΡΠ½ΠΈΠΌΠΊΠ° Π΅ ΠΏΠΎΠ΄ 70, Π·Π½Π°ΡΠΈ Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΠΎΡΠ½ΠΎΠ²ΠΎ Π½Π΅ ΡΠΌΠ΅ Π·Π°Π³ΡΠ±ΠΈΠ»ΠΈ Π½ΠΈΡΠΎ.
ΠΠ°. ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΡΠ΅Π³Π° Π΅ 5000. Π ΠΌΠ½ΠΎΠ³ΠΎ Π½Π° ΡΠΎΠ²Π° ΠΈΠΌ Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ.
ΠΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ β Π΄Π°.
ΠΠΈΠ΄Π΅ΠΎ:

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

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