ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовский

ΠŸΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΎΠΉ Π΄ΠΎΠΊΠ»Π°Π΄Π° АлСксСй ЛСсовский ΠΈΠ· Data Egret "ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL"

Π’ этом Π΄ΠΎΠΊΠ»Π°Π΄Π΅ АлСксСй ЛСсовский расскаТСт ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Ρ… постгрСсовой статистики, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚, ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π΅; ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π² ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π΅, ΠΊΠ°ΠΊ ΠΈΡ… Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈ ΠΊΠ°ΠΊ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π”ΠΎΠΊΠ»Π°Π΄ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π΅Π½ администраторам Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, систСмным администраторам ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ интСрСсСн Ρ‚Ρ€Π°Π±Π»ΡˆΡƒΡ‚ΠΈΠ½Π³ Postgres’Π°.

ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовский

МСня Π·ΠΎΠ²ΡƒΡ‚ АлСксСй ЛСсовский, я ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽ компанию Data Egret.

НСмного слов ΠΎ сСбС. Π― Π½Π°Ρ‡ΠΈΠ½Π°Π» ΠΊΠΎΠ³Π΄Π°-Ρ‚ΠΎ Π΄Π°Π²Π½Ρ‹ΠΌ-Π΄Π°Π²Π½ΠΎ систСмным администратором.

Администрировал всякиС Ρ€Π°Π·Π½Ρ‹Π΅ Linux, занимался Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Π²Π΅Ρ‰Π°ΠΌΠΈ, связанными с Linux, Ρ‚. Π΅. Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ, ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ΠΎΠΌ, Ρ€Π°Π±ΠΎΡ‚Π°Π» с прокси ΠΈ Ρ‚. Π΄. Но Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ я стал Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ большС Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, PostgreSQL. Он ΠΌΠ½Π΅ ΠΎΡ‡Π΅Π½ΡŒ нравился. И Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ я стал Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ PostgreSQL ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ своСго Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. И Ρ‚Π°ΠΊ постСпСнно я стал PostgreSQL DBA.

И Π½Π° протяТСнии всСй своСй ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Ρ‹ ΠΌΠ½Π΅ всСгда Π±Ρ‹Π»ΠΈ интСрСсны Ρ‚Π΅ΠΌΡ‹ статистики, ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°, снятия Ρ‚Π΅Π»Π΅ΠΌΠ΅Ρ‚Ρ€ΠΈΠΈ. И ΠΊΠΎΠ³Π΄Π° я Π±Ρ‹Π» систСмным администратором, я занимался ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠ»ΠΎΡ‚Π½ΠΎ Zabbix. И написал нСбольшой Π½Π°Π±ΠΎΡ€ скриптов ΠΊΠ°ΠΊ zabbix-extensions. Он Π±Ρ‹Π» довольно популярным Π² своС врСмя. И Ρ‚Π°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Π²Π°ΠΆΠ½Ρ‹Π΅ ΡˆΡ‚ΡƒΠΊΠΈ, Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Linux, Π½ΠΎ Π΅Ρ‰Π΅ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹.

БСйчас я занимаюсь ΡƒΠΆΠ΅ PostgreSQL. Π― ΠΏΠΈΡˆΡƒ ΡƒΠΆΠ΅ Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΡˆΡ‚ΡƒΠΊΡƒ, которая позволяСт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с PostgreSQL-статистикой. Она называСтся pgCenter (ΡΡ‚Π°Ρ‚ΡŒΡ Π½Π° Ρ…Π°Π±Ρ€Π΅ β€” ΠŸΠΎΡΡ‚Π³Ρ€Π΅ΡΠΎΠ²Π°Ρ стата Π±Π΅Π· Π½Π΅Ρ€Π²ΠΎΠ² ΠΈ напрягов).

ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовский

НСбольшая вводная. КакиС Π±Ρ‹Π²Π°ΡŽΡ‚ ситуации Ρƒ Π½Π°ΡˆΠΈΡ… Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠ², Ρƒ Π½Π°ΡˆΠΈΡ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ²? ΠŸΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ какая-Ρ‚ΠΎ авария, связанная с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΠΎΠΉ. И ΠΊΠΎΠ³Π΄Π° ΡƒΠΆΠ΅ восстановили Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΈΠΊ ΠΎΡ‚Π΄Π΅Π»Π° ΠΈΠ»ΠΈ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΈΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚: Β«Π”Ρ€ΡƒΠ·ΡŒΡ, Π½Π°Π΄ΠΎ Π±Ρ‹ Π½Π°ΠΌ Π·Π°ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΡΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠ»ΠΎΡ…ΠΎΠ΅ ΠΈ Π½Π°Π΄ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π½Π΅ происходило». И здСсь начинаСтся интСрСсный процСсс Π²Ρ‹Π±ΠΎΡ€Π° систСмы ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΈΠ»ΠΈ Π°Π΄Π°ΠΏΡ‚Π°Ρ†ΠΈΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ систСмы ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ свою Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… – PostgreSQL, MySQL ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. И ΠΊΠΎΠ»Π»Π΅Π³ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Ρ‚ΡŒ: Β«Π― ΡΠ»Ρ‹ΡˆΠ°Π», Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ такая-Ρ‚ΠΎ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…. Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅Β». КоллСги Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΡΠΏΠΎΡ€ΠΈΡ‚ΡŒ. И Π² ΠΈΡ‚ΠΎΠ³Π΅ получаСтся, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ PostgreSQL Π² Π½Π΅ΠΉ прСдставлСн довольно слабо ΠΈ всСгда приходится Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΄ΠΎΠΏΠΈΠ»ΠΈΠ²Π°Ρ‚ΡŒ. Π‘Ρ€Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΈΠ· GitHub, ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ…, Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ скрипты, ΠΊΠ°ΠΊ-Ρ‚ΠΎ Π΄ΠΎΠ½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ. И Π² ΠΈΡ‚ΠΎΠ³Π΅ это вываливаСтся Π² Π½Π΅ΠΊΡƒΡŽ Ρ€ΡƒΡ‡Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ.

ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовский

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² этом Π΄ΠΎΠΊΠ»Π°Π΄Π΅ я ΠΏΠΎΡΡ‚Π°Ρ€Π°ΡŽΡΡŒ Π΄Π°Ρ‚ΡŒ Π²Π°ΠΌ Π½Π΅ΠΊΠΈΠ΅ знания ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для PostgreSQL, Π½ΠΎ ΠΈ для Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. И Π΄Π°Ρ‚ΡŒ Ρ‚Π΅ знания, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ позволят Π²Π°ΠΌ Π΄ΠΎΠΏΠΈΠ»ΠΈΡ‚ΡŒ ваш ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚ Π½Π΅Π³ΠΎ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ свою Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… с пользой, Ρ‡Ρ‚ΠΎΠ±Ρ‹ воврСмя ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ прСдстоящиС Π°Π²Π°Ρ€ΠΈΠΉΠ½Ρ‹Π΅ ситуации, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ.

И Ρ‚Π΅ ΠΈΠ΄Π΅ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π² этом Π΄ΠΎΠΊΠ»Π°Π΄Π΅, ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊ любой Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, Π±ΡƒΠ΄ΡŒ это Π‘Π£Π‘Π” ΠΈΠ»ΠΈ noSQL. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ρ‚ΡƒΡ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ PostgreSQL, Π½ΠΎ здСсь Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π΅Ρ†Π΅ΠΏΡ‚ΠΎΠ², ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это Π² PostgreSQL. Π‘ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ запросов, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ сущностСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅ΡΡ‚ΡŒ Π² PostgreSQL для ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°. И Ссли ваша Π‘Π£Π‘Π” ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅ Π²Π΅Ρ‰ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π·Π°ΡΡƒΠ½ΡƒΡ‚ΡŒ ΠΈΡ… Π² ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³, Π²Ρ‹ Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡ… Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΎ.

ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовскийВ Π΄ΠΎΠΊΠ»Π°Π΄Π΅ я Π½Π΅ Π±ΡƒΠ΄Ρƒ
Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎ Ρ‚ΠΎ, ΠΊΠ°ΠΊ Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΈ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ. НС Π±ΡƒΠ΄Ρƒ Π½ΠΈΡ‡Π΅Π³ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ пост-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡŽ ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ. И Π½Π΅ Π±ΡƒΠ΄Ρƒ Π½ΠΈΡ‡Π΅Π³ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎΠ± Π°Π»Π΅Ρ€Ρ‚ΠΈΠ½Π³Π΅.
Но ΠΏΠΎ Ρ…ΠΎΠ΄Ρƒ повСствования я Π±ΡƒΠ΄Ρƒ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Ρ‹ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ΠΎΠ², ΠΊΠ°ΠΊ-Ρ‚ΠΎ Π±ΡƒΠ΄Ρƒ ΠΈΡ… ΠΊΡ€ΠΈΡ‚ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ. Но Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ я ΠΏΠΎΡΡ‚Π°Ρ€Π°ΡŽΡΡŒ Π½Π΅ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π±Ρ€Π΅Π½Π΄ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π΅ΠΊΠ»Π°ΠΌΡƒ ΠΈΠ»ΠΈ Π°Π½Ρ‚ΠΈΡ€Π΅ΠΊΠ»Π°ΠΌΡƒ этим ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°ΠΌ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ всС совпадСния случайны ΠΈ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Π½Π° вашСй Ρ„Π°Π½Ρ‚Π°Π·ΠΈΠΈ.
ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовский
Для Π½Π°Ρ‡Π°Π»Π° разбСрСмся, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³. ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ – это ΠΎΡ‡Π΅Π½ΡŒ ваТная ΡˆΡ‚ΡƒΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ. Π­Ρ‚ΠΎ всС ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚. Но Π² Ρ‚ΠΎ ΠΆΠ΅ самоС врСмя ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π½Π΅ относится ΠΊ бизнСс-ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρƒ ΠΈ Π½Π° Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π½Π΅ влияСт Π½Π° ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, поэтому Π½Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ всСгда ΡƒΠ΄Π΅Π»ΡΡŽΡ‚ врСмя ΠΏΠΎ остаточному ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ. Если Ρƒ нас Π΅ΡΡ‚ΡŒ врСмя, Ρ‚ΠΎ ΠΌΡ‹ занимаСмся ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ΠΎΠΌ, Ссли Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π΅Ρ‚, Ρ‚ΠΎ ОК, поставим Π² бэклог ΠΈ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ вСрнСмся ΠΊ этим Π·Π°Π΄Π°Ρ‡Π°ΠΌ.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΈΠ· нашСй ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ, ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ часто Π½Π΅Π΄ΠΎΡ€Π°Π±ΠΎΡ‚Π°Π½ ΠΈ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ интСрСсных Π²Π΅Ρ‰Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³Π°Π»ΠΈ Π±Ρ‹ Π½Π°ΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π»ΡƒΡ‡ΡˆΠ΅ с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ…. И поэтому ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ всСгда Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠΏΠΈΠ»ΠΈΠ²Π°Ρ‚ΡŒ.

Π‘Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… – это Ρ‚Π°ΠΊΠΈΠ΅ слоТныС ΡˆΡ‚ΡƒΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚ΠΎΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… – это Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. И информация ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Π° для ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, Π΅Π΅ нСльзя Π½ΠΈΠΊΠ°ΠΊ Ρ‚Π΅Ρ€ΡΡ‚ΡŒ. Но Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… – это ΠΎΡ‡Π΅Π½ΡŒ слоТныС куски ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. Они состоят ΠΈΠ· большого количСства ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². И ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· этих ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π½ΡƒΠΆΠ½ΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ.

ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовскийЕсли ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ ΠΏΡ€ΠΎ PostgreSQL, Ρ‚ΠΎ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ Ρ‚Π°ΠΊΠΎΠΉ схСмы, которая состоит ΠΈΠ· большого количСства ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². Π­Ρ‚ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ. И Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя Π² PostgreSQL Π΅ΡΡ‚ΡŒ, Ρ‚Π°ΠΊ называСмая, подсистСма Stats Collector, которая позволяСт ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ статистику ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ этих подсистСм ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π½Π΅ΠΊΠΈΠΉ интСрфСйс администратору ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΠΌΠΎΠ³ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ эту статистику.

Π­Ρ‚Π° статистика прСдставлСна Π² Π²ΠΈΠ΄Π΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ Π²ΡŒΡŽΡ… (view). Π˜Ρ… ΠΌΠΎΠΆΠ½ΠΎ Π΅Ρ‰Π΅ Π½Π°Π·Π²Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ. Π’. Π΅. с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ psql ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ select ΠΊ этим функциям ΠΈ Π²ΡŒΡŽΡ…Π°ΠΌ, ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡƒΠΆΠ΅ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ Ρ†ΠΈΡ„Π΅Ρ€ΠΊΠΈ ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ подсистСм PostgreSQL.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ эти Ρ†ΠΈΡ„Π΅Ρ€ΠΊΠΈ Π² Π²Π°ΡˆΡƒ Π»ΡŽΠ±ΠΈΠΌΡƒΡŽ систСму ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°, Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ, Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΡƒ Π² долгосрочной пСрспСктивС.

Но Π² этом Π΄ΠΎΠΊΠ»Π°Π΄Π΅ я Π½Π΅ Π±ΡƒΠ΄Ρƒ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ³ΠΎΠ»ΠΎΠ²Π½ΠΎ всС эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΡΡ‚ΡŒ Ρ†Π΅Π»Ρ‹ΠΉ дСнь. Π― Π±ΡƒΠ΄Ρƒ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ ΠΊ Π΄Π²ΡƒΠΌ-Ρ‚Ρ€Π΅ΠΌ-Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ΠΌ ΡˆΡ‚ΡƒΠΊΠ°ΠΌ ΠΈ Π±ΡƒΠ΄Ρƒ Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π»ΡƒΡ‡ΡˆΠ΅.
ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовский
И Ссли Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π±Π°Π·Ρ‹, Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ? Π’ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½ΡƒΠΆΠ½ΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π±Π°Π·Π° – это сСрвис, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСт доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ ΠΈ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ, Π° прСдоставляСт Ρ‚Π°ΠΊΠΆΠ΅ Π΅Π΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ качСствСнныС ΠΈ количСствСнныС характСристики.

ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовский

Π’Π°ΠΊΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ ΠΊ нашСй Π±Π°Π·Π΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΈ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ, Ρ‚Π°ΠΊ ΠΈ Π²Ρ€Π΅Π΄Π½Ρ‹ΠΌΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°Π½ΠΎΡΠΈΡ‚ΡŒ Π²Ρ€Π΅Π΄ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π˜Ρ… Ρ‚ΠΎΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ ΠΈ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовский

Когда ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚ΠΎ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с нашими Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, поэтому Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ ΠΈ Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ: с ΠΊΠ°ΠΊΠΈΠΌΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ, Π² мСньшСй стСпСни с ΠΊΠ°ΠΊΠΈΠΌΠΈ индСксами. Π’. Π΅. Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ Π²ΠΎΡ€ΠΊΠ»ΠΎΠ°Π΄ (workload), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ создаСтся нашими ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ.

ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовский

Но ΠΈ Π²ΠΎΡ€ΠΊΠ»ΠΎΠ°Π΄ состоит, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΈΠ· запросов. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ ΠΊ Π±Π°Π·Π΅, ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ запросов, поэтому Π²Π°ΠΆΠ½ΠΎ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ запросы Ρƒ нас Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½ΠΎΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΡ€ΠΈΠ²ΠΎ написанными, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΎΠΏΡ†ΠΈΠΈ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ быстрСС ΠΈ с Π±ΠΎΠ»Π΅Π΅ Π»ΡƒΡ‡ΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ.

ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовский

И Ρ€Π°Π· ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΏΡ€ΠΎ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚ΠΎ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… – это всСгда Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Π΅ процСссы. Π€ΠΎΠ½ΠΎΠ²Ρ‹Π΅ процСссы ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, поэтому для ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΠ½ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π½Π΅ΠΊΠΎΠ΅ количСство рСсурсов для сСбя. И Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°Ρ‚ΡŒΡΡ с рСсурсами клиСнтских запросов, поэтому Тадная Ρ€Π°Π±ΠΎΡ‚Π° Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Ρ… процСссов ΠΌΠΎΠΆΠ΅Ρ‚ нСпосрСдствСнно Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ клиСнтских запросов. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΈΡ… Ρ‚ΠΎΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ ΠΈ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… пСрСкосов Π² ΠΏΠ»Π°Π½Π΅ Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Ρ… процСссов.

ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовский

И это всС Π² ΠΏΠ»Π°Π½Π΅ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… остаСтся Π² систСмной ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ΅. Но учитывая, Ρ‡Ρ‚ΠΎ Ρƒ нас ΠΏΠΎ большСй части вся инфраструктура ΡƒΠ΅Π·ΠΆΠ°Π΅Ρ‚ Π² ΠΎΠ±Π»Π°ΠΊΠ°, систСмныС ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ хоста всСгда отходят Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ»Π°Π½. Но Π² Π±Π°Π·Π°Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ½ΠΈ всС Π΅Ρ‰Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ систСмныС ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Ρ‚ΠΎΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎ.

ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовский

Π‘ систСмными ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ°ΠΌΠΈ Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ всС Ρ…ΠΎΡ€ΠΎΡˆΠΎ, всС соврСмСнныС систСмы ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΡƒΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ эти ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ, Π½ΠΎ Π² Ρ†Π΅Π»ΠΎΠΌ ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² всС-Ρ‚Π°ΠΊΠΈ нСдостаточно ΠΈ Π½ΡƒΠΆΠ½ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ. ΠŸΡ€ΠΎ Π½ΠΈΡ… я Ρ‚ΠΎΠΆΠ΅ Π·Π°Ρ‚Ρ€ΠΎΠ½Ρƒ, нСсколько слайдов Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎ Π½ΠΈΡ….

ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовский
ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡƒΠ½ΠΊΡ‚ ΠΏΠ»Π°Π½Π° – это Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ? Π”ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Π² ΠΌΠΎΠ΅ΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ – это ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Π±Π°Π·Ρ‹ ΠΎΠ±ΡΠ»ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Ρ‚. Π΅. Π±Π°Π·Π° поднята, ΠΎΠ½Π°, ΠΊΠ°ΠΊ сСрвис, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΎΡ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ². И эту Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ характСристиками. Π­Ρ‚ΠΈ характСристики ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π²Ρ‹Π½ΠΎΡΠΈΡ‚ΡŒ Π½Π° Π΄Π°ΡˆΠ±ΠΎΡ€Π΄Ρ‹.

ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовский
ВсС Π·Π½Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π΄Π°ΡˆΠ±ΠΎΡ€Π΄Ρ‹. Π­Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° Ρ‚Ρ‹ бросил ΠΎΠ΄ΠΈΠ½ взгляд Π½Π° экран, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ свСдСна нСобходимая информация. И Π²Ρ‹ ΡƒΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ сразу ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ – Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Π±Π°Π·Π΅ ΠΈΠ»ΠΈ Π½Π΅Ρ‚.
БоотвСтствСнно Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ характСристики всСгда Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π½ΠΎΡΠΈΡ‚ΡŒ Π½Π° Π΄Π°ΡˆΠ±ΠΎΡ€Π΄Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ эта информация Π±Ρ‹Π»Π° ΠΏΠΎΠ΄ Ρ€ΡƒΠΊΠΎΠΉ, Π±Ρ‹Π»Π° Ρƒ вас всСгда рядом. КакиС-Ρ‚ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄Π΅Ρ‚Π°Π»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΏΡ€ΠΈ расслСдовании ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚ΠΎΠ², ΠΏΡ€ΠΈ расслСдовании ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ Π°Π²Π°Ρ€ΠΈΠΉΠ½Ρ‹Ρ… ситуаций, ΠΈΡ… ΡƒΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π½ΠΎΡΠΈΡ‚ΡŒ Π½Π° Π²Ρ‚ΠΎΡ€ΠΈΡ‡Π½Ρ‹Π΅ Π΄Π°ΡˆΠ±ΠΎΡ€Π΄Ρ‹, Π»ΠΈΠ±ΠΎ ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ Π² drilldown-Π»ΠΈΠ½ΠΊΠ°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π΅Π΄ΡƒΡ‚ Π½Π° сторонниС систСмы ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°.

ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовский

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠ΄Π½ΠΎΠΉ извСстной систСмы ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ крутая систСма ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°. Она собираСт ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ с ΠΌΠΎΠ΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния, Ρƒ Π½Π΅Π΅ странноС понятиС Π΄Π°ΡˆΠ±ΠΎΡ€Π΄ΠΎΠ². Π’Π°ΠΌ Π΅ΡΡ‚ΡŒ ссылка Β«ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄Π°ΡˆΠ±ΠΎΡ€Π΄Β». Но ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ создаСтС Π΄Π°ΡˆΠ±ΠΎΡ€Π΄, Π²Ρ‹ создаСтС Π½Π΅ΠΊΠΈΠΉ список, состоящий ΠΈΠ· Π΄Π²ΡƒΡ… ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ, Π½Π΅ΠΊΠΈΠΉ список Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ². И ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Π²Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚Π΅ ΠΌΡ‹ΡˆΠΊΠΎΠΉ ΠΊΠ»ΠΈΠΊΠ°Ρ‚ΡŒ, Π»ΠΈΡΡ‚Π°Ρ‚ΡŒ, ΠΈΡΠΊΠ°Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹ΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊ. И Π½Π° это ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ врСмя, Ρ‚. Π΅. Π΄Π°ΡˆΠ±ΠΎΡ€Π΄ΠΎΠ², ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠ²Ρ‹Ρ…, Π½Π΅Ρ‚. Π•ΡΡ‚ΡŒ лишь списки Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ².

ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовский

Π§Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½Π° эти Π΄Π°ΡˆΠ±ΠΎΡ€Π΄Ρ‹? МоТно Π½Π°Ρ‡Π°Ρ‚ΡŒ с Ρ‚Π°ΠΊΠΎΠΉ характСристики ΠΊΠ°ΠΊ врСмя ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ°. Π’ PostgreSQL Π΅ΡΡ‚ΡŒ Π²ΡŒΡŽΡ…Π° pg_stat_statements. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ½Π° ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π°, Π½ΠΎ это ΠΎΠ΄Π½Π° ΠΈΠ· Π²Π°ΠΆΠ½Ρ‹Ρ… систСмных Π²ΡŒΡŽΡ…, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ всСгда Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Она Ρ…Ρ€Π°Π½ΠΈΡ‚ Π² сСбС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ всСх Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΡ…ΡΡ запросах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΈΡΡŒ.

БоотвСтствСнно, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡ‚Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒ суммарноС врСмя выполнСния всСх запросов ΠΈ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° количСство запросов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ. Но это такая срСдняя Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π° ΠΏΠΎ Π±ΠΎΠ»ΡŒΠ½ΠΈΡ†Π΅. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡ‚Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»Π΅ΠΉ – минимальноС врСмя выполнСния запросов, максимальноС ΠΈ ΠΌΠ΅Π΄ΠΈΠ°Π½Π½ΠΎΠ΅. И Π΄Π°ΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Ρ†Π΅Π½Ρ‚ΠΈΠ»ΠΈ, Π² PostgreSQL Π΅ΡΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для этого. И ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Ρ†ΠΈΡ„Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΡŽΡ‚ врСмя ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ° нашСй Π±Π°Π·Ρ‹ ΠΏΠΎ ΡƒΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΌ запросам, Ρ‚. Π΅. ΠΌΡ‹ Π½Π΅ выполняСм Ρ„Π΅ΠΉΠΊΠΎΠ²Ρ‹ΠΉ запрос ‘select 1’Β ΠΈ смотрим врСмя ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ°, Π° ΠΌΡ‹ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ врСмя ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² ΠΏΠΎ ΡƒΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΌ запросам ΠΈ рисуСм Π»ΠΈΠ±ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ†ΠΈΡ„Ρ€ΠΎΠΉ, Π»ΠΈΠ±ΠΎ строим ΠΏΠΎ Π½Π΅ΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊ.

Π’Π°ΠΊΠΆΠ΅ Π²Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ количСство ошибок, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ систСмой Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚. И для этого ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΡŒΡŽΡ…Ρƒ pg_stat_database. ΠœΡ‹ ориСнтируСмся Π½Π° ΠΏΠΎΠ»Π΅ xact_rollback. Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ количСство rollback, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ происходят Π² Π±Π°Π·Π΅, Π½ΠΎ Π΅Ρ‰Π΅ ΠΈ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ количСство ошибок. Условно говоря, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ эту Ρ†ΠΈΡ„Ρ€Ρƒ Π² наш Π΄Π°ΡˆΠ±ΠΎΡ€Π΄ ΠΈ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ сколько Ρƒ нас ошибок Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚. Если ошибок ΠΌΠ½ΠΎΠ³ΠΎ, Ρ‚ΠΎ это ΡƒΠΆΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΏΠΎΠ²ΠΎΠ΄ Π·Π°Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π² Π»ΠΎΠ³ΠΈ ΠΈ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ это Π·Π° ошибки ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ΠΈ происходят, Π° дальшС ΡƒΠΆΠ΅ ΠΈΠ½Π²Π΅ΡΡ‚ΠΈΠ³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΈΡ….

ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовский

МоТно Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ΡˆΡ‚ΡƒΠΊΡƒ, ΠΊΠ°ΠΊ Π’Π°Ρ…ΠΎΠΌΠ΅Ρ‚Ρ€. Π­Ρ‚ΠΎ количСство Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π² сСкунду ΠΈ количСство запросов Π² сСкунду. Условно говоря, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти Ρ†ΠΈΡ„Ρ€Ρ‹ ΠΊΠ°ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ вашСй Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ Π΅ΡΡ‚ΡŒ Π»ΠΈ ΠΏΠΈΠΊΠΈ запросов, ΠΏΠΈΠΊΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ ΠΈΠ»ΠΈ, Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, Π±Π°Π·Π° Π½Π΅Π΄ΠΎΠ³Ρ€ΡƒΠΆΠ΅Π½Π°, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ backend отвалился. Π­Ρ‚Ρƒ Ρ†ΠΈΡ„Ρ€Ρƒ Π²Π°ΠΆΠ½ΠΎ всСгда ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ для нашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π²ΠΎΡ‚ такая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ являСтся Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ, Π° значСния Π²Ρ‹ΡˆΠ΅ ΠΈ Π½ΠΈΠΆΠ΅ ΡƒΠΆΠ΅ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹Π΅ ΠΈ нСпонятныС, Π° Π·Π½Π°Ρ‡ΠΈΡ‚, Π½ΡƒΠΆΠ½ΠΎ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ρ‚Π°ΠΊΠΈΠ΅ Ρ†ΠΈΡ„Ρ€Ρ‹.

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ количСство Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, ΠΌΡ‹ снова ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Π²ΡŒΡŽΡ…Π΅ pg_stat_database. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒ количСство commit ΠΈ количСство rollbackΒ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ количСство Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ Π² сСкунду.

ВсС ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Π² ΠΎΠ΄Π½Ρƒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ»ΠΎΠΆΠΈΡ‚ΡŒΡΡ нСсколько запросов? ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ TPS ΠΈ QPS Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π½Ρ‹Π΅.

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ запросов Π² сСкунду ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎ pg_stat_statements ΠΈ просто ΠΏΡ€ΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ сумму всСх Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Ρ… запросов. ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ сравниваСм Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ, Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π΅ΠΌ, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π΄Π΅Π»ΡŒΡ‚Ρƒ, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ количСство.

ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовский

МоТно Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΏΠΎ ТСланию, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ нашСй Π±Π°Π·Ρ‹ ΠΈ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ – Π½Π΅ Π±Ρ‹Π»ΠΎ Π»ΠΈ ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ downtime.

Одна ΠΈΠ· этих ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ – это uptime. Но uptime Π² PostgreSQL – это Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ хитрая ΡˆΡ‚ΡƒΠΊΠ°. РасскаТу, ΠΏΠΎΡ‡Π΅ΠΌΡƒ. Когда PostgreSQL запустился, начинаСтся ΠΎΡ‚Ρ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ uptime. Но Ссли Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½ΠΎΡ‡ΡŒΡŽ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»Π°ΡΡŒ какая-Ρ‚ΠΎ Π·Π°Π΄Π°Ρ‡Π°, ΠΏΡ€ΠΈΡˆΠ΅Π» OOM-killer ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ» ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ процСсс PostgreSQL, Ρ‚ΠΎ Π² этом случаС PostgreSQL Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ соСдинСниС всСх ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², сбрасываСт ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΡˆΠ°Ρ€Π΄ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ памяти ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ восстановлСниС с послСднСй ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ. И ΠΏΠΎΠΊΠ° длится это восстановлСниС с ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ, Π±Π°Π·Π° Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Ρ‚. Π΅. эту ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ downtime. Но ΠΏΡ€ΠΈ этом счСтчик uptime Π½Π΅ сбросится, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ врСмя запуска postmaster с самого ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ρ‚Π°ΠΊΠΈΠ΅ ситуации ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ.

Π’Π°ΠΊΠΆΠ΅ слСдуСт ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ количСство Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠ² Π²Π°ΠΊΡƒΡƒΠΌΠ°. ВсС Π·Π½Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ autovacuum Π² PostgreSQL? Π­Ρ‚ΠΎ интСрСсная подсистСма Π² PostgreSQL. ΠŸΡ€ΠΎ Π½Π΅Π΅ написано ΠΌΠ½ΠΎΠ³ΠΎ статСй, ΠΌΠ½ΠΎΠ³ΠΎ сдСлано Π΄ΠΎΠΊΠ»Π°Π΄ΠΎΠ². Много обсуТдСний ΠΏΡ€ΠΎ Π²Π°ΠΊΡƒΡƒΠΌ, ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. МногиС ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ Π΅Π³ΠΎ Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½Ρ‹ΠΌ Π·Π»ΠΎΠΌ. Но Ρ‚Π°ΠΊ ΠΈ Π΅ΡΡ‚ΡŒ. Π­Ρ‚ΠΎ Π½Π΅ΠΊΠΈΠΉ Π°Π½Π°Π»ΠΎΠ³ сборщика мусора, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ чистит ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅ вСрсии строк, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΈ освобоТдаСт мСсто Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ…, индСксах для Π½ΠΎΠ²Ρ‹Ρ… строк.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π½ΡƒΠΆΠ½ΠΎ Π΅Π³ΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ? ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π²Π°ΠΊΡƒΡƒΠΌ ΠΈΠ½ΠΎΠ³Π΄Π° Π΄Π΅Π»Π°Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ больно. Он ΠΎΡ‚ΠΆΠΈΡ€Π°Π΅Ρ‚ большоС количСство рСсурсов ΠΈ клиСнтскиС запросы ΠΎΡ‚ этого Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ ΡΡ‚Ρ€Π°Π΄Π°Ρ‚ΡŒ.

И ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ слСдуСт Π΅Π³ΠΎ Ρ‡Π΅Ρ€Π΅Π· Π²ΡŒΡŽΡ…Ρƒ pg_stat_activity, ΠΏΡ€ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ я Π±ΡƒΠ΄Ρƒ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅. Π­Ρ‚Π° Π²ΡŒΡŽΡ…Π° ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. И Ρ‡Π΅Ρ€Π΅Π· эту Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ количСство Π²Π°ΠΊΡƒΡƒΠΌΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ прямо сСйчас. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π²Π°ΠΊΡƒΡƒΠΌΡ‹ ΠΈ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ссли Ρƒ нас ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ Π»ΠΈΠΌΠΈΡ‚, Ρ‚ΠΎ это ΠΏΠΎΠ²ΠΎΠ΄ Π·Π°Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π² настройки PostgreSQL ΠΈ ΠΊΠ°ΠΊ-Ρ‚ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π²Π°ΠΊΡƒΡƒΠΌΠ°.

Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ PostgreSQL являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ PostgreSQL ΠΎΡ‡Π΅Π½ΡŒ больно ΠΎΡ‚ Π΄ΠΎΠ»Π³ΠΈΡ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ. ОсобСнно, ΠΎΡ‚ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»Π³ΠΎ висят ΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°ΡŽΡ‚. Π­Ρ‚ΠΎ, Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅, stat idle-in-transaction. Вакая транзакция ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΎΠ½Π° ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π²Π°ΠΊΡƒΡƒΠΌΡƒ. И ΠΊΠ°ΠΊ слСдствиС – Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΡƒΡ…Π½ΡƒΡ‚, ΠΎΠ½ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅. И запросы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с этими Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ, ΠΎΠ½ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π»ΠΎΠΏΠ°Ρ‚ΠΈΡ‚ΡŒ всС старыС вСрсии строк ΠΈΠ· памяти Π½Π° диск ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ врСмя, Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ самых Π΄ΠΎΠ»Π³ΠΈΡ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, самых Π΄ΠΎΠ»Π³ΠΈΡ… запросов Π²Π°ΠΊΡƒΡƒΠΌΠ° Ρ‚ΠΎΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ. И Ссли ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ процСссы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΡƒΠΆΠ΅ ΠΎΡ‡Π΅Π½ΡŒ Π΄ΠΎΠ»Π³ΠΎ, ΡƒΠΆΠ΅ большС 10-20-30 ΠΌΠΈΠ½ΡƒΡ‚ для OLTP-Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, Ρ‚ΠΎ Π½Π° Π½ΠΈΡ… Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΆΠ΅ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π»ΠΈΠ±ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π»ΠΈΡΡŒ ΠΈ Π½Π΅ висСли Ρ‚Π°ΠΊ Π΄ΠΎΠ»Π³ΠΎ. Для аналитичСской Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ 10-20-30 ΠΌΠΈΠ½ΡƒΡ‚ – это Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, Ρ‚Π°ΠΌ Π±Ρ‹Π²Π°Π΅Ρ‚ Π΅Ρ‰Π΅ ΠΈ Π±ΠΎΠ»Π΅Π΅ Π΄ΠΎΠ»Π³ΠΈΠ΅.

ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовский
Π”Π°Π»ΡŒΡˆΠ΅ Ρƒ нас Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ с ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ. Когда ΠΌΡ‹ ΡƒΠΆΠ΅ сформировали Π΄Π°ΡˆΠ±ΠΎΡ€Π΄, вывСсили Π½Π° Π½Π΅Π³ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ доступности, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΡƒΠ΄Π° ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°Ρ….

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°Ρ… Π²Π°ΠΆΠ½Π°, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ, с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния PostgreSQL, ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ Π±Ρ‹Π²Π°ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ. Π‘Ρ‹Π²Π°ΡŽΡ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹, Π±Ρ‹Π²Π°ΡŽΡ‚ ΠΏΠ»ΠΎΡ…ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹.

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Под ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ я пониманию ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΎΡΡŒ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ сразу ΡΠ»Π°Ρ‚ΡŒ Ρ‚ΡƒΠ΄Π° свои запросы, Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡ… ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΈ выполняСт, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ. Π­Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹.

Π‘Ρ‹Π²Π°ΡŽΡ‚ ситуации, Ρ‡Ρ‚ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΡΡ, ΠΎΠ½ ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΊΠΎΠ½Π½Π΅ΠΊΡ‚, Π½ΠΎ ΠΏΡ€ΠΈ этом Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚. Он находится Π² состоянии idle.

Но Π±Ρ‹Π²Π°ΡŽΡ‚ ΠΏΠ»ΠΎΡ…ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹. НапримСр, Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΡΡ, ΠΎΡ‚ΠΊΡ€Ρ‹Π» Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠ΄Π΅Π»Π°Π» Π² Π±Π°Π·Π΅ ΠΈ ΠΏΠΎΡ‚ΠΎΠΌ ΡƒΡˆΠ΅Π» Π² ΠΊΠΎΠ΄, допустим, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊΠΎ Π²Π½Π΅ΡˆΠ½Π΅ΠΌΡƒ источнику ΠΈΠ»ΠΈ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Но ΠΏΡ€ΠΈ этом ΠΎΠ½ Π½Π΅ Π·Π°ΠΊΡ€Ρ‹Π» Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ. И транзакция висит Π² Π±Π°Π·Π΅ ΠΈ ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π² Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ Π½Π° строкС. Π­Ρ‚ΠΎ ΠΏΠ»ΠΎΡ…ΠΎΠ΅ состояниС. И Ссли Π²Π΄Ρ€ΡƒΠ³ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π³Π΄Π΅-Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρƒ сСбя ΡƒΠΏΠ°Π΄Π΅Ρ‚ ΠΏΠΎ ΡΠΊΡΠ΅ΠΏΡˆΠ΅Π½Ρƒ (Exception), Ρ‚ΠΎ транзакция ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΡ‚Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ Π½Π° ΠΎΡ‡Π΅Π½ΡŒ Π΄ΠΎΠ»Π³ΠΎΠ΅ врСмя. И это влияСт Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ PostgreSQL. PostgreSQL Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² Π²Π°ΠΆΠ½ΠΎ воврСмя ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒ ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ. И Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ своС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π±Ρ‹Π»ΠΎ Ρ‚Π°ΠΊΠΈΡ… ситуаций.

Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΠ»ΠΎΡ…ΠΈΠΌΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹. Но ΠΎΠ½ΠΈ становятся ΠΏΠ»ΠΎΡ…ΠΈΠΌΠΈ ΠΈΠ·-Π·Π° ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π². НапримСр, простая ΠΏΡ€ΠΎΡΡ‚Π°ΠΈΠ²Π°ΡŽΡ‰Π°Ρ транзакция: ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ, Π²Π·ΡΡ‚ΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π½Π° ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ строки, ΠΏΠΎΡ‚ΠΎΠΌ Π³Π΄Π΅-Ρ‚ΠΎ Π² ΠΊΠΎΠ΄Π΅ ΠΎΠ½Π° ΡƒΠΏΠ°Π΄Π΅Ρ‚, останСтся висящая транзакция. ΠŸΡ€ΠΈΠ΄Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ‚, запросит Ρ‚Π΅ ΠΆΠ΅ самыС Π΄Π°Π½Π½Ρ‹Π΅, Π½ΠΎ ΠΎΠ½ столкнСтся с Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π° висящая транзакция ΡƒΠΆΠ΅ ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π½Π° ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π½ΡƒΠΆΠ½Ρ‹Π΅ строки. И вторая транзакция Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΈΡΠ΅Ρ‚ΡŒ Π² ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° пСрвая транзакция Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ ΠΈΠ»ΠΈ Π΅Π΅ администратор ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΊΡ€ΠΎΠ΅Ρ‚. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΆΠ΄ΡƒΡ‰ΠΈΠ΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π»ΠΈΠΌΠΈΡ‚ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. И ΠΊΠΎΠ³Π΄Π° Π»ΠΈΠΌΠΈΡ‚ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½, Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡƒΠΆΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π±Π°Π·ΠΎΠΉ. Π­Ρ‚ΠΎ ΡƒΠΆΠ΅ аварийная ситуация для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠ»ΠΎΡ…ΠΈΡ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈ своСврСмСнно Π½Π° Π½ΠΈΡ… Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовский

Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°. И здСсь ΡƒΠΆΠ΅ ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½Ρ‹ΠΉ Π΄Π°ΡˆΠ±ΠΎΡ€Π΄. Π•ΡΡ‚ΡŒ информация ΠΏΠΎ ΠΊΠΎΠ½Π½Π΅ΠΊΡ‚Π°ΠΌ свСрху. DB connection – 8 ΡˆΡ‚ΡƒΠΊ. И это всС. Π£ нас Π½Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ просто idle, Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°ΡŽΡ‚. НСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ висящих транзакциях ΠΈ ΠΎΠ± ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΡ… ΠΊΠΎΠ½Π½Π΅ΠΊΡ‚Π°Ρ…, Ρ‚. Π΅. это такая Ρ†ΠΈΡ„Ρ€Π°, которая ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ количСство ΠΊΠΎΠ½Π½Π΅ΠΊΡ‚ΠΎΠ² ΠΈ всС. А дальшС Π³Π°Π΄Π°ΠΉΡ‚Π΅ сами.
ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовский
БоотвСтствСнно, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³, Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ систСмной Π²ΡŒΡŽΡ…Π΅ pg_stat_activity. Если Π²Ρ‹ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅ Π² PostgreSQL, Ρ‚ΠΎ это ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ Π²ΡŒΡŽΡ…Π°, которая Π΄ΠΎΠ»ΠΆΠ½Π° ΡΡ‚Π°Ρ‚ΡŒ вашим Π΄Ρ€ΡƒΠ³ΠΎΠΌ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Π² PostgreSQL, Ρ‚. Π΅. Ρ‡Ρ‚ΠΎ происходит Π² Π½Π΅ΠΌ. На ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ процСсс Π΅ΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ строчка, которая ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΏΠΎ этому процСссу: с ΠΊΠ°ΠΊΠΎΠ³ΠΎ хоста Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, ΠΏΠΎΠ΄ ΠΊΠ°ΠΊΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, ΠΏΠΎΠ΄ ΠΊΠ°ΠΊΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° транзакция, ΠΊΠ°ΠΊΠΎΠΉ сСйчас выполняСтся запрос, ΠΊΠ°ΠΊΠΎΠΉ запрос выполнялся послСдним. И, соотвСтствСнно, состояниС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎ полю stat. Условно говоря, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΡƒ ΠΏΠΎ этому полю ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚Π΅ stats-Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅ΡΡ‚ΡŒ сСйчас Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ количСство ΠΊΠΎΠ½Π½Π΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ с этим stat-ΠΎΠΌ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. И ΡƒΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Ρ†ΠΈΡ„Ρ€Ρ‹ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π² наш ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΈ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ Π½ΠΈΠΌ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ.
Π’Π°ΠΊΠΆΠ΅ Π²Π°ΠΆΠ½ΠΎ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ. Π― ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ», Ρ‡Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π²Π°ΠΊΡƒΡƒΠΌΠΎΠ², Π½ΠΎ ΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΎΡ†Π΅Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅. Π•ΡΡ‚ΡŒ поля xact_start ΠΈ query_start. Они, условно говоря, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ врСмя старта Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΈ врСмя старта запроса. ΠœΡ‹ Π±Π΅Ρ€Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ now(), которая ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΡƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π΅ΠΌ timestamp Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΈ запроса. И ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ запроса.

Если ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡ… ΡƒΠΆΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒ. Для OLTP-Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ – это ΡƒΠΆΠ΅ большС 1-2-3 ΠΌΠΈΠ½ΡƒΡ‚. Для OLAP-Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΄Π»ΠΈΠ½Π½Ρ‹Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ, Π½ΠΎ Ссли ΠΎΠ½ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ большС Π΄Π²ΡƒΡ… часов, Ρ‚ΠΎ это Ρ‚ΠΎΠΆΠ΅ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π³Π΄Π΅-Ρ‚ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ пСрСкос.

ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовский
Когда ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈΡΡŒ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠ½ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с нашими Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Они ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌ, ΠΎΠ½ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ ΠΊ индСксам, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. И Π²Π°ΠΆΠ½ΠΎ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с этими Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

Π­Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ наш Π²ΠΎΡ€ΠΊΠ»ΠΎΠ°Π΄ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Ρƒ нас самыС «горячиС». НапримСр, это Π½ΡƒΠΆΠ½ΠΎ Π² ситуациях, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ «горячиС» Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π½Π° ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ быстроС SSD Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. НапримСр, ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π°Ρ€Ρ…ΠΈΠ²Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΡƒΠΆΠ΅ Π΄Π°Π²Π½ΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ вынСсти Π½Π° ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Β«Ρ…ΠΎΠ»ΠΎΠ΄Π½Ρ‹ΠΉΒ» Π°Ρ€Ρ…ΠΈΠ², Π½Π° SATA диски ΠΈ ΠΏΡƒΡΡ‚ΡŒ ΠΎΠ½ΠΈ Ρ‚Π°ΠΌ ΠΆΠΈΠ²ΡƒΡ‚, ΠΊ Π½ΠΈΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ΄Ρ‚ΠΈ ΠΏΠΎ нСобходимости.

Π’Π°ΠΊΠΆΠ΅ это ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для обнаруТСния Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΉ послС всяких Ρ€Π΅Π»ΠΈΠ·ΠΎΠ² ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠ΅Π². Допустим, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π²Ρ‹ΠΊΠ°Ρ‚ΠΈΠ» ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ Π½ΠΎΠ²ΡƒΡŽ Ρ„ΠΈΡ‡Ρƒ. НапримСр, Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π½ΠΎΠ²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°Π·ΠΎΠΉ. И Ссли ΠΌΡ‹ построим Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ использования Ρ‚Π°Π±Π»ΠΈΡ†, ΠΌΡ‹ Π½Π° этих Π³Ρ€Π°Ρ„ΠΈΠΊΠ°Ρ… смоТСм Π»Π΅Π³ΠΊΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ эти Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ. НапримСр, всплСски update ΠΈΠ»ΠΈ всплСски delete. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΈΠ΄Π½ΠΎ.

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ Β«ΠΏΠΎΠΏΠ»Ρ‹Π²ΡˆΠ΅ΠΉΒ» статистики. Π§Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚? Π’ PostgreSQL ΠΎΡ‡Π΅Π½ΡŒ ΡΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΈ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ запросов. И Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΡƒΠ΄Π΅Π»ΡΡŽΡ‚ Π΅Π³ΠΎ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΡŽ. Как ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚? Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ ΠΏΠ»Π°Π½Ρ‹, PostgreSQL с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ собираСт статистику ΠΎ распрСдСлСнии Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ…. Π­Ρ‚ΠΎ самыС частыС значСния: количСство ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, информация ΠΎ NULL Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅, ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

На основС этой статистики ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ строит нСсколько запросов, Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ этот ΠΏΠ»Π°Π½ запроса для выполнСния самого запроса ΠΈ возвращСния Π΄Π°Π½Π½Ρ‹Ρ….

И Π±Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ статистика Β«ΠΏΠ»Ρ‹Π²Π΅Ρ‚Β». Π”Π°Π½Π½Ρ‹Π΅ качСства, количСства помСнялись ΠΊΠ°ΠΊ-Ρ‚ΠΎ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Π½ΠΎ статистика ΠΏΡ€ΠΈ этом Π½Π΅ ΡΠΎΠ±Ρ€Π°Π»Π°ΡΡŒ. И сформированныС ΠΏΠ»Π°Π½Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ. И Ссли Ρƒ нас ΠΏΠ»Π°Π½Ρ‹ окаТутся Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠΎ собираСмому ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Ρƒ, ΠΏΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌ, ΠΌΡ‹ смоТСм ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ эти Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ. НапримСр, Π³Π΄Π΅-Ρ‚ΠΎ качСствСнно измСнились Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ вмСстС индСкса стал ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ ΠΏΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Ρ‚.Π΅. Ссли запросу Π½ΡƒΠΆΠ½ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ всСго лишь 100 строк (стоит ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ limit 100), Ρ‚ΠΎ для этого запроса Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€. И это всСгда ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠ»ΠΎΡ…ΠΎ сказываСтся Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

И ΠΌΡ‹ смоТСм ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ это Π² ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π΅. И ΡƒΠΆΠ΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° этот запрос, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ для Π½Π΅Π³ΠΎ explain, ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ статистику, ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ индСкс. И ΡƒΠΆΠ΅ ΠΎΡ‚Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ это Π²Π°ΠΆΠ½ΠΎ.

ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовский

Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°. Π― Π΄ΡƒΠΌΠ°ΡŽ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΅Π³ΠΎ ΡƒΠ·Π½Π°Π»ΠΈ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΎΡ‡Π΅Π½ΡŒ популярный. ΠšΡ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρƒ сСбя Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… Prometheus? А ΠΊΡ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ этот ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ совмСстно с Prometheus? Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² стандартном Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ этого ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Π΅ΡΡ‚ΡŒ Π΄Π°ΡˆΠ±ΠΎΡ€Π΄ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с PostgreSQL – postgres_exporter Prometheus. Но Ρ‚ΡƒΡ‚ Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½Π° плохая Π΄Π΅Ρ‚Π°Π»ΡŒ.

ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовский

Π•ΡΡ‚ΡŒ нСсколько Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ². И Π² качСствС unity ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Π±Π°ΠΉΡ‚Ρ‹, Ρ‚. Π΅. Ρ‚Π°ΠΌ 5 Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ². Π­Ρ‚ΠΎ Insert data, Update data, Delete data, Fetch data ΠΈ Return data.Β Π’ качСствС unit измСрСния ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Π±Π°ΠΉΡ‚Ρ‹. Но Π΄Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ статистика Π² PostgreSQL Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π² tuple (строках). И, соотвСтствСнно, эти Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ – это ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ способ Π·Π°Π½ΠΈΠ·ΠΈΡ‚ΡŒ ваш Π²ΠΎΡ€ΠΊΠ»ΠΎΠ°Π΄ Π² нСсколько Ρ€Π°Π·, Π² дСсятки Ρ€Π°Π·, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ tuple – это Π½Π΅ Π±Π°ΠΉΡ‚, tuple – это строка, это ΠΌΠ½ΠΎΠ³ΠΎ Π±Π°ΠΉΡ‚ΠΎΠ² ΠΈ ΠΎΠ½Π° всСгда ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹. Π’. Π΅. Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Π²ΠΎΡ€ΠΊΠ»ΠΎΠ°Π΄ Π² Π±Π°ΠΉΡ‚Π°Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ tuples – это Π½Π΅Ρ€Π΅Π°Π»ΡŒΠ½Π°Ρ Π·Π°Π΄Π°Ρ‡Π° ΠΈΠ»ΠΈ ΠΎΡ‡Π΅Π½ΡŒ слоТная. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π΄Π°ΡˆΠ±ΠΎΡ€Π΄ ΠΈΠ»ΠΈ встроСнный ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³, всСгда Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π²Π°ΠΌ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΡ†Π΅Π½Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.

ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовский

Как ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ статистику ΠΏΠΎ этим Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌ? Для этого Π² PostgreSQL Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ сСмСйство Π²ΡŒΡŽΡ…. И основная Π²ΡŒΡŽΡ…Π° – это pg_stat_user_tables. User_tables – это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, созданныС ΠΎΡ‚ Π»ΠΈΡ†Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π’ противовСс Π΅ΡΡ‚ΡŒ систСмныС Π²ΡŒΡŽΡ…ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ самим PostgreSQL. И Π΅ΡΡ‚ΡŒ сводная Ρ‚Π°Π±Π»ΠΈΡ†Π° Alltables, которая Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΈ систСмныС, ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚Ρ‚Π°Π»ΠΊΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ любой ΠΈΠ· Π½ΠΈΡ…, которая Π²Π°ΠΌ большС всСго нравится.

По Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ полям ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ количСство insert, update ΠΈ delete. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π°ΡˆΠ±ΠΎΡ€Π΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я использовал, ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ эти поля для ΠΎΡ†Π΅Π½ΠΊΠΈ характСристик Π²ΠΎΡ€ΠΊΠ»ΠΎΠ°Π΄Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡ‚Ρ‚Π°Π»ΠΊΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Π½ΠΈΡ…. Но стоит ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ это tuples, Π° Π½Π΅ Π±Π°ΠΉΡ‚Ρ‹, поэтому ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π²Π·ΡΡ‚ΡŒ ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это Π±Π°ΠΉΡ‚Π°ΠΌΠΈ.

На основС этих Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ, Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅, TopN-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. НапримСр, Top-5, Top-10. И ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ‚Π΅ горячиС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΡ‚ΠΈΠ»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ большС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ…. НапримСр, 5 «горячих» Ρ‚Π°Π±Π»ΠΈΡ† ΠΏΠΎ вставкС. И ΠΏΠΎ этим TopN-Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌ ΠΌΡ‹ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Π΅ΠΌ наш Π²ΠΎΡ€ΠΊΠ»ΠΎΠ°Π΄ ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ всплСски Π²ΠΎΡ€ΠΊΠ»ΠΎΠ°Π΄Π° послС всяких Ρ€Π΅Π»ΠΈΠ·ΠΎΠ² ΠΈ Π°ΠΏΠ΄Π΅ΠΉΡ‚ΠΎΠ², ΠΈ Π΄Π΅ΠΏΠ»ΠΎΠ΅Π².

Π’Π°ΠΊΠΆΠ΅ Π²Π°ΠΆΠ½ΠΎ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π²Ρ‹ΠΊΠ°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ Π½ΠΎΠ²ΡƒΡŽ Ρ„ΠΈΡ‡Ρƒ, ΠΈ Ρƒ нас Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ ΠΏΡƒΡ…Π½ΡƒΡ‚ΡŒ Π² своих Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€Π°Ρ…, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ€Π΅ΡˆΠΈΠ»ΠΈ Π΄ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ объСм Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ ΠΏΡ€ΠΈ этом Π½Π΅ спрогнозировали, ΠΊΠ°ΠΊ это скаТСтся Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π°ΠΊΠΈΠ΅ случаС Ρ‚ΠΎΠΆΠ΅ Π±Ρ‹Π²Π°ΡŽΡ‚ для нас ΡΡŽΡ€ΠΏΡ€ΠΈΠ·Π°ΠΌΠΈ.

ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовский

И сСйчас нСбольшой вопрос для вас. Какой Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ вопрос, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π·Π°ΠΌΠ΅Ρ‡Π°Π΅Ρ‚Π΅ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π½Π° сСрвСрС с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ…? Какой ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ вопрос Ρƒ вас Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚?

ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовский

Но Π½Π° самом Π΄Π΅Π»Π΅ вопрос Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ. КакиС запросы Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ°? Π’. Π΅. Π½Π΅ интСрСсно ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ процСссы, ΠΊΠ°ΠΊΠΈΠ΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ°. ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ Ссли host с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚ΠΎ Ρ‚Π°ΠΌ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ понятно, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚Π°ΠΌ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΡ‚ΠΈΠ»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Если ΠΌΡ‹ ΠΎΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ Top, Ρ‚ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ Ρ‚Π°ΠΌ список процСссов Π² PostgreSQL, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΄Π΅Π»Π°ΡŽΡ‚. Из Top Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ понятно, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π΄Π΅Π»Π°ΡŽΡ‚.

ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовский

БоотвСтствСнно, Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ Ρ‚Π΅ запросы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π°ΠΈΠ±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ‚ΡŽΠ½ΠΈΠ½Π³ запросов, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π΄Π°Π΅Ρ‚ большС ΠΏΡ€ΠΎΡ„ΠΈΡ‚, Ρ‡Π΅ΠΌ Ρ‚ΡŽΠ½ΠΈΠ½Π³ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ PostgreSQL ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Ρ‚ΡŽΠ½ΠΈΠ½Π³ ΠΆΠ΅Π»Π΅Π·Π°. По ΠΌΠΎΠ΅ΠΉ ΠΎΡ†Π΅Π½ΠΊΠ΅ – это ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 80-85-90 %. И это дСлаСтся Π³ΠΎΡ€Π°Π·Π΄ΠΎ быстрСС. БыстрСС ΠΏΠΎΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ запрос, Ρ‡Π΅ΠΌ ΠΏΠΎΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ, Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ рСстарт, особСнно, Ссли Π±Π°Π·Ρƒ Ρ€Π΅ΡΡ‚Π°Ρ€Ρ‚ΠΎΠ²Π°Ρ‚ΡŒ нСльзя, Π»ΠΈΠ±ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΆΠ΅Π»Π΅Π·ΠΎ. ΠŸΡ€ΠΎΡ‰Π΅ Π³Π΄Π΅-Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ запрос ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ индСкс, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡƒΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ Π»ΡƒΡ‡ΡˆΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΡ‚ этого запроса.

ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовский
БоотвСтствСнно, Π½ΡƒΠΆΠ½ΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ запросы ΠΈ ΠΈΡ… Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½ΠΎΡΡ‚ΡŒ. Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°. И Ρ‚ΡƒΡ‚ Ρ‚ΠΎΠΆΠ΅ Π²Ρ€ΠΎΠ΄Π΅ прСкрасный ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³. Π•ΡΡ‚ΡŒ информация ΠΏΠΎ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ, Π΅ΡΡ‚ΡŒ информация ΠΏΠΎ пропускной способности, Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌ, ΡƒΡ‚ΠΈΠ»ΠΈΠ·Π°Ρ†ΠΈΠΈ рСсурсов. ВсС прСкрасно, Π½ΠΎ Π½Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠΎ запросам. НС понятно, ΠΊΠ°ΠΊΠΈΠ΅ запросы Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² нашСй Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠ°ΠΊ Π΄ΠΎΠ»Π³ΠΎ ΠΎΠ½ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ, сколько этих запросов. Нам Π½ΡƒΠΆΠ½ΠΎ Π² ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π΅ всСгда ΠΈΠΌΠ΅Ρ‚ΡŒ эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.

ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовский

И для получСния этой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ pg_stat_statements. На Π΅Π³ΠΎ основС ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ самыС Ρ€Π°Π·Π½Ρ‹Π΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΏΠΎ самым частым запросам, Ρ‚. Π΅. ΠΏΠΎ Ρ‚Π΅ΠΌ запросам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Ρ‡Π°Ρ‰Π΅ всСх. Π”Π°, послС Π΄Π΅ΠΏΠ»ΠΎΠ΅Π² Ρ‚ΠΎΠΆΠ΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° Π½Π΅Π³ΠΎ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Π½Π΅Ρ‚ Π»ΠΈ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ всплСска запросов.

МоТно ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ самыС Π΄ΠΎΠ»Π³ΠΈΠ΅ запросы, Ρ‚. Π΅. Ρ‚Π΅ запросы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ дольшС всСх. Они Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π° процСссорС, ΠΎΠ½ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡŽΡ‚ Π²Π²ΠΎΠ΄-Π²Ρ‹Π²ΠΎΠ΄. ΠœΡ‹ это Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠΎ полям total_time, mean_time, blk_write_time ΠΈ blk_read_time.

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ самыС тяТСлыС запросы Π² ΠΏΠ»Π°Π½Π΅ использования рСсурсов, Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ с диска, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈΠ»ΠΈ, Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, ΡΠΎΠ·Π΄Π°ΡŽΡ‚ ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΠΏΠΈΡˆΡƒΡ‰ΡƒΡŽ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ.

МоТСм ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ самыС Ρ‰Π΅Π΄Ρ€Ρ‹Π΅ запросы. Π­Ρ‚ΠΎ Ρ‚Π΅ запросы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ большоС количСство строк. НапримСр, это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ запрос, Π³Π΄Π΅ Π·Π°Π±Ρ‹Π»ΠΈ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π»ΠΈΠΌΠΈΡ‚. И ΠΎΠ½ просто Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ всС содСрТимоС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠ»ΠΈ запроса ΠΏΠΎ Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½Ρ‹ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌ.

И ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ запросы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ»ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовский
И Ρƒ нас ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Π΅ процСссы. Π€ΠΎΠ½ΠΎΠ²Ρ‹Π΅ процСссы – это Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Ρ‡Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚Ρ‹ ΠΈΠ»ΠΈ ΠΈΡ… Π΅Ρ‰Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ, это autovacuum ΠΈ рСпликация.

ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовский

Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π°. Π•ΡΡ‚ΡŒ слСва Π²ΠΊΠ»Π°Π΄ΠΊΠ° Maintenance, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π½Π° Π½Π΅Π΅ ΠΈ надССмся ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅. Но здСсь Ρ‚ΠΎΠ»ΡŒΠΊΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²Π°ΠΊΡƒΡƒΠΌΠ° ΠΈ сбора статистики, большС Π½ΠΈΡ‡Π΅Π³ΠΎ. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ бСдная информация, поэтому всСгда Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ„ΠΎΠ½ΠΎΠ²Ρ‹Π΅ процСссы Ρƒ нас Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π½Π΅Ρ‚ Π»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΎΡ‚ ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρ‹.

ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовский

Когда ΠΌΡ‹ рассматриваСм ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ, Ρ‚ΠΎ слСдуСт ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ Ρƒ нас ΡΠ±Ρ€Π°ΡΡ‹Π²Π°ΡŽΡ‚ «грязныС» страницы ΠΈΠ· области ΡˆΠ°Ρ€Π΄ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ памяти Π½Π° диск, Π·Π°Ρ‚Π΅ΠΌ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ. И эта ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ Ρ‚ΠΎΡ‡ΠΊΠ° ΡƒΠΆΠ΅ дальшС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π½Π΅ΠΊΠΎΠ΅ мСсто ΠΏΡ€ΠΈ восстановлСнии, Ссли Π²Π΄Ρ€ΡƒΠ³ PostgreSQL Π±Ρ‹Π» Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ Π² Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎΠΌ порядкС.

БоотвСтствСнно, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ всС «грязныС» страницы Π½Π° диск, Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΈΠΉ объСм записи. И, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π½Π° систСмах с большим объСмом памяти – это ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ. И Ссли Ρƒ нас Ρ‡Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚Ρ‹ Π΄Π΅Π»Π°ΡŽΡ‚ΡΡ ΠΎΡ‡Π΅Π½ΡŒ часто Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π», Ρ‚ΠΎ дисковая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ сильно ΠΏΡ€ΠΎΡΠ΅Π΄Π°Ρ‚ΡŒ. И клиСнтскиС запросы Π±ΡƒΠ΄ΡƒΡ‚ ΡΡ‚Ρ€Π°Π΄Π°Ρ‚ΡŒ ΠΎΡ‚ Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΈ рСсурсов. Они Π±ΡƒΠ΄ΡƒΡ‚ Π±ΠΎΡ€ΠΎΡ‚ΡŒΡΡ Π·Π° рСсурсы ΠΈ ΠΈΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

БоотвСтствСнно, Ρ‡Π΅Ρ€Π΅Π· pg_stat_bgwriter ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ полям ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ количСство ΡΠ»ΡƒΡ‡Π°ΡŽΡ‰ΠΈΡ…ΡΡ Ρ‡Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚ΠΎΠ². И Ссли Ρƒ нас Π·Π° ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (Π·Π° 10-15-20 ΠΌΠΈΠ½ΡƒΡ‚, Π·Π° полчаса) ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‡Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚ΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 3-4-5, Ρ‚ΠΎ это ΡƒΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. И ΡƒΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΠΈΠ»ΠΈΠ΅ Ρ‡Π΅ΠΊΠΏΠΎΠΈΠ½Ρ‚ΠΎΠ². ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, какая-Ρ‚ΠΎ большая запись ΠΈΠ΄Π΅Ρ‚. По Π²ΠΎΡ€ΠΊΠ»ΠΎΠ°Π΄Ρƒ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠΆΠ΅ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρƒ нас Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ Π²ΠΎΡ€ΠΊΠ»ΠΎΠ°Π΄Π° ΡƒΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠΆΠ΅ ΠΏΠΎΠ΄Ρ‚ΡŽΠ½ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π½Π΅ сильно влияли Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ запросов.

ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовский

Π― снова Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡΡŒ ΠΊ autovacuum, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это такая ΡˆΡ‚ΡƒΠΊΠ°, ΠΊΠ°ΠΊ я ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ», которая запросто ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΊ дисков, Ρ‚Π°ΠΊ ΠΈ запросов, поэтому всСгда Π²Π°ΠΆΠ½ΠΎ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ количСство autovacuum.

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π²ΠΎΡ€ΠΊΠ΅Ρ€ΠΎΠ² autovacuum Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡ… Ρ‚Ρ€ΠΈ, поэтому Ссли Ρƒ нас всС врСмя Ρ‚Ρ€ΠΈ Π²ΠΎΡ€ΠΊΠ΅Ρ€Π° Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π² Π±Π°Π·Π΅, Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Ρƒ нас autovacuum нСдонастроСн, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Ρ‚ΡŒ Π»ΠΈΠΌΠΈΡ‚Ρ‹, ΠΏΠ΅Ρ€Π΅ΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ настройки autovacuum ΠΈ ΡƒΠΆΠ΅ Π»Π΅Π·Ρ‚ΡŒ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ.
Π’Π°ΠΆΠ½ΠΎ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅ Ρƒ нас Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π²ΠΎΡ€ΠΊΠ΅Ρ€Π° Π²Π°ΠΊΡƒΡƒΠΌΠ°. Π›ΠΈΠ±ΠΎ это Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, DBAΒ ΠΏΡ€ΠΈΡˆΠ΅Π» ΠΈ Ρ€ΡƒΠΊΠ°ΠΌΠΈ запустил ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π²Π°ΠΊΡƒΡƒΠΌ, ΠΈ это создало Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ. Π£ нас появилась какая-Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. Π›ΠΈΠ±ΠΎ это количСство Π²Π°ΠΊΡƒΡƒΠΌΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚ΠΊΡ€ΡƒΡ‡ΠΈΠ²Π°ΡŽΡ‚ счСтчик Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ. Для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… вСрсий PostgreSQL – это ΠΎΡ‡Π΅Π½ΡŒ тяТСлыС Π²Π°ΠΊΡƒΡƒΠΌΡ‹. И ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ запросто ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π²Ρ‹Ρ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ всю Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ, ΡΠΊΠ°Π½ΠΈΡ€ΡƒΡŽΡ‚ всС Π±Π»ΠΎΠΊΠΈ Π² этой Ρ‚Π°Π±Π»ΠΈΡ†Π΅.

И, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π²Π°ΠΊΡƒΡƒΠΌΠΎΠ². Если Ρƒ нас Π΄ΠΎΠ»Π³ΠΈΠ΅ Π²Π°ΠΊΡƒΡƒΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΎΡ‡Π΅Π½ΡŒ Π΄ΠΎΠ»Π³ΠΎΠ΅ врСмя, Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ снова стоит ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Π²Π°ΠΊΡƒΡƒΠΌΠ° ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠ΅Ρ€Π΅ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π΅Π³ΠΎ настройки. ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ ситуация, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΊΡƒΡƒΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π°Π΄ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ Π΄ΠΎΠ»Π³ΠΎΠ΅ врСмя (3-4 часа), Π½ΠΎ Π·Π° врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²Π°ΠΊΡƒΡƒΠΌΠ° Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ успСли Π½Π°ΠΊΠΎΠΏΠΈΡ‚ΡŒΡΡ снова большой объСм ΠΌΠ΅Ρ€Ρ‚Π²Ρ‹Ρ… строк. И ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π°ΠΊΡƒΡƒΠΌ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ, Π΅ΠΌΡƒ снова Π½ΡƒΠΆΠ½ΠΎ Π²Π°ΠΊΡƒΡƒΠΌΠΈΡ‚ΡŒ эту Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ. И ΠΌΡ‹ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠΌ ΠΊ ситуации – бСсконСчного Π²Π°ΠΊΡƒΡƒΠΌΠ°. И Π² Ρ‚Π°ΠΊΠΎΠΌ случаС Π²Π°ΠΊΡƒΡƒΠΌ Π½Π΅ справляСтся со своСй Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ постСпСнно ΠΏΡƒΡ…Π½ΡƒΡ‚ΡŒ Π² Ρ€Π°Π·ΠΌΠ΅Ρ€Π°Ρ…, хотя объСм ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² Π½Π΅ΠΉ остаСтся ΠΏΡ€Π΅ΠΆΠ½ΠΈΠΌ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΈ Π΄ΠΎΠ»Π³ΠΈΡ… Π²Π°ΠΊΡƒΡƒΠΌΠ°Ρ… ΠΌΡ‹ всСгда смотрим Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ΠΈ пытаСмся ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅, Π½ΠΎ ΠΏΡ€ΠΈ этом, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ страдали ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ клиСнтских запросов.

ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовский

БСйчас практичСски Π½Π΅Ρ‚ инсталляции PostgreSQL, Π³Π΄Π΅ Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠΉ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ. РСпликация – это процСсс пСрСноса Π΄Π°Π½Π½Ρ‹Ρ… с мастСра Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΡƒ.

РСпликация Π² PostgreSQL устроСна Ρ‡Π΅Ρ€Π΅Π· ΠΆΡƒΡ€Π½Π°Π» Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ. ΠœΠ°ΡΡ‚Π΅Ρ€ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΆΡƒΡ€Π½Π°Π» Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ. Π–ΡƒΡ€Π½Π°Π» Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΏΠΎ сСтСвому соСдинСнию Π΅Π΄Π΅Ρ‚ Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΡƒ, дальшС Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ΅ ΠΎΠ½ воспроизводится. ВсС просто.

БоотвСтствСнно, для ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Π»Π°Π³Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²ΡŒΡŽΡ…Π° pg_stat_replication. Но с Π½Π΅ΠΉ Π½Π΅ всС просто. Π’ вСрсии 10 Π²ΡŒΡŽΡ…Π° ΠΏΡ€Π΅Ρ‚Π΅Ρ€ΠΏΠ΅Π»Π° нСсколько ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Ρ‡Π°ΡΡ‚ΡŒ ΠΏΠΎΠ»Π΅ΠΉ Π±Ρ‹Π»Π° ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π°. И Ρ‡Π°ΡΡ‚ΡŒ ΠΏΠΎΠ»Π΅ΠΉ Π±Ρ‹Π»Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π°. Π’ 10-ΠΎΠΉ вСрсии появились поля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ Π»Π°Π³ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² сСкундах. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ. Π”ΠΎ вСрсии 10 Π±Ρ‹Π»Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ Π»Π°Π³ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Π±Π°ΠΉΡ‚Π°Ρ…. Вакая Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡΡ‚Π°Π»Π°ΡΡŒ ΠΈ Π² 10-ΠΎΠΉ вСрсии, Ρ‚. Π΅. Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ – ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ Π»Π°Π³ Π² Π±Π°ΠΉΡ‚Π°Ρ… ΠΈΠ»ΠΈ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ Π»Π°Π³ Π² сСкундах. МногиС Π΄Π΅Π»Π°ΡŽΡ‚ ΠΈ Ρ‚ΠΎ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

Но Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ Π»Π°Π³ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ, Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ ΠΆΡƒΡ€Π½Π°Π»Π° Π² Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ. И эти ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΆΡƒΡ€Π½Π°Π»Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΊΠ°ΠΊ Ρ€Π°Π· Π΅ΡΡ‚ΡŒ Π²ΠΎ Π²ΡŒΡŽΡ…Π΅ pg_stat_replication. Условно говоря, ΠΌΡ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ pg_xlog_location_diff() ΠΌΠΎΠΆΠ΅ΠΌ Π²Π·ΡΡ‚ΡŒ Π΄Π²Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ Π² ΠΆΡƒΡ€Π½Π°Π»Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ. ΠŸΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ Π΄Π΅Π»ΡŒΡ‚Ρƒ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π»Π°Π³ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Π±Π°ΠΉΡ‚Π°Ρ…. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈ просто.

Π’ 10-ΠΎΠΉ вСрсии эта функция Π±Ρ‹Π»Π° ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π° Π² pg_wal_lsn_diff(). Π’ΠΎΠΎΠ±Ρ‰Π΅, Π²ΠΎ всСх функциях, Π²ΡŒΡŽΡ…Π°Ρ…, ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°Ρ…, Π³Π΄Π΅ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Π»ΠΎΡΡŒ слово Β«xlogΒ», ΠΎΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΎ Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«walΒ». Π­Ρ‚ΠΎ ΠΈ Π²ΠΎ Π²ΡŒΡŽΡ…Π°Ρ…, ΠΈ Π² функциях. Π­Ρ‚ΠΎ Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΎΠ΅ Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΠ΅.

Плюс Π² 10-ΠΎΠΉ вСрсии добавились строчки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π»Π°Π³. Π­Ρ‚ΠΎ write lag, flush lag, replay lag. Π’. Π΅. эти ΡˆΡ‚ΡƒΠΊΠΈ Π²Π°ΠΆΠ½ΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ. Если ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ нас Π»Π°Π³ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ, Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ появился, ΠΎΡ‚ΠΊΡƒΠ΄Π° взялся ΠΈ ΡƒΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовский

Π‘ систСмными ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ°ΠΌΠΈ практичСски всС Π² порядкС. Когда зароТдаСтся любой ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³, ΠΎΠ½ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ с систСмных ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ. Π­Ρ‚ΠΎ утилизация процСссоров, памяти, swap, сСти ΠΈ диска. Но Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ‚Π°ΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π΅Ρ‚.

Если с ΡƒΡ‚ΠΈΠ»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ процСсса всС Π² порядкС, Ρ‚ΠΎ с ΡƒΡ‚ΠΈΠ»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ диска Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ΠΎΠ² Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ пропускной способности. Она ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π² iops ΠΈΠ»ΠΈ Π±Π°ΠΉΡ‚Π°Ρ…. Но ΠΎΠ½ΠΈ Π·Π°Π±Ρ‹Π²Π°ΡŽΡ‚ ΠΏΡ€ΠΎ latency ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΠ·Π°Ρ†ΠΈΡŽ дисковых устройств. Π­Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ, насколько Ρƒ нас Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Ρ‹ диски ΠΈ насколько ΠΎΠ½ΠΈ тормозят. Если Ρƒ нас высокий latency, Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с дисками. Если Ρƒ нас высокая утилизация, Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ диски Π½Π΅ ΡΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ. Π­Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ качСствСнныС характСристики, Ρ‡Π΅ΠΌ пропускная ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ.

ΠŸΡ€ΠΈ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ эту статистику ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы /proc, ΠΊΠ°ΠΊ это дСлаСтся для ΡƒΡ‚ΠΈΠ»ΠΈΠ·Π°Ρ†ΠΈΠΈ процСссоров. ΠŸΠΎΡ‡Π΅ΠΌΡƒ эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ Π² ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ΠΈ, я Π½Π΅ знаю. Но Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π²Π°ΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ это Π² своСм ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π΅.

Π’ΠΎΠΆΠ΅ самоС ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ сСтСвых интСрфСйсов. Π•ΡΡ‚ΡŒ информация ΠΎ пропускной способности сСти Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ…, Π² Π±Π°ΠΉΡ‚Π°Ρ…, Π½ΠΎ Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π½Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ latency ΠΈ Π½Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± ΡƒΡ‚ΠΈΠ»ΠΈΠ·Π°Ρ†ΠΈΠΈ, хотя это Ρ‚ΠΎΠΆΠ΅ полСзная информация.

ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовский

Π›ΡŽΠ±Ρ‹Π΅ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ нСдостатки. И ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π²Ρ‹ Π±Ρ‹ Π½Π΅ взяли, ΠΎΠ½ всСгда Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ критСриям. Но Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΎΠ½ΠΈ Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‚ΡΡ, Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹Π΅ Ρ„ΠΈΡ‡ΠΈ, Π½ΠΎΠ²Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ, поэтому Π²Ρ‹Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΈ Π΄ΠΎΠΏΠΈΠ»ΠΈΠ²Π°ΠΉΡ‚Π΅.

И для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠΏΠΈΠ»ΠΈΠ²Π°Ρ‚ΡŒ, Π½ΡƒΠΆΠ½ΠΎ всСгда ΠΈΠΌΠ΅Ρ‚ΡŒ прСдставлСниС, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ отдаваСмая статистика ΠΈ ΠΊΠ°ΠΊ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

И нСсколько ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ²:

  • ВсСгда Π½ΡƒΠΆΠ½ΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ, ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π°ΡˆΠ±ΠΎΡ€Π΄Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ быстро ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ с Π±Π°Π·ΠΎΠΉ всС Π² порядкС.
  • ВсСгда Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ прСдставлСниС ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с вашСй Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΠΎΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΡΠ΅ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠ»ΠΎΡ…ΠΈΡ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΎΡ‚ΡΡ‚Ρ€Π΅Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ….
  • Π’Π°ΠΆΠ½ΠΎ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎ, ΠΊΠ°ΠΊ эти ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. НуТно ΠΈΠΌΠ΅Ρ‚ΡŒ прСдставлСниС ΠΎ вашСм Π²ΠΎΡ€ΠΊΠ»ΠΎΠ°Π΄Π΅.
  • Π’Π°ΠΆΠ½ΠΎ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ формируСтся этот Π²ΠΎΡ€ΠΊΠ»ΠΎΠ°Π΄, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ°ΠΊΠΈΡ… запросов. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ запросы, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡ… ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ, ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ для Π½ΠΈΡ… индСксы. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ.
  • Π€ΠΎΠ½ΠΎΠ²Ρ‹Π΅ процСссы ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½ΠΎ Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° клиСнтскиС запросы, поэтому Π²Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ слишком ΠΌΠ½ΠΎΠ³ΠΎ рСсурсов.
  • БистСмныС ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Π°ΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠ»Π°Π½Ρ‹ Π½Π° ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Π½Π° ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Смкости Π²Π°ΡˆΠΈΡ… сСрвСров, поэтому Π²Π°ΠΆΠ½ΠΎ Ρ‚ΠΎΠΆΠ΅ ΠΈΡ… ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ.

ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° PostgreSQL. АлСксСй ЛСсовский

Если вас заинтСрСсовала эта Ρ‚Π΅ΠΌΠ°, Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΉΡ‚ΠΈΡΡŒ ΠΏΠΎ этим ссылкам.
http://bit.do/stats_collector β€” это ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ докумСнтация с ΠΊΠΎΠ»Π»Π΅ΠΊΡ‚ΠΎΡ€Π° статистики. Π’Π°ΠΌ Π΅ΡΡ‚ΡŒ описаниС всСх статистичСских Π²ΡŒΡŽΡ… ΠΈ описаниС всСх ΠΏΠΎΠ»Π΅ΠΉ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡ… ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. И ΡƒΠΆΠ΅ Π½Π° основС Π½ΠΈΡ… ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ свои Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ, Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² свои ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ запросов:
http://bit.do/dataegret_sql
http://bit.do/lesovsky_sql

Π­Ρ‚ΠΎ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ наш Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΈ ΠΌΠΎΠΉ собствСнный. Π’ Π½ΠΈΡ… Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ запросов. Π’Π°ΠΌ Π½Π΅Ρ‚ запросов ΠΈΠ· сСрии select* from Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ‚Π°ΠΌ. Π’Π°ΠΌ ΡƒΠΆΠ΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ запросы с Π΄ΠΆΠΎΠΉΠ½Π°ΠΌΠΈ, с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ интСрСсных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΈΠ· сырых Ρ†ΠΈΡ„Ρ€ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹Π΅, ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ значСния, Ρ‚. Π΅. это Π±Π°ΠΉΡ‚Ρ‹, врСмя. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡ… ΠΊΠΎΠ²Ρ‹Ρ€ΡΡ‚ΡŒ, ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² свои ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ΠΈ, ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π½Π° ΠΈΡ… основС свои ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ΠΈ.

Вопросы

Вопрос: Π’Ρ‹ сказали, Ρ‡Ρ‚ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Ρ€Π΅ΠΊΠ»Π°ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±Ρ€Π΅Π½Π΄Ρ‹, Π½ΠΎ ΠΌΠ½Π΅ всС-Ρ‚Π°ΠΊΠΈ интСрСсно – Π² своих ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… Π²Ρ‹ ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π°ΡˆΠ±ΠΎΡ€Π΄Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅?
ΠžΡ‚Π²Π΅Ρ‚: По-Ρ€Π°Π·Π½ΠΎΠΌΡƒ. Π‘Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠΌ ΠΊ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΡƒ ΠΈ Ρƒ Π½Π΅Π³ΠΎ ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ свой ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³. И ΠΌΡ‹ ΠΊΠΎΠ½ΡΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ° ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² Π΅Π³ΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³. Π₯ΡƒΠΆΠ΅ всСго обстоят Π΄Π΅Π»Π° с ZabbiΡ…. ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρƒ Π½Π΅Π³ΠΎ Π½Π΅Ρ‚ возмоТности ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ TopN-Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ. Π‘Π°ΠΌΠΈ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Okmeter, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΊΠΎΠ½ΡΡƒΠ»ΡŒΡ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ этих ΠΏΠ°Ρ€Π½Π΅ΠΉ ΠΏΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Ρƒ. Они Π΄Π΅Π»Π°Π»ΠΈ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ PostgreSQL Π½Π° основС нашСго Π’Π—. Π― ΠΏΠΈΡˆΡƒ свой pet-project, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π°Π½Π½Ρ‹Π΅ собираСт Ρ‡Π΅Ρ€Π΅Π· Prometheus ΠΈ отрисовываСт ΠΈΡ… Π² Grafana. Π£ мСня Π·Π°Π΄Π°Ρ‡Π° ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² Prometheus свой экспортСр ΠΈ дальшС ΡƒΠΆΠ΅ ΠΎΡ‚Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ всС Π² Grafana.

Вопрос: Π•ΡΡ‚ΡŒ Π»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈ AWR-ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ² ΠΈΠ»ΠΈ … Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ? Π˜Π·Π²Π΅ΡΡ‚Π½ΠΎ Π²Π°ΠΌ ΠΎ Ρ‡Π΅ΠΌ-Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠΌ?
ΠžΡ‚Π²Π΅Ρ‚: Π”Π°, я знаю, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ AWR, это крутая ΡˆΡ‚ΡƒΠΊΠ°. На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π΅ΡΡ‚ΡŒ самыС Ρ€Π°Π·Π½Ρ‹Π΅ вСлосипСды, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ модСль. Π‘ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΏΠΈΡˆΡƒΡ‚ΡΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ baselines Π² Ρ‚ΠΎΡ‚ ΠΆΠ΅ самый PostgreSQL ΠΈΠ»ΠΈ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. Π˜Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ³ΡƒΠ³Π»ΠΈΡ‚ΡŒ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅, ΠΎΠ½ΠΈ Π΅ΡΡ‚ΡŒ. Один ΠΈΠ· Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Ρ‚Π°ΠΊΠΎΠΉ ΡˆΡ‚ΡƒΠΊΠΈ сидит Π½Π° Ρ„ΠΎΡ€ΡƒΠΌΠ΅ sql.ruΒ Π² Π²Π΅Ρ‚ΠΊΠ΅ PostgreSQL. Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΌ ΠΏΠΎΠΉΠΌΠ°Ρ‚ΡŒ. Π”Π°, Ρ‚Π°ΠΊΠΈΠ΅ ΡˆΡ‚ΡƒΠΊΠΈ Π΅ΡΡ‚ΡŒ, ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Плюс Π² своСм pgCenter я Ρ‚ΠΎΠΆΠ΅ ΠΏΠΈΡˆΡƒ ΡˆΡ‚ΡƒΠΊΡƒ, которая позволяСт Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅ самоС.

P.S.1 Если Π²Ρ‹ ΠΈcΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ postgres_exporter, Ρ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ Π΄Π°ΡˆΠ±ΠΎΡ€Π΄ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅? Π˜Ρ… Ρ‚Π°ΠΌ нСсколько. Они ΡƒΠΆΠ΅ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠ΅. ΠœΠΎΠΆΠ΅Ρ‚ сообщСство создатm ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΉ шаблон?

P.S.2 Π£Π±Ρ€Π°Π» pganalyze, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ is a proprietary SaaS offering which focuses on performance monitoring and automated tuning suggestions.

Волько зарСгистрированныС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² опросС. Π’ΠΎΠΉΠ΄ΠΈΡ‚Π΅, поТалуйста.

Какой self-hosted ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ postgresql (с Π΄Π°ΡˆΠ±ΠΎΡ€Π΄ΠΎΠΌ) Π²Ρ‹ считаСтС самым Π»ΡƒΡ‡ΡˆΠΈΠΌ?

  • 30,0%Zabbix + дополнСния ΠΎΡ‚ АлСксСя ЛСсовского ΠΈΠ»ΠΈ zabbix 4.4 ΠΈΠ»ΠΈ libzbxpgsql + zabbix libzbxpgsql + zabbix3

  • 0,0%https://github.com/lesovsky/pgcenter0

  • 0,0%https://github.com/pg-monz/pg_monz0

  • 20,0%https://github.com/cybertec-postgresql/pgwatch22

  • 20,0%https://github.com/postgrespro/mamonsu2

  • 0,0%https://www.percona.com/doc/percona-monitoring-and-management/conf-postgres.html0

  • 10,0%pganalyze is a proprietary SaaS β€” ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π½Π΅ ΠΌΠΎΠ³Ρƒ1

  • 10,0%https://github.com/powa-team/powa1

  • 0,0%https://github.com/darold/pgbadger0

  • 0,0%https://github.com/darold/pgcluu0

  • 0,0%https://github.com/zalando/PGObserver0

  • 10,0%https://github.com/spotify/postgresql-metrics1

ΠŸΡ€ΠΎΠ³ΠΎΠ»ΠΎΡΠΎΠ²Π°Π»ΠΈ 10 ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Π’ΠΎΠ·Π΄Π΅Ρ€ΠΆΠ°Π»ΠΈΡΡŒ 26 ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ