Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

Вранскрипция Π½Π° Π΄ΠΎΠΊΠ»Π°Π΄Π° ΠΎΡ‚ 2015 Π³. Π½Π° АлСксСй ЛСсовски β€žΠ—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQLβ€œ

ΠžΡ‚ΠΊΠ°Π· ΠΎΡ‚ отговорност ΠΎΡ‚ Π°Π²Ρ‚ΠΎΡ€Π° Π½Π° Π΄ΠΎΠΊΠ»Π°Π΄Π°: ΠžΠ±Ρ€ΡŠΡ‰Π°ΠΌ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Π΅ Ρ‚ΠΎΠ·ΠΈ Π΄ΠΎΠΊΠ»Π°Π΄ Π΅ ΠΎΡ‚ Π½ΠΎΠ΅ΠΌΠ²Ρ€ΠΈ 2015 Π³. - ΠΈΠ·ΠΌΠΈΠ½Π°Ρ…Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ 4 Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅. ВСрсия 9.4, обсъдСна Π² Π΄ΠΎΠΊΠ»Π°Π΄Π°, Π²Π΅Ρ‡Π΅ Π½Π΅ сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°. ΠŸΡ€Π΅Π· послСднитС 4 Π³ΠΎΠ΄ΠΈΠ½ΠΈ бяха пуснати 5 Π½ΠΎΠ²ΠΈ издания, Π² ΠΊΠΎΠΈΡ‚ΠΎ сС появиха ΠΌΠ½ΠΎΠ³ΠΎ нововъвСдСния, подобрСния ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π½Π° статистиката, Π° някои ΠΎΡ‚ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΈΡ‚Π΅ са остарСли ΠΈ нСподходящи. Π”ΠΎΠΊΠ°Ρ‚ΠΎ ΠΏΡ€Π΅Π³Π»Π΅ΠΆΠ΄Π°Ρ…, сС ΠΎΠΏΠΈΡ‚Π°Ρ… Π΄Π° ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°ΠΌ Ρ‚Π΅Π·ΠΈ мСста, Π·Π° Π΄Π° Π½Π΅ Π²ΠΈ ΠΏΠΎΠ΄Π²Π΅Π΄Π° читатСля. НС прСнаписах Ρ‚Π΅Π·ΠΈ мСста, ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‚ тях ΠΈ Π² Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ²Π° Ρ‰Π΅ сС ΠΏΠΎΠ»ΡƒΡ‡ΠΈ съвсСм Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½ Π΄ΠΎΠΊΠ»Π°Π΄.

Π‘Π£Π‘Π” PostgreSQL Π΅ ΠΎΠ³Ρ€ΠΎΠΌΠ΅Π½ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ ΠΈ Ρ‚ΠΎΠ·ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ подсистСми, ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½ΠΈΡ€Π°Π½Π°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° ΠΊΠΎΠΈΡ‚ΠΎ пряко влияС Π²ΡŠΡ€Ρ…Ρƒ производитСлността Π½Π° Π‘Π£Π‘Π”. По Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° сС ΡΡŠΠ±ΠΈΡ€Π°Ρ‚ статистичСски Π΄Π°Π½Π½ΠΈ ΠΈ информация Π·Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈΡ‚Π΅, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΈ позволява Π΄Π° ΠΎΡ†Π΅Π½ΠΈΡ‚Π΅ СфСктивността Π½Π° PostgreSQL ΠΈ Π΄Π° ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ΅ΠΌΠ΅Ρ‚Π΅ ΠΌΠ΅Ρ€ΠΊΠΈ Π·Π° подобряванС Π½Π° производитСлността. Π’Π°Π·ΠΈ информация ΠΎΠ±Π°Ρ‡Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈ Π΅ прСдставСна Π² доста опростСн Π²ΠΈΠ΄. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚Π°Π·ΠΈ информация ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ ΠΉ понякога Π΅ напълно Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»Π½Π° Π·Π°Π΄Π°Ρ‡Π° ΠΈ β€žΠ·ΠΎΠΎΠΏΠ°Ρ€ΠΊΡŠΡ‚β€œ ΠΎΡ‚ инструмСнти ΠΈ ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ ΠΌΠΎΠΆΠ΅ лСсно Π΄Π° ΠΎΠ±ΡŠΡ€ΠΊΠ° Π΄ΠΎΡ€ΠΈ Π½Π°ΠΏΡ€Π΅Π΄Π½Π°Π» DBA.
Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски


Π”ΠΎΠ±ΡŠΡ€ Π΄Π΅Π½ Казвам сС АлСксСй. ΠšΠ°ΠΊΡ‚ΠΎ ΠΊΠ°Π·Π° Иля, Ρ‰Π΅ говоря Π·Π° статистиката Π½Π° PostgreSQL.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

Бтатистика Π·Π° дСйността Π½Π° PostgreSQL. PostgreSQL ΠΈΠΌΠ° Π΄Π²Π΅ статистики. Бтатистика Π½Π° дСйността, която Ρ‰Π΅ бъдС обсъдСна. И статистика Π½Π° ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‡ΠΈΠΊΠ° Π·Π° разпространСниС Π½Π° Π΄Π°Π½Π½ΠΈ. Π©Π΅ говоря ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ Π·Π° статистиката Π·Π° дСйността Π½Π° PostgreSQL, която Π½ΠΈ позволява Π΄Π° ΠΏΡ€Π΅Ρ†Π΅Π½ΠΈΠΌ СфСктивността ΠΈ ΠΏΠΎ някакъв Π½Π°Ρ‡ΠΈΠ½ Π΄Π° я ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈΠΌ.

Π©Π΅ Π²ΠΈ ΠΊΠ°ΠΆΠ° ΠΊΠ°ΠΊ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ статистиката Π·Π° Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠΌΠ°Ρ‚Π΅ ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ°Ρ‚Π΅.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

Какво няма Π΄Π° ΠΈΠΌΠ° Π² ΠΎΡ‚Ρ‡Π΅Ρ‚Π°? Π’ Π΄ΠΎΠΊΠ»Π°Π΄Π° няма Π΄Π° засягам статистиката Π½Π° ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‡ΠΈΠΊΠ°, Π·Π°Ρ‰ΠΎΡ‚ΠΎ. Ρ‚ΠΎΠ²Π° Π΅ ΠΎΡ‚Π΄Π΅Π»Π½Π° Ρ‚Π΅ΠΌΠ° Π·Π° ΠΎΡ‚Π΄Π΅Π»Π΅Π½ Π΄ΠΎΠΊΠ»Π°Π΄ Π·Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊ Π΄Π°Π½Π½ΠΈΡ‚Π΅ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Π² Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ ΠΈ ΠΊΠ°ΠΊ ΠΏΠ»Π°Π½ΠΎΠ²Ρ‰ΠΈΠΊΡŠΡ‚ Π½Π° заявки ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° прСдстава Π·Π° качСствСнитС ΠΈ количСствСнитС характСристики Π½Π° Ρ‚Π΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ.

И няма Π΄Π° ΠΈΠΌΠ° ΠΏΡ€Π΅Π³Π»Π΅Π΄ΠΈ Π½Π° инструмСнти, няма Π΄Π° сравнявам Π΅Π΄ΠΈΠ½ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ с Π΄Ρ€ΡƒΠ³. Няма Π΄Π° ΠΈΠΌΠ° Ρ€Π΅ΠΊΠ»Π°ΠΌΠ°. НСка Π³ΠΎ Π·Π°Ρ€Π΅ΠΆΠ΅ΠΌ.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

Искам Π΄Π° Π²ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ°, Ρ‡Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° статистика Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ. НСобходимо Π΅. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ Π³ΠΎ Π±Π΅Π·ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎ. Всичко, ΠΎΡ‚ ΠΊΠΎΠ΅Ρ‚ΠΎ сС Π½ΡƒΠΆΠ΄Π°Π΅ΠΌ, Π΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ SQL ΠΈ основни познания ΠΏΠΎ SQL.

И Ρ‰Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΊΠΎΠΈ статистики Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅ΠΌ Π·Π° Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

Ако ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌ PostgreSQL ΠΈ изпълним ΠΊΠΎΠΌΠ°Π½Π΄Π° Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма, Π·Π° Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ процСситС, Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΠΌ "Ρ‡Π΅Ρ€Π½Π° кутия". Π©Π΅ Π²ΠΈΠ΄ΠΈΠΌ някакви процСси, ΠΊΠΎΠΈΡ‚ΠΎ правят Π½Π΅Ρ‰ΠΎ ΠΈ ΠΏΠΎ ΠΈΠΌΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»Π½ΠΎ Π΄Π° си прСдставим ΠΊΠ°ΠΊΠ²ΠΎ правят Ρ‚Π°ΠΌ, ΠΊΠ°ΠΊΠ²ΠΎ правят. Но Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ Ρ‚ΠΎΠ²Π° Π΅ Ρ‡Π΅Ρ€Π½Π° кутия, Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌ Π²ΡŠΡ‚Ρ€Π΅.

МоТСм Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° процСсора top, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΎΡ‚ някои систСмни ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ, Π½ΠΎ няма Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌ Π²ΡŠΡ‚Ρ€Π΅ Π² PostgreSQL. Π—Π° Ρ‚ΠΎΠ²Π° ΠΈΠΌΠ°ΠΌΠ΅ Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈ инструмСнти.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

И ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π°ΠΉΠΊΠΈ ΠΏΠΎ-Π½Π°Ρ‚Π°Ρ‚ΡŠΠΊ, Ρ‰Π΅ Π²ΠΈ ΠΊΠ°ΠΆΠ° къдС Π΅ ΠΏΡ€Π΅ΠΊΠ°Ρ€Π°Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ. Ако прСдставим PostgreSQL ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° Ρ‚Π°ΠΊΠ°Π²Π° схСма, Ρ‚ΠΎΠ³Π°Π²Π° Ρ‰Π΅ бъдС възмоТно Π΄Π° сС ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ къдС сС ΠΈΠ·Ρ€Π°Π·Ρ…ΠΎΠ΄Π²Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ. Π’ΠΎΠ²Π° са Π΄Π²Π΅ Π½Π΅Ρ‰Π°: Ρ‚ΠΎΠ²Π° Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° клиСнтски заявки ΠΎΡ‚ прилоТСния ΠΈ Ρ„ΠΎΠ½ΠΎΠ²ΠΈΡ‚Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ PostgreSQL изпълнява, Π·Π° Π΄Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ.

Ако Π·Π°ΠΏΠΎΡ‡Π½Π΅ΠΌ Π΄Π° Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π² горния ляв ъгъл, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊ сС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‚ клиСнтскитС заявки. Заявката ΠΈΠ΄Π²Π° ΠΎΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΈ сС отваря клиСнтска сСсия Π·Π° ΠΏΠΎ-Π½Π°Ρ‚Π°Ρ‚ΡŠΡˆΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°. Заявката сС ΠΏΡ€Π΅Π΄Π°Π²Π° Π½Π° ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‡ΠΈΠΊΠ°. ΠŸΠ»Π°Π½ΠΈΡ€Π°Ρ‰ΠΈΡΡ‚ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π° ΠΏΠ»Π°Π½ Π·Π° заявка. Π˜Π·ΠΏΡ€Π°Ρ‰Π° Π³ΠΎ ΠΏΠΎ-Π½Π°Ρ‚Π°Ρ‚ΡŠΠΊ Π·Π° изпълнСниС. Има някакъв Π²ΠΈΠ΄ Π±Π»ΠΎΠΊ I/O Π΄Π°Π½Π½ΠΈ, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ ΠΈ индСкси. НСобходимитС Π΄Π°Π½Π½ΠΈ сС Ρ‡Π΅Ρ‚Π°Ρ‚ ΠΎΡ‚ дисковСтС Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π² спСциална област, Π½Π°Ρ€Π΅Ρ‡Π΅Π½Π° "сподСлСни Π±ΡƒΡ„Π΅Ρ€ΠΈ". Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΡ‚ заявката, Π°ΠΊΠΎ са Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, изтривания, сС записват Π² Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€Π° Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈΡ‚Π΅ Π² WAL. Част ΠΎΡ‚ статистичСската информация Π²Π»ΠΈΠ·Π° Π² рСгистрационния Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ ΠΊΠΎΠ»Π΅ΠΊΡ‚ΠΎΡ€Π° Π½Π° статистичСски Π΄Π°Π½Π½ΠΈ. И Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΡŠΡ‚ ΠΎΡ‚ заявката сС Π²Ρ€ΡŠΡ‰Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈ всичко с Π½ΠΎΠ²Π° заявка.

Какво ΠΈΠΌΠ°ΠΌΠ΅ с Ρ„ΠΎΠ½ΠΎΠ²ΠΈΡ‚Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ Ρ„ΠΎΠ½ΠΎΠ²ΠΈΡ‚Π΅ процСси? ИмамС няколко процСса, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ Π² Π½ΠΎΡ€ΠΌΠ°Π»Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°. Π’Π΅Π·ΠΈ процСси ΡΡŠΡ‰ΠΎ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ Ρ€Π°Π·Π³Π»Π΅Π΄Π°Π½ΠΈ Π² Π΄ΠΎΠΊΠ»Π°Π΄Π°: Ρ‚ΠΎΠ²Π° са autovacuum, checkpointer, процСси, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с рСпликация, Ρ„ΠΎΠ½ΠΎΠ² запис. Π©Π΅ засСгна всСки ΠΎΡ‚ тях, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Π΄ΠΎΠΊΠ»Π°Π΄Π²Π°ΠΌ.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

Какви са ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅ със статистиката?

  • Много информация. PostgreSQL 9.4 прСдоставя 109 ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ Π·Π° ΠΏΡ€Π΅Π³Π»Π΅Π΄ Π½Π° статистичСски Π΄Π°Π½Π½ΠΈ. Ако ΠΎΠ±Π°Ρ‡Π΅ Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ, схСми, Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, Ρ‚ΠΎΠ³Π°Π²Π° всички Ρ‚Π΅Π·ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Ρ‰Π΅ трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈ ΠΏΠΎ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ Π±Ρ€ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ, Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ. ВоСст ΠΈΠΌΠ° ΠΎΡ‰Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ информация. И Π΅ ΠΌΠ½ΠΎΠ³ΠΎ лСсно Π΄Π° сС ΡƒΠ΄Π°Π²ΠΈΡˆ Π² Π½Π΅Π³ΠΎ.
  • БлСдващият ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π΅, Ρ‡Π΅ статистиката сС прСдставя ΠΎΡ‚ броячи. Ако ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌ Ρ‚Π°Π·ΠΈ статистика, Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΠΌ постоянно нарастващи броячи. И Π°ΠΊΠΎ Π΅ ΠΌΠΈΠ½Π°Π»ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅ ΠΎΡ‚ Π½ΡƒΠ»ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° статистиката, Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΠΌ ΠΌΠΈΠ»ΠΈΠ°Ρ€Π΄ΠΈ стойности. И Π½ΠΈΡ‰ΠΎ Π½Π΅ Π½ΠΈ ΠΊΠ°Π·Π²Π°Ρ‚.
  • Няма история. Ако ΠΈΠΌΠ°Ρ‚Π΅ някаква ΠΏΠΎΠ²Ρ€Π΅Π΄Π°, Π½Π΅Ρ‰ΠΎ Π΅ ΠΏΠ°Π΄Π½Π°Π»ΠΎ ΠΏΡ€Π΅Π΄ΠΈ 15-30 ΠΌΠΈΠ½ΡƒΡ‚ΠΈ, няма Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ статистиката ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΊΠ°ΠΊΠ²ΠΎ сС Π΅ случило ΠΏΡ€Π΅Π΄ΠΈ 15-30 ΠΌΠΈΠ½ΡƒΡ‚ΠΈ. Π’ΠΎΠ²Π° Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.
  • Липсата Π½Π° инструмСнт, Π²Π³Ρ€Π°Π΄Π΅Π½ Π² PostgreSQL, Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° ядрото Π½Π΅ прСдоставят Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ. Π’Π΅ нямат Π½ΠΈΡ‰ΠΎ Ρ‚Π°ΠΊΠΎΠ²Π°. Π’Π΅ просто Π΄Π°Π²Π°Ρ‚ статистика Π² Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ Π³ΠΎ, ΠΎΡ‚ΠΏΡ€Π°Π²Π΅Ρ‚Π΅ заявка към Π½Π΅Π³ΠΎ, ΠΊΠ°ΠΊΠ²ΠΎΡ‚ΠΎ искатС, Ρ‚ΠΎΠ³Π°Π²Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²Π΅Ρ‚Π΅.
  • Въй ΠΊΠ°Ρ‚ΠΎ Π² PostgreSQL няма Π²Π³Ρ€Π°Π΄Π΅Π½ инструмСнт, Ρ‚ΠΎΠ²Π° причинява Π΄Ρ€ΡƒΠ³ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Много инструмСнти Π½Π° Ρ‚Ρ€Π΅Ρ‚ΠΈ страни. Всяка компания, която ΠΈΠΌΠ° ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΈΠ»ΠΈ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΏΡ€Π΅ΠΊΠΈ Ρ€ΡŠΡ†Π΅, сС ΠΎΠΏΠΈΡ‚Π²Π° Π΄Π° напишС своя собствСна ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°. И Π² Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ общността ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ инструмСнти, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° със статистика. И Π² някои инструмСнти ΠΈΠΌΠ° някои Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π² Π΄Ρ€ΡƒΠ³ΠΈ инструмСнти няма Π΄Ρ€ΡƒΠ³ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈΠ»ΠΈ ΠΈΠΌΠ° някои Π½ΠΎΠ²ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. И възниква ситуация, Ρ‡Π΅ трябва Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π΄Π²Π°, Ρ‚Ρ€ΠΈ ΠΈΠ»ΠΈ Ρ‡Π΅Ρ‚ΠΈΡ€ΠΈ инструмСнта, ΠΊΠΎΠΈΡ‚ΠΎ сС ΠΏΡ€ΠΈΠΏΠΎΠΊΡ€ΠΈΠ²Π°Ρ‚ ΠΈ ΠΈΠΌΠ°Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’ΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ нСприятно.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

Какво слСдва ΠΎΡ‚ Ρ‚ΠΎΠ²Π°? Π’Π°ΠΆΠ½ΠΎ Π΅ Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²Π·ΠΈΠΌΠ°Ρ‚Π΅ статистичСски Π΄Π°Π½Π½ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ, Π·Π° Π΄Π° Π½Π΅ зависи ΠΎΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ‚Π΅, ΠΈΠ»ΠΈ ΠΏΠΎ някакъв Π½Π°Ρ‡ΠΈΠ½ Π΄Π° ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈΡ‚Π΅ Ρ‚Π΅Π·ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ сами: Π΄ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ някои Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π·Π° Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΏΠΎΠ»Π·Π°.

И ΠΈΠΌΠ°Ρ‚Π΅ Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ основни познания ΠΏΠΎ SQL. Π—Π° Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ някои Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ статистиката, трябва Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ SQL заявки, Ρ‚.Π΅. трябва Π΄Π° Π·Π½Π°Π΅Ρ‚Π΅ ΠΊΠ°ΠΊ сС правят select, join.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

Бтатистиката Π½ΠΈ ΠΊΠ°Π·Π²Π° няколко Π½Π΅Ρ‰Π°. Π’Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈ Π½Π° ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ.

  • ΠŸΡŠΡ€Π²Π°Ρ‚Π° катСгория са ΡΡŠΠ±ΠΈΡ‚ΠΈΡΡ‚Π°, случващи сС Π² Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ. Π’ΠΎΠ²Π° Π΅, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС случи някакво ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅ Π² Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ: заявка, Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π°, Π°Π²Ρ‚ΠΎΠ²Π°ΠΊΡƒΡƒΠΌ, Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚ΠΈ, Ρ‚ΠΎΠ³Π°Π²Π° Ρ‚ΠΎΠ²Π° са всички ΡΡŠΠ±ΠΈΡ‚ΠΈΡ. БроячитС, ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π°Ρ‰ΠΈ Π½Π° Ρ‚Π΅Π·ΠΈ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ, сС ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Ρ‚. И ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° прослСдим Ρ‚Π΅Π·ΠΈ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ.
  • Π’Ρ‚ΠΎΡ€Π°Ρ‚Π° катСгория са свойствата Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈ ΠΊΠ°Ρ‚ΠΎ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ, Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ. Π˜ΠΌΠ°Ρ‚ свойства. Π’ΠΎΠ²Π° Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° маситС. МоТСм Π΄Π° прослСдим растСТа Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†ΠΈΡ‚Π΅, растСТа Π½Π° индСкситС. МоТСм Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠ°Ρ‚Π°.
  • И Ρ‚Ρ€Π΅Ρ‚Π°Ρ‚Π° катСгория Π΅ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ, ΠΏΡ€Π΅ΠΊΠ°Ρ€Π°Π½ΠΎ Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅Ρ‚ΠΎ. Заявката Π΅ ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅. Има своя спСцифична мярка Π·Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎΡΡ‚. Π—Π°ΠΏΠΎΡ‡Π½Π° Ρ‚ΡƒΠΊ, Π·Π°Π²ΡŠΡ€ΡˆΠΈ Ρ‚ΡƒΠΊ. МоТСм Π΄Π° Π³ΠΎ прослСдим. Или Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅ Π½Π° Π±Π»ΠΎΠΊ ΠΎΡ‚ диска ΠΈΠ»ΠΈ запис. Π’Π΅Π·ΠΈ Π½Π΅Ρ‰Π° ΡΡŠΡ‰ΠΎ сС прослСдяват.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° статистика са прСдставСни, ΠΊΠ°ΠΊΡ‚ΠΎ слСдва:

  • Π’ сподСлСната ΠΏΠ°ΠΌΠ΅Ρ‚ (сподСлСни Π±ΡƒΡ„Π΅Ρ€ΠΈ) ΠΈΠΌΠ° сСгмСнт Π·Π° поставянС Π½Π° статични Π΄Π°Π½Π½ΠΈ Ρ‚Π°ΠΌ, ΠΈΠΌΠ° ΠΈ Ρ‚Π°ΠΊΠΈΠ²Π° броячи, ΠΊΠΎΠΈΡ‚ΠΎ постоянно сС ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Ρ‚, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π½Π°ΡΡ‚ΡŠΠΏΡΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ ΠΈΠ»ΠΈ Π²ΡŠΠ·Π½ΠΈΠΊΠ½Π°Ρ‚ някои ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΈ Π² Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ.
  • Всички Ρ‚Π΅Π·ΠΈ броячи Π½Π΅ са Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΈ Π·Π° потрСбитСля ΠΈ Π΄ΠΎΡ€ΠΈ Π½Π΅ са Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΈ Π·Π° администратора. Π’ΠΎΠ²Π° са Π½Π΅Ρ‰Π° ΠΎΡ‚ ниско Π½ΠΈΠ²ΠΎ. Π—Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ тях PostgreSQL прСдоставя интСрфСйс ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° SQL Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. МоТСм Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ ΠΈΠ·Π±Ρ€Π°Π½ΠΈ сСлСкции с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ρ‚Π΅Π·ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ някакъв Π²ΠΈΠ΄ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π» (ΠΈΠ»ΠΈ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ).
  • Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Ρ‚Π΅Π·ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ са основата Π·Π° ΠΈΠ·Π³Π»Π΅Π΄ΠΈ (VIEW). Π’ΠΎΠ²Π° са Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ прСдоставят статистика Π·Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π° подсистСма ΠΈΠ»ΠΈ Π·Π° някакъв Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ Π² Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ.
  • Π’Π΅Π·ΠΈ Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ ΠΈΠ·Π³Π»Π΅Π΄ΠΈ (VIEWs) са основният потрСбитСлски интСрфСйс Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° със статистика. Π’Π΅ са Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΈ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π±Π΅Π· Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ настройки, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π΅Π΄Π½Π°Π³Π° Π΄Π° Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅, Π΄Π° Π³Π»Π΅Π΄Π°Ρ‚Π΅, Π΄Π° Π²Π·Π΅ΠΌΠ΅Ρ‚Π΅ информация ΠΎΡ‚ Ρ‚Π°ΠΌ. И ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° ΠΈΠΌΠ° приноси. ΠŸΡ€ΠΈΠ½ΠΎΡΠΈΡ‚Π΅ са ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½ΠΈ. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° инсталиратС ΠΏΠ°ΠΊΠ΅Ρ‚Π° postgresql-contrib (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ postgresql94-contrib), Π΄Π° Π·Π°Ρ€Π΅Π΄ΠΈΡ‚Π΅ нСобходимия ΠΌΠΎΠ΄ΡƒΠ» Π² конфигурацията, Π΄Π° посочитС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π·Π° Π½Π΅Π³ΠΎ, Π΄Π° рСстартиратС PostgreSQL ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅. (Π—Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°. Π’ зависимост ΠΎΡ‚ разпространСниСто, Π² послСднитС вСрсии Π½Π° contrib ΠΏΠ°ΠΊΠ΅Ρ‚ΡŠΡ‚ Π΅ част ΠΎΡ‚ основния ΠΏΠ°ΠΊΠ΅Ρ‚).
  • Има ΠΈ Π½Π΅ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π΅Π½ принос. Π’Π΅ Π½Π΅ сС доставят със стандартната PostgreSQL дистрибуция. Π’Π΅ трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½ΠΈ ΠΈΠ»ΠΈ инсталирани ΠΊΠ°Ρ‚ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°. ΠžΠΏΡ†ΠΈΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π² зависимост ΠΎΡ‚ Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊΠ²ΠΎ Π΅ измислил Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡŠΡ‚ Π½Π° Ρ‚ΠΎΠ·ΠΈ Π½Π΅ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π΅Π½ принос.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

Π’ΠΎΠ·ΠΈ слайд ΠΏΠΎΠΊΠ°Π·Π²Π° всички Ρ‚Π΅Π·ΠΈ ΠΈΠ·Π³Π»Π΅Π΄ΠΈ (VIEWS) ΠΈ някои ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ са Π½Π°Π»ΠΈΡ‡Π½ΠΈ Π² PostgreSQL 9.4. ΠšΠ°ΠΊΡ‚ΠΎ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅, ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‚ тях. И Π΅ доста лСсно Π΄Π° сС ΠΎΠ±ΡŠΡ€ΠΊΠ°Ρ‚Π΅, Π°ΠΊΠΎ Π³ΠΎ ΠΈΠ·ΠΏΠΈΡ‚Π²Π°Ρ‚Π΅ Π·Π° ΠΏΡŠΡ€Π²ΠΈ ΠΏΡŠΡ‚.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, Π°ΠΊΠΎ Π²Π·Π΅ΠΌΠ΅ΠΌ ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½Π°Ρ‚Π° снимка Как тратится врСмя Π½Π° PostgreSQL ΠΈ ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌ с Ρ‚ΠΎΠ·ΠΈ списък, ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ Ρ‚Π°Π·ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π°. ВсСки ΠΈΠ·Π³Π»Π΅Π΄ (VIEWs) ΠΈΠ»ΠΈ всяка функция ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π·Π° Π΅Π΄Π½Π° ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³Π° Ρ†Π΅Π», Π·Π° Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ подходящата статистика, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ PostgreSQL. И Π²Π΅Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ извСстна информация Π·Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° подсистСмата.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

ΠŸΡŠΡ€Π²ΠΎΡ‚ΠΎ Π½Π΅Ρ‰ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‰Π΅ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π΅ pg_stat_database. ΠšΠ°ΠΊΡ‚ΠΎ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅, Ρ‚ΠΎΠ²Π° Π΅ прСдставитСлство. Π‘ΡŠΠ΄ΡŠΡ€ΠΆΠ° ΠΌΠ½ΠΎΠ³ΠΎ информация. Най-Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Π° информация. И Π΄Π°Π²Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Π° информация Π·Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊΠ²ΠΎ сС случва Π² Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ.

Какво ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π²Π·Π΅ΠΌΠ΅ΠΌ ΠΎΡ‚Ρ‚Π°ΠΌ? Π”Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅ΠΌ с Π½Π°ΠΉ-проститС Π½Π΅Ρ‰Π°.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

select
sum(blks_hit)*100/sum(blks_hit+blks_read) as hit_ratio
from pg_stat_database;

ΠŸΡŠΡ€Π²ΠΎΡ‚ΠΎ Π½Π΅Ρ‰ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅, Π΅ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ΡŠΡ‚ Π½Π° кСша. ΠŸΡ€ΠΎΡ†Π΅Π½Ρ‚ΡŠΡ‚ Π½Π° ΠΏΠΎΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Π² кСша Π΅ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π». Позволява Π²ΠΈ Π΄Π° ΠΎΡ†Π΅Π½ΠΈΡ‚Π΅ ΠΊΠΎΠ»ΠΊΠΎ Π΄Π°Π½Π½ΠΈ сС Π²Π·Π΅ΠΌΠ°Ρ‚ ΠΎΡ‚ кСша Π½Π° сподСлСнитС Π±ΡƒΡ„Π΅Ρ€ΠΈ ΠΈ ΠΊΠΎΠ»ΠΊΠΎ сС Ρ‡Π΅Ρ‚Π°Ρ‚ ΠΎΡ‚ диска.

Ясно Π΅, Ρ‡Π΅ ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ ΠΏΠΎΠ²Π΅Ρ‡Π΅ кСш Ρ…ΠΈΡ‚ΠΎΠ²Π΅ ΠΈΠΌΠ°ΠΌΠ΅, Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅. НиС оцСнявамС Ρ‚ΠΎΠ·ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π» ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚. И Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π°ΠΊΠΎ ΠΈΠΌΠ°ΠΌΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ посСщСния Π½Π° кСша Π½Π°Π΄ 90%, Ρ‚ΠΎΠ³Π°Π²Π° Ρ‚ΠΎΠ²Π° Π΅ Π΄ΠΎΠ±Ρ€Π΅. Ако ΠΏΠ°Π΄Π½Π΅ ΠΏΠΎΠ΄ 90%, Ρ‚ΠΎΠ³Π°Π²Π° нямамС Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ ΠΏΠ°ΠΌΠ΅Ρ‚, Π·Π° Π΄Π° Π·Π°ΠΏΠ°Π·ΠΈΠΌ Π³ΠΎΡ€Π΅Ρ‰Π°Ρ‚Π° Π³Π»Π°Π²Π° ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°. И Π·Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Ρ‚Π΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ, PostgreSQL Π΅ ΠΏΡ€ΠΈΠ½ΡƒΠ΄Π΅Π½ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ диска ΠΈ Ρ‚ΠΎΠ²Π° Π΅ ΠΏΠΎ-Π±Π°Π²Π½ΠΎ, ΠΎΡ‚ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ Π°ΠΊΠΎ Π΄Π°Π½Π½ΠΈΡ‚Π΅ сС Ρ‡Π΅Ρ‚Π°Ρ‚ ΠΎΡ‚ ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°. И трябва Π΄Π° помислитС Π·Π° ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°: ΠΈΠ»ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Ρ‚Π΅ сподСлСнитС Π±ΡƒΡ„Π΅Ρ€ΠΈ, ΠΈΠ»ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Ρ‚Π΅ ТСлязната ΠΏΠ°ΠΌΠ΅Ρ‚ (RAM).

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

select
datname,
(xact_commit*100)/(xact_commit+xact_rollback) as c_ratio,
deadlocks, conflicts,
temp_file, pg_size_pretty(temp_bytes) as temp_size
from pg_stat_database;

Какво Π΄Ρ€ΡƒΠ³ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π²Π·Π΅ΠΌΠ΅ ΠΎΡ‚ Ρ‚ΠΎΠ²Π° изпълнСниС? ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈΡ‚Π΅, Π²ΡŠΠ·Π½ΠΈΠΊΠ²Π°Ρ‰ΠΈ Π² Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ. Какво Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Ρ‚ΡƒΠΊ? Има Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚ΠΈ, Π²Ρ€ΡŠΡ‰Π°Π½ΠΈΡ Π½Π°Π·Π°Π΄, създаванС Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, тСхния Ρ€Π°Π·ΠΌΠ΅Ρ€, блокирания ΠΈ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈ.

МоТСм Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Ρ‚Π°Π·ΠΈ заявка. Π’ΠΎΠ·ΠΈ SQL Π΅ доста прост. И ΠΌΠΎΠΆΠ΅ΠΌ сами Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ Ρ‚Π΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

А Π΅Ρ‚ΠΎ ΠΈ ΠΏΡ€Π°Π³ΠΎΠ²ΠΈΡ‚Π΅ стойности. Π Π°Π·Π³Π»Π΅ΠΆΠ΄Π°ΠΌΠ΅ ΡΡŠΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚ΠΈ ΠΈ Π²Ρ€ΡŠΡ‰Π°Π½ΠΈΡ Π½Π°Π·Π°Π΄. ΠšΠΎΠΌΠΈΡ‚ΠΈ Π΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π° транзакцията. Rollbacks Π΅ Π²Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π°Π·Π°Π΄, Ρ‚.Π΅. транзакцията Π΅ ΡΠ²ΡŠΡ€ΡˆΠΈΠ»Π° някаква Ρ€Π°Π±ΠΎΡ‚Π°, Π½Π°ΠΏΡ€Π΅Π³Π½Π°Π»Π° Π΅ Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ, обмислила Π΅ Π½Π΅Ρ‰ΠΎ ΠΈ слСд Ρ‚ΠΎΠ²Π° Π΅ възникнала Π³Ρ€Π΅ΡˆΠΊΠ° ΠΈ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΡ‚ транзакцията са ΠΎΡ‚Ρ…Π²ΡŠΡ€Π»Π΅Π½ΠΈ. Ρ‚.Π΅. постоянно нарастващият Π±Ρ€ΠΎΠΉ Π²Ρ€ΡŠΡ‰Π°Π½ΠΈΡ Π½Π°Π·Π°Π΄ Π΅ лош. И трябва ΠΏΠΎ някакъв Π½Π°Ρ‡ΠΈΠ½ Π΄Π° Π³ΠΈ ΠΈΠ·Π±Π΅Π³Π½Π΅Ρ‚Π΅ ΠΈ Π΄Π° Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π°Ρ‚Π΅ ΠΊΠΎΠ΄Π°, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Ρ‚ΠΎΠ²Π° Π΄Π° Π½Π΅ сС случи.

ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈΡ‚Π΅ са ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с рСпликацията. И Ρ‚Π΅ ΡΡŠΡ‰ΠΎ трябва Π΄Π° сС избягват. Ако ΠΈΠΌΠ°Ρ‚Π΅ някои заявки, ΠΊΠΎΠΈΡ‚ΠΎ сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ‚Π° ΠΈ Π²ΡŠΠ·Π½ΠΈΠΊΠ½Π°Ρ‚ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈ, Ρ‚ΠΎΠ³Π°Π²Π° трябва Π΄Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ Ρ‚Π΅Π·ΠΈ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈ ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΊΠ°ΠΊΠ²ΠΎ Ρ‰Π΅ сС случи. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π² Π΄Π½Π΅Π²Π½ΠΈΡ†ΠΈΡ‚Π΅. И Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°ΠΉΡ‚Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈ, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ заявкитС Π·Π° прилоТСния Π΄Π° работят Π±Π΅Π· Π³Ρ€Π΅ΡˆΠΊΠΈ.

Π‘Π΅Π·ΠΈΠ·Ρ…ΠΎΠ΄ΠΈΡ†Π°Ρ‚Π° ΡΡŠΡ‰ΠΎ Π΅ лоша ситуация. ΠšΠΎΠ³Π°Ρ‚ΠΎ заявкитС сС ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€Π°Ρ‚ Π·Π° рСсурси, Π΅Π΄Π½Π° заявка ΠΈΠΌΠ° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Π΅Π΄ΠΈΠ½ рСсурс ΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°, Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° заявка ΠΎΡΡŠΡ‰Π΅ΡΡ‚Π²ΡΠ²Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ втория рСсурс ΠΈ ΡΡŠΡ‰ΠΎ Π²Π·Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ, слСд ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΈ Π΄Π²Π΅Ρ‚Π΅ заявки ΠΎΡΡŠΡ‰Π΅ΡΡ‚Π²ΡΠ²Π°Ρ‚ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ рСсурситС Π½Π° Π΄Ρ€ΡƒΠ³Π°Ρ‚Π° ΠΈ Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‚, Ρ‡Π°ΠΊΠ°ΠΉΠΊΠΈ ΡΡŠΡΠ΅Π΄ΡŠΡ‚ Π΄Π° освободи ΠΊΠ»ΡŽΡ‡Π°Π»ΠΊΠ°Ρ‚Π°. Π’ΠΎΠ²Π° ΡΡŠΡ‰ΠΎ Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Π° ситуация. Π’Π΅ трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Ρ€Π°Π·Π³Π»Π΅Π΄Π°Π½ΠΈ Π½Π° Π½ΠΈΠ²ΠΎ прСнаписванС Π½Π° прилоТСния ΠΈ сСриализиранС Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠ° Π΄ΠΎ рСсурси. И Π°ΠΊΠΎ Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Π΅ Π·Π°Π΄ΡŠΠ½Π΅Π½ΠΈΡ‚Π΅ Π²ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚ΠΎ сС ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Ρ‚, трябва Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°Ρ‚Π΅ подробноститС Π² рСгистрационнитС Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, Π΄Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ Π²ΡŠΠ·Π½ΠΈΠΊΠ½Π°Π»ΠΈΡ‚Π΅ ситуации ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ какъв Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚.

Π’Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ (temp_files) ΡΡŠΡ‰ΠΎ са лоши. ΠšΠΎΠ³Π°Ρ‚ΠΎ потрСбитСлска заявка няма Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ ΠΏΠ°ΠΌΠ΅Ρ‚, Π·Π° Π΄Π° ΠΏΠΎΠ΅ΠΌΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΈΡ‚Π΅, Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ Π΄Π°Π½Π½ΠΈ, тя създава Ρ„Π°ΠΉΠ» Π½Π° диска. И всички ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Ρ‚ΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈ във Π²Ρ€Π΅ΠΌΠ΅Π½Π΅Π½ Π±ΡƒΡ„Π΅Ρ€ Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, Π·Π°ΠΏΠΎΡ‡Π²Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ Π²Π΅Ρ‡Π΅ Π½Π° диска. Π‘Π°Π²Π½ΠΎ Π΅. Π’ΠΎΠ²Π° ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° изпълнСниС Π½Π° заявката. И ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚, ΠΈΠ·ΠΏΡ€Π°Ρ‚ΠΈΠ» заявка Π΄ΠΎ PostgreSQL, Ρ‰Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-късно. Ако всички Ρ‚Π΅Π·ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Ρ‚ Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, Postgres Ρ‰Π΅ Ρ€Π΅Π°Π³ΠΈΡ€Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ Ρ‰Π΅ Ρ‡Π°ΠΊΠ° ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

pg_stat_bgwriter - Π’ΠΎΠ·ΠΈ ΠΈΠ·Π³Π»Π΅Π΄ описва Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° Π΄Π²Π΅ Ρ„ΠΎΠ½ΠΎΠ²ΠΈ подсистСми Π½Π° PostgreSQL: checkpointer ΠΈ background writer.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

ΠšΠ°Ρ‚ΠΎ Π·Π° Π½Π°Ρ‡Π°Π»ΠΎ Π½Π΅ΠΊΠ° Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½ΠΈΡ‚Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ, Ρ‚.Π½Π°Ρ€. checkpoints. Какво прСдставляват ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½ΠΈΡ‚Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ? ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π΅ позиция Π² рСгистрационния Ρ„Π°ΠΉΠ» Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈΡ‚Π΅, ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ‰Π°, Ρ‡Π΅ всички ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² Π΄Π°Π½Π½ΠΈΡ‚Π΅, ΠΈΠ·Π²ΡŠΡ€ΡˆΠ΅Π½ΠΈ Π² рСгистрационния Ρ„Π°ΠΉΠ», са ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ синхронизирани с Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π½Π° диска. ΠŸΡ€ΠΎΡ†Π΅ΡΡŠΡ‚, Π² зависимост ΠΎΡ‚ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ ΠΈ настройкитС, ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС дълъг ΠΈ Π½Π°ΠΉ-Π²Π΅Ρ‡Π΅ сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ синхронизиранС Π½Π° ΠΌΡ€ΡŠΡΠ½ΠΈ страници Π² сподСлСни Π±ΡƒΡ„Π΅Ρ€ΠΈ с Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ с Π΄Π°Π½Π½ΠΈ Π½Π° диска. Π—Π° ΠΊΠ°ΠΊΠ²ΠΎ Π΅? Ако PostgreSQL ΠΎΡΡŠΡ‰Π΅ΡΡ‚Π²ΡΠ²Π°ΡˆΠ΅ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ диска ΠΏΡ€Π΅Π· цялото Π²Ρ€Π΅ΠΌΠ΅ ΠΈ взСмашС Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ Ρ‚Π°ΠΌ ΠΈ записвашС Π΄Π°Π½Π½ΠΈ ΠΏΡ€ΠΈ всСки Π΄ΠΎΡΡ‚ΡŠΠΏ, Ρ‰Π΅ΡˆΠ΅ Π΄Π° Π΅ Π±Π°Π²Π½ΠΎ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ PostgreSQL ΠΈΠΌΠ° сСгмСнт ΠΎΡ‚ ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, Ρ‡ΠΈΠΉΡ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ зависи ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ Π² конфигурацията. Postgres разпрСдСля ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π² Ρ‚Π°Π·ΠΈ ΠΏΠ°ΠΌΠ΅Ρ‚ Π·Π° ΠΏΠΎ-Π½Π°Ρ‚Π°Ρ‚ΡŠΡˆΠ½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΠ»ΠΈ заявки. Π’ случай Π½Π° заявки Π·Π° промяна Π½Π° Π΄Π°Π½Π½ΠΈ, Ρ‚Π΅ сС промСнят. И ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ Π΄Π²Π΅ вСрсии Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅. Единият Π΅ Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, другият Π΅ Π½Π° диска. И ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎ трябва Π΄Π° синхронизиратС Ρ‚Π΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ. НуТдаСм сС ΠΎΡ‚ Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ сС промСня Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, Π΄Π° бъдС синхронизирано с диска. Π’ΠΎΠ²Π° изисква ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½ΠΎ-пропускатСлСн ΠΏΡƒΠ½ΠΊΡ‚.

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π°Ρ‚Π° Ρ‚ΠΎΡ‡ΠΊΠ° ΠΌΠΈΠ½Π°Π²Π° ΠΏΡ€Π΅Π· сподСлСни Π±ΡƒΡ„Π΅Ρ€ΠΈ, ΠΌΠ°Ρ€ΠΊΠΈΡ€Π° ΠΌΡ€ΡŠΡΠ½ΠΈΡ‚Π΅ страници, Ρ‡Π΅ са Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ°. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Π·Π°ΠΏΠΎΡ‡Π²Π° Π²Ρ‚ΠΎΡ€ΠΎΡ‚ΠΎ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ ΠΏΡ€Π΅Π· сподСлСни Π±ΡƒΡ„Π΅Ρ€ΠΈ. А страницитС, ΠΊΠΎΠΈΡ‚ΠΎ са ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Π½ΠΈ Π·Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ°, Ρ‚ΠΎΠΉ Π²Π΅Ρ‡Π΅ Π³ΠΈ синхронизира. Π’Π°ΠΊΠ° Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π²Π΅Ρ‡Π΅ сС синхронизират с диска.

Има Π΄Π²Π° Π²ΠΈΠ΄Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ. Π•Π΄Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° сС изпълнява ΠΏΡ€ΠΈ ΠΈΠ·Ρ‡Π°ΠΊΠ²Π°Π½Π΅. Π’Π°Π·ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π΅ ΠΏΠΎΠ»Π΅Π·Π½Π° ΠΈ Π΄ΠΎΠ±Ρ€Π° - checkpoint_timed. И ΠΈΠΌΠ° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΏΡ€ΠΈ поискванС - checkpoint required. Π’Π°ΠΊΠ°Π²Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° възниква, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ голям запис Π½Π° Π΄Π°Π½Π½ΠΈ. ЗаписахмС ΠΌΠ½ΠΎΠ³ΠΎ рСгистрационни Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π·Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ. И PostgreSQL вярва, Ρ‡Π΅ трябва Π΄Π° синхронизира всичко Ρ‚ΠΎΠ²Π° възмоТно Π½Π°ΠΉ-Π±ΡŠΡ€Π·ΠΎ, Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° ΠΈ Π΄Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈ Π½Π°ΠΏΡ€Π΅Π΄.

И Π°ΠΊΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ статистиката pg_stat_bgwriter ΠΈ Π²ΠΈΠΆ ΠΊΠ°ΠΊΠ²ΠΎ имаш checkpoint_req Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-голям ΠΎΡ‚ checkpoint_timed, Ρ‚ΠΎΠ³Π°Π²Π° Ρ‚ΠΎΠ²Π° Π΅ лошо. Π—Π°Ρ‰ΠΎ лошо? Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ PostgreSQL Π΅ ΠΏΠΎΠ΄ постоянСн стрСс, ΠΊΠΎΠ³Π°Ρ‚ΠΎ трябва Π΄Π° запишС Π΄Π°Π½Π½ΠΈ Π½Π° диск. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π°Ρ‚Π° Ρ‚ΠΎΡ‡ΠΊΠ° Ρ‡Ρ€Π΅Π· ΠΈΠ·Ρ‡Π°ΠΊΠ²Π°Π½Π΅ Π΅ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ стрСсираща ΠΈ сС изпълнява спорСд Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈΡ Π³Ρ€Π°Ρ„ΠΈΠΊ ΠΈ, Ρ‚Π°ΠΊΠ° Π΄Π° сС ΠΊΠ°ΠΆΠ΅, сС разтяга във Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ. PostgreSQL ΠΈΠΌΠ° способността Π΄Π° спира Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° си ΠΈ Π΄Π° Π½Π΅ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π° дисковата подсистСма. Π’ΠΎΠ²Π° Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π·Π° PostgreSQL. И заявкитС, ΠΊΠΎΠΈΡ‚ΠΎ сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ°, няма Π΄Π° ΠΈΠ·ΠΏΠΈΡ‚Π²Π°Ρ‚ стрСс ΠΎΡ‚ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ дисковата подсистСма Π΅ Π·Π°Π΅Ρ‚Π°.

И ΠΈΠΌΠ° Ρ‚Ρ€ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€Π° Π·Π° Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π°Ρ‚Π° Ρ‚ΠΎΡ‡ΠΊΠ°:

  • сheckpoint_segments.

  • сheckpoint_timeout.

  • сheckpoint_competion_target.

Π’Π΅ Π²ΠΈ позволяват Π΄Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½ΠΈΡ‚Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ. Но няма Π΄Π° сС спирам Π½Π° тях. Вяхното влияниС Π΅ ΠΎΡ‚Π΄Π΅Π»Π΅Π½ Π²ΡŠΠΏΡ€ΠΎΡ.

ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: ВСрсия 9.4, Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π°Π½Π° Π² Π΄ΠΎΠΊΠ»Π°Π΄Π°, Π²Π΅Ρ‡Π΅ Π½Π΅ Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»Π½Π°. Π’ ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈΡ‚Π΅ вСрсии Π½Π° PostgreSQL ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ΡŠΡ‚ checkpoint_segments Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΈ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ min_wal_size ΠΈ max_wal_size.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

Π‘Π»Π΅Π΄Π²Π°Ρ‰Π°Ρ‚Π° подсистСма Π΅ фоновият запис βˆ’ background writer. Какво ΠΏΡ€Π°Π²ΠΈ Ρ‚ΠΎΠΉ? Π’ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΈ постоянно Π² Π±Π΅Π·ΠΊΡ€Π°Π΅Π½ Ρ†ΠΈΠΊΡŠΠ». Π’ΠΎΠΉ сканира страници Π² сподСлСни Π±ΡƒΡ„Π΅Ρ€ΠΈ ΠΈ ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π° ΠΌΡ€ΡŠΡΠ½ΠΈΡ‚Π΅ страници, ΠΊΠΎΠΈΡ‚ΠΎ ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°, Π½Π° диска. По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ ΠΏΠΎΠΌΠ°Π³Π° Π½Π° Ρ‡Π΅ΠΊΠΏΠΎΠΉΠ½Ρ‚Π΅Ρ€Π° Π΄Π° Π²ΡŠΡ€ΡˆΠΈ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Ρ‡Π΅ΠΊΠΏΠΎΠΉΠ½Ρ‚ΡŠΡ€Π°.

Π—Π° ΠΊΠ°ΠΊΠ²ΠΎ Π΄Ρ€ΡƒΠ³ΠΎ ΠΌΡƒ трябва? Π’ΠΎΠΉ осигурява нСобходимостта ΠΎΡ‚ чисти страници Π² сподСлСнитС Π±ΡƒΡ„Π΅Ρ€ΠΈ, Π°ΠΊΠΎ Ρ‚Π΅ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ са Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ (Π² Π³ΠΎΠ»Π΅ΠΌΠΈ количСства ΠΈ Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ) Π·Π° настаняванС Π½Π° Π΄Π°Π½Π½ΠΈ. Π”Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Π΅ възникна ситуация, ΠΊΠΎΠ³Π°Ρ‚ΠΎ заявката изисква чисти страници ΠΈ Ρ‚Π΅ Π²Π΅Ρ‡Π΅ са Π² сподСлСни Π±ΡƒΡ„Π΅Ρ€ΠΈ. Postgres backend Ρ‚ΠΎΠΉ просто Π³ΠΈ Π²Π·Π΅ΠΌΠ° ΠΈ Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°, Π½Π΅ трябва сам Π΄Π° чисти Π½ΠΈΡ‰ΠΎ. Но Π°ΠΊΠΎ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ няма Ρ‚Π°ΠΊΠΈΠ²Π° страници, Π±Π΅ΠΊΠ΅Π½Π΄ΡŠΡ‚ спира ΠΈ Π·Π°ΠΏΠΎΡ‡Π²Π° Π΄Π° Ρ‚ΡŠΡ€ΡΠΈ страници, Π·Π° Π΄Π° Π³ΠΈ ΠΈΠ·Ρ…Π²ΡŠΡ€Π»ΠΈ Π½Π° диска ΠΈ Π΄Π° Π³ΠΈ Π²Π·Π΅ΠΌΠ΅ Π·Π° собствСнитС си Π½ΡƒΠΆΠ΄ΠΈ - ΠΊΠΎΠ΅Ρ‚ΠΎ сС отразява Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½ΠΎ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΎ ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Π½Π°Ρ‚Π° заявка. Ако Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Π΅ ΠΈΠΌΠ°Ρ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ maxwritten_clean голям, Ρ‚ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ фоновият запис Π½Π΅ Π²ΡŠΡ€ΡˆΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° си ΠΈ трябва Π΄Π° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ bgwriter_lru_maxpagesΠ·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ²ΡŠΡ€ΡˆΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Ρ€Π°Π±ΠΎΡ‚Π° Π² Π΅Π΄ΠΈΠ½ Ρ†ΠΈΠΊΡŠΠ», изчистСтС ΠΏΠΎΠ²Π΅Ρ‡Π΅ страници.

И Π΄Ρ€ΡƒΠ³ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π΅ buffers_backend_fsync. Π‘Π΅ΠΊΠ΅Π½Π΄ΠΎΠ²Π΅Ρ‚Π΅ Π½Π΅ правят fsync, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π΅ Π±Π°Π²Π΅Π½. Π’Π΅ ΠΏΡ€Π΅Π΄Π°Π²Π°Ρ‚ fsync Π½Π°Π³ΠΎΡ€Π΅ ΠΏΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π°Ρ‚Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° IO стСка. ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π°Ρ‚Π° Ρ‚ΠΎΡ‡ΠΊΠ° ΠΈΠΌΠ° собствСна опашка, ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° fsync ΠΈ синхронизира страницитС Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° с Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° диска. Ако ΠΎΠΏΠ°ΡˆΠΊΠ°Ρ‚Π° Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π°Ρ‚Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π΅ голяма ΠΈ пълна, Ρ‚ΠΎΠ³Π°Π²Π° Π±Π΅ΠΊΠ΅Π½Π΄ΡŠΡ‚ Π΅ ΠΏΡ€ΠΈΠ½ΡƒΠ΄Π΅Π½ сам Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈ fsync ΠΈ Ρ‚ΠΎΠ²Π° забавя Π±Π΅ΠΊΠ΅Π½Π΄Π°, Ρ‚.Π΅. ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ Ρ‰Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ ΠΏΠΎ-късно, ΠΎΡ‚ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ Π±ΠΈ могъл. Ако Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Π΅ Ρ‚Π°Π·ΠΈ стойност Π΅ ΠΏΠΎ-голяма ΠΎΡ‚ Π½ΡƒΠ»Π°, Ρ‚ΠΎΠ²Π° Π²Π΅Ρ‡Π΅ Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΈ трябва Π΄Π° ΠΎΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° настройкитС Π½Π° фоновия запис ΠΈ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π΄Π° ΠΎΡ†Π΅Π½ΠΈΡ‚Π΅ производитСлността Π½Π° дисковата подсистСма.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: _БлСдващият тСкст описва статистичСскитС ΠΈΠ·Π³Π»Π΅Π΄ΠΈ, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с рСпликацията. ΠŸΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°Ρ‚Π° Π½Π° ΠΈΠ·Π³Π»Π΅Π΄ΠΈΡ‚Π΅ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ са ΠΏΡ€Π΅ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Π½ΠΈ Π² Postgres 10. Π‘ΡŠΡ‰Π½ΠΎΡΡ‚Ρ‚Π° Π½Π° прСимСнуванията бСшС Π΄Π° замСнят xlog Π½Π° wal ΠΈ location Π½Π° lsn Π² ΠΈΠΌΠ΅Π½Π° Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ/ΠΈΠ·Π³Π»Π΅Π΄ΠΈ ΠΈ Ρ‚.Π½. ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, функция pg_xlog_location_diff() Π΅ ΠΏΡ€Π΅ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Π½ Π½Π° pg_wal_lsn_diff()._

Π’ΡƒΠΊ ΡΡŠΡ‰ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ. Но ΠΈΠΌΠ°ΠΌΠ΅ Π½ΡƒΠΆΠ΄Π° само ΠΎΡ‚ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΈ, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с мСстополоТСниСто.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

Ако Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Π΅ всички стойности са Ρ€Π°Π²Π½ΠΈ, Ρ‚ΠΎΠ³Π°Π²Π° Ρ‚ΠΎΠ²Π° Π΅ ΠΈΠ΄Π΅Π°Π»Π½ΠΎ ΠΈ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ‚Π° Π½Π΅ изостава ΠΎΡ‚ ΠΊΠ°ΠΏΠΈΡ‚Π°Π½Π°.

Π’Π°Π·ΠΈ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Π΅ΡΠ΅Ρ‚ΠΈΡ‡Π½Π° позиция Ρ‚ΡƒΠΊ Π΅ позицията Π² Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€Π° Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈΡ‚Π΅. ΠŸΠΎΡΡ‚ΠΎΡΠ½Π½ΠΎ сС ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°, Π°ΠΊΠΎ ΠΈΠΌΠ° някаква активност Π² Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ: вмъквания, изтривания ΠΈ Ρ‚.Π½.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

сколько записано xlog Π² Π±Π°ΠΉΡ‚Π°Ρ…
$ select
pg_xlog_location_diff(pg_current_xlog_location(),'0/00000000');
Π»Π°Π³ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Π±Π°ΠΉΡ‚Π°Ρ…
$ select
client_addr,
pg_xlog_location_diff(pg_current_xlog_location(), replay_location)
from pg_stat_replication;
Π»Π°Π³ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² сСкундах
$ select
extract(epoch from now() - pg_last_xact_replay_timestamp());

Ако Ρ‚Π΅Π·ΠΈ Π½Π΅Ρ‰Π° са Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ, Π·Π½Π°Ρ‡ΠΈ ΠΈΠΌΠ° някакво забавянС. Π—Π°ΠΊΡŠΡΠ½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΅ изоставанСто Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ‚Π° ΠΎΡ‚ главния, Ρ‚.Π΅. Π΄Π°Π½Π½ΠΈΡ‚Π΅ сС Ρ€Π°Π·Π»ΠΈΡ‡Π°Π²Π°Ρ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ ΡΡŠΡ€Π²ΡŠΡ€ΠΈΡ‚Π΅.

Има Ρ‚Ρ€ΠΈ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈ Π·Π° забавянСто:

  • Π’ΠΎΠ²Π° Π΅ дисковата подсистСма, която Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС справи със записитС ΠΏΡ€ΠΈ синхронизиранС Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅.
  • Π’ΠΎΠ²Π° са възмоТни ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈΠ»ΠΈ ΠΏΡ€Π΅Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅ Π½Π° ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΄Π°Π½Π½ΠΈΡ‚Π΅ нямат Π²Ρ€Π΅ΠΌΠ΅ Π΄Π° достигнат Π΄ΠΎ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ‚Π° ΠΈ тя Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΈ Π²ΡŠΠ·ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅.
  • И процСсора. ΠŸΡ€ΠΎΡ†Π΅ΡΠΎΡ€Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€ΡΠ΄ΡŠΠΊ случай. И Ρ‚ΠΎΠ²Π° съм Π³ΠΎ Π²ΠΈΠΆΠ΄Π°Π» Π΄Π²Π°-Ρ‚Ρ€ΠΈ ΠΏΡŠΡ‚ΠΈ, Π½ΠΎ ΠΈ Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС случи.

И Π΅Ρ‚ΠΎ Ρ‚Ρ€ΠΈ заявки, ΠΊΠΎΠΈΡ‚ΠΎ Π½ΠΈ позволяват Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ статистика. МоТСм Π΄Π° ΠΏΡ€Π΅Ρ†Π΅Π½ΠΈΠΌ ΠΊΠΎΠ»ΠΊΠΎ Π΅ записано Π² нашия Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€ Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈΡ‚Π΅. Има Ρ‚Π°ΠΊΠ°Π²Π° функция pg_xlog_location_diff ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΡ†Π΅Π½ΠΈΠΌ забавянСто Π½Π° рСпликацията Π² Π±Π°ΠΉΡ‚ΠΎΠ²Π΅ ΠΈ сСкунди. НиС ΡΡŠΡ‰ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ стойността ΠΎΡ‚ Ρ‚ΠΎΠ·ΠΈ ΠΈΠ·Π³Π»Π΅Π΄ (VIEWS) Π·Π° Ρ‚ΠΎΠ²Π°.

Π—Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°: _ВмСсто pg_xlog_locationфункция diff(), ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π·Π° ΠΈΠ·Π²Π°ΠΆΠ΄Π°Π½Π΅ ΠΈ Π΄Π° ΠΈΠ·Π²Π°Π΄ΠΈΡ‚Π΅ Π΅Π΄Π½ΠΎ мСстополоТСниС ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΎ. Π£Π΄ΠΎΠ±Π΅Π½.

Бъс закъснСниС, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ Π² сСкунди, ΠΈΠΌΠ° Π΅Π΄ΠΈΠ½ ΠΌΠΎΠΌΠ΅Π½Ρ‚. Ако няма активност Π½Π° главния, транзакцията Π΅ Π±ΠΈΠ»Π° Ρ‚Π°ΠΌ ΠΏΡ€Π΅Π΄ΠΈ ΠΎΠΊΠΎΠ»ΠΎ 15 ΠΌΠΈΠ½ΡƒΡ‚ΠΈ ΠΈ няма активност, ΠΈ Π°ΠΊΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌ Ρ‚ΠΎΠ²Π° забавянС Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ‚Π°, Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΠΌ забавянС ΠΎΡ‚ 15 ΠΌΠΈΠ½ΡƒΡ‚ΠΈ. Π’ΠΎΠ²Π° си струва Π΄Π° Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅. И Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ступор, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π³Π»Π΅Π΄Π°Ρ‚Π΅ Ρ‚ΠΎΠ·ΠΈ Π»Π°Π³.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

pg_stat_all_tables Π΅ Π΄Ρ€ΡƒΠ³ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΈΠ·Π³Π»Π΅Π΄. Показва статистика Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ. ΠšΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ Π² Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ, ΠΈΠΌΠ° някаква дСйност с нСя, някои дСйствия, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ‚Π°Π·ΠΈ информация ΠΎΡ‚ Ρ‚ΠΎΠ·ΠΈ ΠΈΠ·Π³Π»Π΅Π΄.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

select
relname,
pg_size_pretty(pg_relation_size(relname::regclass)) as size,
seq_scan, seq_tup_read,
seq_scan / seq_tup_read as seq_tup_avg
from pg_stat_user_tables
where seq_tup_read > 0 order by 3,4 desc limit 5;

ΠŸΡŠΡ€Π²ΠΎΡ‚ΠΎ Π½Π΅Ρ‰ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅, Π΅ послСдоватСлното сканиранС Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ. Π‘Π°ΠΌΠΎΡ‚ΠΎ число слСд Ρ‚Π΅Π·ΠΈ пасаТи Π½Π΅ Π΅ Π½Π΅ΠΏΡ€Π΅ΠΌΠ΅Π½Π½ΠΎ лошо ΠΈ Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ Π²Π΅Ρ‡Π΅ трябва Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ Π½Π΅Ρ‰ΠΎ.

Има ΠΎΠ±Π°Ρ‡Π΅ Π²Ρ‚ΠΎΡ€Π° ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ° - seq_tup_read. Π’ΠΎΠ²Π° Π΅ броят Π½Π° Ρ€Π΅Π΄ΠΎΠ²Π΅Ρ‚Π΅, Π²ΡŠΡ€Π½Π°Ρ‚ΠΈ ΠΎΡ‚ послСдоватСлното сканиранС. Ако срСдният Π±Ρ€ΠΎΠΉ надвишава 1, 000 10, 000 50, 000 100, Ρ‚ΠΎΠ²Π° Π²Π΅Ρ‡Π΅ Π΅ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€, Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°Π»ΠΎΠΆΠΈ Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΡ‚Π΅ индСкс някъдС, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π΄ΠΎΡΡ‚ΡŠΠΏΠΈΡ‚Π΅ Π΄Π° са ΠΏΠΎ индСкс, ΠΈΠ»ΠΈ Π΅ възмоТно Π΄Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ заявки, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Ρ‚Π°ΠΊΠΈΠ²Π° послСдоватСлни сканирания, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Ρ‚ΠΎΠ²Π° Π½Π΅ сС случва.бСшС.

ΠŸΡ€ΠΎΡΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ – Π΄Π° ΠΊΠ°ΠΆΠ΅ΠΌ, Ρ‡Π΅ заявка с голям OFFSET ΠΈ LIMIT си заслуТава. НапримСр сканират сС 100 000 Ρ€Π΅Π΄Π° Π² Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΈ слСд Ρ‚ΠΎΠ²Π° сС Π²Π·Π΅ΠΌΠ°Ρ‚ 50 000 Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Ρ€Π΅Π΄Π°, Π° ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ‚Π΅ сканирани Ρ€Π΅Π΄ΠΎΠ²Π΅ сС ΠΈΠ·Ρ…Π²ΡŠΡ€Π»ΡΡ‚. Π’ΠΎΠ²Π° ΡΡŠΡ‰ΠΎ Π΅ лош случай. И Ρ‚Π°ΠΊΠΈΠ²Π° заявки трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½ΠΈ. И Π΅Ρ‚ΠΎ Ρ‚Π°ΠΊΠ°Π²Π° проста SQL заявка, Π½Π° която ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° я Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΈ Π΄Π° ΠΎΡ†Π΅Π½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΡ‚Π΅ числа.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

select
relname,
pg_size_pretty(pg_total_relation_size(relname::regclass)) as
full_size,
pg_size_pretty(pg_relation_size(relname::regclass)) as
table_size,
pg_size_pretty(pg_total_relation_size(relname::regclass) -
pg_relation_size(relname::regclass)) as index_size
from pg_stat_user_tables
order by pg_total_relation_size(relname::regclass) desc limit 10;

Π Π°Π·ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° ΡΡŠΡ‰ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ρ‚Π°Π·ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ pg_total_relation_size(), pg_relation_size().

ΠšΠ°Ρ‚ΠΎ цяло ΠΈΠΌΠ° ΠΌΠ΅Ρ‚Π°ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ dt ΠΈ di, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π² PSQL ΠΈ ΡΡŠΡ‰ΠΎ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° ΠΈ индСкса.

Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½ΠΈ ΠΏΠΎΠΌΠ°Π³Π° Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†ΠΈΡ‚Π΅, Π΄ΠΎΡ€ΠΈ ΠΊΠ°Ρ‚ΠΎ Π²Π·Π΅ΠΌΠ΅ΠΌ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ индСкситС ΠΈΠ»ΠΈ Π±Π΅Π· Π΄Π° Π²Π·Π΅ΠΌΠ΅ΠΌ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ индСкситС, ΠΈ Π²Π΅Ρ‡Π΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ някои ΠΎΡ†Π΅Π½ΠΊΠΈ въз основа Π½Π° растСТа Π½Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ, Ρ‚.Π΅. ΠΊΠ°ΠΊ тя растС с нас, с ΠΊΠ°ΠΊΠ²Π° интСнзивност ΠΈ Π²Π΅Ρ‡Π΅ Π½Π°ΠΏΡ€Π°Π²Π΅Ρ‚Π΅ някои Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ относно ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π°.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

ДСйност ΠΏΠΎ писанС. Какво Π΅ запис? НСка Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ опСрацията UPDATE – опСрацията ΠΏΠΎ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ€Π΅Π΄ΠΎΠ²Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π°. Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚ актуализацията Π΅ Π΄Π²Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (ΠΈΠ»ΠΈ Π΄ΠΎΡ€ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅). Π’ΠΎΠ²Π° Π΅ вмъкванС Π½Π° Π½ΠΎΠ²Π° вСрсия Π½Π° Ρ€Π΅Π΄ ΠΈ ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°Π½Π΅ Π½Π° старата вСрсия Π½Π° Ρ€Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ остаряла. По-късно Π°Π²Ρ‚ΠΎΠ²Π°ΠΊΡƒΡƒΠΌΡŠΡ‚ Ρ‰Π΅ Π΄ΠΎΠΉΠ΄Π΅ ΠΈ Ρ‰Π΅ изчисти Ρ‚Π΅Π·ΠΈ остарСли вСрсии Π½Π° Π»ΠΈΠ½ΠΈΠΈΡ‚Π΅, Ρ‰Π΅ ΠΌΠ°Ρ€ΠΊΠΈΡ€Π° Ρ‚ΠΎΠ²Π° място ΠΊΠ°Ρ‚ΠΎ Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΎ Π·Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°.

ОсвСн Ρ‚ΠΎΠ²Π° актуализацията Π½Π΅ Π΅ просто Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°. ВсС ΠΎΡ‰Π΅ Π΅ актуализация Π½Π° индСкса. Ако ΠΈΠΌΠ°Ρ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎ индСкси Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π°, Ρ‚ΠΎΠ³Π°Π²Π° с актуализация всички индСкси, Π² ΠΊΠΎΠΈΡ‚ΠΎ участват ΠΏΠΎΠ»Π΅Ρ‚Π°Ρ‚Π°, Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ Π² заявката, ΡΡŠΡ‰ΠΎ Ρ‰Π΅ трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ. Π’Π΅Π·ΠΈ индСкси ΡΡŠΡ‰ΠΎ Ρ‰Π΅ ΠΈΠΌΠ°Ρ‚ остарСли вСрсии Π½Π° Ρ€Π΅Π΄ΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ изчистСни.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

select
s.relname,
pg_size_pretty(pg_relation_size(relid)),
coalesce(n_tup_ins,0) + 2 * coalesce(n_tup_upd,0) -
coalesce(n_tup_hot_upd,0) + coalesce(n_tup_del,0) AS total_writes,
(coalesce(n_tup_hot_upd,0)::float * 100 / (case when n_tup_upd > 0
then n_tup_upd else 1 end)::float)::numeric(10,2) AS hot_rate,
(select v[1] FROM regexp_matches(reloptions::text,E'fillfactor=(\d+)') as
r(v) limit 1) AS fillfactor
from pg_stat_all_tables s
join pg_class c ON c.oid=relid
order by total_writes desc limit 50;

И ΠΏΠΎΡ€Π°Π΄ΠΈ своя Π΄ΠΈΠ·Π°ΠΉΠ½, UPDATE Π΅ Ρ‚Π΅ΠΆΠΊΠ° опСрация. Но Ρ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ улСснСни. Π―ΠΆΡ‚Π΅ hot updates. Π’Π΅ сС появиха Π² PostgreSQL вСрсия 8.3. И ΠΊΠ°ΠΊΠ²ΠΎ Π΅ Ρ‚ΠΎΠ²Π°? Π’ΠΎΠ²Π° Π΅ Π»Π΅ΠΊΠ° актуализация, която Π½Π΅ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° индСкситС. ВоСст Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Ρ…ΠΌΠ΅ записа, Π½ΠΎ само Π·Π°ΠΏΠΈΡΡŠΡ‚ Π² страницата (ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π°) бСшС Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½, Π° индСкситС всС ΠΎΡ‰Π΅ сочат към ΡΡŠΡ‰ΠΈΡ запис Π² страницата. Има ΠΌΠ°Π»ΠΊΠΎ Ρ‚Π°ΠΊΠ°Π²Π° интСрСсна Π»ΠΎΠ³ΠΈΠΊΠ° Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΄ΠΎΠΉΠ΄Π΅ Π²Π°ΠΊΡƒΡƒΠΌ, Ρ‚ΠΎΠ³Π°Π²Π° ΠΈΠΌΠ° Ρ‚Π΅Π·ΠΈ Π²Π΅Ρ€ΠΈΠ³ΠΈ hot ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π° ΠΎΡ‚Π½ΠΎΠ²ΠΎ ΠΈ всичко ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π° Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π±Π΅Π· Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° индСкситС ΠΈ всичко сС случва с ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Π·Π°Π³ΡƒΠ±Π° Π½Π° рСсурси.

И ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠΌΠ°Ρ‚Π΅ n_tup_hot_upd голям, ΠΌΠ½ΠΎΠ³ΠΎ Π΅ Π΄ΠΎΠ±ΡŠΡ€. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ ΠΏΡ€Π΅ΠΎΠ±Π»Π°Π΄Π°Π²Π°Ρ‚ Π»Π΅ΠΊΠΈΡ‚Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Ρ‚ΠΎΠ²Π° Π½ΠΈ ΠΈΠ·Π»ΠΈΠ·Π° ΠΏΠΎ-Π΅Π²Ρ‚ΠΈΠ½ΠΎ ΠΎΡ‚ Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° рСсурси ΠΈ всичко Π΅ Π½Π°Ρ€Π΅Π΄.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

ALTER TABLE table_name SET (fillfactor = 70);

Как Π΄Π° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚Π΅ ΠΎΠ±Π΅ΠΌΠ° hot updateΠΎΠ²? МоТСм Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ fillfactor. Π’ΠΎΠΉ опрСдСля Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° Π·Π°ΠΏΠ°Π·Π΅Π½ΠΎΡ‚ΠΎ свободно пространство ΠΏΡ€ΠΈ попълванС Π½Π° страница Π² Ρ‚Π°Π±Π»ΠΈΡ†Π° с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° INSERT. ΠšΠΎΠ³Π°Ρ‚ΠΎ Π²Π»ΠΎΠΆΠΊΠΈΡ‚Π΅ ΠΎΡ‚ΠΈΠ΄Π°Ρ‚ Π² масата, Ρ‚Π΅ Π·Π°ΠΏΡŠΠ»Π²Π°Ρ‚ изцяло страницата, Π½Π΅ оставят ΠΏΡ€Π°Π·Π½ΠΎ място Π² нСя. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° сС ΠΌΠ°Ρ€ΠΊΠΈΡ€Π° Π½ΠΎΠ²Π° страница. Π”Π°Π½Π½ΠΈΡ‚Π΅ сС ΠΏΠΎΠΏΡŠΠ»Π²Π°Ρ‚ ΠΎΡ‚Π½ΠΎΠ²ΠΎ. И Ρ‚ΠΎΠ²Π° Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅, fillfactor = 100%.

МоТСм Π΄Π° настроим Ρ„Π°ΠΊΡ‚ΠΎΡ€Π° Π½Π° запълванС Π½Π° 70%. ВоСст, с Π²Π»ΠΎΠΆΠΊΠΈ, бСшС Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Π½ΠΎΠ²Π° страница, Π½ΠΎ само 70% ΠΎΡ‚ страницата бСшС запълнСна. И ΠΈΠΌΠ°ΠΌΠ΅ 30% Π² Ρ€Π΅Π·Π΅Ρ€Π². ΠšΠΎΠ³Π°Ρ‚ΠΎ трябва Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ актуализация, Ρ‚ΠΎΠ²Π° Π½Π°ΠΉ-вСроятно Ρ‰Π΅ сС случи Π½Π° ΡΡŠΡ‰Π°Ρ‚Π° страница ΠΈ Π½ΠΎΠ²Π°Ρ‚Π° вСрсия Π½Π° Ρ€Π΅Π΄Π° Ρ‰Π΅ сС ΠΏΠΎΠ±Π΅Ρ€Π΅ Π½Π° ΡΡŠΡ‰Π°Ρ‚Π° страница. И hot_update Ρ‰Π΅ бъдС Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΎ. Π’ΠΎΠ²Π° улСснява писанСто Π²ΡŠΡ€Ρ…Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

select c.relname,
current_setting('autovacuum_vacuum_threshold') as av_base_thresh,
current_setting('autovacuum_vacuum_scale_factor') as av_scale_factor,
(current_setting('autovacuum_vacuum_threshold')::int +
(current_setting('autovacuum_vacuum_scale_factor')::float * c.reltuples))
as av_thresh,
s.n_dead_tup
from pg_stat_user_tables s join pg_class c ON s.relname = c.relname
where s.n_dead_tup > (current_setting('autovacuum_vacuum_threshold')::int
+ (current_setting('autovacuum_vacuum_scale_factor')::float * c.reltuples));

Автовакуумна опашка. Autovacuum Π΅ Ρ‚Π°ΠΊΠ°Π²Π° подсистСма, Π·Π° която ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ°Π»ΠΊΠΎ статистики Π² PostgreSQL. МоТСм Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ само Π² Ρ‚Π°Π±Π»ΠΈΡ†ΠΈΡ‚Π΅ Π² pg_stat_activity ΠΊΠΎΠ»ΠΊΠΎ Π²Π°ΠΊΡƒΡƒΠΌΠ° ΠΈΠΌΠ°ΠΌΠ΅ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π΄Π° сС Ρ€Π°Π·Π±Π΅Ρ€Π΅ ΠΊΠΎΠ»ΠΊΠΎ маси Π² ΠΎΠΏΠ°ΡˆΠΊΠ°Ρ‚Π° ΠΈΠΌΠ° Π² Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅.

Π—Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°: _ΠžΡ‚ Postgres 10 ситуацията с прослСдяванСто Π½Π° вакуумния Π²Π°ΠΊΡƒΡƒΠΌ сС ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ - появи сС ΠΈΠ·Π³Π»Π΅Π΄ΡŠΡ‚ pg_stat_progressΠ²Π°ΠΊΡƒΡƒΠΌ, ΠΊΠΎΠ΅Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ опростява ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с автовакуумния ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³.

МоТСм Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Ρ‚Π°Π·ΠΈ опростСна заявка. И ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠΎΠ³Π° трябва Π΄Π° сС Π½Π°ΠΏΡ€Π°Π²ΠΈ Π²Π°ΠΊΡƒΡƒΠΌΡŠΡ‚. Но ΠΊΠ°ΠΊ ΠΈ ΠΊΠΎΠ³Π° трябва Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅ Π²Π°ΠΊΡƒΡƒΠΌΡŠΡ‚? Π’ΠΎΠ²Π° са старитС вСрсии Π½Π° Π½ΠΈΠ·ΠΎΠ²Π΅Ρ‚Π΅, Π·Π° ΠΊΠΎΠΈΡ‚ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ… ΠΏΠΎ-Ρ€Π°Π½ΠΎ. Π˜Π·Π²ΡŠΡ€ΡˆΠ΅Π½Π° Π΅ актуализация, Π½ΠΎΠ²Π°Ρ‚Π° вСрсия Π½Π° Ρ€Π΅Π΄Π° Π΅ Π²ΠΌΡŠΠΊΠ½Π°Ρ‚Π°. Появи сС остаряла вСрсия Π½Π° Π½ΠΈΠ·Π°. Π’Π°Π±Π»ΠΈΡ†Π° pg_stat_user_tables ΠΈΠΌΠ° Ρ‚Π°ΠΊΡŠΠ² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ n_dead_tup. Π’ΠΎΠΉ ΠΏΠΎΠΊΠ°Π·Π²Π° броя Π½Π° "ΠΌΡŠΡ€Ρ‚Π²ΠΈΡ‚Π΅" Ρ€Π΅Π΄ΠΎΠ²Π΅. И Π²Π΅Π΄Π½Π°Π³Π° Ρ‰ΠΎΠΌ броят Π½Π° ΠΌΡŠΡ€Ρ‚Π²ΠΈΡ‚Π΅ Ρ€Π΅Π΄ΠΎΠ²Π΅ станС ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΏΡ€Π°Π³, Π½Π° масата Ρ‰Π΅ Π΄ΠΎΠΉΠ΄Π΅ Π°Π²Ρ‚ΠΎΠ²Π°ΠΊΡƒΡƒΠΌ.

И ΠΊΠ°ΠΊ сС изчислява Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€Π°Π³? Π’ΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ спСцифичСн ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ ΠΎΡ‚ общия Π±Ρ€ΠΎΠΉ Ρ€Π΅Π΄ΠΎΠ²Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π°. Има ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ autovacuum_vacuum_scale_factor. Π’ΠΎΠΉ опрСдСля ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π°. Π”Π° ΠΊΠ°ΠΆΠ΅ΠΌ 10% + ΠΈΠΌΠ° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π΅Π½ Π±Π°Π·ΠΎΠ² ΠΏΡ€Π°Π³ ΠΎΡ‚ 50 Ρ€Π΅Π΄Π°. И ΠΊΠ°ΠΊΠ²ΠΎ става? ΠšΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΌΡŠΡ€Ρ‚Π²ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅ ΠΎΡ‚ "10% + 50" ΠΎΡ‚ всички Ρ€Π΅Π΄ΠΎΠ²Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π°, поставямС Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° Π½Π° Π°Π²Ρ‚ΠΎΠ²Π°ΠΊΡƒΡƒΠΌ.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

select c.relname,
current_setting('autovacuum_vacuum_threshold') as av_base_thresh,
current_setting('autovacuum_vacuum_scale_factor') as av_scale_factor,
(current_setting('autovacuum_vacuum_threshold')::int +
(current_setting('autovacuum_vacuum_scale_factor')::float * c.reltuples))
as av_thresh,
s.n_dead_tup
from pg_stat_user_tables s join pg_class c ON s.relname = c.relname
where s.n_dead_tup > (current_setting('autovacuum_vacuum_threshold')::int
+ (current_setting('autovacuum_vacuum_scale_factor')::float * c.reltuples));

Има ΠΎΠ±Π°Ρ‡Π΅ Π΅Π΄ΠΈΠ½ ΠΌΠΎΠΌΠ΅Π½Ρ‚. Основни ΠΏΡ€Π°Π³ΠΎΠ²Π΅ Π·Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ av_base_thresh ΠΈ av_scale_factor ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»Π½ΠΎ. И ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ ΠΏΡ€Π°Π³ΡŠΡ‚ няма Π΄Π° Π΅ Π³Π»ΠΎΠ±Π°Π»Π΅Π½, Π° ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»Π΅Π½ Π·Π° масата. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ, Π·Π° Π΄Π° изчислитС, Ρ‚Π°ΠΌ трябва Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Ρ‚Ρ€ΠΈΠΊΠΎΠ²Π΅ ΠΈ Ρ‚Ρ€ΠΈΠΊΠΎΠ²Π΅. А ΠΏΡ€ΠΈ интСрСс ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°Ρ‚Π΅ ΠΎΠΏΠΈΡ‚Π° Π½Π° ΠΊΠΎΠ»Π΅Π³ΠΈΡ‚Π΅ ΠΎΡ‚ Avito (Π»ΠΈΠ½ΠΊΡŠΡ‚ Π½Π° слайда Π΅ Π½Π΅Π²Π°Π»ΠΈΠ΄Π΅Π½ ΠΈ Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½ Π² тСкста).

ΠŸΠΈΡΠ°Ρ…Π° Π·Π° ΠΌΡƒΠ½ΠΈΠ½ ΠΏΠ»ΡŠΠ³ΠΈΠ½ΠΊΠΎΠΉΡ‚ΠΎ ΠΎΡ‚Ρ‡ΠΈΡ‚Π° Ρ‚Π΅Π·ΠΈ Π½Π΅Ρ‰Π°. Има ΠΊΡŠΡ€ΠΏΠ° Π·Π° ΠΊΡ€Π°ΠΊΠ° Π½Π° Π΄Π²Π° Ρ‡Π°Ρ€ΡˆΠ°Ρ„Π°. Но Ρ‚ΠΎΠΉ смята ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ ΠΈ доста Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ Π½ΠΈ позволява Π΄Π° ΠΏΡ€Π΅Ρ†Π΅Π½ΠΈΠΌ къдС ΠΈΠΌΠ°ΠΌΠ΅ Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π°ΠΊΡƒΡƒΠΌ Π·Π° маси, къдС ΠΈΠΌΠ° ΠΌΠ°Π»ΠΊΠΎ.

Какво ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ ΠΏΠΎ Π²ΡŠΠΏΡ€ΠΎΡΠ°? Ако ΠΈΠΌΠ°ΠΌΠ΅ дълга опашка ΠΈ автопрахосмукачката Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС справи, Ρ‚ΠΎΠ³Π°Π²Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠΌ броя Π½Π° прахосмукачкитС ΠΈΠ»ΠΈ просто Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ прахосмукачката ΠΏΠΎ-агрСсивнатака Ρ‡Π΅ Π΄Π° сС задСйства ΠΏΠΎ-Ρ€Π°Π½ΠΎ, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° Π½Π° ΠΌΠ°Π»ΠΊΠΈ части. И Ρ‚Π°ΠΊΠ° ΠΎΠΏΠ°ΡˆΠΊΠ°Ρ‚Π° Ρ‰Π΅ Π½Π°ΠΌΠ°Π»Π΅Π΅. - ΠžΡΠ½ΠΎΠ²Π½ΠΎΡ‚ΠΎ Ρ‚ΡƒΠΊ Π΅ Π΄Π° сС слСди Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° дисковСтС, Ρ‚.ΠΊ. НСщото с Π²Π°ΠΊΡƒΡƒΠΌΠ° Π½Π΅ Π΅ Π±Π΅Π·ΠΏΠ»Π°Ρ‚Π½ΠΎ, Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ с появата Π½Π° SSD / NVMe устройства ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ стана ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΠΌ.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

pg_stat_all_indexes Π΅ статистика Π·Π° индСкситС. Вя Π½Π΅ Π΅ голяма. И ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ информация Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° индСкси ΠΎΡ‚ Π½Π΅Π³ΠΎ. И Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ ΠΊΠΎΠΈ индСкси ΠΈΠΌΠ°ΠΌΠ΅ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

ΠΊΠ°ΠΊΡ‚ΠΎ Π²Π΅Ρ‡Π΅ ΠΊΠ°Π·Π°Ρ…, актуализацията Π΅ Π½Π΅ само Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ, Π½ΠΎ ΠΈ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° индСкси. Π‘ΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ, Π°ΠΊΠΎ ΠΈΠΌΠ°ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ индСкси Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π°, Ρ‚ΠΎΠ³Π°Π²Π° ΠΏΡ€ΠΈ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ€Π΅Π΄ΠΎΠ²Π΅Ρ‚Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° трябва Π΄Π° сС Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚ ΠΈ индСкситС Π½Π° индСксиранитС ΠΏΠΎΠ»Π΅Ρ‚Π°, ΠΈ Π°ΠΊΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ индСкси, Π·Π° ΠΊΠΎΠΈΡ‚ΠΎ няма сканиранС Π½Π° индСкси, Ρ‚ΠΎΠ³Π°Π²Π° Ρ‚Π΅ висят с нас ΠΊΠ°Ρ‚ΠΎ баласт. И трябва Π΄Π° сС ΠΎΡ‚ΡŠΡ€Π²Π΅Ρ‚Π΅ ΠΎΡ‚ тях. Π—Π° Ρ‚ΠΎΠ²Π° ΠΈΠΌΠ°ΠΌΠ΅ Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ ΠΏΠΎΠ»Π΅ idx_scan. НиС просто Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π°ΠΌΠ΅ броя сканирания Π½Π° индСкса. Ако индСкситС ΠΈΠΌΠ°Ρ‚ Π½ΡƒΠ»Π΅Π²ΠΈ сканирания Π·Π° сравнитСлно дълъг ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ Π½Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° статистика (ΠΏΠΎΠ½Π΅ 2-3 сСдмици), Ρ‚ΠΎΠ³Π°Π²Π° Π½Π°ΠΉ-вСроятно Ρ‚ΠΎΠ²Π° са лоши индСкси, трябва Π΄Π° сС ΠΎΡ‚ΡŠΡ€Π²Π΅ΠΌ ΠΎΡ‚ тях.

Π—Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°: ΠšΠΎΠ³Π°Ρ‚ΠΎ Ρ‚ΡŠΡ€ΡΠΈΡ‚Π΅ Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ индСкси Π² случай Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈ Π·Π° ΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈΡ€Π°Π½Π΅, трябва Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚Π΅ всички възли Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°, Ρ‚.ΠΊ. статистиката Π½Π΅ Π΅ Π³Π»ΠΎΠ±Π°Π»Π½Π° ΠΈ Π°ΠΊΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡŠΡ‚ Π½Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½Π° главния, Ρ‚ΠΎΠ³Π°Π²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ (Π°ΠΊΠΎ ΠΈΠΌΠ° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅).

Π”Π²Π΅ Π²Ρ€ΡŠΠ·ΠΊΠΈ:

https://github.com/dataegret/pg-utils/blob/master/sql/low_used_indexes.sql

http://www.databasesoup.com/2014/05/new-finding-unused-indexes-query.html

Π’ΠΎΠ²Π° са ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Π·Π° ΠΏΠΎ-ΡƒΡΡŠΠ²ΡŠΡ€ΡˆΠ΅Π½ΡΡ‚Π²Π°Π½ΠΈ заявки Π·Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊ Π΄Π° Ρ‚ΡŠΡ€ΡΠΈΡ‚Π΅ Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ индСкси.

Π’Ρ‚ΠΎΡ€Π°Ρ‚Π° Π²Ρ€ΡŠΠ·ΠΊΠ° Π΅ доста интСрСсна заявка. Π’ Π½Π΅Π³ΠΎ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ°. ΠŸΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°ΠΌ Π³ΠΎ Π·Π° ΠΏΡ€Π΅Π³Π»Π΅Π΄.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

Какво Π΄Ρ€ΡƒΠ³ΠΎ трябва Π΄Π° сС ΠΎΠ±ΠΎΠ±Ρ‰ΠΈ с индСкси?

  • НСизползванитС индСкси са лоши.

  • Π’Π΅ Π·Π°Π΅ΠΌΠ°Ρ‚ място.

  • Π—Π°Π±Π°Π²Π΅Ρ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ ΠΏΠΎ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅.

  • Π”ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π·Π° Π²Π°ΠΊΡƒΡƒΠΌΠ°.

Ако ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π΅ΠΌ Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡ‚Π΅ индСкси, само Ρ‰Π΅ Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π°.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

БлСдващият ΠΈΠ·Π³Π»Π΅Π΄ Π΅ pg_stat_activity. Π’ΠΎΠ²Π° Π΅ Π°Π½Π°Π»ΠΎΠ³ Π½Π° ΠΏΠΎΠΌΠΎΡ‰Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° ps, само Π² PostgreSQL. Ако psβ€žΠž, Ρ‚ΠΎΠ³Π°Π²Π° Π½Π°Π±Π»ΡŽΠ΄Π°Π²Π°ΠΉΡ‚Π΅ процСситС Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма pg_stat_activity Ρ‰Π΅ Π²ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅ дСйността Π² PostgreSQL.

Какво ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π²Π·Π΅ΠΌΠ΅ΠΌ ΠΎΡ‚Ρ‚Π°ΠΌ?

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

select
count(*)*100/(select current_setting('max_connections')::int)
from pg_stat_activity;

МоТСм Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ цялостната дСйност, която сС случва Π² Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ. МоТСм Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ Π½ΠΎΠ²ΠΎ внСдряванС. Π’Π°ΠΌ всичко ΠΈΠ·Π±ΡƒΡ…Π½Π°, Π½ΠΎΠ²ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠΈ Π½Π΅ сС ΠΏΡ€ΠΈΠ΅ΠΌΠ°Ρ‚, Π³Ρ€Π΅ΡˆΠΊΠΈ сС ΠΈΠ·Π»ΠΈΠ²Π°Ρ‚ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

select
client_addr, usename, datname, count(*)
from pg_stat_activity group by 1,2,3 order by 4 desc;

МоТСм Π΄Π° изпълним заявка ΠΊΠ°Ρ‚ΠΎ Ρ‚Π°Π·ΠΈ ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ общия ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠΈΡ‚Π΅ спрямо максималния Π»ΠΈΠΌΠΈΡ‚ Π·Π° Π²Ρ€ΡŠΠ·ΠΊΠΈ ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠΎΠΉ ΠΈΠΌΠ°ΠΌΠ΅ Π½Π°ΠΉ-ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€ΡŠΠ·ΠΊΠΈ. И Π² дадСния случай Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ Ρ‚ΠΎΠ·ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» cron_role ΠΎΡ‚Π²ΠΎΡ€ΠΈ 508 Π²Ρ€ΡŠΠ·ΠΊΠΈ. И Π½Π΅Ρ‰ΠΎ ΠΌΡƒ сС случи. Врябва Π΄Π° сС справитС с Ρ‚ΠΎΠ²Π° ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅. И Π΅ напълно възмоТно Ρ‚ΠΎΠ²Π° Π΄Π° Π΅ някакъв Π°Π½ΠΎΠΌΠ°Π»Π΅Π½ Π±Ρ€ΠΎΠΉ Π²Ρ€ΡŠΠ·ΠΊΠΈ.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

Ако ΠΈΠΌΠ°ΠΌΠ΅ OLTP Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅, заявкитС трябва Π΄Π° са Π±ΡŠΡ€Π·ΠΈ, ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡŠΡ€Π·ΠΈ ΠΈ Π½Π΅ трябва Π΄Π° ΠΈΠΌΠ° дълги заявки. Ако ΠΎΠ±Π°Ρ‡Π΅ ΠΈΠΌΠ° дълги заявки, Ρ‚ΠΎΠ³Π°Π²Π° Π² краткосрочСн ΠΏΠ»Π°Π½ няма ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° сС притСсняватС, Π½ΠΎ Π² Π΄ΡŠΠ»Π³ΠΎΡΡ€ΠΎΡ‡Π΅Π½ ΠΏΠ»Π°Π½ Π΄ΡŠΠ»Π³ΠΈΡ‚Π΅ заявки врСдят Π½Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ, Ρ‚Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Ρ‚ Π΅Ρ„Π΅ΠΊΡ‚Π° Π½Π° Ρ€Π°Π·Π΄ΡƒΠ²Π°Π½Π΅ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†ΠΈΡ‚Π΅, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π½Π°ΡΡ‚ΡŠΠΏΠΈ фрагмСнтация Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π°. ΠšΠ°ΠΊΡ‚ΠΎ Ρ€Π°Π·Π΄ΡƒΠ²Π°Π½Π΅Ρ‚ΠΎ, Ρ‚Π°ΠΊΠ° ΠΈ Π΄ΡŠΠ»Π³ΠΈΡ‚Π΅ заявки трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π°Ρ‚ΠΈ.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

select
client_addr, usename, datname,
clock_timestamp() - xact_start as xact_age,
clock_timestamp() - query_start as query_age,
query
from pg_stat_activity order by xact_start, query_start;

Моля, ΠΎΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: с Ρ‚Π°ΠΊΠ°Π²Π° заявка ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°ΠΌΠ΅ дълги заявки ΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ. ИзползвамС функцията clock_timestamp() Π·Π° опрСдСлянС Π½Π° Ρ€Π°Π±ΠΎΡ‚Π½ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅. Π”ΡŠΠ»Π³ΠΈ искания, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π°ΠΌΠ΅Ρ€ΠΈΡ…ΠΌΠ΅, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π³ΠΈ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΠΌ, Π΄Π° Π³ΠΈ изпълним explain, ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ ΠΏΠ»Π°Π½ΠΎΠ²Π΅Ρ‚Π΅ ΠΈ ΠΏΠΎ някакъв Π½Π°Ρ‡ΠΈΠ½ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°ΠΉΡ‚Π΅. Π‘Π½ΠΈΠΌΠ°ΠΌΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ‚Π΅ дълги заявки ΠΈ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π°ΠΌΠ΅ Π΄Π° ΠΆΠΈΠ²Π΅Π΅ΠΌ.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

select * from pg_stat_activity where state in
('idle in transaction', 'idle in transaction (aborted)';

Π›ΠΎΡˆΠΈΡ‚Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ са Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈ Π² транзакция ΠΈ Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈ Π² транзакция (ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚Π΅Π½ΠΈ) Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.

Какво ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°? Π’Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈΡ‚Π΅ ΠΈΠΌΠ°Ρ‚ мноТСство ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΡ. И Π΅Π΄Π½ΠΎ ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΡ‚Π½Π΅ΠΌΠ΅ ΠΏΠΎ всяко Π²Ρ€Π΅ΠΌΠ΅. Има ΠΏΠΎΠ»Π΅ Π·Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΡ state Π² Ρ‚ΠΎΠ·ΠΈ ΠΈΠ·Π³Π»Π΅Π΄. И Π½ΠΈΠ΅ Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅, Π·Π° Π΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

select * from pg_stat_activity where state in
('idle in transaction', 'idle in transaction (aborted)';

И, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΊΠ°Π·Π°Ρ… ΠΏΠΎ-Π³ΠΎΡ€Π΅, Ρ‚Π΅Π·ΠΈ Π΄Π²Π΅ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΡ Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π΅Π½ Π² транзакция ΠΈ Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π΅Π½ Π² транзакция (ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚Π΅Π½) са лоши. Какво Π΅? Π’ΠΎΠ²Π° Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚ΡŠΡ‚, Π² ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΎΡ‚Π²ΠΎΡ€ΠΈ транзакция, ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈ някои дСйствия ΠΈ сС Π·Π°Π΅ със своята Ρ€Π°Π±ΠΎΡ‚Π°. Вранзакцията остава ΠΎΡ‚Π²ΠΎΡ€Π΅Π½Π°. Π’ΠΎΠΉ виси, Π½ΠΈΡ‰ΠΎ Π½Π΅ сС случва Π² Π½Π΅Π³ΠΎ, ΠΎΡ‚Π½Π΅ΠΌΠ° Π²Ρ€ΡŠΠ·ΠΊΠ°, Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅ ΠΈ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΎ всС ΠΎΡ‰Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π° Ρ€Π°Π·Π΄ΡƒΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ, ΠΏΠΎΡ€Π°Π΄ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Π½Π° транзакционния Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π» Π½Π° Postrges. И Ρ‚Π°ΠΊΠΈΠ²Π° сдСлки ΡΡŠΡ‰ΠΎ трябва Π΄Π° сС разстрСлват, Π·Π°Ρ‰ΠΎΡ‚ΠΎ са Π²Ρ€Π΅Π΄Π½ΠΈ ΠΊΠ°Ρ‚ΠΎ цяло, във всСки случай.

Ако Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Π΅ ΠΈΠΌΠ°Ρ‚Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ 5-10-20 ΠΎΡ‚ тях във Π²Π°ΡˆΠ°Ρ‚Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ, Ρ‚ΠΎΠ³Π°Π²Π° трябва Π΄Π° сС притСснитС ΠΈ Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ Π΄Π° ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Π½Π΅Ρ‰ΠΎ с тях.

Π’ΡƒΠΊ ΡΡŠΡ‰ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π·Π° изчисляванС Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ clock_timestamp(). Π‘Π½ΠΈΠΌΠ°ΠΌΠ΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

ΠšΠ°ΠΊΡ‚ΠΎ ΠΊΠ°Π·Π°Ρ… ΠΏΠΎ-Π³ΠΎΡ€Π΅, Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡΡ‚Π° са, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΄Π²Π΅ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ сС ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€Π°Ρ‚ Π·Π° Π΅Π΄ΠΈΠ½ ΠΈΠ»ΠΈ Π³Ρ€ΡƒΠΏΠ° рСсурси. Π—Π° Ρ‚ΠΎΠ²Π° ΠΈΠΌΠ°ΠΌΠ΅ ΠΏΠΎΠ»Π΅ waiting с Π±ΡƒΠ»Π΅Π²Π° стойност true ΠΈΠ»ΠΈ false.

Вярно - Ρ‚ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ ΠΏΡ€ΠΎΡ†Π΅ΡΡŠΡ‚ Ρ‡Π°ΠΊΠ°, трябва Π΄Π° сС Π½Π°ΠΏΡ€Π°Π²ΠΈ Π½Π΅Ρ‰ΠΎ. ΠšΠΎΠ³Π°Ρ‚ΠΎ Π΄Π°Π΄Π΅Π½ процСс Ρ‡Π°ΠΊΠ°, Ρ‚ΠΎΠ³Π°Π²Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€Π°Π» процСса, ΡΡŠΡ‰ΠΎ Ρ‡Π°ΠΊΠ°. ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ Π² Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π° сСди ΠΈ ΡΡŠΡ‰ΠΎ Ρ‡Π°ΠΊΠ°.

ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅: _Π—Π°ΠΏΠΎΡ‡Π²Π°ΠΉΠΊΠΈ ΠΎΡ‚ Postgres 9.6, ΠΏΠΎΠ»Π΅Ρ‚ΠΎ waiting ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π°Ρ‚ΠΈ ΠΈ Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΈ с ΠΎΡ‰Π΅ Π΄Π²Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠ²Π½ΠΈ ΠΏΠΎΠ»Π΅Ρ‚Π° wait_event_type ΠΈ wait_event._

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

Какво Π΄Π° правя? Ако Π²ΠΈΠΆΠ΄Π°Ρ‚Π΅ истина Π·Π° дълго Π²Ρ€Π΅ΠΌΠ΅, Ρ‚ΠΎΠ³Π°Π²Π° трябва Π΄Π° сС ΠΎΡ‚ΡŠΡ€Π²Π΅Ρ‚Π΅ ΠΎΡ‚ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ искания. НиС просто снимамС Ρ‚Π°ΠΊΠΈΠ²Π° сдСлки. ПишСм Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ ΠΊΠ°ΠΊΠ²ΠΎ трябва Π΄Π° сС ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π° ΠΏΠΎ някакъв Π½Π°Ρ‡ΠΈΠ½, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π΄Π° няма Π½Π°Π΄ΠΏΡ€Π΅Π²Π°Ρ€Π° Π·Π° рСсурси. И слСд Ρ‚ΠΎΠ²Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Ρ‚ΠΎΠ²Π° Π΄Π° Π½Π΅ сС случи.

И СкстрСмният, Π½ΠΎ Π² ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΎ Π½Π΅ Ρ„Π°Ρ‚Π°Π»Π΅Π½ случай Π΅ възникванС Π½Π° задънСни Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ. Π”Π²Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ са Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π»ΠΈ Π΄Π²Π° рСсурса, слСд ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΈΠΌΠ°Ρ‚ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ тях ΠΎΡ‚Π½ΠΎΠ²ΠΎ, Π²Π΅Ρ‡Π΅ към ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΈ рСсурси. PostgreSQL Π² Ρ‚ΠΎΠ·ΠΈ случай Π²Π·Π΅ΠΌΠ° ΠΈ изстрСлва самата транзакция, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Ρ€ΡƒΠ³Π°Ρ‚Π° Π΄Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ. Π’ΠΎΠ²Π° Π΅ задънСна ситуация ΠΈ тя Π½Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π° сСбС си. Π•Ρ‚ΠΎ Π·Π°Ρ‰ΠΎ PostgreSQL Π΅ ΠΏΡ€ΠΈΠ½ΡƒΠ΄Π΅Π½ Π΄Π° ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ΅ΠΌΠ΅ ΠΊΡ€Π°ΠΉΠ½ΠΈ ΠΌΠ΅Ρ€ΠΊΠΈ.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

https://github.com/lesovsky/uber-scripts/blob/master/postgresql/sql/c4_06_show_locked_queries.sql

https://github.com/lesovsky/uber-scripts/blob/master/postgresql/sql/show_locked_queries_95.sql

https://github.com/lesovsky/uber-scripts/blob/master/postgresql/sql/show_locked_queries_96.sql

http://big-elephants.com/2013-09/exploring-query-locks-in-postgres/

И Π΅Ρ‚ΠΎ Π΄Π²Π΅ заявки, ΠΊΠΎΠΈΡ‚ΠΎ Π²ΠΈ позволяват Π΄Π° прослСдяватС ΠΊΠ»ΡŽΡ‡Π°Π»ΠΊΠΈ. ИзползвамС Π³Π»Π΅Π΄ΠΊΠ°Ρ‚Π° pg_locks, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΈ позволява Π΄Π° прослСдяватС Ρ‚Π΅ΠΆΠΊΠΈ ΠΊΠ»ΡŽΡ‡Π°Π»ΠΊΠΈ.

И ΠΏΡŠΡ€Π²Π°Ρ‚Π° Π²Ρ€ΡŠΠ·ΠΊΠ° Π΅ самият тСкст Π½Π° заявката. Доста Π΅ дълъг.

А Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° Π²Ρ€ΡŠΠ·ΠΊΠ° Π΅ статия Π·Π° Π±Ρ€Π°Π²ΠΈ. ПолСзно Π΅ Π΄Π° сС Ρ‡Π΅Ρ‚Π΅, ΠΌΠ½ΠΎΠ³ΠΎ Π΅ интСрСсно.

И Ρ‚Π°ΠΊΠ°, ΠΊΠ°ΠΊΠ²ΠΎ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅? Π’ΠΈΠΆΠ΄Π°ΠΌΠ΅ Π΄Π²Π΅ искания. Π‘Π΄Π΅Π»ΠΊΠ° с ALTER TABLE Π΅ Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‰Π° транзакция. Π—Π°ΠΏΠΎΡ‡Π½Π°, Π½ΠΎ Π½Π΅ ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡ΠΈ ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π° Ρ‚Π°Π·ΠΈ транзакция, ΠΏΡ€Π°Π²ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ Π½Π΅Ρ‰Π° някъдС. И Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° заявка Π΅ актуализация. Π’ΠΎΠΉ ΠΈΠ·Ρ‡Π°ΠΊΠ²Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° Π·Π° промяна Π΄Π° Π·Π°Π²ΡŠΡ€ΡˆΠΈ, ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° си.

Π’Π°ΠΊΠ° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΊΠΎΠΉ ΠΊΠΎΠ³ΠΎ Π΅ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΠ», ΠΊΠΎΠΉ ΠΊΠΎΠ³ΠΎ Π΄ΡŠΡ€ΠΆΠΈ ΠΈ ΠΏΠΎ-Π½Π°Ρ‚Π°Ρ‚ΡŠΠΊ Π΄Π° сС Π·Π°Π½ΠΈΠΌΠ°Π²Π°ΠΌΠ΅ с Ρ‚ΠΎΠ²Π°.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

БлСдващият ΠΌΠΎΠ΄ΡƒΠ» Π΅ pg_stat_statements. ΠšΠ°ΠΊΡ‚ΠΎ ΠΊΠ°Π·Π°Ρ…, Ρ‚ΠΎΠ²Π° Π΅ ΠΌΠΎΠ΄ΡƒΠ». Π—Π° Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅, трябва Π΄Π° Π·Π°Ρ€Π΅Π΄ΠΈΡ‚Π΅ Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π² конфигурацията, Π΄Π° рСстартиратС PostgreSQL, Π΄Π° инсталиратС ΠΌΠΎΠ΄ΡƒΠ»Π° (с Π΅Π΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°) ΠΈ Ρ‚ΠΎΠ³Π°Π²Π° Ρ‰Π΅ ΠΈΠΌΠ°ΠΌΠ΅ Π½ΠΎΠ² ΠΈΠ·Π³Π»Π΅Π΄.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

CΡ€Π΅Π΄Π½Π΅Π΅ врСмя запроса Π² милисСкундах
$ select (sum(total_time) / sum(calls))::numeric(6,3)
from pg_stat_statements;

Π‘Π°ΠΌΡ‹Π΅ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΏΠΈΡˆΡƒΡ‰ΠΈΠ΅ (Π² shared_buffers) запросы
$ select query, shared_blks_dirtied
from pg_stat_statements
where shared_blks_dirtied > 0 order by 2 desc;

Какво ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π²Π·Π΅ΠΌΠ΅ΠΌ ΠΎΡ‚Ρ‚Π°ΠΌ? Ако Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π·Π° прости Π½Π΅Ρ‰Π°, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π²Π·Π΅ΠΌΠ΅ΠΌ срСдното Π²Ρ€Π΅ΠΌΠ΅ Π·Π° изпълнСниС Π½Π° заявката. Π’Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ растС, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ PostgreSQL Ρ€Π΅Π°Π³ΠΈΡ€Π° Π±Π°Π²Π½ΠΎ ΠΈ трябва Π΄Π° сС Π½Π°ΠΏΡ€Π°Π²ΠΈ Π½Π΅Ρ‰ΠΎ.

МоТСм Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ Π½Π°ΠΉ-Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈΡ‚Π΅ записващи Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ промСнят Π΄Π°Π½Π½ΠΈ Π² сподСлСни Π±ΡƒΡ„Π΅Ρ€ΠΈ. Π’ΠΈΠΆΡ‚Π΅ ΠΊΠΎΠΉ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π° ΠΈΠ»ΠΈ ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π° Π΄Π°Π½Π½ΠΈ Ρ‚Π°ΠΌ.

И ΠΌΠΎΠΆΠ΅ΠΌ просто Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ статистики Π·Π° Ρ‚Π΅Π·ΠΈ заявки.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

https://github.com/dataegret/pg-utils/blob/master/sql/global_reports/query_stat_total.sql

НиС pg_stat_statements ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π·Π° създаванС Π½Π° ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΈ. НулирамС статистиката вСднъТ Π½Π° Π΄Π΅Π½. Π”Π° Π³ΠΎ Π½Π°Ρ‚Ρ€ΡƒΠΏΠ°ΠΌΠ΅. ΠŸΡ€Π΅Π΄ΠΈ Π΄Π° Π½ΡƒΠ»ΠΈΡ€Π°ΠΌΠ΅ статистиката слСдващия ΠΏΡŠΡ‚, ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°ΠΌΠ΅ ΠΎΡ‚Ρ‡Π΅Ρ‚. Π•Ρ‚ΠΎ Π»ΠΈΠ½ΠΊ към Π΄ΠΎΠΊΠ»Π°Π΄Π°. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΎ Π³Π»Π΅Π΄Π°Ρ‚Π΅.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

Какво ΠΏΡ€Π°Π²ΠΈΠΌ? НиС изчислявамС ΠΎΠ±Ρ‰Π°Ρ‚Π° статистика Π·Π° всички заявки. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Π·Π° всяка заявка ΠΎΡ‚Ρ‡ΠΈΡ‚Π°ΠΌΠ΅ нСйния ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»Π΅Π½ принос към Ρ‚Π°Π·ΠΈ ΠΎΠ±Ρ‰Π° статистика.

И ΠΊΠ°ΠΊΠ²ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ? МоТСм Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΎΠ±Ρ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π·Π° изпълнСниС Π½Π° всички заявки ΠΎΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Ρ‚ΠΈΠΏ Π½Π° Ρ„ΠΎΠ½Π° Π½Π° всички останали заявки. МоТСм Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° CPU ΠΈ I/O във Π²Ρ€ΡŠΠ·ΠΊΠ° с цялостната ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π°. И Π²Π΅Ρ‡Π΅ Π·Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ‚Π΅Π·ΠΈ заявки. БъздавамС Π²ΠΎΠ΄Π΅Ρ‰ΠΈ заявки въз основа Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΎΡ‚Ρ‡Π΅Ρ‚ ΠΈ Π²Π΅Ρ‡Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ Ρ…Ρ€Π°Π½Π° Π·Π° Ρ€Π°Π·ΠΌΠΈΡΡŠΠ» ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

Какво ΠΈΠΌΠ°ΠΌΠ΅ Π·Π°Π΄ кулиситС? ВсС ΠΎΡ‰Π΅ ΠΈΠΌΠ° няколко прСдлоТСния, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ Ρ€Π°Π·Π³Π»Π΅Π΄Π°Ρ…, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ.

Има pgstattuple ΡΡŠΡ‰ΠΎ Π΅ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π΅Π½ ΠΌΠΎΠ΄ΡƒΠ» ΠΎΡ‚ стандартния ΠΏΠ°ΠΊΠ΅Ρ‚ Π·Π° принос. Позволява Π²ΠΈ Π΄Π° ΠΎΡ†Π΅Π½ΠΈΡ‚Π΅ bloat маси, Ρ‚.Π½Π°Ρ€. фрагмСнтация Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π°. И Π°ΠΊΠΎ фрагмСнтацията Π΅ голяма, трябва Π΄Π° я ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π΅Ρ‚Π΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ инструмСнти. И функция pgstattuple Ρ€Π°Π±ΠΎΡ‚ΠΈ дълго Π²Ρ€Π΅ΠΌΠ΅. И ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ ΠΏΠΎΠ²Π΅Ρ‡Π΅ маси, Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎ-дълго Ρ‰Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

БлСдващият принос Π΅ pg_buffercache. Позволява Π²ΠΈ Π΄Π° провСряватС сподСлСнитС Π±ΡƒΡ„Π΅Ρ€ΠΈ: ΠΊΠΎΠ»ΠΊΠΎ ΠΈΠ½Ρ‚Π΅Π½Π·ΠΈΠ²Π½ΠΎ ΠΈ Π·Π° ΠΊΠΎΠΈ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π±ΡƒΡ„Π΅Ρ€Π½ΠΈΡ‚Π΅ страници. И просто Π²ΠΈ позволява Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ Π² сподСлСнитС Π±ΡƒΡ„Π΅Ρ€ΠΈ ΠΈ Π΄Π° ΠΎΡ†Π΅Π½ΠΈΡ‚Π΅ ΠΊΠ°ΠΊΠ²ΠΎ сС случва Ρ‚Π°ΠΌ.

БлСдващият ΠΌΠΎΠ΄ΡƒΠ» Π΅ pgfincore. Вя Π²ΠΈ позволява Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Ρ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ Π½Π° ниско Π½ΠΈΠ²ΠΎ Ρ‡Ρ€Π΅Π· систСмно ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ mincore(), Ρ‚.Π΅. позволява Π²ΠΈ Π΄Π° Π·Π°Ρ€Π΅Π΄ΠΈΡ‚Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° Π² сподСлСни Π±ΡƒΡ„Π΅Ρ€ΠΈ ΠΈΠ»ΠΈ Π΄Π° я Ρ€Π°Π·Ρ‚ΠΎΠ²Π°Ρ€ΠΈΡ‚Π΅. И позволява, Π½Π°Ρ€Π΅Π΄ с Π΄Ρ€ΡƒΠ³ΠΈ Π½Π΅Ρ‰Π°, Π΄Π° сС инспСктира кСша Π½Π° страницитС Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма, тоСст ΠΊΠΎΠ»ΠΊΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° Π·Π°Π΅ΠΌΠ° Π² кСша Π½Π° страницитС, Π² сподСлСни Π±ΡƒΡ„Π΅Ρ€ΠΈ, ΠΈ просто Π²ΠΈ позволява Π΄Π° ΠΎΡ†Π΅Π½ΠΈΡ‚Π΅ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π°.

БлСдващият ΠΌΠΎΠ΄ΡƒΠ» Π΅ pg_stat_kcache. Π’ΠΎΠΉ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° систСмното ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ getrusage(). И Π³ΠΎ изпълнява ΠΏΡ€Π΅Π΄ΠΈ ΠΈ слСд изпълнСниС Π½Π° заявката. И Π² ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π°Ρ‚Π° статистика Π½ΠΈ позволява Π΄Π° ΠΎΡ†Π΅Π½ΠΈΠΌ ΠΊΠΎΠ»ΠΊΠΎ Π½Π°ΡˆΠ°Ρ‚Π° заявка Π΅ ΠΈΠ·Ρ€Π°Π·Ρ…ΠΎΠ΄Π²Π°Π»Π° Π·Π° I / O Π½Π° диска, Ρ‚.Π΅. ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Ρ„Π°ΠΉΠ»ΠΎΠ²Π°Ρ‚Π° систСма ΠΈ Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° процСсора. ΠœΠΎΠ΄ΡƒΠ»ΡŠΡ‚ ΠΎΠ±Π°Ρ‡Π΅ Π΅ ΠΌΠ»Π°Π΄ (ΠΊΡ…Π΅-ΠΊΡ…Π΅) ΠΈ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° си изисква PostgreSQL 9.4 ΠΈ pg_stat_statements, Π·Π° ΠΊΠΎΠΈΡ‚ΠΎ спомСнах ΠΏΠΎ-Ρ€Π°Π½ΠΎ.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

  • Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° статистика Π΅ ΠΏΠΎΠ»Π΅Π·Π½Π°. НяматС Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ софтуСр Π½Π° Ρ‚Ρ€Π΅Ρ‚ΠΈ страни. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³Π»Π΅Π΄Π°Ρ‚Π΅, Π΄Π° Π²ΠΈΠΆΠ΄Π°Ρ‚Π΅, Π΄Π° ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Π½Π΅Ρ‰ΠΎ, Π΄Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚Π΅.

  • Π˜Π·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° статистика Π΅ лСсно, Ρ‚ΠΎΠ²Π° Π΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ SQL. Π‘ΡŠΠ±Ρ€Π°Ρ…Ρ‚Π΅ заявка, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Ρ…Ρ‚Π΅ я, ΠΈΠ·ΠΏΡ€Π°Ρ‚ΠΈΡ…Ρ‚Π΅ я, Ρ€Π°Π·Π³Π»Π΅Π΄Π°Ρ…Ρ‚Π΅ я.

  • Бтатистиката ΠΏΠΎΠΌΠ°Π³Π° Π΄Π° сС ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ Π½Π° Π²ΡŠΠΏΡ€ΠΎΡΠΈ. Ако ΠΈΠΌΠ°Ρ‚Π΅ Π²ΡŠΠΏΡ€ΠΎΡΠΈ, ΠΎΠ±Ρ€ΡŠΡ‰Π°Ρ‚Π΅ сС към статистиката - Π³Π»Π΅Π΄Π°ΠΉΡ‚Π΅, ΠΏΡ€Π°Π²Π΅Ρ‚Π΅ ΠΈΠ·Π²ΠΎΠ΄ΠΈ, Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°ΠΉΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅.

  • И СкспСримСнтирайтС. Много заявки, ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π°Π½Π½ΠΈ. Π’ΠΈΠ½Π°Π³ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ някои ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈ заявки. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ своя собствСна вСрсия Π½Π° заявката, която Π²ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠΆΠ΄Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π°, ΠΈ Π΄Π° я ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅.

Π—Π°Π΄ΡŠΠ»Π±ΠΎΡ‡Π΅Π½ΠΎ потапянС във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° статистика Π½Π° PostgreSQL. АлСксСй ЛСсовски

ΠŸΠΎΠ·ΠΎΠ²Π°Π²Π°Π½Π΅Ρ‚ΠΎ

Π’Π°Π»ΠΈΠ΄Π½ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ бяха Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈ Π² статията, въз основа Π½Π° ΠΊΠΎΠΈΡ‚ΠΎ, бяха Π² Π΄ΠΎΠΊΠ»Π°Π΄Π°.

Автор пиши ΠΏΠΎΠ²Π΅Ρ‡Π΅
https://dataegret.com/news-blog (Π°Π½Π³Π».)

ΠšΠΎΠ»Π΅ΠΊΡ‚ΠΎΡ€ΡŠΡ‚ Π½Π° статистика
https://www.postgresql.org/docs/current/monitoring-stats.html

БистСмни административни Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
https://www.postgresql.org/docs/current/functions-admin.html

ΠœΠΎΠ΄ΡƒΠ»ΠΈ Π·Π° принос
https://www.postgresql.org/docs/current/pgstatstatements.html
https://www.postgresql.org/docs/current/pgstattuple.html
https://www.postgresql.org/docs/current/pgbuffercache.html
https://github.com/klando/pgfincore
https://github.com/dalibo/pg_stat_kcache

SQL ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Π·Π° sql ΠΊΠΎΠ΄
https://github.com/dataegret/pg-utils

Благодаря Π½Π° всички Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅Ρ‚ΠΎ!

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

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€