ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…. Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

ΠŸΡ€ΠΎΠΏΠΎΠ½ΡƒΡŽ ΠΎΠ·Π½Π°ΠΉΠΎΠΌΠΈΡ‚ΠΈΡΡŒ Ρ–Π· Ρ€ΠΎΠ·ΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠΎΡŽ Π΄ΠΎΠΏΠΎΠ²Ρ–Π΄Ρ– Миколи Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²Π° "ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…"

Shared_buffers = 25% – Ρ†Π΅ Π±Π°Π³Π°Ρ‚ΠΎ Ρ‡ΠΈ ΠΌΠ°Π»ΠΎ? Або якраз? Π―ΠΊ Π·Ρ€ΠΎΠ·ΡƒΠΌΡ–Ρ‚ΠΈ, Ρ‡ΠΈ ΠΏΡ–Π΄Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ця – Π΄ΠΎΡΠΈΡ‚ΡŒ застаріла – рСкомСндація Ρƒ Π²Π°ΡˆΠΎΠΌΡƒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ Π²ΠΈΠΏΠ°Π΄ΠΊΡƒ?

Настав час ΠΏΡ–Π΄Ρ–ΠΉΡ‚ΠΈ Π΄ΠΎ питання ΠΏΡ–Π΄Π±ΠΎΡ€Ρƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ–Π² postgresql.conf "ΠΏΠΎ-дорослому". НС Π·Π° допомогою сліпих "Π°Π²Ρ‚ΠΎΡ‚ΡŽΠ½Π΅Ρ€Ρ–Π²" Π°Π±ΠΎ застарілих ΠΏΠΎΡ€Π°Π΄ Ρ–Π· статСй Ρ‚Π° Π±Π»ΠΎΠ³Ρ–Π², Π° Π½Π° основі:

  1. строго Π²ΠΈΠ²Ρ–Ρ€Π΅Π½ΠΈΡ… СкспСримСнтів Π½Π° Π‘Π”, Ρ‰ΠΎ Π²ΠΈΡ€ΠΎΠ±Π»ΡΡŽΡ‚ΡŒΡΡ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ, Ρƒ Π²Π΅Π»ΠΈΠΊΠΈΡ… ΠΊΡ–Π»ΡŒΠΊΠΎΡΡ‚ΡΡ… Ρ‚Π° Π² ΡƒΠΌΠΎΠ²Π°Ρ…, максимально Π½Π°Π±Π»ΠΈΠΆΠ΅Π½ΠΈΡ… Π΄ΠΎ "Π±ΠΎΠΉΠΎΠ²ΠΈΡ…",
  2. Π³Π»ΠΈΠ±ΠΎΠΊΠΎΠ³ΠΎ розуміння особливостСй Ρ€ΠΎΠ±ΠΎΡ‚ΠΈ Π‘Π£Π‘Π” Ρ‚Π° ОБ.

Π’ΠΈΠΊΠΎΡ€ΠΈΡΡ‚ΠΎΠ²ΡƒΡŽΡ‡ΠΈ Nancy CLI (https://gitlab.com/postgres.ai/nancy), ΠΌΠΈ розглянСмо ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈΠΉ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄ - горСзвісні shared_buffers - Π² Ρ€Ρ–Π·Π½ΠΈΡ… ситуаціях, Π² Ρ€Ρ–Π·Π½ΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… Ρ– спробуємо розібратися, як ΠΏΡ–Π΄Ρ–Π±Ρ€Π°Ρ‚ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Π΅ Π½Π°Π»Π°ΡˆΡ‚ΡƒΠ²Π°Π½Π½Ρ для Π½Π°ΡˆΠΎΡ— інфраструктури, Π‘Π” Ρ– навантаТСння.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

Π™Ρ‚ΠΈΠΌΠ΅Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎ СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…. Π¦Π΅ історія, яка Ρ‚Ρ€ΠΈΠ²Π°Ρ” Ρ‚Ρ€ΠΎΡ…ΠΈ Π±Ρ–Π»ΡŒΡˆΠ΅ ΠΏΡ–Π²Ρ€ΠΎΠΊΡƒ.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

Π’Ρ€ΠΎΡ…ΠΈ ΠΏΡ€ΠΎ ΠΌΠ΅Π½Π΅. Досвід Ρ–Π· Postgres Π²ΠΆΠ΅ Π±Ρ–Π»ΡŒΡˆΠ΅ 14 Ρ€ΠΎΠΊΡ–Π². Ряд ΠΊΠΎΠΌΠΏΠ°Π½Ρ–ΠΉ заснував ΡΠΎΡ†Ρ–Π°Π»ΡŒΠ½ΠΎ-ΠΌΠ΅Ρ€Π΅ΠΆΠ΅Π²ΠΈΡ…. Π‘ΠΊΡ€Ρ–Π·ΡŒ використовувався Postgres Ρ‚Π° Π²ΠΈΠΊΠΎΡ€ΠΈΡΡ‚ΠΎΠ²ΡƒΡ”Ρ‚ΡŒΡΡ.

Π’Π°ΠΊΠΎΠΆ Π³ΡƒΡ€Ρ‚ RuPostgres Π½Π° Meetup, 2-Π΅ місцС Ρƒ світі. ΠΠ°Π±Π»ΠΈΠΆΠ°Ρ”ΠΌΠΎΡΡŒ ΠΏΠΎΡ‚ΠΈΡ…Π΅Π½ΡŒΠΊΡƒ Π΄ΠΎ 2 000 Ρ‡ΠΎΠ»ΠΎΠ²Ρ–ΠΊ. RuPostgres.org.

Π† Π² ПК Ρ€Ρ–Π·Π½ΠΈΡ… ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†Ρ–ΠΉ, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‡ΠΈ Highload, я Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Π°ΡŽ Π·Π° Π±Π°Π·ΠΈ Π΄Π°Π½ΠΈΡ…, Π·ΠΎΠΊΡ€Π΅ΠΌΠ° Postgres Π· самого ΠΏΠΎΡ‡Π°Ρ‚ΠΊΡƒ.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

Π† останні ΠΊΡ–Π»ΡŒΠΊΠ° Ρ€ΠΎΠΊΡ–Π² я рСстартував мою ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒ ΠΏΠΎ Postgres-консалтингу Π² 11 часових поясах Π²Ρ–Π΄ сюди.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

Π† ΠΊΠΎΠ»ΠΈ я Ρ†Π΅ Π·Ρ€ΠΎΠ±ΠΈΠ² ΠΊΡ–Π»ΡŒΠΊΠ° Ρ€ΠΎΠΊΡ–Π² Ρ‚ΠΎΠΌΡƒ, я ΠΌΠ°Π² дСяку ΠΏΠ΅Ρ€Π΅Ρ€Π²Ρƒ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡ— Ρ€ΡƒΡ‡Π½ΠΎΡ— Ρ€ΠΎΠ±ΠΎΡ‚ΠΈ Π· Postgres, Π½Π°ΠΏΠ΅Π²Π½ΠΎ, Π· 2010-Π³ΠΎ Ρ€ΠΎΠΊΡƒ. Π― здивувався, Π½Π°ΡΠΊΡ–Π»ΡŒΠΊΠΈ ΠΌΠ°Π»ΠΎ змінилися Ρ‚Ρ€ΡƒΠ΄ΠΎΠ²Ρ– Π±ΡƒΠ΄Π½Ρ– DBA, Π½Π°ΡΠΊΡ–Π»ΡŒΠΊΠΈ ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½ΠΎ використовувати Π±Π°Π³Π°Ρ‚ΠΎ Ρ€ΡƒΡ‡Π½ΠΎΡ— ΠΏΡ€Π°Ρ†Ρ–. Π† я Π²Ρ–Π΄Ρ€Π°Π·Ρƒ ΠΏΠΎΠ΄ΡƒΠΌΠ°Π², Ρ‰ΠΎ Ρ‚ΡƒΡ‚ Ρ‰ΠΎΡΡŒ Π½Π΅ Ρ‚Π°ΠΊ, Ρ‚Ρ€Π΅Π±Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΡƒΠ²Π°Ρ‚ΠΈ ΡΠΊΠ½Π°ΠΉΠ±Ρ–Π»ΡŒΡˆΠ΅.

Π† Ρ‚Π°ΠΊ як Ρ†Π΅ всС Π±ΡƒΠ»ΠΎ Π½Π° відстані, Ρ‚ΠΎ Π±Ρ–Π»ΡŒΡˆΡ–ΡΡ‚ΡŒ ΠΊΠ»Ρ–Ρ”Π½Ρ‚Ρ–Π² Π±ΡƒΠ»ΠΎ Π² Ρ…ΠΌΠ°Ρ€Π°Ρ…. Π† Π²ΠΆΠ΅ Π±Π°Π³Π°Ρ‚ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ. ΠŸΡ€ΠΎ Ρ†Π΅ Ρ‚Ρ€ΠΎΡ…ΠΈ Π·Π³ΠΎΠ΄ΠΎΠΌ. Π’. Π΅. всС Ρ†Π΅ вилилося Π² Ρ–Π΄Π΅ΡŽ, Ρ‰ΠΎ ΠΌΠ°Ρ” Π±ΡƒΡ‚ΠΈ ряд інструмСнтів, Ρ‚ΠΎΠ±Ρ‚ΠΎ якась ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°, яка Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΡƒΠ²Π°Ρ‚ΠΈΠΌΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½ΠΎ всі Π΄Ρ–Ρ— DBA, Ρ‰ΠΎΠ± ΠΌΠΎΠΆΠ½Π° Π±ΡƒΠ»ΠΎ ΠΊΠ΅Ρ€ΡƒΠ²Π°Ρ‚ΠΈ вСликою ΠΊΡ–Π»ΡŒΠΊΡ–ΡΡ‚ΡŽ Π±Π°Π·.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

Π£ Ρ†Ρ–ΠΉ Π΄ΠΎΠΏΠΎΠ²Ρ–Π΄Ρ– Π½Π΅ Π±ΡƒΠ΄Π΅:

  • Β«Π‘Ρ€Ρ–Π±Π½ΠΈΡ… ΠΊΡƒΠ»ΡŒΒ» Ρ‚Π° заяв Ρ‚ΠΈΠΏΡƒ – ставтС 8 GB Ρ‡ΠΈ 25 % shared_buffers Ρ– Π²Π°ΠΌ Π±ΡƒΠ΄Π΅ Π΄ΠΎΠ±Ρ€Π΅. ΠŸΡ€ΠΎ shared_buffers Π±ΡƒΠ΄Π΅ Π½Π΅ Ρ‚Π°ΠΊ Π±Π°Π³Π°Ρ‚ΠΎ.
  • Π₯Π°Ρ€Π΄ΠΊΠΎΡ€Π½ΠΈΡ… Β«Π½ΡƒΡ‚Ρ€ΠΎΡ‰Ρ–Π²Β».

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

А Ρ‰ΠΎ Π±ΡƒΠ΄Π΅?

  • Π‘ΡƒΠ΄ΡƒΡ‚ΡŒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈ ΠΎΠΏΡ‚ΠΈΠΌΡ–Π·Π°Ρ†Ρ–Ρ—, які ΠΌΠΈ застосовуємо Ρ‚Π° Ρ€ΠΎΠ·Π²ΠΈΠ²Π°Ρ”ΠΌΠΎ. Π‘ΡƒΠ΄ΡƒΡ‚ΡŒ Ρ€Ρ–Π·Π½Ρ– Ρ–Π΄Π΅Ρ—, які Π²ΠΈΠ½ΠΈΠΊΠ°ΡŽΡ‚ΡŒ Ρƒ нас Π½Π° ΡˆΠ»ΡΡ…Ρƒ Ρ– Ρ€Ρ–Π·Π½Ρ– інструмСнти, які ΠΌΠΈ ΡΡ‚Π²ΠΎΡ€ΡŽΡ”ΠΌΠΎ Π·Π΄Π΅Π±Ρ–Π»ΡŒΡˆΠΎΠ³ΠΎ Π² Open Source, Ρ‚ΠΎΠ±Ρ‚ΠΎ ΠΌΠΈ основу Ρ€ΠΎΠ±ΠΈΠΌΠΎ Π² Open Source. Π‘Ρ–Π»ΡŒΡˆΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρƒ нас Ρ‚ΠΈΠΊΠ΅Ρ‚ΠΈ, всС спілкування ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½ΠΎ Π² Open Source. Π’ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ дивитися, Ρ‰ΠΎ ΠΌΠΈ Π·Π°Ρ€Π°Π· Ρ€ΠΎΠ±ΠΈΠΌΠΎ, Ρ‰ΠΎ Π±ΡƒΠ΄Π΅ Ρƒ наступному Ρ€Π΅Π»Ρ–Π·Ρ– Ρ‚ΠΎΡ‰ΠΎ.
  • А Ρ‚Π°ΠΊΠΎΠΆ Π±ΡƒΠ΄Π΅ дСякий досвід використання Ρ†ΠΈΡ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ–Π², Ρ†ΠΈΡ… інструмСнтів Ρƒ Π½ΠΈΠ·Ρ†Ρ– ΠΊΠΎΠΌΠΏΠ°Π½Ρ–ΠΉ: Π²Ρ–Π΄ ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΡ… стартапів Π΄ΠΎ Π²Π΅Π»ΠΈΠΊΠΈΡ… ΠΊΠΎΠΌΠΏΠ°Π½Ρ–ΠΉ.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

Π―ΠΊ Ρ†Π΅ всС Ρ€ΠΎΠ·Π²ΠΈΠ²Π°Ρ”Ρ‚ΡŒΡΡ?

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

По-ΠΏΠ΅Ρ€ΡˆΠ΅, основнС завдання DBA ΠΊΡ€Ρ–ΠΌ забСзпСчСння створСння instances, розгортання Π±Π΅ΠΊΠ°ΠΏΡ–Π² Ρ– Ρ‚. Π΄., - Ρ†Π΅ ΠΏΠΎΡˆΡƒΠΊ Π²ΡƒΠ·ΡŒΠΊΠΈΡ… ΠΌΡ–ΡΡ†ΡŒ Ρ‚Π° оптимізація продуктивності.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

Π—Π°Ρ€Π°Π· Ρ†Π΅ Π²Π»Π°ΡˆΡ‚ΠΎΠ²Π°Π½ΠΎ Ρ‚Π°ΠΊΠΈΠΌ Ρ‡ΠΈΠ½ΠΎΠΌ. Ми дивимося ΠΌΠΎΠ½Ρ–Ρ‚ΠΎΡ€ΠΈΠ½Π³, Ρ‰ΠΎΡΡŒ Π±Π°Ρ‡ΠΈΠΌΠΎ, ΡΠΊΠΈΡ…ΠΎΡΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±ΠΈΡ†ΡŒ Π½Π°ΠΌ Π½Π΅ вистачає. Ми ΠΏΠΎΡ‡ΠΈΠ½Π°Ρ”ΠΌΠΎ копатися ΡƒΠ²Π°ΠΆΠ½Ρ–ΡˆΠ΅, Π·Π°Π·Π²ΠΈΡ‡Π°ΠΉ Ρ€ΡƒΠΊΠ°ΠΌΠΈ Ρ– Ρ€ΠΎΠ·ΡƒΠΌΡ–Ρ”ΠΌΠΎ, Ρ‰ΠΎ Π· Ρ†ΠΈΠΌ Ρ€ΠΎΠ±ΠΈΡ‚ΠΈ Ρ‚Π°ΠΊ Ρ‡ΠΈ Ρ–Π½Π°ΠΊΡˆΠ΅.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

Π† Ρ” Π΄Π²Π° ΠΏΡ–Π΄Ρ…ΠΎΠ΄ΠΈ. 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 Π²ΠΈΡ€Ρ–ΡˆΡƒΡ” Π·Π½Π°ΠΉΠ΄Π΅Π½Ρ– ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ?

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

Наприклад, ΠΌΠΈ знайшли ΡΠΊΡƒΡΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. Π©ΠΎ Π·Π°Π·Π²ΠΈΡ‡Π°ΠΉ Ρ€ΠΎΠ±ΠΈΡ‚ΡŒΡΡ? Π―ΠΊΡ‰ΠΎ Π²ΠΈ Ρ€ΠΎΠ·Ρ€ΠΎΠ±Π½ΠΈΠΊ, Ρ‚ΠΎ Π²ΠΈ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Ρ‰ΠΎΡΡŒ Ρ€ΠΎΠ±ΠΈΡ‚ΠΈ Π½Π° ΡΠΊΠΎΠΌΡƒΡΡŒ instance, який Π½Π΅ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ·ΠΌΡ–Ρ€Ρƒ. Π―ΠΊΡ‰ΠΎ Π²ΠΈ Ρ” DBA, Ρ‚ΠΎ Ρƒ вас Ρ” staging. Π† Π²Ρ–Π½ ΠΌΠΎΠΆΠ΅ Π±ΡƒΡ‚ΠΈ лишС ΠΎΠ΄ΠΈΠ½. Π† Π²Ρ–Π½ відстав Π½Π° ΠΏΡ–Π²Ρ€ΠΎΠΊΡƒ. Π† Π²ΠΈ Π΄ΡƒΠΌΠ°Ρ”Ρ‚Π΅, Ρ‰ΠΎ ΠΏΡ–Π΄Π΅Ρ‚Π΅ Π½Π° Π²ΠΈΡ€ΠΎΠ±Π½ΠΈΡ†Ρ‚Π²ΠΎ. Π† Π½Π°Π²Ρ–Ρ‚ΡŒ досвідчСні DBA ΠΏΠ΅Ρ€Π΅Π²Ρ–Ρ€ΡΡŽΡ‚ΡŒ ΠΏΠΎΡ‚Ρ–ΠΌ Π½Π° production, Π½Π° Ρ€Π΅ΠΏΠ»Ρ–Ρ†Ρ–. Π† Π±ΡƒΠ²Π°Ρ”, Ρ‰ΠΎ ΡΡ‚Π²ΠΎΡ€ΡŽΡŽΡ‚ΡŒ тимчасовий індСкс, ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠ½ΡƒΡŽΡ‚ΡŒΡΡ, Ρ‰ΠΎ Π²Ρ–Π½ Π΄ΠΎΠΏΠΎΠΌΠ°Π³Π°ΡŽΡ‚ΡŒ, Π΄Ρ€ΠΎΠΏΠ°ΡŽΡ‚ΡŒ ΠΉΠΎΠ³ΠΎ Ρ– Π²Ρ–Π΄Π΄Π°ΡŽΡ‚ΡŒ Ρ€ΠΎΠ·Ρ€ΠΎΠ±Π½ΠΈΠΊΠ°ΠΌ, Ρ‰ΠΎΠ± Π²ΠΎΠ½ΠΈ ΠΉΠΎΠ³ΠΎ Π² ΠΌΡ–Π³Ρ€Π°Ρ†Ρ–ΠΉΠ½Ρ– Ρ„Π°ΠΉΠ»ΠΈ засунули. Ось Ρ‚Π°ΠΊΠ΅ марСння Π²Ρ–Π΄Π±ΡƒΠ²Π°Ρ”Ρ‚ΡŒΡΡ Π·Π°Ρ€Π°Π·. Π† Ρ†Π΅ Π±Ρ–Π΄Π°.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

  • Π’ΡŽΠ½ΠΈΡ‚ΠΈ ΠΊΠΎΠ½Ρ„Ρ–Π³ΡƒΡ€Π°Ρ†Ρ–Ρ—.
  • ΠžΠΏΡ‚ΠΈΠΌΡ–Π·ΡƒΠ²Π°Ρ‚ΠΈ Π½Π°Π±Ρ–Ρ€ індСксів.
  • Π—ΠΌΡ–Π½ΡŽΠ²Π°Ρ‚ΠΈ сам SQL-Π·Π°ΠΏΠΈΡ‚ (Ρ†Π΅ Π½Π°ΠΉΡΠΊΠ»Π°Π΄Π½Ρ–ΡˆΠΈΠΉ спосіб).
  • Π”ΠΎΠ΄Π°Π²Π°Ρ‚ΠΈ потуТностСй (Π½Π°ΠΉΠΏΡ€ΠΎΡΡ‚Ρ–ΡˆΠΈΠΉ спосіб Ρƒ Π±Ρ–Π»ΡŒΡˆΠΎΡΡ‚Ρ– Π²ΠΈΠΏΠ°Π΄ΠΊΡ–Π²).

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

Π†Π· Ρ†ΠΈΠΌΠΈ Ρ€Π΅Ρ‡Π°ΠΌΠΈ Π΄ΡƒΠΆΠ΅ Π±Π°Π³Π°Ρ‚ΠΎ всього. Π’Π°ΠΌ Π±Π°Π³Π°Ρ‚ΠΎ Ρ€ΡƒΡ‡ΠΎΠΊ Ρƒ Postgres. ΠŸΠΎΡ‚Ρ€Ρ–Π±Π½ΠΎ Π±Π°Π³Π°Ρ‚ΠΎ Π·Π½Π°Ρ‚ΠΈ. Π‘Π°Π³Π°Ρ‚ΠΎ індСксів Ρƒ Postgres, завдяки Ρ‚ΠΎΠΌΡƒ Ρ‰ΠΎ ΠΎΡ€Π³Π°Π½Ρ–Π·Π°Ρ‚ΠΎΡ€Π°ΠΌ Ρ†Ρ–Ρ”Ρ— ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†Ρ–Ρ—. Π† всС Ρ†Π΅ ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½ΠΎ Π·Π½Π°Ρ‚ΠΈ, Ρ– самС Ρ†Π΅ Ρƒ DBA Π²ΠΈΠΊΠ»ΠΈΠΊΠ°Ρ” відчуття, Ρ‰ΠΎ DBA Π·Π°ΠΉΠΌΠ°ΡŽΡ‚ΡŒΡΡ Ρ‡ΠΎΡ€Π½ΠΎΡŽ ΠΌΠ°Π³Ρ–Ρ”ΡŽ. Π’. Π΅. ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½ΠΎ Ρ€ΠΎΠΊΡ–Π² 10 займатися, Ρ‰ΠΎΠ± ΠΏΠΎΡ‡Π°Ρ‚ΠΈ Ρ€ΠΎΠ·ΡƒΠΌΡ–Ρ‚ΠΈ всС Ρ†Π΅ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ.

Π† я – Π±ΠΎΡ€Π΅Ρ†ΡŒ Ρ–Π· Ρ†Ρ–Ρ”ΡŽ Ρ‡ΠΎΡ€Π½ΠΎΡŽ ΠΌΠ°Π³Ρ–Ρ”ΡŽ. Π― Ρ…ΠΎΡ‡Ρƒ Π·Ρ€ΠΎΠ±ΠΈΡ‚ΠΈ всС Ρ‚Π°ΠΊ, Ρ‰ΠΎΠ±ΠΈ Π±ΡƒΠ»Π° тСхнологія, Π° Π½Π΅ Π±ΡƒΠ»ΠΎ Ρ–Π½Ρ‚ΡƒΡ—Ρ†Ρ–Ρ— Ρƒ Π²ΡΡŒΠΎΠΌΡƒ Ρ†ΡŒΠΎΠΌΡƒ.

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄ΠΈ Π· Тиття

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

Π¦Π΅ я спостСрігав ΠΌΡ–Π½Ρ–ΠΌΡƒΠΌ Ρƒ Π΄Π²ΠΎΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‡ΠΈ свій. Π§Π΅Ρ€Π³ΠΎΠ²ΠΈΠΉ пост Ρƒ Π±Π»ΠΎΠ·Ρ– повідомляє Π½Π°ΠΌ, Ρ‰ΠΎ значСння 1 для default_statistict_target – Ρ†Π΅ Π΄ΠΎΠ±Ρ€Π΅. Π”ΠΎΠ±Ρ€Π΅, Π΄Π°Π²Π°ΠΉΡ‚Π΅ спробуємо Ρƒ production.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

Π† Ρ‚ΡƒΡ‚ ΠΌΠΈ, Π²ΠΈΠΊΠΎΡ€ΠΈΡΡ‚ΠΎΠ²ΡƒΡŽΡ‡ΠΈ наш інструмСнт Ρ‡Π΅Ρ€Π΅Π· Π΄Π²Π° Ρ€ΠΎΠΊΠΈ Π·Π° допомогою СкспСримСнтів Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…, ΠΏΡ€ΠΎ які ΡΡŒΠΎΠ³ΠΎΠ΄Π½Ρ– ΠΌΠΎΠ²Π°, ΠΌΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠΎ порівняти Ρ‰ΠΎ Π±ΡƒΠ»ΠΎ Ρ– Ρ‰ΠΎ стало.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

Π† для Ρ†ΡŒΠΎΠ³ΠΎ Π½Π°ΠΌ ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½ΠΎ створити СкспСримСнт. Π’Ρ–Π½ ΡΠΊΠ»Π°Π΄Π°Ρ”Ρ‚ΡŒΡΡ Ρ–Π· Ρ‡ΠΎΡ‚ΠΈΡ€ΡŒΠΎΡ… частин.

  • ΠŸΠ΅Ρ€ΡˆΠ° – Ρ†Π΅ оточСння. Нам ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½Π° залізниця. Π† ΠΊΠΎΠ»ΠΈ я ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΆΡƒ Π² ΡΠΊΡƒΡΡŒ ΠΊΠΎΠΌΠΏΠ°Π½Ρ–ΡŽ Ρ– ΡƒΠΊΠ»Π°Π΄Π°ΡŽ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚, Ρ‚ΠΎ я Π³ΠΎΠ²ΠΎΡ€ΡŽ, Ρ‰ΠΎΠ± ΠΌΠ΅Π½Ρ– Π΄Π°Π»ΠΈ Ρ‚Π°ΠΊΡƒ ΠΆ Π·Π°Π»Ρ–Π·ΠΊΡƒ як Π½Π° production. Для ΠΊΠΎΠΆΠ½ΠΎΠ³ΠΎ Π· Π²Π°ΡˆΠΈΡ… ΠœΠ°ΠΉΡΡ‚Ρ€Ρ–Π² ΠΌΠ΅Π½Ρ– ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½Π° Ρ…ΠΎΡ‡Π° Π± ΠΎΠ΄Π½Π° залізниця Ρ‚Π°ΠΊΠ° сама. Або Ρ†Π΅ Π²Ρ–Ρ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π° машина instance Π² Амазоні Π°Π±ΠΎ Google, Π°Π±ΠΎ ΠΌΠ΅Π½Ρ– самС Ρ‚Π°ΠΊΠ° ΠΆ залізниця ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½Π°. Π’. Π΅. я Ρ…ΠΎΡ‡Ρƒ Π²Ρ–Π΄Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΠΈ оточСння. Π† поняття оточСння ΠΌΠΈ Π²ΠΊΠ»Π°Π΄Π°Ρ”ΠΌΠΎ ΠΌΠ°ΠΆΠΎΡ€Π½Ρƒ Π²Π΅Ρ€ΡΡ–ΡŽ Postgres.
  • Π”Ρ€ΡƒΠ³Π° частина – Ρ†Π΅ ΠΎΠ±'Ρ”ΠΊΡ‚ Π½Π°ΡˆΠΈΡ… Π΄ΠΎΡΠ»Ρ–Π΄ΠΆΠ΅Π½ΡŒ. Π¦Π΅ Π±Π°Π·Π° Π΄Π°Π½ΠΈΡ…. Π‡Ρ— ΠΌΠΎΠΆΠ½Π° створити ΠΊΡ–Π»ΡŒΠΊΠΎΠΌΠ° способами. Π― ΠΏΠΎΠΊΠ°ΠΆΡƒ як.
  • ВрСтя частина – Ρ†Π΅ навантаТСння. Π¦Π΅ Π½Π°ΠΉΡΠΊΠ»Π°Π΄Π½Ρ–ΡˆΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚.
  • Π† Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚Π° частина – Ρ†Π΅ Ρ‚Π΅, Ρ‰ΠΎ ΠΌΠΈ пСрСвіряємо, Ρ‚ΠΎΠ±Ρ‚ΠΎ Ρ‰ΠΎ Ρ–Π· Ρ‡ΠΈΠΌ ΠΏΠΎΡ€Ρ–Π²Π½ΡŽΠ²Π°Ρ‚ΠΈ Π±ΡƒΠ΄Π΅ΠΌΠΎ. Допустимо, ΠΌΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π² ΠΊΠΎΠ½Ρ„Ρ–Π·Ρ– Π·ΠΌΡ–Π½ΠΈΡ‚ΠΈ ΠΎΠ΄ΠΈΠ½ Π°Π±ΠΎ ΠΊΡ–Π»ΡŒΠΊΠ° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ–Π², Π° ΠΌΠΎΠΆΠ΅ΠΌΠΎ індСкс створити Ρ– Ρ‚.Π΄.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

Ми запускаємо СкспСримСнт. Ось pg_stat_statements. Π›Ρ–Π²ΠΎΡ€ΡƒΡ‡ – Ρ‚Π΅, Ρ‰ΠΎ Π±ΡƒΠ»ΠΎ. Π‘ΠΏΡ€Π°Π²Π° – Ρ‰ΠΎ стало.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

Π—Π»Ρ–Π²Π° default_statistics_target = 100, ΠΏΡ€Π°Π²ΠΎΡ€ΡƒΡ‡ = 1. Ми Π±Π°Ρ‡ΠΈΠΌΠΎ, Ρ‰ΠΎ Π½Π°ΠΌ Ρ†Π΅ Π΄ΠΎΠΏΠΎΠΌΠΎΠ³Π»ΠΎ. На 000% Π·Π°Π³Π°Π»ΠΎΠΌ усС ΠΊΡ€Π°Ρ‰Π΅ стало.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

АлС якщо ΠΌΠΈ ΠΏΡ€ΠΎΠΌΠΎΡ‚Π°Ρ”ΠΌΠΎ Π²Π½ΠΈΠ·, Ρ‚Π°ΠΌ Π±ΡƒΠ΄ΡƒΡ‚ΡŒ Π³Ρ€ΡƒΠΏΠΈ Π·Π°ΠΏΠΈΡ‚Ρ–Π² Π· pgBadger Π°Π±ΠΎ Π· pg_stat_statements. Π’ΡƒΡ‚ Π΄Π²Π° Π²Π°Ρ€Ρ–Π°Π½Ρ‚ΠΈ. Ми ΠΏΠΎΠ±Π°Ρ‡ΠΈΠΌΠΎ, Ρ‰ΠΎ якийсь Π·Π°ΠΏΠΈΡ‚ просів Π½Π° 88%. Π† Ρ‚ΡƒΡ‚ ΡƒΠΆΠ΅ Ρ–Π½ΠΆΠ΅Π½Π΅Ρ€Π½ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄. Ми ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π΄Π°Π»Ρ– ΠΊΠΎΠΏΠ°Ρ‚ΠΈ всСрСдину, Π±ΠΎ Ρ†Ρ–ΠΊΠ°Π²ΠΎ, Ρ‡ΠΎΠΌΡƒ Π²Ρ–Π½ просів. ΠŸΠΎΡ‚Ρ€Ρ–Π±Π½ΠΎ Ρ€ΠΎΠ·ΡƒΠΌΡ–Ρ‚ΠΈ, Ρ‰ΠΎ Ρ‚Π°ΠΌ Π±ΡƒΠ»ΠΎ Π·Ρ– ΡΡ‚Π°Ρ‚ΠΈΡΡ‚ΠΈΠΊΠΎΡŽ. Π§ΠΎΠΌΡƒ Π±Ρ–Π»ΡŒΡˆΠ΅ Π±Π°ΠΊΠ΅Ρ‚Ρ–Π² Ρƒ статистиці ΠΏΡ€ΠΈΠ·Π²ΠΎΠ΄ΡΡ‚ΡŒ Π΄ΠΎ Π½Π°ΠΉΠ³Ρ–Ρ€ΡˆΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

А ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π½Π΅ ΠΊΠΎΠΏΠ°Ρ‚ΠΈ, Π° Π·Ρ€ΠΎΠ±ΠΈΡ‚ΠΈ Β«ALTER TABLE… ALTER COLUMNΒ» Ρ– ΠΉΠΎΠΌΡƒ Π½Π°Π·Π°Π΄ 100 Π±Π°ΠΊΠ΅Ρ‚Ρ–Π² ΠΏΠΎΠ²Π΅Ρ€Π½Π΅ΠΌΠΎ Π΄ΠΎ статистики Ρ†Ρ–Ρ”Ρ— ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ. Π† Π΄Π°Π»Ρ– Ρ‰Π΅ СкспСримСнтом ΠΌΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠΎ пСрСконатися, Ρ‰ΠΎ ця Π»Π°Ρ‚ΠΊΠ° Π΄ΠΎΠΏΠΎΠΌΠΎΠ³Π»Π°. Всі. Ось Ρ†Π΅ Ρ–Π½ΠΆΠ΅Π½Π΅Ρ€Π½ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄, який Π΄ΠΎΠΏΠΎΠΌΠ°Π³Π°Ρ” Π½Π°ΠΌ Π±Π°Ρ‡ΠΈΡ‚ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ Ρ‚Π° ΠΏΡ€ΠΈΠΉΠΌΠ°Ρ‚ΠΈ Ρ€Ρ–ΡˆΠ΅Π½Π½Ρ Π½Π° основі Π΄Π°Π½ΠΈΡ…, Π° Π½Π΅ Π½Π° основі Ρ–Π½Ρ‚ΡƒΡ—Ρ†Ρ–Ρ—.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

ΠŸΠ°Ρ€Π° ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Ρ–Π² Π· Ρ–Π½ΡˆΠΈΡ… Π³Π°Π»ΡƒΠ·Π΅ΠΉ. Π£ тСстах Ρ” CI тСсти Π²ΠΆΠ΅ Π±Π°Π³Π°Ρ‚ΠΎ Ρ€ΠΎΠΊΡ–Π². Π† ΠΆΠΎΠ΄Π΅Π½ ΡƒΠΆΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π·Π΄ΠΎΡ€ΠΎΠ²ΠΎΠ³ΠΎ Π³Π»ΡƒΠ·Π΄Ρƒ Π½Π΅ ΠΆΠΈΡ‚ΠΈΠΌΠ΅ Π±Π΅Π· Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΈΡ… тСстів.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

Π’ Ρ–Π½ΡˆΠΈΡ… галузях: Π² Π°Π²Ρ–Π°Ρ†Ρ–Ρ—, Π² Π°Π²Ρ‚ΠΎΠΌΠΎΠ±Ρ–Π»Π΅Π±ΡƒΠ΄ΡƒΠ²Π°Π½Π½Ρ–, ΠΊΠΎΠ»ΠΈ Π²Ρ–Π΄Ρ‡ΡƒΠ²Π°Ρ”ΠΌΠΎ Π°Π΅Ρ€ΠΎΠ΄ΠΈΠ½Π°ΠΌΡ–ΠΊΡƒ, ΠΌΠΈ Ρ‚Π°ΠΊΠΎΠΆ ΠΌΠ°Ρ”ΠΌΠΎ ΠΌΠΎΠΆΠ»ΠΈΠ²Ρ–ΡΡ‚ΡŒ Ρ€ΠΎΠ±ΠΈΡ‚ΠΈ СкспСримСнти. Ми Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌΠΎ Ρ‰ΠΎΡΡŒ Ρ–Π· крСслСння ΠΎΠ΄Ρ€Π°Π·Ρƒ Π² космос запускати Ρ‡ΠΈ Π½Π΅ Π±ΡƒΠ΄Π΅ ΡΠΊΡƒΡΡŒ ΠΌΠ°ΡˆΠΈΠ½Ρƒ ΠΎΠ΄Ρ€Π°Π·Ρƒ Π²ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΠΈ Π½Π° трасу. Наприклад, Ρ” Π°Π΅Ρ€ΠΎΠ΄ΠΈΠ½Π°ΠΌΡ–Ρ‡Π½Π° Ρ‚Ρ€ΡƒΠ±Π°.

Π—Ρ– ΡΠΏΠΎΡΡ‚Π΅Ρ€Π΅ΠΆΠ΅Π½ΡŒ Π·Π° Ρ–Π½ΡˆΠΈΠΌΠΈ галузями ΠΌΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π·Ρ€ΠΎΠ±ΠΈΡ‚ΠΈ висновки.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

По-ΠΏΠ΅Ρ€ΡˆΠ΅, ΠΌΠΈ ΠΌΠ°Ρ”ΠΌΠΎ ΡΠΏΠ΅Ρ†Ρ–Π°Π»ΡŒΠ½Π΅ оточСння. Π’ΠΎΠ½ΠΎ близькС Π΄ΠΎ production, Π°Π»Π΅ Π½Π΅ близько. Π“ΠΎΠ»ΠΎΠ²Π½Π° ΠΉΠΎΠ³ΠΎ ΠΎΡΠΎΠ±Π»ΠΈΠ²Ρ–ΡΡ‚ΡŒ Ρƒ Ρ‚ΠΎΠΌΡƒ, Ρ‰ΠΎ ΠΌΠ°Ρ” Π±ΡƒΡ‚ΠΈ дСшСво, ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡŽΠ²Π°Π½ΠΎ Ρ‚Π° максимально Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ. Π† Ρ‰Π΅ ΠΌΠ°ΡŽΡ‚ΡŒ Π±ΡƒΡ‚ΠΈ ΡΠΏΠ΅Ρ†Ρ–Π°Π»ΡŒΠ½Ρ– засоби для Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Π½Π°Π»Ρ–Π·Ρƒ.

ШвидшС Π·Π° всС, ΠΊΠΎΠ»ΠΈ ΠΌΠΈ Π»Ρ–Ρ‚Π°ΠΊ запустили Ρ– Π»Π΅Ρ‚ΠΈΠΌΠΎ, ΠΌΠΈ ΠΌΠ°Ρ”ΠΌΠΎ мСншС моТливостСй Π²ΠΈΠ²Ρ‡Π°Ρ‚ΠΈ ΠΊΠΎΠΆΠ΅Π½ ΠΌΡ–Π»Ρ–ΠΌΠ΅Ρ‚Ρ€ ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½Ρ– ΠΊΡ€ΠΈΠ»Π°, Π½Ρ–ΠΆ Ρ” Π² Π°Π΅Ρ€ΠΎΠ΄ΠΈΠ½Π°ΠΌΡ–Ρ‡Π½Ρ–ΠΉ Ρ‚Ρ€ΡƒΠ±Ρ–. Ми ΠΌΠ°Ρ”ΠΌΠΎ Π±Ρ–Π»ΡŒΡˆΠ΅ засобів для діагностики. Ми ΠΌΠΎΠΆΠ΅ΠΌΠΎ собі Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΠΈ навісити ΡΠΊΠ½Π°ΠΉΠ±Ρ–Π»ΡŒΡˆΠ΅ Π²Π°ΠΆΠΊΠΎΠ³ΠΎ, Ρ‰ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΠΈ собі Π²Ρ–Π΄Π²Ρ–Π΄Π°Ρ‚ΠΈ Π»Ρ–Ρ‚Π°ΠΊ Ρƒ ΠΏΠΎΠ²Ρ–Ρ‚Ρ€Ρ–. Π’Π°ΠΊΠΎΠΆ Ρ– Π· Postgres. Π£ дСяких Π²ΠΈΠΏΠ°Π΄ΠΊΠ°Ρ… ΠΌΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΠΈ ΠΏΠΎΠ²Π½Π΅ логування Π·Π°ΠΏΠΈΡ‚Ρ–Π² ΠΏΡ–Π΄ час СкспСримСнтів. Π† ΠΌΠΈ Ρ†ΡŒΠΎΠ³ΠΎ Π½Π° Π²ΠΈΡ€ΠΎΠ±Π½ΠΈΡ†Ρ‚Π²ΠΎ Ρ€ΠΎΠ±ΠΈΡ‚ΠΈ Π½Π΅ Ρ…ΠΎΡ‡Π΅ΠΌΠΎ. Ми, ΠΌΠΎΠΆΠ»ΠΈΠ²ΠΎ, Π½Π°Π²Ρ–Ρ‚ΡŒ Ρ–Π· ΠΏΠ»Π°Π½Π°ΠΌΠΈ Ρ†Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠΌΠΎ Π·Π° допомогою auto_explain.

Π†, як я Π²ΠΆΠ΅ сказав, високий Ρ€Ρ–Π²Π΅Π½ΡŒ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†Ρ–Ρ— ΠΎΠ·Π½Π°Ρ‡Π°Ρ”, Ρ‰ΠΎ ΠΌΠΈ натиснули ΠΊΠ½ΠΎΠΏΠΊΡƒ Ρ– ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΠ»ΠΈ. ΠžΡ‚Π°ΠΊ ΠΌΠ°Ρ” Π±ΡƒΡ‚ΠΈ, Ρ‰ΠΎΠ± Π±ΡƒΠ»ΠΎ Π±Π°Π³Π°Ρ‚ΠΎ СкспСримСнтів, Ρ‰ΠΎΠ± Ρ†Π΅ Π±ΡƒΠ»ΠΎ Π½Π° ΠΏΠΎΡ‚ΠΎΡ†Ρ–.

Nancy CLI – Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚ "Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Ρ–Ρ— Π‘Π”"

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

Π† ось ΠΌΠΈ Π·Ρ€ΠΎΠ±ΠΈΠ»ΠΈ Ρ‚Π°ΠΊΡƒ ΡˆΡ‚ΡƒΠΊΡƒ. Π’. Π΅. я ΠΏΡ€ΠΎ Ρ†Ρ– Ρ–Π΄Π΅Ρ— Ρ€ΠΎΠ·ΠΏΠΎΠ²Ρ–Π΄Π°Π² Ρƒ Ρ‡Π΅Ρ€Π²Π½Ρ–, ΠΌΠ°ΠΉΠΆΠ΅ Ρ€Ρ–ΠΊ Ρ‚ΠΎΠΌΡƒ. Π† ΠΌΠΈ Π²ΠΆΠ΅ ΠΌΠ°Ρ”ΠΌΠΎ Π² Open Source Ρ‚Π°ΠΊ Π·Π²Π°Π½Ρƒ Nancy CLI. Π¦Π΅ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚ для Ρ‚ΠΎΠ³ΠΎ, Ρ‰ΠΎΠ± Π·Π²ΠΎΠ΄ΠΈΡ‚ΠΈ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Ρ–ΡŽ Π±Π°Π·ΠΈ Π΄Π°Π½ΠΈΡ….

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

НСнсі - Π¦Π΅ Π² Open Source, Π½Π° Gitlab. ΠœΠΎΠΆΠ΅Ρ‚Π΅ сказати, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ спробувати. Π― Π΄Π°Π² заслання Ρƒ слайдах. На Π½Π΅Ρ— ΠΌΠΎΠΆΠ½Π° ΠΊΠ»Π°Ρ†Π½ΡƒΡ‚ΠΈ Ρ– Ρ‚Π°ΠΌ Π±ΡƒΠ΄Π΅ Π΄ΠΎΠΏΠΎΠΌΠΎΠ³Π° Π·Π° всіма ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ.

Π—Π²ΠΈΡ‡Π°ΠΉΠ½ΠΎ, Ρ‚Π°ΠΌ Π±Π°Π³Π°Ρ‚ΠΎ Ρ‡ΠΎΠ³ΠΎ Ρ‰Π΅ Π½Π° стадії Ρ€ΠΎΠ·Ρ€ΠΎΠ±ΠΊΠΈ. Π’Π°ΠΌ Π±Π°Π³Π°Ρ‚ΠΎ Ρ–Π΄Π΅ΠΉ. АлС Ρ†Π΅ Π²ΠΆΠ΅ Ρ‚Π΅, Ρ‰ΠΎ ΠΌΠΈ застосовуємо ΠΌΠ°ΠΉΠΆΠ΅ щодня. Π† ΠΊΠΎΠ»ΠΈ Ρƒ нас Π²ΠΈΠ½ΠΈΠΊΠ°Ρ” ідСя - Π° Ρ‰ΠΎ Ρ†Π΅ ΠΏΡ€ΠΈ delete 40 000 000 рядків Ρƒ нас всС впСрлося Π² IO, Ρ‚ΠΎ ΠΌΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠΎ провСсти СкспСримСнт Ρ– ΠΏΠΎΠ΄ΠΈΠ²ΠΈΡ‚ΠΈΡΡŒ Π΄ΠΎΠΊΠ»Π°Π΄Π½Ρ–ΡˆΠ΅, Ρ‰ΠΎΠ± Π·Ρ€ΠΎΠ·ΡƒΠΌΡ–Ρ‚ΠΈ, Ρ‰ΠΎ Π²Ρ–Π΄Π±ΡƒΠ²Π°Ρ”Ρ‚ΡŒΡΡ Ρ– Π½Π°Π΄Π°Π»Ρ– спробувати Π²ΠΈΠΏΡ€Π°Π²ΠΈΡ‚ΠΈ Ρ†Π΅ Π½Π° Ρ…ΠΎΠ΄Ρƒ. Π’. Π΅. ΠΌΠΈ Ρ€ΠΎΠ±ΠΈΠΌΠΎ СкспСримСнт. Наприклад, Ρ‰ΠΎΡΡŒ ΠΏΡ–Π΄ΠΊΡ€ΡƒΡ‡ΡƒΡ”ΠΌΠΎ Ρ– дивимося, Ρ‰ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ– Π²ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ. Π’Π° ΠΌΠΈ Ρ†Π΅ Ρ€ΠΎΠ±ΠΈΠΌΠΎ Π½Π΅ Ρ‚Π°ΠΊ Π½Π° production. Π¦Π΅ ΡΡƒΡ‚ΡŒ Ρ–Π΄Π΅Ρ—.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

Π”Π΅ Ρ†Π΅ ΠΌΠΎΠΆΠ΅ ΠΏΡ€Π°Ρ†ΡŽΠ²Π°Ρ‚ΠΈ? Π¦Π΅ ΠΌΠΎΠΆΠ΅ ΠΏΡ€Π°Ρ†ΡŽΠ²Π°Ρ‚ΠΈ локально, Ρ‚ΠΎΠ±Ρ‚ΠΎ ΠΌΠΎΠΆΠ½Π° Ρ†Π΅ Ρ€ΠΎΠ±ΠΈΡ‚ΠΈ Π±ΡƒΠ΄ΡŒ-Π΄Π΅, ΠΌΠΎΠΆΠ½Π° Π½Π°Π²Ρ–Ρ‚ΡŒ Π½Π° MacBook запустити. ΠŸΠΎΡ‚Ρ€Ρ–Π±Π΅Π½ Π΄ΠΎΠΊΠ΅Ρ€, ΠΏΠΎΡ—Ρ…Π°Π»ΠΈ. Π† всС. МоТна запустити Π² Π±ΡƒΠ΄ΡŒ-якому стані Π² Π·Π°Π»Ρ–Π·Ρ†Ρ–, Π°Π±ΠΎ Ρƒ Π²Ρ–Ρ€Ρ‚ΡƒΠ°Π»Ρ†Ρ–, Π΄Π΅ Π·Π°Π²Π³ΠΎΠ΄Π½ΠΎ.

Π† Ρ‰Π΅ Ρ” ΠΌΠΎΠΆΠ»ΠΈΠ²Ρ–ΡΡ‚ΡŒ запускати Π²Ρ–Π΄Π΄Π°Π»Π΅Π½ΠΎ Π² Амазоні Π² EC2 Instance, Π² спотах. Π† Ρ†Π΅ Π΄ΡƒΠΆΠ΅ класна Π½Π°Π³ΠΎΠ΄Π°. Наприклад, Π²Ρ‡ΠΎΡ€Π° ΠΌΠΈ ΠΏΡ€ΠΎΠ²Π΅Π»ΠΈ Π±Ρ–Π»ΡŒΡˆΠ΅ 500 СкспСримСнтів Π½Π° i3 instance, ΠΏΠΎΡ‡ΠΈΠ½Π°ΡŽΡ‡ΠΈ Π· наймолодшого Ρ– Π·Π°ΠΊΡ–Π½Ρ‡ΡƒΡŽΡ‡ΠΈ i3-16-xlarge. Π† Π½Π°ΠΌ 500 СкспСримСнтів стали Π² 64 Π΄ΠΎΠ»Π°Ρ€ΠΈ. КоТСн Ρ‚Ρ€ΠΈΠ²Π°Π² 15 Ρ…Π²ΠΈΠ»ΠΈΠ½. Π’. Π΅. Π·Π° Ρ€Π°Ρ…ΡƒΠ½ΠΎΠΊ Ρ‚ΠΎΠ³ΠΎ, Ρ‰ΠΎ Ρ‚Π°ΠΌ Π²ΠΈΠΊΠΎΡ€ΠΈΡΡ‚ΠΎΠ²ΡƒΡŽΡ‚ΡŒΡΡ споти, Ρ†Π΅ Π΄ΡƒΠΆΠ΅ дСшСво - Π·Π½ΠΈΠΆΠΊΠ° 70%, посСкундна тарифікація Амазона. Π’ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€ΠΎΠ±ΠΈΡ‚ΠΈ Π΄ΡƒΠΆΠ΅ Π±Π°Π³Π°Ρ‚ΠΎ. Π’ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΠΈ Ρ€Π΅Π°Π»ΡŒΠ½Π΅ дослідТСння.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

Π† Ρ‚Ρ€ΠΈ ΠΌΠ°ΠΆΠΎΡ€Π½Ρ– вСрсії Postgres ΠΏΡ–Π΄Ρ‚Ρ€ΠΈΠΌΡƒΡŽΡ‚ΡŒΡΡ. НС Ρ‚Π°ΠΊ складно допиляти ΡΠΊΡ–ΡΡŒ старі Ρ‚Π° Π½ΠΎΠ²Ρƒ 12-Ρ‚Ρƒ Π²Π΅Ρ€ΡΡ–ΡŽ Ρ‚Π΅ΠΆ.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

Об'Ρ”ΠΊΡ‚ ΠΌΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠΎ Ρ‚Ρ€ΡŒΠΎΠΌΠ° способами Π·Π°Π΄Π°Π²Π°Ρ‚ΠΈ. Π¦Π΅:

  • Dump/SQL-Ρ„Π°ΠΉΠ».
  • Π“ΠΎΠ»ΠΎΠ²Π½ΠΈΠΉ спосіб – Ρ†Π΅ ΠΊΠ»ΠΎΠ½ PGDATA дирСкторія. Π―ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π±Π΅Ρ€Π΅Ρ‚ΡŒΡΡ Π· Π±Π΅ΠΊΠ°ΠΏ-сСрвСра. Π―ΠΊΡ‰ΠΎ Ρƒ вас Ρ” Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ– Π±Ρ–Π½Π°Ρ€Π½Ρ– Π±Π΅ΠΊΠ°ΠΏΠΈ, Π·Π²Ρ–Π΄Ρ‚ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΊΠ»ΠΎΠ½ΠΈ Ρ€ΠΎΠ±ΠΈΡ‚ΠΈ. Π―ΠΊΡ‰ΠΎ Ρƒ вас Ρ” Ρ…ΠΌΠ°Ρ€ΠΈ, Ρ‚ΠΎ Π·Π° вас Ρ†Π΅ Ρ…ΠΌΠ°Ρ€Π½Π° ΠΊΠΎΠ½Ρ‚ΠΎΡ€Π° Ρ‚ΠΈΠΏΡƒ Амазона Ρ– Google сама Ρ€ΠΎΠ±ΠΈΡ‚ΠΈΠΌΠ΅. Π¦Π΅ Π½Π°ΠΉΠ³ΠΎΠ»ΠΎΠ²Π½Ρ–ΡˆΠΈΠΉ спосіб для ΠΊΠ»ΠΎΠ½Ρ–Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²ΠΈΡ€ΠΎΠ±Π½ΠΈΡ†Ρ‚Π²Π°. Ми Ρ‚Π°ΠΊΠΈΠΌ Ρ‡ΠΈΠ½ΠΎΠΌ якраз Ρ€ΠΎΠ·Π²Π΅Ρ€Ρ‚Π°Ρ”ΠΌΠΎ.
  • Π† останній спосіб ΠΏΡ–Π΄Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ для Π΄ΠΎΡΠ»Ρ–Π΄ΠΆΠ΅Π½ΡŒ, ΠΊΠΎΠ»ΠΈ Ρ” баТання розібратися, як Ρƒ Postgres ΠΏΡ€Π°Ρ†ΡŽΡ” якась ΡˆΡ‚ΡƒΠΊΠ°. Π¦Π΅ pgbench. Π’ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π³Π΅Π½Π΅Ρ€ΡƒΠ²Π°Ρ‚ΠΈ Π·Π° допомогою pgbench. Π¦Π΅ просто ΠΎΠ΄Π½Π° опція "db-pgbench". КаТСш ΠΉΠΎΠΌΡƒ, який scale. Π† всС Π±ΡƒΠ΄Π΅ Ρƒ Ρ…ΠΌΠ°Ρ€Ρ– Π·Π³Π΅Π½Π΅Ρ€ΠΎΠ²Π°Π½ΠΎ, як сказано.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

Π† навантаТСння:

  • НавантаТСння ΠΌΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π²ΠΈΠΊΠΎΠ½ΡƒΠ²Π°Ρ‚ΠΈ Π² ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡ‚Ρ–ΠΊ SQL. Π¦Π΅ Π½Π°ΠΉΠΏΡ€ΠΈΠΌΡ–Ρ‚ΠΈΠ²Π½Ρ–ΡˆΠΈΠΉ спосіб.
  • А ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π΅ΠΌΡƒΠ»ΡŽΠ²Π°Ρ‚ΠΈ навантаТСння. Π† Π΅ΠΌΡƒΠ»ΡŽΠ²Π°Ρ‚ΠΈ ΠΌΠΈ пСрСдусім ΠΌΠΎΠΆΠ΅ΠΌΠΎ Ρ—Ρ— Π² Ρ‚Π°ΠΊΠΈΠΉ спосіб. Нам ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½ΠΎ Π·Π±ΠΈΡ€Π°Ρ‚ΠΈ усі Π»ΠΎΠ³ΠΈ. Π† Ρ†Π΅ болісно. Π― ΠΏΠΎΠΊΠ°ΠΆΡƒ Ρ‡ΠΎΠΌΡƒ. Π† Π·Π° допомогою pgreplay ΠΏΡ€ΠΎΠ³Ρ€Π°Ρ”ΠΌΠΎ, який Π²Π±ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΉ Ρƒ Nancy.
  • Або Ρ–Π½ΡˆΠΈΠΉ Π²Π°Ρ€Ρ–Π°Π½Ρ‚. Π’Π°ΠΊ Π·Π²Π°Π½Π΅ ΠΊΡ€Π°Ρ„Ρ‚ΠΎΠ²Π΅ навантаТСння, якС ΠΌΠΈ Ρ€ΠΎΠ±ΠΈΠΌΠΎ Π· дСякою ΠΊΡ–Π»ΡŒΠΊΡ–ΡΡ‚ΡŽ Π·ΡƒΡΠΈΠ»ΡŒ. ΠΠ½Π°Π»Ρ–Π·ΡƒΡŽΡ‡ΠΈ нашС ΠΏΠΎΡ‚ΠΎΡ‡Π½Π΅ навантаТСння Π½Π° Π±ΠΎΠΉΠΎΠ²Ρƒ систСму, ΠΌΠΈ висмикуємо Ρ‚ΠΎΠΏΠΎΠ²Ρ– Π³Ρ€ΡƒΠΏΠΈ Π·Π°ΠΏΠΈΡ‚Ρ–Π². Π† Π·Π° допомогою pgbench ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π΅ΠΌΡƒΠ»ΡŽΠ²Π°Ρ‚ΠΈ Ρ†Π΅ навантаТСння Π² Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Ρ–Ρ—.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

  • Або ΠΌΠΈ SQL якийсь ΠΌΠ°Ρ”ΠΌΠΎ Π²ΠΈΠΊΠΎΠ½Π°Ρ‚ΠΈ, Ρ‚ΠΎΠ±Ρ‚ΠΎ ΠΌΡ–Π³Ρ€Π°Ρ†Ρ–ΡŽ ΡΠΊΡƒΡΡŒ пСрСвіряємо, індСкс Ρ‚Π°ΠΌ ΡΡ‚Π²ΠΎΡ€ΡŽΡ”ΠΌΠΎ, ANALAZE Ρ‚Π°ΠΌ Π²ΠΈΠΊΠΎΠ½ΡƒΡ”ΠΌΠΎ. Π† дивимося, Ρ‰ΠΎ Π±ΡƒΠ»ΠΎ Π΄ΠΎ Π²Π°ΠΊΡƒΡƒΠΌΡƒ Ρ‚Π° після Π²Π°ΠΊΡƒΡƒΠΌΡƒ. Π—Π°Π³Π°Π»ΠΎΠΌ Π±ΡƒΠ΄ΡŒ-який SQL.
  • Або ΠΌΠΈ Ρƒ ΠΊΠΎΠ½Ρ„Ρ–Π·Ρ– Π·ΠΌΡ–Π½ΡŽΡ”ΠΌΠΎ ΠΎΠ΄ΠΈΠ½ Ρ‡ΠΈ ΠΊΡ–Π»ΡŒΠΊΠ° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ–Π². Ми ΠΌΠΎΠΆΠ΅ΠΌΠΎ сказати, Ρ‰ΠΎΠ± Π½Π°ΠΌ ΠΏΠ΅Ρ€Π΅Π²Ρ–Ρ€ΠΈΠ»ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΊΠ»Π°Π΄, 100 Π·Π½Π°Ρ‡Π΅Π½ΡŒ Ρƒ Амазоні для Π½Π°ΡˆΠΎΡ— Ρ‚Π΅Ρ€Π°Π±Π°ΠΉΡ‚Π½ΠΎΡ— Π±Π°Π·ΠΈ. Π† Π·Π° ΠΊΡ–Π»ΡŒΠΊΠ° Π³ΠΎΠ΄ΠΈΠ½ Ρƒ вас Π±ΡƒΠ΄Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Π―ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ‚Π΅Ρ€Π°Π±Π°ΠΉΡ‚Π½Π° Π±Π°Π·Π° Ρƒ вас Ρ€ΠΎΠ·Π³ΠΎΡ€Ρ‚Π°Ρ‚ΠΈΠΌΠ΅Ρ‚ΡŒΡΡ ΠΊΡ–Π»ΡŒΠΊΠ° Π³ΠΎΠ΄ΠΈΠ½. АлС Π² Ρ€ΠΎΠ·Ρ€ΠΎΠ±Ρ†Ρ– Ρ” ΠΏΠ°Ρ‚Ρ‡, Ρƒ нас ΠΌΠΎΠΆΠ»ΠΈΠ²Π° сСрія, Ρ‚ΠΎΠ±Ρ‚ΠΎ Π²ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ послідовно Π½Π° Ρ‚ΠΎΠΌΡƒ самому сСрвСрі використовувати Ρ‚Ρƒ ΠΆ саму pgdata Ρ– пСрСвіряти. Postgres Π±ΡƒΠ΄Π΅ Ρ€Π΅ΡΡ‚Π°Ρ€Ρ‚ΡƒΠ²Π°Ρ‚ΠΈΡΡŒ, ΠΊΠ΅ΡˆΡ– скидатися. Π† Π²ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ганяти навантаТСння.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

  • ΠŸΡ€ΠΈΡ—ΠΆΠ΄ΠΆΠ°Ρ” дирСкторія, Π² якій ΠΊΡƒΠΏΠ° всяких Ρ„Π°ΠΉΠ»ΠΈΠΊΡ–Π², ΠΏΠΎΡ‡ΠΈΠ½Π°ΡŽΡ‡ΠΈ Π²Ρ–Π΄ ΡΠ½Π°ΠΏΡˆΠΎΡ‚Ρ–Π².stat***. Π† Ρ‚Π°ΠΌ Π½Π°ΠΉΡ†Ρ–ΠΊΠ°Π²Ρ–ΡˆΠ΅ Ρ†Π΅ 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 ΠΏΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

Π―ΠΊΡ– Ρ‚Π΅Ρ…Π½Ρ–Ρ‡Π½Ρ– складності Π½Π° ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Ρ– Ρ€Ρ–Π·Π½ΠΈΡ… ΠΊΠΎΠΌΠΏΠ°Π½Ρ–ΠΉ?

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

Допустимо, ΠΌΠΈ Ρ…ΠΎΡ‡Π΅ΠΌΠΎ Ρ€Π΅Π°Π»ΡŒΠ½Π΅ навантаТСння Π·Π° допомогою Π»ΠΎΠ³Ρ–Π² ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡŽΠ²Π°Ρ‚ΠΈ. Π’Ρ–Π΄ΠΌΡ–Π½Π½Π° ідСя, якщо Ρ†Π΅ написано Π½Π° Open Source pgreplay. Ми ΠΉΠΎΠ³ΠΎ використовуємо. АлС Ρ‰ΠΎΠ± Π²Ρ–Π½ Π΄ΠΎΠ±Ρ€Π΅ ΠΏΡ€Π°Ρ†ΡŽΠ²Π°Π², Π²ΠΈ ΠΏΠΎΠ²ΠΈΠ½Π½Ρ– Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΠΈ ΠΏΠΎΠ²Π½Π΅ логування Π·Π°ΠΏΠΈΡ‚Ρ–Π² Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ Ρ‚Π° Ρ‚Π°ΠΉΠΌΡ–Π½Π³ΠΎΠΌ.

Π’Π°ΠΌ Ρ” дСякі складнощі Ρ‰ΠΎΠ΄ΠΎ тривалості Ρ– timestamp. Ми Ρ†ΡŽ ΠΊΡƒΡ…Π½ΡŽ опустимо. Π“ΠΎΠ»ΠΎΠ²Π½Π΅ питання – Ρ‡ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈ собі Ρ†Π΅ Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΠΈ Ρ‡ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅?

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

https://gist.github.com/NikolayS/08d9b7b4845371d03e195a8d8df43408

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ‚Π°ΠΊΠ°, Ρ‰ΠΎ Ρ†Π΅ ΠΌΠΎΠΆΠ΅ Π±ΡƒΡ‚ΠΈ нСдоступним. Π’ΠΈ ΠΏΠΎΠ²ΠΈΠ½Π½Ρ– ΠΏΠ΅Ρ€Ρˆ Π·Π° всС Π·Ρ€ΠΎΠ·ΡƒΠΌΡ–Ρ‚ΠΈ, який ΠΏΠΎΡ‚Ρ–ΠΊ ΠΏΠΈΡΠ°Ρ‚ΠΈΠΌΠ΅Ρ‚ΡŒΡΡ Π² Π»ΠΎΠ³. Π―ΠΊΡ‰ΠΎ Ρƒ вас Ρ” pg_stat_statements, Π²ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ‚Π°ΠΊΠΈΠΌ Π·Π°ΠΏΠΈΡ‚ΠΎΠΌ (посилання Π±ΡƒΠ΄Π΅ Π² слайдах доступна) Π·Ρ€ΠΎΠ·ΡƒΠΌΡ–Ρ‚ΠΈ, ΡΠΊΡ–Π»ΡŒΠΊΠΈ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·Π½ΠΎ Π±Π°ΠΉΡ‚ Π±ΡƒΠ΄Π΅ писатися Π² сСкунду.

Ми дивимося Π½Π° Π΄ΠΎΠ²ΠΆΠΈΠ½Ρƒ Π·Π°ΠΏΠΈΡ‚Ρƒ. Ми Π½Π΅Ρ…Ρ‚ΡƒΡ”ΠΌΠΎ Ρ‚ΠΈΠΌ Ρ„Π°ΠΊΡ‚ΠΎΠΌ, Ρ‰ΠΎ Ρ‚Π°ΠΌ Π½Π΅ΠΌΠ°Ρ” ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ–Π², Π°Π»Π΅ ΠΌΠΈ Π·Π½Π°Ρ”ΠΌΠΎ Π΄ΠΎΠ²ΠΆΠΈΠ½Ρƒ Π·Π°ΠΏΠΈΡ‚Ρƒ Ρ– Π·Π½Π°Ρ”ΠΌΠΎ ΡΠΊΡ–Π»ΡŒΠΊΠΈ Ρ€Π°Π·Ρ–Π² Π½Π° сСкунду Π²Ρ–Π½ виконувався. Π’Π°ΠΊΠΈΠΌ Ρ‡ΠΈΠ½ΠΎΠΌ ΠΌΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠΎ ΠΏΡ€ΠΈΠΊΠΈΠ½ΡƒΡ‚ΠΈ ΡΠΊΡ–Π»ΡŒΠΊΠΈ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·Π½ΠΎ Π±Π°ΠΉΡ‚ Π² сСкунду. Ми ΠΌΠΎΠΆΠ΅ΠΌΠΎ помилитися Π²Π΄Π²Ρ–Ρ‡Ρ–, Π°Π»Π΅ порядок ΠΌΠΈ Ρ‚ΠΎΡ‡Π½ΠΎ Π·Ρ€ΠΎΠ·ΡƒΠΌΡ–Ρ”ΠΌΠΎ Π² Ρ‚Π°ΠΊΠΈΠΉ спосіб.

Ми ΠΌΠΎΠΆΠ΅ΠΌΠΎ ΠΏΠΎΠ±Π°Ρ‡ΠΈΡ‚ΠΈ, Ρ‰ΠΎ 802 Ρ€Π°Π·Ρ–Π² Π½Π° сСкунду Ρ†Π΅ΠΉ Π·Π°ΠΏΠΈΡ‚ Π²ΠΈΠΊΠΎΠ½ΡƒΡ”Ρ‚ΡŒΡΡ. Π† ΠΌΠΈ Π±Π°Ρ‡ΠΈΠΌΠΎ, Ρ‰ΠΎ bytes_per sec – 300 kB/s ΠΏΠΈΡΠ°Ρ‚ΠΈΠΌΠ΅Ρ‚ΡŒΡΡ плюс мінус. Π† Π·Π°Π·Π²ΠΈΡ‡Π°ΠΉ ΠΌΠΈ Ρ‚Π°ΠΊΠΈΠΉ ΠΏΠΎΡ‚Ρ–ΠΊ ΠΌΠΎΠΆΠ΅ΠΌΠΎ собі Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΠΈ.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

АлС! Π‘ΠΏΡ€Π°Π²Π° Π² Ρ‚ΠΎΠΌΡƒ, Ρ‰ΠΎ Ρ–ΡΠ½ΡƒΡŽΡ‚ΡŒ Ρ€Ρ–Π·Π½Ρ– систСми логування. Π† Π·Π° умовчанням люди Π·Π°Π·Π²ΠΈΡ‡Π°ΠΉ Β«syslogΒ».

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

Π† якщо Ρƒ вас Ρ” syslog, Ρ‚ΠΎ Ρƒ вас ΠΌΠΎΠΆΠ΅ Π±ΡƒΡ‚ΠΈ Ρ‚Π°ΠΊΠ° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ°. Ми Π²Ρ–Π·ΡŒΠΌΠ΅ΠΌΠΎ pgbench, Π²ΠΊΠ»ΡŽΡ‡ΠΈΠΌΠΎ логування Π·Π°ΠΏΠΈΡ‚Ρ–Π² Ρ‚Π° подивимося, Ρ‰ΠΎ Π²ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

Π‘Π΅Π· логування – Ρ†Π΅ стовпчик Π»Ρ–Π²ΠΎΡ€ΡƒΡ‡. Π£ нас Π²ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎ 161 000 TPS. Π— syslog – Ρ†Π΅ Π² Ubuntu 16.04 Ρƒ Амазоні Ρƒ нас Π²ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ 37 000 TPS. А якщо ΠΌΠΈ Π·ΠΌΡ–Π½ΠΈΠΌΠΎ Π½Π° Π΄Π²Π° Ρ–Π½ΡˆΡ– способи логування, Ρ‚ΠΎ Π½Π°Π±Π°Π³Π°Ρ‚ΠΎ ΠΊΡ€Π°Ρ‰Π° ситуація. Π’. Π΅. ΠΌΠΈ ΠΎΡ‡Ρ–ΠΊΡƒΠ²Π°Π»ΠΈ, Ρ‰ΠΎ просядС, Π°Π»Π΅ Π½Π΅ Π½Π°ΡΡ‚Ρ–Π»ΡŒΠΊΠΈ ΠΆ.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

А Π½Π° CentOS 7, Π² якому Ρ‰Π΅ journald Π±Π΅Ρ€Π΅ ΡƒΡ‡Π°ΡΡ‚ΡŒ, ΠΏΠ΅Ρ€Π΅Ρ‚Π²ΠΎΡ€ΡŽΡŽΡ‡ΠΈ Π»ΠΎΠ³ΠΈ Π½Π° Π±Ρ–Π½Π°Ρ€Π½ΠΈΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ для Π·Ρ€ΡƒΡ‡Π½ΠΎΠ³ΠΎ ΠΏΠΎΡˆΡƒΠΊΡƒ Ρ– Ρ‚. Π΄., Ρ‚ΠΎ Ρ‚Π°ΠΌ Π²Π·Π°Π³Π°Π»Ρ– ΠΆΠ°Ρ…, Ρƒ 44 Ρ€Π°Π·ΠΈ просідаємо ΠΏΠΎ TPS.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

Π† Ρ†Π΅ Ρ‚Π΅, Ρ–Π· Ρ‡ΠΈΠΌ ΠΆΠΈΠ²ΡƒΡ‚ΡŒ люди. Π† часто Ρƒ компаніях, особливо Ρƒ Π²Π΅Π»ΠΈΠΊΠΈΡ…, Ρ†Π΅ Π΄ΡƒΠΆΠ΅ складно поміняти. Π―ΠΊΡ‰ΠΎ Π²ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡ—Ρ…Π°Ρ‚ΠΈ Π²Ρ–Π΄ syslog, Ρ‚ΠΎ, Π±ΡƒΠ΄ΡŒ ласка, Ρ—Π΄ΡŒΡ‚Π΅ Π²Ρ–Π΄ нього.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

  • ΠžΡ†Ρ–Π½Ρ–Ρ‚ΡŒ IOPS Ρ‚Π° ΠΏΠΎΡ‚Ρ–ΠΊ запису.
  • ΠŸΠ΅Ρ€Π΅Π²Ρ–Ρ€Ρ‚Π΅ систСму логування.
  • Π―ΠΊΡ‰ΠΎ ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·ΠΎΠ²Π°Π½Π΅ навантаТСння Π½Π°Π΄ΠΌΡ–Ρ€Π½ΠΎ Π²Π΅Π»ΠΈΠΊΠ΅, Ρ€ΠΎΠ·Π³Π»ΡΠ½ΡŒΡ‚Π΅ Π²Π°Ρ€Ρ–Π°Π½Ρ‚ Ρ–Π· сСмплюванням.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

Ми ΠΌΠ°Ρ”ΠΌΠΎ pg_stat_statements. Π―ΠΊ я сказав, Π²Ρ–Π½ ΠΎΠ±ΠΎΠ²'язково ΠΌΠ°Ρ” Π±ΡƒΡ‚ΠΈ. Π† ΠΌΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠΎ взяти Ρ– ΠΊΠΎΠΆΠ½Ρƒ Π³Ρ€ΡƒΠΏΡƒ Π·Π°ΠΏΠΈΡ‚Ρ–Π² ΡΠΏΠ΅Ρ†Ρ–Π°Π»ΡŒΠ½ΠΈΠΌ Ρ‡ΠΈΠ½ΠΎΠΌ описати Ρƒ Ρ„Π°ΠΉΠ»Ρ–. Π† Π΄Π°Π»Ρ– ΠΌΠΎΠΆΠ΅ΠΌΠΎ використовувати Π΄ΡƒΠΆΠ΅ Π·Ρ€ΡƒΡ‡Π½Ρƒ Ρ„Ρ–Ρ‡Ρƒ Π² pgbench - Ρ†Π΅ ΠΌΠΎΠΆΠ»ΠΈΠ²Ρ–ΡΡ‚ΡŒ підсунути ΠΊΡ–Π»ΡŒΠΊΠ° Ρ„Π°ΠΉΠ»Ρ–Π² Π·Π° допомогою ΠΎΠΏΡ†Ρ–Ρ— "-f".

Π’Ρ–Π½ Ρ€ΠΎΠ·ΡƒΠΌΡ–Ρ” Π±Π°Π³Π°Ρ‚ΠΎ "-f". Π† ΠΌΠΎΠΆΠ½Π° сказати Π·Π° допомогою @ Π² ΠΊΡ–Π½Ρ†Ρ–, яка частка Ρƒ ΠΊΠΎΠΆΠ½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»ΠΈΠΊΠ° ΠΏΠΎΠ²ΠΈΠ½Π½Π° Π±ΡƒΡ‚ΠΈ. Π’. Π΅. ΠΌΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠΎ сказати, Ρ‰ΠΎ ось Ρ†Π΅ Π²ΠΈΠΊΠΎΠ½ΡƒΠΉ Ρƒ 10% Π²ΠΈΠΏΠ°Π΄ΠΊΠ°Ρ…, Π° Ρ†Π΅ΠΉ Ρƒ 20%. Π† Ρ†Π΅ Π½Π°Π±Π»ΠΈΠΆΠ°Ρ‚ΠΈΠΌΠ΅ нас Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, Ρ‰ΠΎ ΠΌΠΈ Π±Π°Ρ‡ΠΈΠΌΠΎ Π½Π° production.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

А як ΠΌΠΈ Π·Ρ€ΠΎΠ·ΡƒΠΌΡ–Ρ”ΠΌΠΎ, Ρ‰ΠΎ ΠΌΠΈ ΠΌΠ°Ρ”ΠΌΠΎ Π½Π° production? Π―ΠΊΠ° частка Ρ‚Π° Ρ‡ΠΎΠ³ΠΎ як? Π’ΡƒΡ‚ Ρ‚Ρ€ΠΎΡˆΠΊΠΈ Π²Ρ–Π΄Ρ…Ρ–Π΄ ΡƒΠ±Ρ–ΠΊ. Ми ΠΌΠ°Ρ”ΠΌΠΎ Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ postgres-checkup. Π’Π΅ΠΆ Π±Π°Π·Π° Π² Open Source. Π† ΠΌΠΈ Π·Π°Ρ€Π°Π· Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΉΠΎΠ³ΠΎ Ρ€ΠΎΠ·Π²ΠΈΠ²Π°Ρ”ΠΌΠΎ.

Π’Ρ–Π½ народився Ρ‚Ρ€ΠΎΡ…ΠΈ Π· Ρ–Π½ΡˆΠΈΡ… ΠΏΡ€ΠΈΡ‡ΠΈΠ½. Π§Π΅Ρ€Π΅Π· Ρ‚Π΅, Ρ‰ΠΎ ΠΌΠΎΠ½Ρ–Ρ‚ΠΎΡ€ΠΈΠ½Π³Ρƒ Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚Π½ΡŒΠΎ. Π’. Π΅. Π²ΠΈ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚Π΅, Π΄ΠΈΠ²Ρ–Ρ‚ΡŒΡΡ Π½Π° Π±Π°Π·Ρƒ, Π΄ΠΈΠ²Ρ–Ρ‚ΡŒΡΡ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ, які Ρ”. Π†, як ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π²ΠΈ Ρ€ΠΎΠ±ΠΈΡ‚Π΅ health_check. Π―ΠΊΡ‰ΠΎ Π²ΠΈ досвідчСний DBA, Ρ‚ΠΎ Π²ΠΈ Ρ€ΠΎΠ±ΠΈΡ‚Π΅ health_check. Подивилися використання індСксів Ρ– Ρ‚. Π΄. Π―ΠΊΡ‰ΠΎ Ρƒ вас OKmeter, Ρ‚ΠΎ Ρ‡ΡƒΠ΄ΠΎΠ²ΠΎ. Π¦Π΅ класний ΠΌΠΎΠ½Ρ–Ρ‚ΠΎΡ€ΠΈΠ½Π³ Postgres. OKmeter.io – Π±ΡƒΠ΄ΡŒ ласка, ставтС ΠΉΠΎΠ³ΠΎ Ρ‚Π°ΠΌ Π΄ΡƒΠΆΠ΅ класно всС Π·Ρ€ΠΎΠ±Π»Π΅Π½ΠΎ. Π’Ρ–Π½ ΠΏΠ»Π°Ρ‚Π½ΠΈΠΉ.

Π―ΠΊΡ‰ΠΎ Ρƒ вас ΠΉΠΎΠ³ΠΎ Π½Π΅ΠΌΠ°Ρ”, Ρ‚ΠΎ Π·Π°Π·Π²ΠΈΡ‡Π°ΠΉ Ρƒ вас ΠΌΠ°Π»ΠΎ, Ρ‰ΠΎ Ρ”. Π£ ΠΌΠΎΠ½Ρ–Ρ‚ΠΎΡ€ΠΈΠ½Π³Ρƒ Π·Π°Π·Π²ΠΈΡ‡Π°ΠΉ Ρ” CPU, IO Ρ– Ρ‚Π΅ Ρ–Π· застСрСТСннями, Ρ– всС. А Π½Π°ΠΌ ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½ΠΎ Π±Ρ–Π»ΡŒΡˆΠ΅. Нам ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½ΠΎ Π±Π°Ρ‡ΠΈΡ‚ΠΈ, як ΠΏΡ€Π°Ρ†ΡŽΡ” Π°Π²Ρ‚ΠΎΠ²Π°ΠΊΡƒΡƒΠΌ, як ΠΏΡ€Π°Ρ†ΡŽΡ” checkpoint, Π² io ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½ΠΎ Π²Ρ–Π΄ΠΎΠΊΡ€Π΅ΠΌΠΈΡ‚ΠΈ checkpoint Π²Ρ–Π΄ bgwriter Ρ– Π²Ρ–Π΄ Π±Π΅ΠΊΠ΅Π½Π΄Ρ–Π² Ρ– Ρ‚.Π΄.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌΡƒ, ΠΊΠΎΠ»ΠΈ Ρ‚ΠΈ Π΄ΠΎΠΏΠΎΠΌΠ°Π³Π°Ρ”Ρˆ ΡΠΊΡ–ΠΉΡΡŒ Π²Π΅Π»ΠΈΠΊΡ–ΠΉ ΠΊΠΎΠΌΠΏΠ°Π½Ρ–Ρ—, Π²ΠΎΠ½ΠΈ Π½Π΅ ΠΌΠΎΠΆΡƒΡ‚ΡŒ швидко Π²ΠΏΡ€ΠΎΠ²Π°Π΄ΠΈΡ‚ΠΈ. НС ΠΌΠΎΠΆΡƒΡ‚ΡŒ швидко ΠΊΡƒΠΏΠΈΡ‚ΠΈ OKmeter. МоТливо, Π·Π° ΠΏΡ–Π²Ρ€ΠΎΠΊΡƒ ΠΊΡƒΠΏΠ»ΡΡ‚ΡŒ. НС ΠΌΠΎΠΆΡƒΡ‚ΡŒ швидко поставити ΡΠΊΡ–ΡΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ.

Π† Π² нас народилася ідСя, Ρ‰ΠΎ Π½Π°ΠΌ ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½ΠΈΠΉ Ρ‚Π°ΠΊΠΈΠΉ ΡΠΏΠ΅Ρ†Ρ–Π°Π»ΡŒΠ½ΠΈΠΉ інструмСнт, який Π½Π΅ Π²ΠΈΠΌΠ°Π³Π°Ρ” Π½Ρ–Ρ‡ΠΎΠ³ΠΎ Π² установці, Ρ‚ΠΎΠ±Ρ‚ΠΎ Π²ΠΈ Π²Π·Π°Π³Π°Π»Ρ– Π½Ρ–Ρ‡ΠΎΠ³ΠΎ Π½Π΅ ΠΏΠΎΠ²ΠΈΠ½Π½Ρ– ставити Π½Π° production. Π‘Ρ‚Π°Π²Ρ‚Π΅ собі Π½Π° Π½ΠΎΡƒΡ‚Π±ΡƒΠΊ, Π°Π±ΠΎ Π½Π° observing server, Π·Π²Ρ–Π΄ΠΊΠΈ Π²ΠΈ запускатимСтС. Π† Π²Ρ–Π½ Π°Π½Π°Π»Ρ–Π·ΡƒΠ²Π°Ρ‚ΠΈΠΌΠ΅ Π±Π°Π³Π°Ρ‚ΠΎ Ρ‡ΠΎΠ³ΠΎ: Ρ– ΠΎΠΏΠ΅Ρ€Π°Ρ†Ρ–ΠΉΠ½Ρƒ систСму, Ρ– Ρ„Π°ΠΉΠ»ΠΎΠ²Ρƒ систСму, Ρ– сам Postgres, роблячи ΡΠΊΡ–ΡΡŒ Π»Π΅Π³ΠΊΡ– Π·Π°ΠΏΠΈΡ‚ΠΈ, які ΠΌΠΎΠΆΠ½Π° ганяти прямо Π½Π° production Ρ– Π½Ρ–Ρ‡ΠΎΠ³ΠΎ Π½Π΅ ляТС.

Ми Π·Π°ΠΊΠ»ΠΈΠΊΠ°Π»ΠΈ ΠΉΠΎΠ³ΠΎ Postgres-Checkup. Π―ΠΊΡ‰ΠΎ ΠΏΠΎ-ΠΌΠ΅Π΄ΠΈΡ‡Π½ΠΎΠΌΡƒ, Ρ†Π΅ рСгулярна ΠΏΠ΅Ρ€Π΅Π²Ρ–Ρ€ΠΊΠ° Π·Π΄ΠΎΡ€ΠΎΠ²'я. Π―ΠΊΡ‰ΠΎ Π² Π°Π²Ρ‚ΠΎΠΌΠΎΠ±Ρ–Π»ΡŒΠ½Ρ–ΠΉ Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ†Ρ–, Ρ‚ΠΎ Ρ†Π΅ як ВО. Π’ΠΈ ВО Ρ€ΠΎΠ±ΠΈΡ‚Π΅ Ρƒ машини ΠΊΠΎΠΆΠ½Ρ– ΠΏΡ–Π²Ρ€ΠΎΠΊΡƒ Ρ‡ΠΈ Ρ€Ρ–ΠΊ, Π·Π°Π»Π΅ΠΆΠ½ΠΎ Π²Ρ–Π΄ ΠΌΠ°Ρ€ΠΊΠΈ. А Ρ‡ΠΈ Ρ€ΠΎΠ±ΠΈΡ‚Π΅ Π²ΠΈ Ρ‚Π΅ для своєї Π±Π°Π·ΠΈ? Π’. Π΅. Π§ΠΈ Ρ€ΠΎΠ±ΠΈΡ‚Π΅ Π²ΠΈ Π³Π»ΠΈΠ±ΠΎΠΊΠ΅ дослідТСння рСгулярно? Π™ΠΎΠ³ΠΎ Ρ‚Ρ€Π΅Π±Π° Ρ€ΠΎΠ±ΠΈΡ‚ΠΈ. Π―ΠΊΡ‰ΠΎ Π²ΠΈ Ρ€ΠΎΠ±ΠΈΡ‚Π΅ Π±Π΅ΠΊΠ°ΠΏΠΈ, Ρ‚ΠΎ Ρ€ΠΎΠ±Ρ–Ρ‚ΡŒ Ρ– checkup, Ρ†Π΅ Π½Π΅ мСнш Π²Π°ΠΆΠ»ΠΈΠ²ΠΎ.

Π† ΠΌΠΈ ΠΌΠ°Ρ”ΠΌΠΎ Ρ‚Π°ΠΊΠΈΠΉ інструмСнт. Π’Ρ–Π½ ΠΏΠΎΡ‡Π°Π² Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ зародТуватися лишС Ρ‚Ρ€ΠΈ місяці Ρ‚ΠΎΠΌΡƒ. Π’Ρ–Π½ Ρ‰Π΅ ΠΌΠΎΠ»ΠΎΠ΄ΠΈΠΉ, Π°Π»Π΅ Ρ‚Π°ΠΌ Ρ” Π±Π°Π³Π°Ρ‚ΠΎ Ρ‡ΠΎΠ³ΠΎ.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

Π—Π±ΠΈΡ€Π°Ρ”ΠΌΠΎ Β«Π²ΠΏΠ»ΠΈΠ²ΠΎΠ²Ρ–Β» Π³Ρ€ΡƒΠΏΠΈ Π·Π°ΠΏΠΈΡ‚Ρ–Π² – Π·Π²Ρ–Ρ‚ К003 Ρƒ Postgres-checkup

Π† Ρ‚Π°ΠΌ Ρ” Π³Ρ€ΡƒΠΏΠ° Π·Π²Ρ–Ρ‚Ρ–Π² К. Π’Ρ€ΠΈ Π·Π²Ρ–Ρ‚ΠΈ ΠΏΠΎΠΊΠΈ Ρ‰ΠΎ. Π† Ρ” Ρ‚Π°ΠΊΠΈΠΉ Π·Π²Ρ–Ρ‚ К003. Π’Π°ΠΌ Π²Π΅Ρ€Ρ…Ρ–Π²ΠΊΠ° Π²Ρ–Π΄ pg_stat_statements відсортована ΠΏΠΎ total_time.

Коли ΠΌΠΈ сортуємо ΠΏΠΎ total_time Π³Ρ€ΡƒΠΏΠΈ Π·Π°ΠΏΠΈΡ‚Ρ–Π², Ρ‚ΠΎ Π²Π΅Ρ€Ρ…Ρ–Π²Ρ†Ρ– ΠΌΠΈ Π±Π°Ρ‡ΠΈΠΌΠΎ Ρ‚Π°ΠΊΡƒ Π³Ρ€ΡƒΠΏΡƒ, яка Π²Π°Π½Ρ‚Π°ΠΆΠΈΡ‚ΡŒ Π½Π°ΡˆΡƒ систСму Π½Π°ΠΉΠ±Ρ–Π»ΡŒΡˆΠ΅, Ρ‚. Π΅. споТиває Π±Ρ–Π»ΡŒΡˆΠ΅ рСсурсів. Π§ΠΎΠΌΡƒ я називаю Π³Ρ€ΡƒΠΏΠΈ Π·Π°ΠΏΠΈΡ‚Ρ–Π²? Π’ΠΎΠΌΡƒ Ρ‰ΠΎ ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π²ΠΈΠΊΠΈΠ½ΡƒΠ»ΠΈ. Π¦Π΅ Π½Π΅ Π·Π°ΠΏΠΈΡ‚ΠΈ, Π° Π³Ρ€ΡƒΠΏΠΈ Π·Π°ΠΏΠΈΡ‚Ρ–Π², Ρ‚. Π΅. Π²ΠΎΠ½ΠΈ абстраговані.

Π† якщо ΠΌΠΈ ΠΎΠΏΡ‚ΠΈΠΌΡ–Π·ΡƒΠ²Π°Ρ‚ΠΈΠΌΠ΅ΠΌΠΎ Π·Π²Π΅Ρ€Ρ…Ρƒ Π²Π½ΠΈΠ·, ΠΌΠΈ ΠΏΠΎΠ»Π΅Π³ΡˆΡƒΠ²Π°Ρ‚ΠΈΠΌΠ΅ΠΌΠΎ Π½Π°ΡˆΡ– рСсурси Ρ– Π²Ρ–Π΄ΠΊΠ»Π°Π΄Π°Ρ‚ΠΈΠΌΠ΅ΠΌΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ»ΠΈ Π½Π°ΠΌ Ρ‚Ρ€Π΅Π±Π° Π±ΡƒΠ΄Π΅ Ρ€ΠΎΠ±ΠΈΡ‚ΠΈ Π°ΠΏΠ³Ρ€Π΅ΠΉΠ΄. Π¦Π΅ Π΄ΡƒΠΆΠ΅ Π΄ΠΎΠ±Ρ€ΠΈΠΉ спосіб Π·Π°ΠΎΡ‰Π°Π΄ΠΈΡ‚ΠΈ Π³Ρ€ΠΎΡˆΡ–.

МоТливо, Ρ†Π΅ Π½Π΅ Π΄ΡƒΠΆΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ спосіб як піклування ΠΏΡ€ΠΎ користувачів, Ρ‚ΠΎΠΌΡƒ Ρ‰ΠΎ ΠΌΠΈ, ΠΌΠΎΠΆΠ»ΠΈΠ²ΠΎ, Π½Π΅ Π±Π°Ρ‡ΠΈΠΌΠΎ рідкісні, Π°Π»Π΅ Π΄ΡƒΠΆΠ΅ ΠΏΡ€ΠΈΠΊΡ€Ρ– Π²ΠΈΠΏΠ°Π΄ΠΊΠΈ, ΠΊΠΎΠ»ΠΈ людина Ρ‡Π΅ΠΊΠ°Π»Π° 15 сСкунд. Π£ сумі Π²ΠΎΠ½ΠΈ Ρ‚Π°ΠΊΡ– рідкісні, Ρ‰ΠΎ ΠΌΠΈ Ρ—Ρ… Π½Π΅ Π±Π°Ρ‡ΠΈΠΌΠΎ, Π°Π»Π΅ ΠΌΠΈ рСсурсами займаємося.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

Π©ΠΎ сталося Ρƒ Ρ†Ρ–ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ–? Ми Π·Ρ€ΠΎΠ±ΠΈΠ»ΠΈ Π΄Π²Π° ΡΠ½Π°ΠΏΡˆΠΎΡ‚ΠΈ. Postgres_checkup Π²Π°ΠΌ Π·Ρ€ΠΎΠ±ΠΈΡ‚ΡŒ Π΄Π΅Π»ΡŒΡ‚Ρƒ Π·Π° коТною ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΎΡŽ: Π·Π° total-time, calls, rows, shared_blks_read Ρ– Ρ‚. Π΄. ВсС, Π΄Π΅Π»ΡŒΡ‚Ρƒ обчислив. pg_stat_statements ΠΌΠ°Ρ” Π²Π΅Π»ΠΈΠΊΡƒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π² Ρ‚ΠΎΠΌΡƒ, Ρ‰ΠΎ Π²Ρ–Π½ Π½Π΅ ΠΏΠ°ΠΌ'ятає, ΠΊΠΎΠ»ΠΈ Π±ΡƒΠ² reset. Π―ΠΊΡ‰ΠΎ pg_stat_database ΠΏΠ°ΠΌ'ятає, pg_stat_statements Π½Π΅ ΠΏΠ°ΠΌ'ятає. Π’ΠΈ Π±Π°Ρ‡ΠΈΡ‚Π΅, Ρ‰ΠΎ Ρ‚Π°ΠΌ 1 число, Π° Π·Π²Ρ–Π΄ΠΊΠΈ ΠΌΠΈ Ρ€Π°Ρ…ΡƒΠ²Π°Π»ΠΈ, ΠΌΠΈ Π½Π΅ Π·Π½Π°Ρ”ΠΌΠΎ.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

А Ρ‚ΡƒΡ‚ ΠΌΠΈ Π·Π½Π°Ρ”ΠΌΠΎ, Ρ‚ΡƒΡ‚ Ρƒ нас Ρ” Π΄Π²Π° ΡΠ½Π°ΠΏΡˆΠΎΡ‚ΠΈ. Ми Π·Π½Π°Ρ”ΠΌΠΎ, Ρ‰ΠΎ Π΄Π΅Π»ΡŒΡ‚Π° Π±ΡƒΠ»Π° Ρƒ Ρ†ΡŒΠΎΠΌΡƒ Π²ΠΈΠΏΠ°Π΄ΠΊΡƒ 56 сСкунд. Π”ΡƒΠΆΠ΅ Π½Π΅Π²Π΅Π»ΠΈΠΊΠΈΠΉ ΠΏΡ€ΠΎΠΌΡ–ΠΆΠΎΠΊ. Π—Π° total_time відсортували. Π† Π΄Π°Π»Ρ– ΠΌΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π΄ΠΈΡ„Π΅Ρ€Π΅Π½Ρ†Ρ–ΡŽΠ²Π°Ρ‚ΠΈ, Ρ‚ΠΎΠ±Ρ‚ΠΎ ΠΌΠΈ всі ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ Π΄Ρ–Π»ΠΈΠΌΠΎ Π½Π° Ρ‚Ρ€ΠΈΠ²Π°Π»Ρ–ΡΡ‚ΡŒ. Π―ΠΊΡ‰ΠΎ ΠΌΠΈ ΠΊΠΎΠΆΠ½Ρƒ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΡƒ Ρ€ΠΎΠ·Π΄Ρ–Π»ΠΈΠΌΠΎ Π½Π° Ρ‚Ρ€ΠΈΠ²Π°Π»Ρ–ΡΡ‚ΡŒ, ΠΌΠΈ ΠΌΠ°Ρ‚ΠΈΠΌΠ΅ΠΌΠΎ ΠΊΡ–Π»ΡŒΠΊΡ–ΡΡ‚ΡŒ Π²ΠΈΠΊΠ»ΠΈΠΊΡ–Π² Π·Π° сСкунду.

Π”Π°Π»Ρ– 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%, Ρ†Π΅ ОК.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

Π”Π°Π»Ρ– ΠΌΠΈ ΠΏΠΎΠ²Π΅Ρ€Ρ‚Π°Ρ”ΠΌΠΎΡΡŒ Π΄ΠΎ Π½Π°ΡˆΠΎΡ— Ρ‚Π΅ΠΌΠΈ. Ми ΠΏΠΎΠ²ΠΈΠ½Π½Ρ– Π·Π°ΠΊΡ€Π°Ρ„Ρ‚ΠΈ workload. Ми Π±Π΅Ρ€Π΅ΠΌΠΎ Π·Π²Π΅Ρ€Ρ…Ρƒ Π²Π½ΠΈΠ·, ΠΏΠΎΠΊΠΈ Π½Π΅ Π½Π°Π±Π΅Ρ€Π΅ΠΌΠΎ 80% Π°Π±ΠΎ 90%. Π—Π°Π·Π²ΠΈΡ‡Π°ΠΉ Ρ†Π΅ 10-20 Π³Ρ€ΡƒΠΏ. Π† Ρ€ΠΎΠ±ΠΈΠΌΠΎ Ρ„Π°ΠΉΠ»ΠΈ для pgbench. Π’Π°ΠΌ використовуємо random. Π†Π½ΠΎΠ΄Ρ– Ρ†Π΅, Π½Π° Таль, Π½Π΅ Π²ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ. Π† Π² Postgres 12 Π±ΡƒΠ΄Π΅ Π±Ρ–Π»ΡŒΡˆΠ΅ моТливостСй використовувати Ρ‚Π°ΠΊΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄.

Π† Π΄Π°Π»Ρ– ΠΌΠΈ Ρ‚Π°ΠΊΠΈΠΌ Ρ‡ΠΈΠ½ΠΎΠΌ Π½Π°Π±ΠΈΡ€Π°Ρ”ΠΌΠΎ 80-90% Π·Π° total_time. Π©ΠΎ Π΄Π°Π»Ρ– підставляти після "@"? Ми дивимося Π½Π° calls, дивимося, ΡΠΊΡ–Π»ΡŒΠΊΠΈ відсотків Ρ– Ρ€ΠΎΠ·ΡƒΠΌΡ–Ρ”ΠΌΠΎ, Ρ‰ΠΎ ΠΌΠΈ ось Ρ‚ΡƒΡ‚ ΠΌΠ°Ρ”ΠΌΠΎ ΡΡ‚Ρ–Π»ΡŒΠΊΠΈ відсотків. Π— Ρ†ΠΈΡ… відсотків ΠΌΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π·Ρ€ΠΎΠ·ΡƒΠΌΡ–Ρ‚ΠΈ, як балансувати ΠΊΠΎΠΆΠ΅Π½ Ρ–Π· Ρ„Π°ΠΉΠ»ΠΈΠΊΡ–Π². ΠŸΡ–ΡΠ»Ρ Ρ†ΡŒΠΎΠ³ΠΎ ΠΌΠΈ використовуємо pgbench Ρ‚Π° ΠΏΠΎΡ—Ρ…Π°Π»ΠΈ ΠΏΡ€Π°Ρ†ΡŽΠ²Π°Ρ‚ΠΈ.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

Π„ Ρ‰Π΅ Ρƒ нас К001 Ρ‚Π° К002.

К001 – Ρ†Π΅ ΠΎΠ΄ΠΈΠ½ Π²Π΅Π»ΠΈΠΊΠΈΠΉ рядок Ρ–Π· Ρ‡ΠΎΡ‚ΠΈΡ€ΠΌΠ° підрядками. Π¦Π΅ характСристика всього нашого навантаТСння. Π”ΠΈΠ²Ρ–Ρ‚ΡŒΡΡ Π΄Ρ€ΡƒΠ³Ρƒ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ Ρ– Π΄Ρ€ΡƒΠ³Π΅ підрядТСння. Ми Π±Π°Ρ‡ΠΈΠΌΠΎ, Ρ‰ΠΎ ΠΏΡ–Π²Ρ‚ΠΎΡ€ΠΈ сСкунди Π·Π° сСкунду ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·Π½ΠΎ, Ρ‚ΠΎΠ±Ρ‚ΠΎ якщо Π±ΡƒΠ΄Π΅ Π΄Π²Π° ядра, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅ Π΄ΠΎΠ±Ρ€Π΅. Π‘ΡƒΠ΄Π΅ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·Π½ΠΎ 75% завантаТСння. Π† Ρ†Π΅ Ρ‚Π°ΠΊ ΠΏΡ€Π°Ρ†ΡŽΠ²Π°Ρ‚ΠΈΠΌΠ΅. Π―ΠΊΡ‰ΠΎ ΠΌΠΈ ΠΌΠ°Ρ‚ΠΈΠΌΠ΅ΠΌΠΎ 10 ядСр, Ρ‚ΠΎ ΠΌΠΈ Π²Π·Π°Π³Π°Π»Ρ– Π±ΡƒΠ΄Π΅ΠΌΠΎ спокійні. Π’Π°ΠΊ ΠΌΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠΎ ΠΎΡ†Ρ–Π½ΡŽΠ²Π°Ρ‚ΠΈ рСсурси.

К002 – Ρ†Π΅ називаю класи Π·Π°ΠΏΠΈΡ‚Ρ–Π², Ρ‚. Π΅. SELECT, INSERT, UPDATE, DELETE. Π† ΠΎΠΊΡ€Π΅ΠΌΠΎ SELECT FOR UPDATE, Π±ΠΎ Π²Ρ–Π½ Π»ΠΎΡ‡ΠΈΡ‚ΡŒ.

Π† Ρ‚ΡƒΡ‚ ΠΌΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π·Ρ€ΠΎΠ±ΠΈΡ‚ΠΈ висновок, Ρ‰ΠΎ SELECT Π·Π²ΠΈΡ‡Π°ΠΉΠ½Ρ– Ρ‡ΠΈΡ‚Π°Ρ‡Ρ– - 82% Π²Ρ–Π΄ усіх Π²ΠΈΠΊΠ»ΠΈΠΊΡ–Π², Π°Π»Π΅ ΠΏΡ€ΠΈ Ρ†ΡŒΠΎΠΌΡƒ - 74% total_time. Π’. Π΅. Π²ΠΎΠ½ΠΈ Π±Π°Π³Π°Ρ‚ΠΎ Π²ΠΈΠΊΠ»ΠΈΠΊΠ°ΡŽΡ‚ΡŒΡΡ, Π°Π»Π΅ мСншС ΡΠΏΠΎΠΆΠΈΠ²Π°ΡŽΡ‚ΡŒ рСсурс.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

Π† повСртаємося Π΄ΠΎ запитання: "Π―ΠΊ Π½Π°ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΏΡ–Π΄Ρ–Π±Ρ€Π°Ρ‚ΠΈ shared_buffers?". Π― ΡΠΏΠΎΡΡ‚Π΅Ρ€Ρ–Π³Π°ΡŽ, Ρ‰ΠΎ Π±Ρ–Π»ΡŒΡˆΡ–ΡΡ‚ΡŒ Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΡ–Π² Π±ΡƒΠ΄ΡƒΡŽΡ‚ΡŒΡΡ Π½Π° Ρ–Π΄Π΅Ρ— - Π΄Π°Π²Π°ΠΉΡ‚Π΅ подивимося, якою Π±ΡƒΠ΄Π΅ Ρ‡Π΅Ρ€Π΅Π· putput, Ρ‚ΠΎΠ±Ρ‚ΠΎ якою Π±ΡƒΠ΄Π΅ пропускна Π·Π΄Π°Ρ‚Π½Ρ–ΡΡ‚ΡŒ. Π’ΠΎΠ½Π° Π² TPS Π·Π°Π·Π²ΠΈΡ‡Π°ΠΉ Π²ΠΈΠΌΡ–Ρ€ΡŽΡ”Ρ‚ΡŒΡΡ Π°Π±ΠΎ QPS.

Π† ΠΌΠΈ намагаємося Π²ΠΈΡ‡Π°Π²ΠΈΡ‚ΠΈ Π²Ρ–Π΄ Ρ‚Π°Ρ‡ΠΊΠΈ Π·Π° допомогою ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ–Π² Π²Ρ–Π΄ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ ΡΠΊΠ½Π°ΠΉΠ±Ρ–Π»ΡŒΡˆΠ΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†Ρ–ΠΉ Π½Π° сСкунду. Π’ΡƒΡ‚ Ρ‚Ρ–Π»ΡŒΠΊΠΈ 311 Π² сСкунду для select.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

АлС Π½Ρ–Ρ…Ρ‚ΠΎ Π½Π΅ Ρ—Π·Π΄ΠΈΡ‚ΡŒ Π½Π° Ρ€ΠΎΠ±ΠΎΡ‚Ρƒ Ρ‚Π° Π½Π°Π·Π°Π΄ Π΄ΠΎΠ΄ΠΎΠΌΡƒ Π½Π° ΠΌΠ°ΡˆΠΈΠ½Ρ– Π½Π° ΠΏΠΎΠ²Π½Ρ–ΠΉ ΡˆΠ²ΠΈΠ΄ΠΊΠΎΡΡ‚Ρ–. Π¦Π΅ Π±Π΅Π·Π³Π»ΡƒΠ·Π΄ΠΎ. Π’Π°ΠΊ само Ρ– Π· Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…. Ми Π½Π΅ ΠΏΠΎΠ²ΠΈΠ½Π½Ρ– Ρ—Π·Π΄ΠΈΡ‚ΠΈ Π½Π° ΠΏΠΎΠ²Π½Ρ–ΠΉ ΡˆΠ²ΠΈΠ΄ΠΊΠΎΡΡ‚Ρ–, Ρ‚Π° Π½Ρ–Ρ…Ρ‚ΠΎ Ρ†ΡŒΠΎΠ³ΠΎ Π½Π΅ Ρ€ΠΎΠ±ΠΈΡ‚ΡŒ. Ніхто Π½Π΅ ΠΆΠΈΠ²Π΅ Ρƒ production, Ρƒ якого 100% CPU. Π₯ΠΎΡ‡Π°, ΠΌΠΎΠΆΠ΅, Ρ…Ρ‚ΠΎΡΡŒ Ρ– ΠΆΠΈΠ²Π΅, Π°Π»Π΅ Ρ†Π΅ Π½Π΅Π΄ΠΎΠ±Ρ€Π΅.

ІдСя Ρ‚Π°ΠΊΠ°, Ρ‰ΠΎ ΠΌΠΈ Ρ—Π·Π΄ΠΈΠΌΠΎ Π·Π°Π·Π²ΠΈΡ‡Π°ΠΉ відсотках Π½Π° 20% Π²Ρ–Π΄ моТливості, Π±Π°ΠΆΠ°Π½ΠΎ Π½Π΅ Π²ΠΈΡ‰Π΅ 50%. Π† ΠΌΠΈ намагаємося час Π²Ρ–Π΄Π³ΡƒΠΊΡƒ ΠΎΠΏΡ‚ΠΈΠΌΡ–Π·ΡƒΠ²Π°Ρ‚ΠΈ для Π½Π°ΡˆΠΈΡ… користувачів ΠΏΠ΅Ρ€Ρˆ Π·Π° всС. Π’. Π΅. ΠΌΠΈ ΠΏΠΎΠ²ΠΈΠ½Π½Ρ– Π½Π°ΡˆΡ– Ρ€ΡƒΡ‡ΠΊΠΈ ΠΊΡ€ΡƒΡ‚ΠΈΡ‚ΠΈ Ρ‚Π°ΠΊ, Ρ‰ΠΎΠ± Π±ΡƒΠ»ΠΎ ΠΌΡ–Π½Ρ–ΠΌΠ°Π»ΡŒΠ½Π΅ latency ΠΏΡ€ΠΈ 20% ΡˆΠ²ΠΈΠ΄ΠΊΠΎΡΡ‚Ρ–, ΡƒΠΌΠΎΠ²Π½ΠΎ. Π¦Π΅ Ρ‚Π°ΠΊΠ° ідСя, яку ΠΌΠΈ Ρ‚Π°ΠΊΠΎΠΆ намагаємося використати Ρƒ Π½Π°ΡˆΠΈΡ… СкспСримСнтах.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

Π† Π½Π° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†Ρ–Ρ—:

  • Обов'язково Π·Ρ€ΠΎΠ±Ρ–Ρ‚ΡŒ Database Lab.
  • По моТливості Π·Ρ€ΠΎΠ±Ρ–Ρ‚ΡŒ on demand, Ρ‰ΠΎΠ± розгорталося Π½Π° якийсь час – ΠΏΠΎΠ³Ρ€Π°Π»ΠΈ Ρ‚Π° Π²ΠΈΠΊΠΈΠ½ΡƒΠ»ΠΈ. Π―ΠΊΡ‰ΠΎ Ρƒ вас Ρ…ΠΌΠ°Ρ€ΠΈ, Ρ‚ΠΎ Ρ†Π΅ само собою, Ρ‚ΠΎΠ±Ρ‚ΠΎ ΠΌΠ°ΠΉΡ‚Π΅ Π±Π°Π³Π°Ρ‚ΠΎ standing.
  • Π‘ΡƒΠ΄ΡŒΡ‚Π΅ Π΄ΠΎΠΏΠΈΡ‚Π»ΠΈΠ²ΠΈΠΌΠΈ. Π† якщо Ρ‰ΠΎΡΡŒ Π½Π΅ Ρ‚Π°ΠΊ, Ρ‚ΠΎ пСрСвіряйтС СкспСримСнтами, як Π²ΠΎΠ½ΠΎ ΠΏΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ. Nancy ΠΌΠΎΠΆΠ½Π° використовувати для навчання сСбС, Ρ‰ΠΎΠ± пСрСвіряти, як ΠΏΡ€Π°Ρ†ΡŽΡ” Π±Π°Π·Π°.
  • Π† ΠΏΡ€ΠΈΡ†Ρ–Π»ΡŽΠΉΡ‚Π΅ΡΡŒ Π½Π° ΠΌΡ–Π½Ρ–ΠΌΠ°Π»ΡŒΠ½ΠΈΠΉ час Π²Ρ–Π΄Π³ΡƒΠΊΡƒ.
  • Π† Π½Π΅ бійтСся Π²ΠΈΡ…Ρ–Π΄Π½ΠΈΠΊΡ–Π² Postgres. Коли Π²ΠΈ ΠΏΡ€Π°Ρ†ΡŽΡ”Ρ‚Π΅ Π· Π²ΠΈΡ…Ρ–Π΄Π½ΠΈΠΌΠΈ Π΄ΠΆΠ΅Ρ€Π΅Π»Π°ΠΌΠΈ, Π²ΠΈ ΠΏΠΎΠ²ΠΈΠ½Π½Ρ– Π·Π½Π°Ρ‚ΠΈ Π°Π½Π³Π»Ρ–ΠΉΡΡŒΠΊΡƒ. Π’Π°ΠΌ Π΄ΡƒΠΆΠ΅ Π±Π°Π³Π°Ρ‚ΠΎ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€Ρ–Π², Ρ‚Π°ΠΌ усС пояснСно.
  • Π† пСрСвіряйтС Π·Π΄ΠΎΡ€ΠΎΠ²'я Π±Π°Π·ΠΈ рСгулярно, Ρ…ΠΎΡ‡Π° Π± Ρ€Π°Π· Π½Π° Ρ‚Ρ€ΠΈ місяці Ρ€ΡƒΠΊΠ°ΠΌΠΈ Π°Π±ΠΎ Postgres-checkup.

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

ΠŸΠΈΡ‚Π°Π½Π½Ρ

Π’Π΅Π»ΠΈΠΊΠ΅ спасибі! Π”ΡƒΠΆΠ΅ Ρ†Ρ–ΠΊΠ°Π²Π° Ρ€Ρ–Ρ‡.

Π”Π²Ρ– ΡˆΡ‚ΡƒΠΊΠΈ.

Π’Π°ΠΊ, Π΄Π²Ρ– ΡˆΡ‚ΡƒΠΊΠΈ. Π’Ρ–Π»ΡŒΠΊΠΈ я Π½Π΅ зовсім Π·Ρ€ΠΎΠ·ΡƒΠΌΡ–Π². Коли ΠΌΠΈ ΠΏΡ€Π°Ρ†ΡŽΡ”ΠΌΠΎ Π· 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. Π† Π±Π°Π³Π°Ρ‚ΡŒΠΎΠΌ Ρ†ΡŒΠΎΠ³ΠΎ вистачає.

Π—Π°Π·Π²ΠΈΡ‡Π°ΠΉ Ρ‚Π°ΠΊ.

Π’Ρ–Π΄Π΅ΠΎ:

PS Π’Ρ–Π΄ сСбС Π΄ΠΎΠ΄Π°ΠΌ, Ρ‰ΠΎ якщо Π² Postgres Π·Π½Π°Ρ…ΠΎΠ΄ΡΡ‚ΡŒΡΡ ΠΊΠΎΠ½Ρ„Π΅Π΄ΠΈΡ†Ρ–ΠΉΠ½Ρ– Π΄Π°Π½Ρ– Ρ– Ρ—ΠΌ Π½Π΅ ΠΌΠΎΠΆΠ½Π° потрапляти Π² тСстовС оточСння, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½Π° скористатися PostgreSQL Anonymizer. Π‘Ρ…Π΅ΠΌΠ° ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·Π½ΠΎ Ρ‚Π°ΠΊΠ°:

ΠŸΡ€ΠΎΠΌΠΈΡΠ»ΠΎΠ²ΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π΄ΠΎ Ρ‚ΡŽΠ½Ρ–Π½Π³Ρƒ PostgreSQL: СкспСримСнти Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½ΠΈΡ…". Микола Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ²

Π”ΠΆΠ΅Ρ€Π΅Π»ΠΎ: habr.com

Π”ΠΎΠ΄Π°Ρ‚ΠΈ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ Π°Π±ΠΎ Π²Ρ–Π΄Π³ΡƒΠΊ