ΠΡΠ΅Π΄Π»Π°Π³Π°Ρ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΡΠ°ΡΡΠΈΡΡΠΎΠ²ΠΊΠΎΠΉ Π΄ΠΎΠΊΠ»Π°Π΄Π° ΠΠΈΠΊΠΎΠ»Π°Ρ Π‘Π°ΠΌΠΎΡ Π²Π°Π»ΠΎΠ²Π° "ΠΡΠΎΠΌΡΡΠ»Π΅Π½Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΊ ΡΡΠ½ΠΈΠ½Π³Ρ PostgreSQL: ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΡ Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ "
Shared_buffers = 25% β ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΌΠ°Π»ΠΎ? ΠΠ»ΠΈ Π² ΡΠ°ΠΌΡΠΉ ΡΠ°Π·? ΠΠ°ΠΊ ΠΏΠΎΠ½ΡΡΡ, ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π»ΠΈ ΡΡΠ° β Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΡΡΠ°ΡΠ΅Π²ΡΠ°Ρ β ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ Π² Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅?
ΠΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΠΎΠ΄ΠΎΠΉΡΠΈ ΠΊ Π²ΠΎΠΏΡΠΎΡΡ ΠΏΠΎΠ΄Π±ΠΎΡΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² postgresql.conf "ΠΏΠΎ-Π²Π·ΡΠΎΡΠ»ΠΎΠΌΡ". ΠΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π΅ΠΏΡΡ "Π°Π²ΡΠΎΡΡΠ½Π΅ΡΠΎΠ²" ΠΈΠ»ΠΈ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΡ ΡΠΎΠ²Π΅ΡΠΎΠ² ΠΈΠ· ΡΡΠ°ΡΠ΅ΠΉ ΠΈ Π±Π»ΠΎΠ³ΠΎΠ², Π° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅:
- ΡΡΡΠΎΠ³ΠΎ Π²ΡΠ²Π΅ΡΠ΅Π½Π½ΡΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ² Π½Π° ΠΠ, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎ, Π² Π±ΠΎΠ»ΡΡΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π°Ρ ΠΈ Π² ΡΡΠ»ΠΎΠ²ΠΈΡΡ , ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ΅Π½Π½ΡΡ ΠΊ "Π±ΠΎΠ΅Π²ΡΠΌ",
- Π³Π»ΡΠ±ΠΎΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΡ Π‘Π£ΠΠ ΠΈ ΠΠ‘.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ Nancy CLI (
Π Π΅ΡΡ ΠΏΠΎΠΉΠ΄Π΅Ρ ΠΎΠ± ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Ρ Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ . ΠΡΠΎ ΠΈΡΡΠΎΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΡΡΡ ΡΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎΠ»ΡΠ³ΠΎΠ΄Π°.
ΠΠ΅ΠΌΠ½ΠΎΠΆΠΊΠΎ ΠΎΠ±ΠΎ ΠΌΠ½Π΅. ΠΠΏΡΡ Ρ 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 ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ instances, ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ Π±ΡΠΊΠ°ΠΏΠΎΠ² ΠΈ Ρ. Π΄., β ΡΡΠΎ ΠΏΠΎΠΈΡΠΊ ΡΠ·ΠΊΠΈΡ ΠΌΠ΅ΡΡ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
Π‘Π΅ΠΉΡΠ°Ρ ΡΡΠΎ ΡΡΡΡΠΎΠ΅Π½ΠΎ Π²ΠΎΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. ΠΡ ΡΠΌΠΎΡΡΠΈΠΌ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³, ΡΡΠΎ-ΡΠΎ Π²ΠΈΠ΄ΠΈΠΌ, ΠΊΠ°ΠΊΠΈΡ -ΡΠΎ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠ΅ΠΉ Π½Π°ΠΌ Π½Π΅ Ρ Π²Π°ΡΠ°Π΅Ρ. ΠΡ Π½Π°ΡΠΈΠ½Π°Π΅ΠΌ ΠΊΠΎΠΏΠ°ΡΡΡΡ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½Π΅Π΅, ΠΎΠ±ΡΡΠ½ΠΎ ΡΡΠΊΠ°ΠΌΠΈ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, ΡΡΠΎ Ρ ΡΡΠΈΠΌ Π΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°ΡΠ΅.
Π Π΅ΡΡΡ Π΄Π²Π° ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°. 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 ΡΠ΅ΡΠ°ΡΡ Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ?
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΡ Π½Π°ΡΠ»ΠΈ ΠΊΠ°ΠΊΡΡ-ΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. Π§ΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ? ΠΡΠ»ΠΈ Π²Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ, ΡΠΎ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΡΡΠΎ-ΡΠΎ Π΄Π΅Π»Π°ΡΡ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ-ΡΠΎ instance, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°. ΠΡΠ»ΠΈ Π²Ρ DBA, ΡΠΎ Ρ Π²Π°Ρ Π΅ΡΡΡ staging. Π ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½. Π ΠΎΠ½ ΠΎΡΡΡΠ°Π» Π½Π° ΠΏΠΎΠ»Π³ΠΎΠ΄Π°. Π Π²Ρ Π΄ΡΠΌΠ°Π΅ΡΠ΅, ΡΡΠΎ ΠΏΠΎΠΉΠ΄Π΅ΡΠ΅ Π½Π° production. Π Π΄Π°ΠΆΠ΅ ΠΎΠΏΡΡΠ½ΡΠ΅ DBA ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΠΏΠΎΡΠΎΠΌ Π½Π° production, Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ΅. Π Π±ΡΠ²Π°Π΅Ρ ΡΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ, ΡΠ±Π΅ΠΆΠ΄Π°ΡΡΡΡ, ΡΡΠΎ ΠΎΠ½ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ, Π΄ΡΠΎΠΏΠ°ΡΡ Π΅Π³ΠΎ ΠΈ ΠΎΡΠ΄Π°ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ Π΅Π³ΠΎ Π² ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π·Π°ΡΡΠ½ΡΠ»ΠΈ. ΠΠΎΡ ΡΠ°ΠΊΠΎΠΉ Π±ΡΠ΅Π΄ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ΅ΠΉΡΠ°Ρ. Π ΡΡΠΎ Π±Π΅Π΄Π°.
- Π’ΡΠ½ΠΈΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ.
- ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π½Π°Π±ΠΎΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ².
- ΠΠ·ΠΌΠ΅Π½ΡΡΡ ΡΠ°ΠΌ SQL-Π·Π°ΠΏΡΠΎΡ (ΡΡΠΎ ΡΠ°ΠΌΡΠΉ ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ±).
- ΠΠΎΠ±Π°Π²Π»ΡΡΡ ΠΌΠΎΡΠ½ΠΎΡΡΠ΅ΠΉ (ΡΠ°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π²).
Π‘ ΡΡΠΈΠΌΠΈ Π²Π΅ΡΠ°ΠΌΠΈ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅Π³ΠΎ. Π’Π°ΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΡΠ΅ΠΊ Π² Postgres. ΠΡΠΆΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΡ. ΠΠ½ΠΎΠ³ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² Π² Postgres, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΎΡΠ°ΠΌ ΡΡΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ. Π Π²ΡΠ΅ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ, ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎ Ρ Π½Π΅ DBA Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΎΡΡΡΠ΅Π½ΠΈΠ΅, ΡΡΠΎ DBA Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ ΡΠ΅ΡΠ½ΠΎΠΉ ΠΌΠ°Π³ΠΈΠ΅ΠΉ. Π’. Π΅. Π½ΡΠΆΠ½ΠΎ Π»Π΅Ρ 10 Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ, ΡΡΠΎΠ±Ρ Π½Π°ΡΠ°ΡΡ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ Π²ΡΠ΅ ΡΡΠΎ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ.
Π Ρ β Π±ΠΎΡΠ΅Ρ Ρ ΡΡΠΎΠΉ ΡΠ΅ΡΠ½ΠΎΠΉ ΠΌΠ°Π³ΠΈΠ΅ΠΉ. Π― Ρ ΠΎΡΡ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΠ΅ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π±ΡΠ»Π° ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ, Π° Π½Π΅ Π±ΡΠ»ΠΎ ΠΈΠ½ΡΡΠΈΡΠΈΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌ ΡΡΠΎΠΌ.
ΠΡΠΈΠΌΠ΅ΡΡ ΠΈΠ· ΠΆΠΈΠ·Π½ΠΈ
ΠΡΠΎ Ρ Π½Π°Π±Π»ΡΠ΄Π°Π» ΠΌΠΈΠ½ΠΈΠΌΡΠΌ Π² Π΄Π²ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ , Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠ²ΠΎΠΉ. ΠΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ ΠΏΠΎΡΡ Π² Π±Π»ΠΎΠ³Π΅ ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ Π½Π°ΠΌ, ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 1 000 Π΄Π»Ρ default_statistict_target β ΡΡΠΎ Ρ ΠΎΡΠΎΡΠΎ. Π₯ΠΎΡΠΎΡΠΎ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ Π² production.
Π ΡΡΡ ΠΌΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π½Π°Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π²Π° Π³ΠΎΠ΄Π° ΡΠΏΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ² Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ , ΠΎ ΠΊΠΎΡΠΎΡΡΡ ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΡΠ΅ΡΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΠ°Π²Π½ΠΈΡΡ ΡΡΠΎ Π±ΡΠ»ΠΎ ΠΈ ΡΡΠΎ ΡΡΠ°Π»ΠΎ.
Π Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ. ΠΠ½ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΠ΅ΡΡΡΠ΅Ρ ΡΠ°ΡΡΠ΅ΠΉ.
- ΠΠ΅ΡΠ²Π°Ρ β ΡΡΠΎ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅. ΠΠ°ΠΌ Π½ΡΠΆΠ½Π° ΠΆΠ΅Π»Π΅Π·ΠΊΠ°. Π ΠΊΠΎΠ³Π΄Π° Ρ ΠΏΡΠΈΡ ΠΎΠΆΡ Π² ΠΊΠ°ΠΊΡΡ-ΡΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ ΠΈ Π·Π°ΠΊΠ»ΡΡΠ°Ρ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ, ΡΠΎ Ρ Π³ΠΎΠ²ΠΎΡΡ, ΡΡΠΎΠ±Ρ ΠΌΠ½Π΅ Π΄Π°Π»ΠΈ ΡΠ°ΠΊΡΡ ΠΆΠ΅ ΠΆΠ΅Π»Π΅Π·ΠΊΡ ΠΊΠ°ΠΊ Π½Π° production. ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π²Π°ΡΠΈΡ ΠΠ°ΡΡΠ΅ΡΠΎΠ² ΠΌΠ½Π΅ Π½ΡΠΆΠ½Π° Ρ ΠΎΡΡ Π±Ρ ΠΎΠ΄Π½Π° ΠΆΠ΅Π»Π΅Π·ΠΊΠ° ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅. ΠΠΈΠ±ΠΎ ΡΡΠΎ Π²ΠΈΡΡΡΠ°Π»ΡΠ½Π°Ρ ΠΌΠ°ΡΠΈΠ½Π° instance Π² ΠΠΌΠ°Π·ΠΎΠ½Π΅ ΠΈΠ»ΠΈ Π² Google, Π»ΠΈΠ±ΠΎ ΠΌΠ½Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅ ΠΆΠ΅Π»Π΅Π·ΠΊΠ° Π½ΡΠΆΠ½Π°. Π’. Π΅. Ρ Ρ ΠΎΡΡ Π²ΠΎΡΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅. Π Π² ΠΏΠΎΠ½ΡΡΠΈΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΌΡ Π²ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΠΌ ΠΌΠ°ΠΆΠΎΡΠ½ΡΡ Π²Π΅ΡΡΠΈΡ Postgres.
- ΠΡΠΎΡΠ°Ρ ΡΠ°ΡΡΡ β ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ Π½Π°ΡΠΈΡ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΉ. ΠΡΠΎ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ . ΠΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ. Π― ΠΏΠΎΠΊΠ°ΠΆΡ ΠΊΠ°ΠΊ.
- Π’ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡ β ΡΡΠΎ Π½Π°Π³ΡΡΠ·ΠΊΠ°. ΠΡΠΎ ΡΠ°ΠΌΡΠΉ ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ.
- Π ΡΠ΅ΡΠ²Π΅ΡΡΠ°Ρ ΡΠ°ΡΡΡ β ΡΡΠΎ ΡΠΎ, ΡΡΠΎ ΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, Ρ. Π΅. ΡΡΠΎ Ρ ΡΠ΅ΠΌ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ Π±ΡΠ΄Π΅ΠΌ. ΠΠΎΠΏΡΡΡΠΈΠΌ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π² ΠΊΠΎΠ½ΡΠΈΠ³Π΅ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², Π° ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ½Π΄Π΅ΠΊΡ ΡΠΎΠ·Π΄Π°ΡΡ ΠΈ Ρ. Π΄.
ΠΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ. ΠΠΎΡ pg_stat_statements. Π‘Π»Π΅Π²Π° β ΡΠΎ, ΡΡΠΎ Π±ΡΠ»ΠΎ. Π‘ΠΏΡΠ°Π²Π° β ΡΡΠΎ ΡΡΠ°Π»ΠΎ.
Π‘Π»Π΅Π²Π° default_statistics_target = 100, ΡΠΏΡΠ°Π²Π° =1 000. ΠΡ Π²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ Π½Π°ΠΌ ΡΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ. ΠΠ° 8 % Π² ΡΠ΅Π»ΠΎΠΌ Π²ΡΠ΅ Π»ΡΡΡΠ΅ ΡΡΠ°Π»ΠΎ.
ΠΠΎ Π΅ΡΠ»ΠΈ ΠΌΡ ΠΏΡΠΎΠΌΠΎΡΠ°Π΅ΠΌ Π²Π½ΠΈΠ·, ΡΠΎ ΡΠ°ΠΌ Π±ΡΠ΄ΡΡ Π³ΡΡΠΏΠΏΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈΠ· pgBadger ΠΈΠ»ΠΈ ΠΈΠ· pg_stat_statements. Π’ΡΡ Π΄Π²Π° Π²Π°ΡΠΈΠ°Π½ΡΠ°. ΠΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ Π·Π°ΠΏΡΠΎΡ ΠΏΡΠΎΡΠ΅Π» Π½Π° 88 %. Π ΡΡΡ ΡΠΆΠ΅ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π°Π»ΡΡΠ΅ ΠΊΠΎΠΏΠ°ΡΡ Π²Π½ΡΡΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΎΠ½ ΠΏΡΠΎΡΠ΅Π». ΠΠ°Π΄ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΡΡΠΎ ΡΠ°ΠΌ Π±ΡΠ»ΠΎ ΡΠΎ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΎΠΉ. ΠΠΎΡΠ΅ΠΌΡ Π±ΠΎΠ»ΡΡΠ΅ Π±Π°ΠΊΠ΅ΡΠΎΠ² Π² ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡ ΠΊ Ρ ΡΠ΄ΡΠ΅ΠΌΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ.
Π ΠΌΠΎΠΆΠ΅ΠΌ Π½Π΅ ΠΊΠΎΠΏΠ°ΡΡ, Π° ΡΠ΄Π΅Π»Π°ΡΡ Β«ALTER TABLE β¦ ALTER COLUMNΒ» ΠΈ Π΅ΠΌΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ 100 Π±Π°ΠΊΠ΅ΡΠΎΠ² Π²Π΅ΡΠ½Π΅ΠΌ Π² ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ ΡΡΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅. Π Π΄Π°Π»ΡΡΠ΅ Π΅ΡΠ΅ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠΌ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΡΡΠ° Π·Π°ΠΏΠ»Π°ΡΠΊΠ° ΠΏΠΎΠΌΠΎΠ³Π»Π°. ΠΡΠ΅. ΠΠΎΡ ΡΡΠΎ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π½Π°ΠΌ Π²ΠΈΠ΄Π΅ΡΡ ΠΊΠ°ΡΡΠΈΠ½Ρ ΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π΄Π°Π½Π½ΡΡ , Π° Π½Π΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΈΠ½ΡΡΠΈΡΠΈΠΈ.
ΠΠ°ΡΠ° ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ. Π ΡΠ΅ΡΡΠ°Ρ Π΅ΡΡΡ CI-ΡΠ΅ΡΡΡ ΡΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅Ρ. Π Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΡΠΆΠ΅ ΠΏΡΠΎΠ΅ΠΊΡ Π² Π·Π΄ΡΠ°Π²ΠΎΠΌ ΡΠΌΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΆΠΈΡΡ Π±Π΅Π· Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ΅ΡΡΠΎΠ².
Π Π΄ΡΡΠ³ΠΈΡ ΠΎΡΡΠ°ΡΠ»ΡΡ : Π² Π°Π²ΠΈΠ°ΡΠΈΠΈ, Π² Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΡΡΡΠΎΠ΅Π½ΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΡΡΡΠ²Π°Π΅ΠΌ Π°ΡΡΠΎΠ΄ΠΈΠ½Π°ΠΌΠΈΠΊΡ, Ρ Π½Π°Ρ ΡΠΎΠΆΠ΅ Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄Π΅Π»Π°ΡΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΡ. ΠΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ ΡΡΠΎ-ΡΠΎ Ρ ΡΠ΅ΡΡΠ΅ΠΆΠ° ΡΡΠ°Π·Ρ Π² ΠΊΠΎΡΠΌΠΎΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΈΠ»ΠΈ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΊΠ°ΠΊΡΡ-ΡΠΎ ΠΌΠ°ΡΠΈΠ½Ρ ΡΡΠ°Π·Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ Π½Π° ΡΡΠ°ΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΡΡ Π°ΡΡΠΎΠ΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΡΡΠ±Π°.
ΠΠ· Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΠΉ Π·Π° Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΎΡΡΠ°ΡΠ»ΡΠΌΠΈ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΠ²ΠΎΠ΄Ρ.
ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅. ΠΠ½ΠΎ Π±Π»ΠΈΠ·ΠΊΠΎ ΠΊ production, Π½ΠΎ Π½Π΅ Π±Π»ΠΈΠ·ΠΊΠΎ. ΠΠ»Π°Π²Π½Π°Ρ Π΅Π³ΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π΄Π΅ΡΠ΅Π²ΠΎ, ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΠΌΠΎ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ΠΎ. Π Π΅ΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°.
Π‘ΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΡΠ°ΠΌΠΎΠ»Π΅Ρ Π·Π°ΠΏΡΡΡΠΈΠ»ΠΈ ΠΈ Π»Π΅ΡΠΈΠΌ, Ρ Π½Π°Ρ ΠΌΠ΅Π½ΡΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΠΈΠ·ΡΡΠ°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΌΠΈΠ»Π»ΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠΈ ΠΊΡΡΠ»Π°, ΡΠ΅ΠΌ Π΅ΡΡΡ Π² Π°ΡΡΠΎΠ΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡΡΠ±Π΅. Π£ Π½Π°Ρ Π±ΠΎΠ»ΡΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ² Π΄Π»Ρ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΅Π±Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ Π½Π°Π²Π΅ΡΠΈΡΡ ΠΏΠΎΠ±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΡΠΆΠ΅Π»ΠΎΠ³ΠΎ, ΡΡΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ ΡΠ΅Π±Π΅ Π½Π°Π²Π΅ΡΡΠΈΡΡ Π½Π° ΡΠ°ΠΌΠΎΠ»Π΅Ρ Π² Π²ΠΎΠ·Π΄ΡΡ Π΅. Π’Π°ΠΊΠΆΠ΅ ΠΈ Ρ Postgres. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΏΠΎΠ»Π½ΠΎΠ΅ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΏΡΠΈ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Ρ . Π ΠΌΡ ΡΡΠΎΠ³ΠΎ Π½Π° production Π΄Π΅Π»Π°ΡΡ Π½Π΅ Ρ ΠΎΡΠΈΠΌ. ΠΡ, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ, Π΄Π°ΠΆΠ΅ Ρ ΠΏΠ»Π°Π½Π°ΠΌΠΈ ΡΡΠΎ Π²ΠΊΠ»ΡΡΠΈΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ auto_explain.
Π ΠΊΠ°ΠΊ Ρ ΡΠΆΠ΅ ΡΠΊΠ°Π·Π°Π», Π²ΡΡΠΎΠΊΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΌΡ Π½Π°ΠΆΠ°Π»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΡ ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠΈΠ»ΠΈ. ΠΠΎΡ ΡΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΡΠΎ Π±ΡΡΡ, ΡΡΠΎΠ±Ρ Π±ΡΠ»ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ², ΡΡΠΎΠ±Ρ ΡΡΠΎ Π±ΡΠ»ΠΎ Π½Π° ΠΏΠΎΡΠΎΠΊΠ΅.
Nancy CLI β ΡΡΠ½Π΄Π°ΠΌΠ΅Π½Ρ Β«Π»Π°Π±ΠΎΡΠ°ΡΠΎΡΠΈΠΈ ΠΠΒ»
Π Π²ΠΎΡ ΠΌΡ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΡΠ°ΠΊΡΡ ΡΡΡΠΊΡ. Π’. Π΅. Ρ ΠΎΠ± ΡΡΠΈΡ ΠΈΠ΄Π΅ΡΡ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π» Π² ΠΈΡΠ½Π΅, ΠΏΠΎΡΡΠΈ Π³ΠΎΠ΄ Π½Π°Π·Π°Π΄. Π Ρ Π½Π°Ρ ΡΠΆΠ΅ Π΅ΡΡΡ Π² Open Source ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠ°Ρ Nancy CLI. ΠΡΠΎ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½Ρ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΡΡΠΎΠΈΡΡ Π»Π°Π±ΠΎΡΠ°ΡΠΎΡΠΈΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ .
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΡΠ°ΠΌ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΅ΡΠ΅ Π² ΡΡΠ°Π΄ΠΈΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. Π’Π°ΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΠ΄Π΅ΠΉ. ΠΠΎ ΡΡΠΎ ΡΠΆΠ΅ ΡΠΎ, ΡΡΠΎ ΠΌΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ. Π ΠΊΠΎΠ³Π΄Π° Ρ Π½Π°Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΈΠ΄Π΅Ρ β Π° ΡΡΠΎ ΡΡΠΎ ΠΏΡΠΈ delete 40 000 000 ΡΡΡΠΎΡΠ΅ΠΊ Ρ Π½Π°Ρ Π²ΡΠ΅ ΡΠΏΠ΅ΡΠ»ΠΎΡΡ Π² IO, ΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΈ Π΄Π°Π»ΡΡΠ΅ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΠΎ Π½Π° Ρ ΠΎΠ΄Ρ. Π’. Π΅. ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎ-ΡΠΎ ΠΏΠΎΠ΄ΠΊΡΡΡΠΈΠ²Π°Π΅ΠΌ ΠΈ ΡΠΌΠΎΡΡΠΈΠΌ, ΡΡΠΎ Π² ΠΈΡΠΎΠ³Π΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ. Π ΠΌΡ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΠΌ Π½Π΅ Π½Π° production. ΠΡΠΎ ΡΡΡΡ ΠΈΠ΄Π΅ΠΈ.
ΠΠ΄Π΅ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ? ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ, Ρ. Π΅. ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ Π³Π΄Π΅ ΡΠ³ΠΎΠ΄Π½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ Π½Π° MacBook Π·Π°ΠΏΡΡΡΠΈΡΡ. ΠΡΠΆΠ΅Π½ Π΄ΠΎΠΊΠ΅Ρ, ΠΏΠΎΠ΅Ρ Π°Π»ΠΈ. Π Π²ΡΠ΅. ΠΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ Π² ΠΊΠ°ΠΊΠΎΠΌ-Π½ΠΈΠ±ΡΠ΄Ρ instance Π² ΠΆΠ΅Π»Π΅Π·ΠΊΠ΅, Π»ΠΈΠ±ΠΎ Π² Π²ΠΈΡΡΡΠ°Π»ΠΊΠ΅, Π³Π΄Π΅ ΡΠ³ΠΎΠ΄Π½ΠΎ.
Π Π΅ΡΡΡ Π΅ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎ Π² ΠΠΌΠ°Π·ΠΎΠ½Π΅ Π² EC2 Instance, Π² ΡΠΏΠΎΡΠ°Ρ . Π ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΊΠ»Π°ΡΡΠ½Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΠ΅ΡΠ° ΠΌΡ ΠΏΡΠΎΠ²Π΅Π»ΠΈ Π±ΠΎΠ»ΡΡΠ΅ 500 ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ² Π½Π° i3 instance, Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΌΠ»Π°Π΄ΡΠ΅Π³ΠΎ ΠΈ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Ρ i3-16-xlarge. Π Π½Π°ΠΌ 500 ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ² Π²ΡΡΠ°Π»ΠΈ Π² 64 Π΄ΠΎΠ»Π»Π°ΡΠ°. ΠΠ°ΠΆΠ΄ΡΠΉ Π΄Π»ΠΈΠ»ΡΡ 15 ΠΌΠΈΠ½ΡΡ. Π’. Π΅. Π·Π° ΡΡΠ΅Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΠ°ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΏΠΎΡΡ, ΡΡΠΎ ΠΎΡΠ΅Π½Ρ Π΄Π΅ΡΠ΅Π²ΠΎ β ΡΠΊΠΈΠ΄ΠΊΠ° 70 %, ΠΏΠΎΡΠ΅ΠΊΡΠ½Π΄Π½Π°Ρ ΡΠ°ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΠΌΠ°Π·ΠΎΠ½Π°. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π΅Π»Π°ΡΡ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ΅ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ.
Π ΡΡΠΈ ΠΌΠ°ΠΆΠΎΡΠ½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Postgres ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ. ΠΠ΅ ΡΠ°ΠΊ ΡΠ»ΠΎΠΆΠ½ΠΎ Π΄ΠΎΠΏΠΈΠ»ΠΈΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΡΡΠ°ΡΡΠ΅ ΠΈ Π½ΠΎΠ²ΡΡ 12-ΡΡ Π²Π΅ΡΡΠΈΡ ΡΠΎΠΆΠ΅.
ΠΠ±ΡΠ΅ΠΊΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΠ΅ΠΌΡ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ Π·Π°Π΄Π°Π²Π°ΡΡ. ΠΡΠΎ:
- Dump/sql-ΡΠ°ΠΉΠ».
- ΠΠ»Π°Π²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± β ΡΡΠΎ ΠΊΠ»ΠΎΠ½ PGDATA Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ. ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π±Π΅ΡΠ΅ΡΡΡ ΠΈΠ· Π±ΡΠΊΠ°ΠΏ-ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ Π±ΠΈΠ½Π°ΡΠ½ΡΠ΅ Π±ΡΠΊΠ°ΠΏΡ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΡΠ΅, ΠΎΡΡΡΠ΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΊΠ»ΠΎΠ½Ρ Π΄Π΅Π»Π°ΡΡ. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΎΠ±Π»Π°ΠΊΠ°, ΡΠΎ Π·Π° Π²Π°Ρ ΡΡΠΎ ΠΎΠ±Π»Π°ΡΠ½Π°Ρ ΠΊΠΎΠ½ΡΠΎΡΠ° ΡΠΈΠΏΠ° ΠΠΌΠ°Π·ΠΎΠ½Π° ΠΈ Google ΡΠ°ΠΌΠ° Π±ΡΠ΄Π΅Ρ Π΄Π΅Π»Π°ΡΡ. ΠΡΠΎ ΡΠ°ΠΌΡΠΉ Π³Π»Π°Π²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π΄Π»Ρ ΠΊΠ»ΠΎΠ½ΠΎΠ² ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ production. ΠΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΊΠ°ΠΊ ΡΠ°Π· ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ.
- Π ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΉ, ΠΊΠΎΠ³Π΄Π° Π΅ΡΡΡ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ, ΠΊΠ°ΠΊ Π² Postgres ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠ°ΠΊΠ°Ρ-ΡΠΎ ΡΡΡΠΊΠ°. ΠΡΠΎ pgbench. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ pgbench. ΠΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΎΠ΄Π½Π° ΠΎΠΏΡΠΈΡ Β«db-pgbenchΒ». ΠΠΎΠ²ΠΎΡΠΈΡΡ Π΅ΠΌΡ, ΠΊΠ°ΠΊΠΎΠΉ scale. Π Π²ΡΠ΅ Π±ΡΠ΄Π΅Ρ Π² ΠΎΠ±Π»Π°ΠΊΠ΅ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΡΠΊΠ°Π·Π°Π½ΠΎ.
Π Π½Π°Π³ΡΡΠ·ΠΊΠ°:
- ΠΠ°Π³ΡΡΠ·ΠΊΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π² ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡΠΎΠΊ SQL ΠΈΡΠΏΠΎΠ»Π½ΡΡΡ. ΠΡΠΎ ΡΠ°ΠΌΡΠΉ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ±.
- Π ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΌΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ. Π ΡΠΌΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΌΡ ΠΏΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΅Π΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ±ΠΈΡΠ°ΡΡ Π²ΡΠ΅ Π»ΠΎΠ³ΠΈ. Π ΡΡΠΎ Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½ΠΎ. Π― ΠΏΠΎΠΊΠ°ΠΆΡ, ΠΏΠΎΡΠ΅ΠΌΡ. Π Ρ ΠΏΠΎΠΌΠΎΡΡΡ pgreplay ΠΏΡΠΎΠΈΠ³ΡΡΠ²Π°Π΅ΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΡΡΠΎΠ΅Π½ Π² Nancy.
- ΠΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ. Π’Π°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠ°Ρ ΠΊΡΠ°ΡΡΠΎΠ²Π°Ρ Π½Π°Π³ΡΡΠ·ΠΊΠ°, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΡΡΠΈΠ»ΠΈΠΉ. ΠΠ½Π°Π»ΠΈΠ·ΠΈΡΡΡ Π½Π°ΡΡ ΡΠ΅ΠΊΡΡΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ Π½Π° Π±ΠΎΠ΅Π²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΌΡ Π²ΡΠ΄Π΅ΡΠ³ΠΈΠ²Π°Π΅ΠΌ ΡΠΎΠΏΠΎΠ²ΡΠ΅ Π³ΡΡΠΏΠΏΡ Π·Π°ΠΏΡΠΎΡΠΎΠ². Π Ρ ΠΏΠΎΠΌΠΎΡΡΡ pgbench ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΌΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ Π² Π»Π°Π±ΠΎΡΠ°ΡΠΎΡΠΈΠΈ.
- ΠΠΈΠ±ΠΎ ΠΌΡ SQL ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ, Ρ. Π΅. ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ ΠΊΠ°ΠΊΡΡ-ΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, ΠΈΠ½Π΄Π΅ΠΊΡ ΡΠ°ΠΌ ΡΠΎΠ·Π΄Π°Π΅ΠΌ, ANALAZE ΡΠ°ΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ. Π ΡΠΌΠΎΡΡΠΈΠΌ, ΡΡΠΎ Π±ΡΠ»ΠΎ Π΄ΠΎ Π²Π°ΠΊΡΡΠΌΠ° ΠΈ ΠΏΠΎΡΠ»Π΅ Π²Π°ΠΊΡΡΠΌΠ°. Π ΠΎΠ±ΡΠ΅ΠΌ, Π»ΡΠ±ΠΎΠΉ SQL.
- ΠΠΈΠ±ΠΎ ΠΌΡ Π² ΠΊΠΎΠ½ΡΠΈΠ³Π΅ ΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎΠ±Ρ Π½Π°ΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΈΠ»ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 100 Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² ΠΠΌΠ°Π·ΠΎΠ½Π΅ Π΄Π»Ρ Π½Π°ΡΠ΅ΠΉ ΡΠ΅ΡΠ°Π±Π°ΠΉΡΠ½ΠΎΠΉ Π±Π°Π·Ρ. Π ΡΠ΅ΡΠ΅Π· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΠΎΠ² Ρ Π²Π°Ρ Π±ΡΠ΄Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ. ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΡΠ΅ΡΠ°Π±Π°ΠΉΡΠ½Π°Ρ Π±Π°Π·Π° Ρ Π²Π°Ρ Π±ΡΠ΄Π΅Ρ ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΠΎΠ². ΠΠΎ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Π΅ΡΡΡ ΠΏΠ°ΡΡ, Ρ Π½Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° ΡΠ΅ΡΠΈΡ, Ρ. Π΅. Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈ ΡΠΎΠΌ ΠΆΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡ ΠΆΠ΅ ΡΠ°ΠΌΡΡ 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 instance Π² ΠΠΌΠ°Π·ΠΎΠ½Π΅, ΠΊΠΎΠ³Π΄Π° Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π² ΠΏΠΎΡΠΎΠΊΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡ 100 ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ instances ΠΈ ΡΠ°ΠΌ ΠΏΡΠΎΠ³Π½Π°ΡΡ ΠΏΠΎ 100 ΡΠ°Π·Π½ΡΡ ΠΏΡΠΎΠ³ΠΎΠ½ΠΎΠ², ΡΠΎ Ρ Π²Π°Ρ Π±ΡΠ΄Π΅Ρ 10 000 ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ². Π Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ Π²Π°ΠΌ Π½Π΅ ΠΏΠΎΠΏΠ°Π»ΡΡ ΡΡΠ΅ΡΠ±Π½ΡΠΉ instance, ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΆΠ΅ ΠΊΡΠΎ-ΡΠΎ ΠΏΡΠΈΡΠ΅ΡΠ½ΡΠ΅Ρ. ΠΠ° ΡΡΠΎΠΉ ΠΆΠ΅Π»Π΅Π·ΠΊΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ Π°ΠΊΡΠΈΠ²Π½ΠΈΡΠ°ΡΡ ΠΈ Π²Π°ΠΌ ΡΠ΅ΡΡΡΡΠ° ΠΌΠ°Π»ΠΎ ΠΎΡΡΠ°Π΅ΡΡΡ. Π’Π°ΠΊΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π»ΡΡΡΠ΅ ΠΎΡΠ±ΡΠΎΡΠΈΡΡ. Π ΠΊΠ°ΠΊ ΡΠ°Π· Ρ ΠΏΠΎΠΌΠΎΡΡΡ 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. ΠΡΠ»ΠΈ ΠΏΠΎ-ΠΌΠ΅Π΄ΠΈΡΠΈΠ½ΡΠΊΠΈ, ΡΠΎ ΡΡΠΎ ΡΠ΅Π³ΡΠ»ΡΡΠ½Π°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π·Π΄ΠΎΡΠΎΠ²ΡΡ. ΠΡΠ»ΠΈ Π² Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠΉ ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ΅, ΡΠΎ β ΡΡΠΎ ΠΊΠ°ΠΊ Π’Π. ΠΡ Π’Π Π΄Π΅Π»Π°Π΅ΡΠ΅ Ρ ΠΌΠ°ΡΠΈΠ½Ρ ΠΊΠ°ΠΆΠ΄ΡΠ΅ ΠΏΠΎΠ»Π³ΠΎΠ΄Π° ΠΈΠ»ΠΈ Π³ΠΎΠ΄, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΌΠ°ΡΠΊΠΈ. Π Π΄Π΅Π»Π°Π΅ΡΠ΅ Π»ΠΈ Π²Ρ Π’Π Π΄Π»Ρ ΡΠ²ΠΎΠ΅ΠΉ Π±Π°Π·Ρ? Π’. Π΅. Π΄Π΅Π»Π°Π΅ΡΠ΅ Π»ΠΈ Π²Ρ Π³Π»ΡΠ±ΠΎΠΊΠΎΠ΅ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎ? ΠΠ³ΠΎ Π½Π°Π΄ΠΎ Π΄Π΅Π»Π°ΡΡ. ΠΡΠ»ΠΈ Π²Ρ Π΄Π΅Π»Π°Π΅ΡΠ΅ Π±ΡΠΊΠ°ΠΏΡ, ΡΠΎ Π΄Π΅Π»Π°ΠΉΡΠ΅ ΠΈ 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 per second β ΡΡΠΎ ΠΌΠΎΡ Π»ΡΠ±ΠΈΠΌΠ°Ρ ΠΌΠ΅ΡΡΠΈΠΊΠ°. ΠΠ½Π° ΠΈΠ·ΠΌΠ΅ΡΡΠ΅ΡΡΡ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ , Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ, Ρ. Π΅. ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΊΡΠ½Π΄ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎΡΡ Π½Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ Π³ΡΡΠΏΠΏΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ. ΠΡΠ»ΠΈ Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΠ°ΠΌ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ΅ΠΊΡΠ½Π΄Ρ Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΄ΡΠ° Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π΄Π°ΡΡ. ΠΡΠΎ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠ°Ρ ΠΌΠ΅ΡΡΠΈΠΊΠ°. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ ΡΡΠΎΠΌΡ ΡΠΎΠ²Π°ΡΠΈΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½ΡΠΆΠ½ΠΎ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΡΡΠΈ ΡΠ΄ΡΠ°.
ΠΠΎΡ ΡΡΠΎ Π½Π°ΡΠ΅ Π½ΠΎΡ-Ρ Π°Ρ, Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ Π½ΠΈΠ³Π΄Π΅ Π½Π΅ Π²ΠΈΠ΄Π΅Π». ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ β ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠ°Ρ Π²Π΅ΡΡ β ΡΠ΅ΠΊΡΠ½Π΄Π° Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ. ΠΠ½ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Ρ Π²Π°Ρ CPU 100 %, ΡΠΎ ΠΏΠΎΠ»ΡΠ°ΡΠ° Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ, Ρ. Π΅. Π²Ρ ΠΏΠΎΠ»ΡΠ°ΡΠ° Π·Π°Π½ΠΈΠΌΠ°Π»ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΈΠΌ Π·Π°ΠΏΡΠΎΡΠΎΠ².
ΠΠ°Π»ΡΡΠ΅ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ rows Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ. ΠΡ Π·Π½Π°Π΅ΠΌ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊ Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ Π²Π΅ΡΠ½ΡΠ»Π°.
Π Π΄Π°Π»ΡΡΠ΅ ΡΠΎΠΆΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π°Ρ Π²Π΅ΡΡ. Π‘ΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΡ 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 % ΠΏΠΎ total_time. Π§ΡΠΎ Π΄Π°Π»ΡΡΠ΅ ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΡΡ ΠΏΠΎΡΠ»Π΅ Β«@Β»? ΠΡ ΡΠΌΠΎΡΡΠΈΠΌ Π½Π° calls, ΡΠΌΠΎΡΡΠΈΠΌ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΠ΅Π½ΡΠΎΠ² ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, ΡΡΠΎ ΠΌΡ Π²ΠΎΡ Π·Π΄Π΅ΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΠΎΠ»ΡΠΊΠΎ-ΡΠΎ ΠΏΡΠΎΡΠ΅Π½ΡΠΎΠ². ΠΠ· ΡΡΠΈΡ ΠΏΡΠΎΡΠ΅Π½ΡΠΎΠ² ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΡΠ°ΠΉΠ»ΠΈΠΊΠΎΠ². ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ pgbench ΠΈ ΠΏΠΎΠ΅Ρ Π°Π»ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ.
ΠΡΡΡ Π΅ΡΠ΅ Ρ Π½Π°Ρ Π001 ΠΈ Π002.
Π001 β ΡΡΠΎ ΠΎΠ΄Π½Π° Π±ΠΎΠ»ΡΡΠ°Ρ ΡΡΡΠΎΠΊΠ° Ρ ΡΠ΅ΡΡΡΡΠΌΡ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠ°ΠΌΠΈ. ΠΡΠΎ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ° Π²ΡΠ΅ΠΉ Π½Π°ΡΠ΅ΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ. Π‘ΠΌΠΎΡΡΠΈΡΠ΅ Π²ΡΠΎΡΡΡ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡ ΠΈ Π²ΡΠΎΡΡΡ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΡ. ΠΡ Π²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ ΠΏΠΎΠ»ΡΠΎΡΡ ΡΠ΅ΠΊΡΠ½Π΄Ρ Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ, Ρ. Π΅. Π΅ΡΠ»ΠΈ Π±ΡΠ΄Π΅Ρ Π΄Π²Π° ΡΠ΄ΡΠ°, ΡΠΎ Π±ΡΠ΄Π΅Ρ Ρ ΠΎΡΠΎΡΠΎ. ΠΡΠ΄Π΅Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ 75 % Π·Π°Π³ΡΡΠ·ΠΊΠ°. Π ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ. ΠΡΠ»ΠΈ Ρ Π½Π°Ρ Π±ΡΠ΄Π΅Ρ 10 ΡΠ΄Π΅Ρ, ΡΠΎ ΠΌΡ Π²ΠΎΠΎΠ±ΡΠ΅ Π±ΡΠ΄Π΅ΠΌ ΡΠΏΠΎΠΊΠΎΠΉΠ½Ρ. Π’Π°ΠΊ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΅ΡΡΡΡΡ ΠΎΡΠ΅Π½ΠΈΠ²Π°ΡΡ.
Π002 β ΡΡΠΎ Ρ Π½Π°Π·ΡΠ²Π°Ρ ΠΊΠ»Π°ΡΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ², Ρ. Π΅. SELECT, INSERT, UPDATE, DELETE. Π ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ SELECT FOR UPDATE, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½ Π»ΠΎΡΠΈΡ.
Π Π·Π΄Π΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΠ²ΠΎΠ΄, ΡΡΠΎ SELECT ΠΎΠ±ΡΡΠ½ΡΠ΅ ΡΠΈΡΠ°ΡΡΠΈΠ΅ β 82 % ΠΎΡ Π²ΡΠ΅Ρ Π²ΡΠ·ΠΎΠ²ΠΎΠ², Π½ΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ β 74 % ΠΏΠΎ total_time. Π’. Π΅. ΠΎΠ½ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ, Π½ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π»ΡΡΡ ΡΠ΅ΡΡΡΡ.
Π Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΊ Π²ΠΎΠΏΡΠΎΡΡ: Β«ΠΠ°ΠΊ Π½Π°ΠΌ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ°ΡΡ shared_buffers?Β». Π― Π½Π°Π±Π»ΡΠ΄Π°Ρ, ΡΡΠΎ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π±Π΅Π½ΡΠΌΠ°ΡΠΊΠΎΠ² ΡΡΡΠΎΡΡΡΡ Π½Π° ΠΈΠ΄Π΅Π΅ β Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊΠΎΠΉ throughput Π±ΡΠ΄Π΅Ρ, Ρ. Π΅. ΠΊΠ°ΠΊΠΎΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΏΡΡΠΊΠ½Π°Ρ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ. ΠΠ½Π° Π² TPS ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΠ·ΠΌΠ΅ΡΡΠ΅ΡΡΡ ΠΈΠ»ΠΈ QPS.
Π ΠΌΡ ΡΡΠ°ΡΠ°Π΅ΠΌΡΡ Π²ΡΠΆΠ°ΡΡ ΠΎΡ ΡΠ°ΡΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΎΡ ΡΡΠ½ΠΈΠ½Π³Π° ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ. ΠΠ΄Π΅ΡΡ ΠΊΠ°ΠΊ ΡΠ°Π· 311 Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ Π΄Π»Ρ select.
ΠΠΎ Π½ΠΈΠΊΡΠΎ Π½Π΅ Π΅Π·Π΄ΠΈΡ Π½Π° ΡΠ°Π±ΠΎΡΡ ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π΄ΠΎΠΌΠΎΠΉ Π½Π° ΠΌΠ°ΡΠΈΠ½Π΅ Π½Π° ΠΏΠΎΠ»Π½ΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΠΈ. ΠΡΠΎ Π³Π»ΡΠΏΠΎ. Π’Π°ΠΊ ΠΈ Ρ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ . ΠΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π΅Π·Π΄ΠΈΡΡ Π½Π° ΠΏΠΎΠ»Π½ΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΠΈ, Π΄Π° Π½ΠΈΠΊΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΈ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ. ΠΠΈΠΊΡΠΎ Π½Π΅ ΠΆΠΈΠ²Π΅Ρ Π² production, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ 100% CPU. Π₯ΠΎΡΡ, ΠΌΠΎΠΆΠ΅Ρ, ΠΊΡΠΎ-ΡΠΎ ΠΈ ΠΆΠΈΠ²Π΅Ρ, Π½ΠΎ ΡΡΠΎ Π½Π΅Ρ ΠΎΡΠΎΡΠΎ.
ΠΠ΄Π΅Ρ ΡΠ°ΠΊΠ°Ρ, ΡΡΠΎ ΠΌΡ Π΅Π·Π΄ΠΈΠΌ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΡΠΎΡΠ΅Π½ΡΠ°Ρ Π½Π° 20 ΠΎΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ Π²ΡΡΠ΅ 50 %. Π ΠΌΡ ΡΡΠ°ΡΠ°Π΅ΠΌΡΡ Π²ΡΠ΅ΠΌΡ ΠΎΡΠΊΠ»ΠΈΠΊΠ° ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π½Π°ΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΏΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ. Π’. Π΅. ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π½Π°ΡΠΈ ΡΡΡΠΊΠΈ ΠΊΡΡΡΠΈΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π±ΡΠ»ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ latency ΠΏΡΠΈ 20%-ΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΠΈ, ΡΡΠ»ΠΎΠ²Π½ΠΎ. ΠΡΠΎ ΡΠ°ΠΊΠ°Ρ ΠΈΠ΄Π΅Ρ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΡΠΎΠΆΠ΅ ΡΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² Π½Π°ΡΠΈΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Ρ .
Π Π² Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ:
- ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΠΉΡΠ΅ Database Lab.
- ΠΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ΄Π΅Π»Π°ΠΉΡΠ΅ on demand, ΡΡΠΎΠ±Ρ ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π»ΠΎΡΡ Π½Π° ΠΊΠ°ΠΊΠΎΠ΅-ΡΠΎ Π²ΡΠ΅ΠΌΡ β ΠΏΠΎΠΈΠ³ΡΠ°Π»ΠΈ ΠΈ Π²ΡΠ±ΡΠΎΡΠΈΠ»ΠΈ. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ ΠΎΠ±Π»Π°ΠΊΠ°, ΡΠΎ ΡΡΠΎ ΡΠ°ΠΌΠΎ ΡΠΎΠ±ΠΎΠΉ, Ρ. Π΅. ΠΈΠΌΠ΅ΠΉΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ standing.
- ΠΡΠ΄ΡΡΠ΅ Π»ΡΠ±ΠΎΠ·Π½Π°ΡΠ΅Π»ΡΠ½ΡΠΌΠΈ. Π Π΅ΡΠ»ΠΈ ΡΡΠΎ-ΡΠΎ Π½Π΅ ΡΠ°ΠΊ, ΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠΉΡΠ΅ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°ΠΌΠΈ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ ΡΠ΅Π±Ρ Π²Π΅Π΄Π΅Ρ. Nancy ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΡΠ°ΡΡ ΡΠ΅Π±Ρ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π±Π°Π·Π°.
- Π ΠΏΡΠΈΡΠ΅Π»ΠΈΠ²Π°ΠΉΡΠ΅ΡΡ Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΎΡΠΊΠ»ΠΈΠΊΠ°.
- Π Π½Π΅ Π±ΠΎΠΉΡΠ΅ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΎΠ² Postgres. ΠΠΎΠ³Π΄Π° Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Ρ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠ°ΠΌΠΈ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π½Π°ΡΡ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈΠΉ. Π’Π°ΠΌ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π², ΡΠ°ΠΌ Π²ΡΠ΅ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΎ.
- Π ΠΏΡΠΎΠ²Π΅ΡΡΠΉΡΠ΅ Π·Π΄ΠΎΡΠΎΠ²ΡΠ΅ Π±Π°Π·Ρ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎ, Ρ ΠΎΡΡ Π±Ρ ΡΠ°Π· Π² ΡΡΠΈ ΠΌΠ΅ΡΡΡΠ° ΡΡΠΊΠ°ΠΌΠΈ, Π»ΠΈΠ±ΠΎ Postgres-checkup.
ΠΠΎΠΏΡΠΎΡΡ
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π±ΠΎΠ»ΡΡΠΎΠ΅! ΠΡΠ΅Π½Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π°Ρ ΡΡΡΠΊΠ°.
ΠΠ²Π΅ ΡΡΡΠΊΠΈ.
ΠΠ°, Π΄Π²Π΅ ΡΡΡΠΊΠΈ. Π’ΠΎΠ»ΡΠΊΠΎ Ρ Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΏΠΎΠ½ΡΠ». ΠΠΎΠ³Π΄Π° ΠΌΡ Ρ Nancy ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ, ΠΌΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ΄ΠΊΡΡΡΠΈΠ²Π°ΡΡ ΠΈΠ»ΠΈ ΡΠ΅Π»ΡΡ Π³ΡΡΠΏΠΏΡ?
Π£ Π½Π°Ρ Π΄Π΅Π»ΡΡΠ°-ΠΊΠΎΠ½ΡΠΈΠ³ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠ΄Π° ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ ΡΡΠ°Π·Ρ ΠΊΡΡΡΠ°Π½ΡΡΡ. ΠΠΎ Π½Π°Π΄ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΌΠ΅Π½ΡΠ΅ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅Π³ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠ΅ Π²ΡΠ²ΠΎΠ΄Ρ ΡΠ΄Π΅Π»Π°ΡΡ.
ΠΠ°. ΠΠΎΡΠ΅ΠΌΡ Ρ ΡΠΏΡΠΎΡΠΈΠ»? ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΡ, ΠΊΠΎΠ³Π΄Π° Ρ ΡΠ΅Π±Ρ Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ. Π’Ρ Π΅Π³ΠΎ ΠΏΠΎΠ΄ΠΊΡΡΡΠΈΠ²Π°Π΅ΡΡ, ΠΏΠΎΡΠΌΠΎΡΡΠ΅Π», ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΡΡΡΠ°Π²ΠΈΠ» Π΅Π³ΠΎ. ΠΠΎΡΠΎΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡ.
ΠΠΎΠΆΠ½ΠΎ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ΄ΠΊΡΡΡΠΈΠ²Π°ΡΡ, Π½ΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ. ΠΠΎ Π»ΡΡΡΠ΅ ΠΎΠ΄Π½Ρ ΠΈΠ΄Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ. Π£ Π½Π°Ρ Π²ΡΠ΅ΡΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΈΠ΄Π΅Ρ. Π£ Π½Π°Ρ Π±ΡΠ»Π° ΠΎΡΠ΅Π½Ρ Π±Π»ΠΈΠ·ΠΊΠ°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ. ΠΡΠ»ΠΎ Π΄Π²Π° ΠΊΠΎΠ½ΡΠΈΠ³Π°. Π ΠΌΡ Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΠ½ΡΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ Π±ΠΎΠ»ΡΡΠ°Ρ ΡΠ°Π·Π½ΠΈΡΠ°. Π Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΈΠ΄Π΅Ρ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΠΈΡ ΠΎΡΠΎΠΌΠΈΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ ΠΈ Π½Π°ΠΉΡΠΈ Π² ΡΠ΅ΠΌ ΠΎΡΠ»ΠΈΡΠΈΠ΅. ΠΠΎΠΆΠ½ΠΎ ΡΡΠ°Π·Ρ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠ΄Π΅Π»Π°ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ, ΠΏΠΎΡΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΡΡ ΠΈ Ρ. Π΄. ΠΡΠ΅ Π³ΠΈΠ±ΠΊΠΎ.
Π Π΅ΡΠ΅ Π΅ΡΡΡ Π²ΠΎΠΏΡΠΎΡ. ΠΡΠΎΠ΅ΠΊΡ ΠΌΠΎΠ»ΠΎΠ΄ΠΎΠΉ, ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΡΡΡ. ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΡΠΆΠ΅ Π³ΠΎΡΠΎΠ²Π°, Π΅ΡΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅?
Π― ΡΠ°ΠΌ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ ΡΡΡΠ»ΠΊΡ ΡΠ΄Π΅Π»Π°Π» Π½Π° ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². ΠΡΠΎ Π΅ΡΡΡ. ΠΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΎ Π½Π΅Ρ Π΅ΡΠ΅ ΠΏΠΎΠΊΠ°. Π― ΠΈΡΡ Π΅Π΄ΠΈΠ½ΠΎΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊΠΎΠ². Π Ρ ΠΈΡ Π½Π°Ρ ΠΎΠΆΡ, ΠΊΠΎΠ³Π΄Π° Π²ΡΡΡΡΠΏΠ°Ρ. ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΊΡΡΡΠΎ. ΠΡΠΎ-ΡΠΎ ΡΠΆΠ΅ ΡΠΎ ΠΌΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΊΡΠΎ-ΡΠΎ ΠΏΠΎΠΌΠΎΠ³ ΠΈ ΡΡΠΎ-ΡΠΎ ΡΠ°ΠΌ ΡΠ΄Π΅Π»Π°Π». Π Π΅ΡΠ»ΠΈ Π²Π°ΠΌ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π° ΡΡΠ° ΡΠ΅ΠΌΠ°, Π΄Π°ΠΉΡΠ΅ ΠΎΠ±ΡΠ°ΡΠ½ΡΡ ΡΠ²ΡΠ·Ρ β ΡΡΠΎ Π½Π΅ Ρ Π²Π°ΡΠ°Π΅Ρ.
ΠΠ°ΠΊ ΡΠ΄Π΅Π»Π°Π΅ΠΌ Π»Π°Π±ΠΎΡΠ°ΡΠΎΡΠΈΡ, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ, Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΠ°ΡΠ½Π°Ρ ΡΠ²ΡΠ·Ρ. ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ. Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ!
ΠΠ΄ΡΠ°Π²ΡΡΠ²ΡΠΉΡΠ΅! Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π΄ΠΎΠΊΠ»Π°Π΄! Π― ΡΠ²ΠΈΠ΄Π΅Π», ΡΡΠΎ Π΅ΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΠΌΠ°Π·ΠΎΠ½Π°. ΠΠ»Π°Π½ΠΈΡΡΠ΅ΡΡΡ Π»ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° GSP?
Π₯ΠΎΡΠΎΡΠΈΠΉ Π²ΠΎΠΏΡΠΎΡ. ΠΠ°ΡΠ°Π»ΠΈ Π΄Π΅Π»Π°ΡΡ. Π ΠΏΠΎΠΊΠ° Π·Π°ΠΌΠΎΡΠΎΠ·ΠΈΠ»ΠΈ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ. Π’. Π΅. Π΅ΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ run on localhost. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΠΌΠΈ ΡΠΎΠ·Π΄Π°ΡΡ instance ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ. ΠΡΡΠ°ΡΠΈ, ΡΠ°ΠΊ ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ. Π Getlab Ρ ΡΠ°ΠΊ Π΄Π΅Π»Π°Ρ, ΡΠ°ΠΌ Π½Π° GSP. ΠΠΎ Π΄Π΅Π»Π°ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊΡΡ ΠΎΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΡ ΠΌΡ ΠΏΠΎΠΊΠ° Π½Π΅ Π²ΠΈΠ΄ΠΈΠΌ ΡΠΌΡΡΠ», ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Ρ Google Π½Π΅Ρ ΡΠΏΠΎΡΠΎΠ² Π΄Π΅ΡΠ΅Π²ΡΠΉ. Π’Π°ΠΌ Π΅ΡΡΡ ??? instances, Π½ΠΎ Ρ Π½ΠΈΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Ρ Π½ΠΈΡ Π²ΡΠ΅Π³Π΄Π° ΡΠΎΠ»ΡΠΊΠΎ ΡΠΊΠΈΠ΄ΠΊΠ° Π² 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_statemetns ΡΠ°ΠΌ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΡΠ΅ΡΠ½ΠΈΡΡ.
Π Pg_stat_statements ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΎ. ΠΡ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ track_utility = on, ΡΠΎ Ρ Π²Π°Ρ ΡΠ΅ΡΡ ΡΠΎΠΆΠ΅ ΡΡΠ΅ΠΊΠ°ΡΡΡΡ.
ΠΠ°, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ.
Π Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ java hibernate, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π½Π΄ΠΎΠΌΠ½ΡΠΉ, ΡΠΎ ΡΠ°ΠΌ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Π»ΠΎΡΠΈΡΡΡ Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΠ°. Π ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π²Ρ ΠΎΡΠΊΠ»ΡΡΠ°Π΅ΡΠ΅ ΠΎΡΠ΅Π½Ρ Π½Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ Π²Π°Ρ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ 50-100 Π³ΡΡΠΏΠΏ. Π ΡΠ°ΠΌ Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎ Π²ΡΠ΅. ΠΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π±ΠΎΡΡΠ±Ρ Ρ ΡΡΠΈΠΌ β ΡΡΠΎ pg_stat_statements.max ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ.
ΠΠ°, Π½ΠΎ Π½Π°Π΄ΠΎ Π·Π½Π°ΡΡ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ. Π ΠΊΠ°ΠΊ-ΡΠΎ Π·Π° Π½ΠΈΠΌ Π½Π°Π΄ΠΎ ΡΠ»Π΅Π΄ΠΈΡΡ. Π― ΡΠ°ΠΊ ΠΈ Π΄Π΅Π»Π°Ρ. Π’. Π΅. Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ pg_stat_statements.max. Π ΡΠΌΠΎΡΡΡ, ΡΡΠΎ Ρ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ½Π°ΠΏΡΠΎΡΠ° Π½Π΅ Π΄ΠΎΡΠ΅Π» ΠΏΡΠΎΡΠ΅Π½ΡΠΎΠ² 70 %. Π₯ΠΎΡΠΎΡΠΎ, Π·Π½Π°ΡΠΈΡ, ΠΌΡ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΠΎΡΠ΅ΡΡΠ»ΠΈ. ΠΠ΅Π»Π°Π΅ΠΌ reset. Π ΠΊΠΎΠΏΠΈΠΌ ΡΠ½ΠΎΠ²Π°. ΠΡΠ»ΠΈ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠ½Π°ΠΏΡΠΎΡΠ΅ ΠΌΠ΅Π½ΡΡΠ΅ 70, ΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, ΡΠ½ΠΎΠ²Π° Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΠΎΡΠ΅ΡΡΠ»ΠΈ.
ΠΠ°. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ΅ΠΉΡΠ°Ρ 5 000. Π ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΈΠΌ ΡΡΠΎΠ³ΠΎ Ρ Π²Π°ΡΠ°Π΅Ρ.
ΠΠ±ΡΡΠ½ΠΎ β Π΄Π°.
ΠΠΈΠ΄Π΅ΠΎ:
P.S. ΠΡ ΡΠ΅Π±Ρ Π΄ΠΎΠ±Π°Π²Π»Ρ ΡΡΠΎ Π΅ΡΠ»ΠΈ Π² Postgres Π½Π°Ρ
ΠΎΠ΄ΡΡΡΡ ΠΊΠΎΠ½ΡΠ΅Π΄ΠΈΡΠΈΠ°Π»ΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΠΈΠΌ Π½Π΅Π»ΡΠ·Ρ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ Π² ΡΠ΅ΡΡΠΎΠ²ΠΎΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com