Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

Когда-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π² Π΄Π°Π»Ρ‘ΠΊΠΎΠΌ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ автоматичСскоС ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π²Π°ΠΆΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ Π‘Π£Π‘Π” [1]. Пока ΠΆΠ΅ Π½Π°ΠΌ самим Π½ΡƒΠΆΠ½ΠΎ Π·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎΠ± ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° ΠΌΠ΅Π½Π΅Π΅ Π΄ΠΎΡ€ΠΎΠ³ΠΈΠ΅ систСмы хранСния. Допустим, Π²Ρ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ нСсколько ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² строк. Π”ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎ простая Π·Π°Π΄Π°Ρ‡Π°, особСнно Ссли извСстно условиС ΠΈ Π΅ΡΡ‚ΡŒ подходящий индСкс. "DELETE FROM table1 WHERE col1 = :value" β€” Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‰Π΅, Π΄Π°?

Π’ΠΈΠ΄Π΅ΠΎ:

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

  • Π― Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ ΠΊΠΎΠΌΠΈΡ‚Π΅Ρ‚Π΅ Highload с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π³ΠΎΠ΄Π°, Ρ‚. Π΅. с 2007-Π³ΠΎ.

  • И с Postgres я с 2005-Π³ΠΎ Π³ΠΎΠ΄Π°. Использовал Π΅Π³ΠΎ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ….

  • Π“Ρ€ΡƒΠΏΠΏΠ° с RuPostges Ρ‚ΠΎΠΆΠ΅ с 2007-Π³ΠΎ Π³ΠΎΠ΄Π°.

  • ΠœΡ‹ Π½Π° Meetup доросли Π΄ΠΎ 2100+ участников. Π­Ρ‚ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠ΅ мСсто Π² ΠΌΠΈΡ€Π΅ послС Нью-Π™ΠΎΡ€ΠΊΠ°, ΠΎΠ±ΠΎΠ³Π½Π°Π»ΠΈ Π‘Π°Π½-Ѐранциско ΡƒΠΆΠ΅ Π΄Π°Π²Π½ΠΎ.

  • НСсколько Π»Π΅Ρ‚ я ΠΆΠΈΠ²Ρƒ Π² ΠšΠ°Π»ΠΈΡ„ΠΎΡ€Π½ΠΈΠΈ. Π—Π°Π½ΠΈΠΌΠ°ΡŽΡΡŒ большС амСриканскими компаниями, Π² Ρ‚ΠΎΠΌ числС ΠΊΡ€ΡƒΠΏΠ½Ρ‹ΠΌΠΈ. Они Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Postgres. И Ρ‚Π°ΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ всякиС интСрСсныС ΡˆΡ‚ΡƒΠΊΠΈ.

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

https://postgres.ai/ – это моя компания. ΠœΡ‹ занимаСмся Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ Π·Π°ΠΌΠ΅Π΄Π»Π΅Π½ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Если Π²Ρ‹ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚Π΅, Ρ‚ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π²ΠΎΠΊΡ€ΡƒΠ³ Postgres Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π·Π°Ρ‚Ρ‹ΠΊΠΈ. Допустим, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠΆΠ΄Π°Ρ‚ΡŒ, ΠΏΠΎΠΊΠ° Π°Π΄ΠΌΠΈΠ½ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ΅Ρ‚ Π²Π°ΠΌ тСстовый стСнд, Π»ΠΈΠ±ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠΆΠ΄Π°Ρ‚ΡŒ, ΠΏΠΎΠΊΠ° DBA Π½Π° вас ΠΎΡ‚Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΠ΅Ρ‚. И ΠΌΡ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ Ρ‚Π°ΠΊΠΈΠ΅ ΡƒΠ·ΠΊΠΈΠ΅ мСста Π² процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, тСстирования ΠΈ администрирования ΠΈ стараСмся ΠΈΡ… ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Π½ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ².

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

https://www.seagate.com/files/www-content/our-story/trends/files/idc-seagate-dataage-whitepaper.pdf

Π― Π±Ρ‹Π» Π½Π΅Π΄Π°Π²Π½ΠΎ Π½Π° VLDB Π² Лос-АндТСлСсС. Π­Ρ‚ΠΎ самая большая конфСрСнция ΠΏΠΎ Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…. И Ρ‚Π°ΠΌ Π±Ρ‹Π» Π΄ΠΎΠΊΠ»Π°Π΄ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ Π‘Π£Π‘Π” Π±ΡƒΠ΄ΡƒΡ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ, Π° Π΅Ρ‰Π΅ ΠΈ автоматичСски ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅. Π­Ρ‚ΠΎ новая Ρ‚Π΅ΠΌΠ°.

Π”Π°Π½Π½Ρ‹Ρ… всС большС Π² ΠΌΠΈΡ€Π΅ Π·Π΅Ρ‚Π°Π±Π°ΠΉΡ‚ – это 1 000 000 ΠΏΠ΅Ρ‚Π°Π±Π°ΠΉΡ‚. И сСйчас ΡƒΠΆΠ΅ оцСниваСтся, Ρ‡Ρ‚ΠΎ Ρƒ нас большС 100 Π·Π΅Ρ‚Π°Π±Π°ΠΉΡ‚ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΌΠΈΡ€Π΅ хранится. И ΠΈΡ… становится всС большС ΠΈ большС.

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

https://vldb2019.github.io/files/VLDB19-keynote-2-slides.pdf

И Ρ‡Ρ‚ΠΎ с этим Π΄Π΅Π»Π°Ρ‚ΡŒ? ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π°Π΄ΠΎ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ. Π’ΠΎΡ‚ ссылка Π½Π° этот интСрСсный Π΄ΠΎΠΊΠ»Π°Π΄. Но ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ Π² Π‘Π£Π‘Π” это Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ.

Π’Π΅, ΠΊΡ‚ΠΎ ΡƒΠΌΠ΅ΡŽΡ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ дСньги, хотят Π΄Π²ΡƒΡ… Π²Π΅Ρ‰Π΅ΠΉ. Они хотят, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΡ‹ удаляли, поэтому тСхничСски ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΌΠ΅Ρ‚ΡŒ это Π΄Π΅Π»Π°Ρ‚ΡŒ.

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

Π’ΠΎ, Ρ‡Ρ‚ΠΎ дальшС я Π±ΡƒΠ΄Ρƒ Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ, это нСкоторая абстрактная ситуация, которая Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΠΊΡƒΡ‡Ρƒ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ситуаций, Ρ‚. Π΅. нСкая компСляция Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ происходило Π½Π° самом Π΄Π΅Π»Π΅ со ΠΌΠ½ΠΎΠΉ ΠΈ ΠΎΠΊΡ€ΡƒΠΆΠ°ΡŽΡ‰ΠΈΠΌΠΈ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·, ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅Ρ‚. Π“Ρ€Π°Π±Π»ΠΈ Π²Π΅Π·Π΄Π΅ ΠΈ Π½Π° Π½ΠΈΡ… всё врСмя всС Π½Π°ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚.

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

Допустим Ρƒ нас Π΅ΡΡ‚ΡŒ Π±Π°Π·Π° ΠΈΠ»ΠΈ нСсколько Π±Π°Π·, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ растут. И Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ записи – это ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΉ мусор. НапримСр, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ‚Π°ΠΌ Π½Π°Ρ‡Π°Π» Π΄Π΅Π»Π°Ρ‚ΡŒ, Π½Π΅ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ». И Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ врСмя ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ это Π½Π΅Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π½ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΆΠ΅ Π½Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ. Π’. Π΅. ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ мусорныС Π²Π΅Ρ‰ΠΈ ΠΌΡ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ ΠΏΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ мСсто, ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ Ρ‚. Π΄.

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, ставится Π·Π°Π΄Π°Ρ‡Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Π²Π΅Ρ‰Π΅ΠΉ, ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… строчСк Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π΅.

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

И Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ запрос, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ сСгодня Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ, Ρ‚. Π΅. ΠΏΡ€ΠΎ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ мусора.

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

ΠŸΠΎΠΏΡ€ΠΎΡΠΈΠ»ΠΈ ΠΎΠΏΡ‹Ρ‚Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ. Он взял этот запрос, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ» Ρƒ сСбя – всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. ΠŸΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Π» Π½Π° staging – всС Ρ…ΠΎΡ€ΠΎΡˆΠΎ. Π’Ρ‹ΠΊΠ°Ρ‚ΠΈΠ»ΠΈ – всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Π Π°Π· Π² сутки ΠΌΡ‹ запускаСм это – всС Ρ…ΠΎΡ€ΠΎΡˆΠΎ.

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

Π‘Π” растСт ΠΈ растСт. ЕТСсуточный DELETE Π½Π΅ΠΌΠ½ΠΎΠΆΠΊΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚.

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

ΠŸΠΎΡ‚ΠΎΠΌ ΠΌΡ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ нас сСйчас маркСтинговая компания ΠΈ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π² нСсколько Ρ€Π°Π· большС, поэтому Ρ€Π΅ΡˆΠ°Π΅ΠΌ лишниС Π²Π΅Ρ‰ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π° ΠΏΠ°ΡƒΠ·Ρƒ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ. И Π·Π°Π±Ρ‹Π²Π°Π΅ΠΌ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ.

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

Π§Π΅Ρ€Π΅Π· нСсколько мСсяцСв вспомнили. А Ρ‚ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ уволился ΠΈΠ»ΠΈ занят Ρ‡Π΅ΠΌ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ, ΠΏΠΎΡ€ΡƒΡ‡ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ.

Он ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ» Π½Π° dev, Π½Π° staging – всС Ок. ЕстСствСнно, Π½ΡƒΠΆΠ½ΠΎ Π΅Ρ‰Π΅ ΠΏΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ накопилось. Он ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ», всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

Π§Ρ‚ΠΎ случаСтся дальшС? Π”Π°Π»ΡŒΡˆΠ΅ Ρƒ нас всС роняСтся. РоняСтся Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ Ρƒ нас Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ всС лоТится. ВсС Π² шокС, Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ происходит. И ΠΏΠΎΡ‚ΠΎΠΌ выясняСтся, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»ΠΎ Π² этом DELETE Π±Ρ‹Π»ΠΎ.

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

Π§Ρ‚ΠΎ пошло Π½Π΅ Ρ‚Π°ΠΊ? Π’ΠΎΡ‚ здСсь Π΄Π°Π½ список Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ³Π»ΠΎ ΠΏΠΎΠΉΡ‚ΠΈ Π½Π΅ Ρ‚Π°ΠΊ. Π§Ρ‚ΠΎ ΠΈΠ· этого самоС Π²Π°ΠΆΠ½ΠΎΠ΅?

  • НапримСр, Π½Π΅ Π±Ρ‹Π»ΠΎ review, Ρ‚. Π΅. DBA-экспСрт Π½Π΅ посмотрСл. Он Π±Ρ‹ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΌ взглядом сразу нашСл Π±Ρ‹ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ доступ ΠΊ prod, Π³Π΄Π΅ накопилось нСсколько ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² строчСк.

  • ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, провСряли ΠΊΠ°ΠΊ-Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ.

  • ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΆΠ΅Π»Π΅Π·ΠΎ устарСло ΠΈ Π½ΡƒΠΆΠ½ΠΎ Π°ΠΏΠ³Ρ€Π΅ΠΉΠ΄ для этой Π±Π°Π·Ρ‹ Π΄Π΅Π»Π°Ρ‚ΡŒ.

  • Или Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ с сомой Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ Ρ‚Π°ΠΊ, ΠΈ Π½Π°ΠΌ с Postgres Π½Π° MySQL Π½Π°Π΄ΠΎ ΠΏΠ΅Ρ€Π΅Π΅Ρ…Π°Ρ‚ΡŒ.

  • Или, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, с ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ.

  • ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ ошибки Π² ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ Π½ΡƒΠΆΠ½ΠΎ ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ ΡƒΠ²ΠΎΠ»ΠΈΡ‚ΡŒ, Π° Π½Π°Π½ΡΡ‚ΡŒ Π»ΡƒΡ‡ΡˆΠΈΡ… людСй?

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

НС Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ DBA. Если DBA Π±Ρ‹Π» Π±Ρ‹, ΠΎΠ½ ΡƒΠ²ΠΈΠ΄Π΅Π» Π±Ρ‹ эти нСсколько ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² строчСк ΠΈ Π΄Π°ΠΆΠ΅ Π±Π΅Π· всяких экспСримСнтов сказал Π±Ρ‹: Β«Π’Π°ΠΊ Π½Π΅ Π΄Π΅Π»Π°ΡŽΡ‚Β». Допустим, Ссли Π±Ρ‹ этот ΠΊΠΎΠ΄ Π±Ρ‹Π» Π² GitLab, GitHub ΠΈ Π±Ρ‹Π» Π±Ρ‹ процСсс code review ΠΈ Π½Π΅ Π±Ρ‹Π»ΠΎ Ρ‚Π°ΠΊΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π±Π΅Π· утвСрТдСния DBA эта опСрация ΠΏΡ€ΠΎΠΉΠ΄Π΅Ρ‚ Π½Π° prod, Ρ‚ΠΎ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ DBA сказал Π±Ρ‹: Β«Π’Π°ΠΊ нСльзя Π΄Π΅Π»Π°Ρ‚ΡŒΒ».

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

И ΠΎΠ½ Π±Ρ‹ сказал, Ρ‡Ρ‚ΠΎ Ρƒ вас с disk IO Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ всС процСссы взбСсятся, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΠΎΠΊΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Π°Π²Ρ‚ΠΎΠ²Π°ΠΊΡƒΡƒΠΌ Π½Π° ΠΊΡƒΡ‡Ρƒ ΠΌΠΈΠ½ΡƒΡ‚, поэтому это Π½Π΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ.

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

http://bit.ly/nancy-hl2018-2

Вторая ошибка – провСряли Π½Π΅ Ρ‚Π°ΠΌ. ΠœΡ‹ постфактум ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ, Ρ‡Ρ‚ΠΎ мусорных Π΄Π°Π½Π½Ρ‹Ρ… накопилось Π½Π° prod ΠΌΠ½ΠΎΠ³ΠΎ, Π° Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π½Π΅ Π±Ρ‹Π»ΠΎ Π² этой Π±Π°Π·Π΅ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Π΄Π° ΠΈ Π½Π° staging особо Π½ΠΈΠΊΡ‚ΠΎ этот мусор Π½Π΅ создавал. БоотвСтствСнно, Ρ‚Π°ΠΌ Π±Ρ‹Π»ΠΎ 1 000 строчСк, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ быстро ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ.

ΠœΡ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ наши тСсты слабыС, Ρ‚. Π΅. процСсс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выстроСн, Π½Π΅ Π»ΠΎΠ²ΠΈΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. НС ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΈ Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½Ρ‹ΠΉ Π‘Π”-экспСримСнт.

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

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Ρƒ нас ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ»ΠΎΡ…ΠΎΠ΅? Если ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Ρ‚ΠΎ latency подскочило. ΠœΡ‹ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ, Ρ‡Ρ‚ΠΎ утилизация 100 %. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Ссли это Π±Ρ‹Π»ΠΈ Π±Ρ‹ соврСмСнныС NVMe диски, Ρ‚ΠΎ, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, Π½Π°ΠΌ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅Π³Ρ‡Π΅. И, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΌΡ‹ Π±Ρ‹ Π½Π΅ Π»Π΅Π³Π»ΠΈ ΠΎΡ‚ этого.

Если Ρƒ вас ΠΎΠ±Π»Π°ΠΊΠ°, Ρ‚ΠΎ Ρ‚Π°ΠΌ Π°ΠΏΠ³Ρ€Π΅ΠΉΠ΄ Π»Π΅Π³ΠΊΠΎ дСлаСтся. Подняли Π½ΠΎΠ²Ρ‹Π΅ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ Π½Π° Π½ΠΎΠ²ΠΎΠΌ ΠΆΠ΅Π»Π΅Π·Π΅. Switchover. И всС Ρ…ΠΎΡ€ΠΎΡˆΠΎ. Π”ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ.

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

А ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΊΠ°ΠΊ-Ρ‚ΠΎ помСньшС диски Ρ‚Ρ€ΠΎΠ³Π°Ρ‚ΡŒ? И Ρ‚ΡƒΡ‚ ΠΊΠ°ΠΊ Ρ€Π°Π· с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ DBA ΠΌΡ‹ ныряСм Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Ρ‚Π΅ΠΌΡƒ, которая называСтся checkpoint tuning. ВыясняСтся, Ρ‡Ρ‚ΠΎ Ρƒ нас Π½Π΅ Π±Ρ‹Π» ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ checkpoint tuning.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ checkpoint? Π­Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² любой Π‘Π£Π‘Π”. Когда Ρƒ вас Π΄Π°Π½Π½Ρ‹Π΅ Π² памяти ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ, ΠΎΠ½ΠΈ Π½Π΅ сразу Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π° диски. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ измСнились, сначала записываСтся Π² ΠΎΠΏΠ΅Ρ€Π΅ΠΆΠ°ΡŽΡ‰ΠΈΠΉ ΠΆΡƒΡ€Π½Π°Π», Π² write-ahead log. И Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π‘Π£Π‘Π” Ρ€Π΅ΡˆΠ°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ€Π° ΡƒΠΆΠ΅ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ страницы Π½Π° диск ΡΠΊΠΈΠ½ΡƒΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹, Ссли Ρƒ нас Π±ΡƒΠ΄Π΅Ρ‚ сбой, помСньшС Π΄Π΅Π»Π°Ρ‚ΡŒ REDO. Π­Ρ‚ΠΎ ΠΊΠ°ΠΊ Π² ΠΈΠ³Ρ€ΡƒΡˆΠΊΠ΅. Если нас ΡƒΠ±ΡŒΡŽΡ‚, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ с послСднСго checkpoint. И всС Π‘Π£Π‘Π” это Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚.

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

Настройки Π² Postgres ΠΎΡ‚ΡΡ‚Π°ΡŽΡ‚. Они рассчитана Π½Π° 10-15-Π»Π΅Ρ‚Π½Π΅ΠΉ давности ΠΎΠ±ΡŠΠ΅ΠΌΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. И checkpoint – Π½Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.

Π’ΠΎΡ‚ эта информация ΠΈΠ· нашСго ΠΎΡ‚Ρ‡Π΅Ρ‚Π° c Postgres check-up, Ρ‚. Π΅. автоматичСская ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π·Π΄ΠΎΡ€ΠΎΠ²ΡŒΡ. И Π²ΠΎΡ‚ какая-Ρ‚ΠΎ Π±Π°Π·Π° Π² нСсколько Ρ‚Π΅Ρ€Π°Π±Π°ΠΉΡ‚. И Π²ΠΈΠ΄Π½ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ checkpoints ΠΏΠΎΡ‡Ρ‚ΠΈ Π² 90 % случаСв.

Π­Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚? Π’Π°ΠΌ Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ настройки. Checkpoint ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎ timeout Π½Π°ΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² 10 ΠΌΠΈΠ½ΡƒΡ‚. Или ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° наполнилось довольно ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π°Π½Π½Ρ‹Ρ….

И ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ max_wal_saze выставлСн Π² 1 Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚. По Ρ„Π°ΠΊΡ‚Ρƒ, это Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ случаСтся Π² Postgres Ρ‡Π΅Ρ€Π΅Π· 300-400 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚. Π’Ρ‹ помСняли ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρƒ вас checkpoint случаСтся.

И Ссли это Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ Ρ‚ΡŽΠ½ΠΈΠ», Π° сСрвис вырос, ΠΈ компания Π·Π°Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΊΡƒΡ‡Ρƒ Π΄Π΅Π½Π΅Π³, Ρƒ Π½Π΅Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, Ρ‚ΠΎ checkpoint наступаСт Ρ€Π°Π· Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ, ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈ Ρ€Π°Π· Π² 30 сСкунд, Π° ΠΈΠ½ΠΎΠ³Π΄Π° Π΄Π°ΠΆΠ΅ ΠΈ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ Π½Π° Π΄Ρ€ΡƒΠ³Π°. Π­Ρ‚ΠΎ совсСм ΡƒΠΆΠ΅ ΠΏΠ»ΠΎΡ…ΠΎ.

И Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ наступал ΠΏΠΎΡ€Π΅ΠΆΠ΅. Π’. Π΅. ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ max_wal_size. И ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ Ρ€Π΅ΠΆΠ΅.

Но ΠΌΡ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ Ρƒ сСбя Ρ†Π΅Π»ΡƒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΡŽ, ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Ρ‚. Π΅. ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎ Π²Ρ‹Π±ΠΎΡ€Π΅ настроСк, Ρ‡Π΅Ρ‚ΠΊΠΎ ΠΎΠΏΠΈΡ€Π°ΡΡΡŒ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

БоотвСтствСнно, ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ Π΄Π²Π΅ сСрии экспСримСнтов Π½Π°Π΄ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΠ΅Ρ€Π²Π°Ρ сСрия – ΠΌΡ‹ мСняСм max_wal_size. И ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠΌ ΠΌΠ°ΡΡΠΎΠ²ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ. Π‘Π½Π°Ρ‡Π°Π»Π° Π΄Π΅Π»Π°Π΅ΠΌ Π΅Π΅ Π½Π° Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½ΠΎΠΉ настройкС Π² 1 Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚. И Π΄Π΅Π»Π°Π΅ΠΌ массовый DELETE ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² строчСк.

Π’ΠΈΠ΄Π½ΠΎ, ΠΊΠ°ΠΊ Π½Π°ΠΌ тяТСло. Π‘ΠΌΠΎΡ‚Ρ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ disk IO ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠ»ΠΎΡ…. Π‘ΠΌΠΎΡ‚Ρ€ΠΈΠΌ, сколько WAL ΠΌΡ‹ сгСнСрировали, Ρ‚. ΠΊ. это ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ. Π‘ΠΌΠΎΡ‚Ρ€ΠΈΠΌ, сколько Ρ€Π°Π· checkpoint случился. И Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π½Π΅Ρ…ΠΎΡ€ΠΎΡˆΠΎ.

Π”Π°Π»ΡŒΡˆΠ΅ ΠΌΡ‹ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ max_wal_size. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠ΅ΠΌ. Π£Π²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ, повторяСм. И Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·. Π’ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, 10 Ρ‚ΠΎΡ‡Π΅ΠΊ – это Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Π³Π΄Π΅ 1, 2, 4, 8 Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚. И смотрим ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ систСмы. ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ здСсь ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ Π½Π° prod. Π£ вас Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π΅ ΠΆΠ΅ диски, сколько ΠΆΠ΅ памяти ΠΈ настройки Postgres Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅.

И Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΡ‹ обмСняСм Π½Π°ΡˆΡƒ систСму, ΠΈ Π·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ сСбя вСсти Π‘Π£Π‘Π” ΠΏΡ€ΠΈ ΠΏΠ»ΠΎΡ…ΠΎΠΌ массовом DELETE, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ½Π° checkpointβ€™ΠΈΡ‚ΡŒΡΡ.

Checkpoint ΠΏΠΎ-русски – это ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: DELETE нСсколько ΠΌΠ»Π½ строк ΠΏΠΎ индСксу, строки «разбросаны» ΠΏΠΎ страницам.

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π­Ρ‚ΠΎ нСкоторая Π±Π°Π·Π°. И ΠΏΡ€ΠΈ Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½ΠΎΠΉ настройкС Π² 1 Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚ для max_wal_size ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Ρƒ нас диски Π½Π° запись ΠΈΠ΄ΡƒΡ‚ Π² ΠΏΠΎΠ»ΠΊΡƒ. Π’ΠΎΡ‚ такая ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° – это Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ симптом ΠΎΡ‡Π΅Π½ΡŒ больного ΠΏΠ°Ρ†ΠΈΠ΅Π½Ρ‚Π°, Ρ‚. Π΅. Π΅ΠΌΡƒ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠ»ΠΎΡ…ΠΎ. И Ρ‚ΡƒΡ‚ Π±Ρ‹Π»Π° ΠΎΠ΄Π½Π° СдинствСнная опСрация, Ρ‚ΡƒΡ‚ Π±Ρ‹Π» ΠΊΠ°ΠΊ Ρ€Π°Π· DELETE Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² строчСк.

Если Ρ‚Π°ΠΊΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π² prod, Ρ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΌΡ‹ ΠΈ ляТСм, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ DELETE ΡƒΠ±ΠΈΠ²Π°Π΅Ρ‚ нас Π² ΠΏΠΎΠ»ΠΊΡƒ.

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

Π”Π°Π»ΡŒΡˆΠ΅, Π³Π΄Π΅ 16 Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚, Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΡƒΠΆΠ΅ Π·ΡƒΠ±Ρ‡ΠΈΠΊΠΈ пошли. Π—ΡƒΠ±Ρ‡ΠΈΠΊΠΈ – это ΡƒΠΆΠ΅ Π»ΡƒΡ‡ΡˆΠ΅, Ρ‚. Π΅. ΠΌΡ‹ стучимся ΠΎ ΠΏΠΎΡ‚ΠΎΠ»ΠΎΠΊ, Π½ΠΎ ΡƒΠΆΠ΅ Π½Π΅ Ρ‚Π°ΠΊ ΠΏΠ»ΠΎΡ…ΠΎ. НСбольшая свобода Ρ‚Π°ΠΌ появилась. Π‘ΠΏΡ€Π°Π²Π° – это запись. И количСство ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ – Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊ. И Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΡƒΠΆΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π³Ρ‡Π΅ Π·Π°Π΄Ρ‹ΡˆΠ°Π»ΠΈ, ΠΊΠΎΠ³Π΄Π° 16 Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚.

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

А Π³Π΄Π΅ 64 Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ совсСм Π»ΡƒΡ‡ΡˆΠ΅ стало. Π£ΠΆΠ΅ Π·ΡƒΠ±Ρ‡ΠΈΠΊΠΈ ярко Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½Π½Ρ‹Π΅, появляСтся большС возмоТностСй, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΆΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠΌ опСрациям ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с диском.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Ρ‚Π°ΠΊ?

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

Π― Π±ΡƒΠ΄Ρƒ Π½Π΅ΠΌΠ½ΠΎΠΆΠΊΠΎ ΠΎΠΊΡƒΠ½Π°Ρ‚ΡŒΡΡ Π² подробности, Π½ΠΎ эта Ρ‚Π΅ΠΌΠ°, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ checkpoint tuning, ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π»ΠΈΡ‚ΡŒΡΡ Π² Ρ†Π΅Π»Ρ‹ΠΉ Π΄ΠΎΠΊΠ»Π°Π΄, поэтому я Π½Π΅ Π±ΡƒΠ΄Ρƒ сильно Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ, Π½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠΆΠΊΠΎ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Ρƒ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚Π°ΠΌ слоТности Π΅ΡΡ‚ΡŒ.

Если checkpoint слишком часто случаСтся, ΠΈ ΠΌΡ‹ обновляСм наши строчки Π½Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π° Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ ΠΏΠΎ индСксу, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ всю Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ удаляСт, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ случится Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ сначала ΠΌΡ‹ ΠΏΠ΅Ρ€Π²ΡƒΡŽ страничку ΠΏΠΎΡ‚Ρ€ΠΎΠ³Π°Π»ΠΈ, ΠΏΠΎΡ‚ΠΎΠΌ Ρ‚Ρ‹ΡΡΡ‡Π½ΡƒΡŽ, Π° ΠΏΠΎΡ‚ΠΎΠΌ Π²Π΅Ρ€Π½ΡƒΠ»ΠΈΡΡŒ ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠΉ. И Ссли ΠΌΠ΅ΠΆΠ΄Ρƒ этими Π·Π°Ρ…ΠΎΠ΄Π°ΠΌΠΈ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ страничку checkpoint Π΅Π΅ ΡƒΠΆΠ΅ Π½Π° диск сохранил, Ρ‚ΠΎ ΠΎΠ½ Π΅Ρ‰Π΅ Ρ€Π°Π· Π±ΡƒΠ΄Π΅Ρ‚ Π΅Π΅ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΅Π΅ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π· ΠΏΠΎΠΏΠ°Ρ‡ΠΊΠ°Π»ΠΈ.

И ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π·Π°ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ checkpoint Π΅Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π· ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ. Как Π±Ρ‹ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ для Π½Π΅Π³ΠΎ.

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

Но это Π΅Ρ‰Π΅ Π½Π΅ всС. Π’ Postgres странички вСсят 8 ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚, Π° Π² Linux 4 ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚. И Π΅ΡΡ‚ΡŒ настройка full_page_writes. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ½Π° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π°. И это ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ, Ссли ΠΌΡ‹ Π΅Π΅ Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΠΌ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ сбоС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½ΠΊΠ° странички сохранится.

ПовСдСниС записи Π² WAL ΠΎΠΏΠ΅Ρ€Π΅ΠΆΠ°ΡŽΡ‰Π΅Π³ΠΎ ΠΆΡƒΡ€Π½Π°Π»Π° Ρ‚Π°ΠΊΠΎΠ΅, Ρ‡Ρ‚ΠΎ, ΠΊΠΎΠ³Π΄Π° Ρƒ нас checkpoint случился ΠΈ ΠΌΡ‹ страничку Π² ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π· мСняСм, Ρ‚ΠΎ Π² ΠΎΠΏΠ΅Ρ€Π΅ΠΆΠ°ΡŽΡ‰ΠΈΠΉ ΠΆΡƒΡ€Π½Π°Π» ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ вся страница Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ, Ρ‚. Π΅. всС 8 ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚, хотя ΠΌΡ‹ мСняли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ строчку, которая вСсит 100 Π±Π°ΠΉΡ‚. И ΠΌΡ‹ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Ρ‹ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ страницу Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ.

Π’ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… измСнСниях Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠΆΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ, Π½ΠΎ Π² ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π· всю записываСм.

И, соотвСтствСнно, Ссли checkpoint Π΅Ρ‰Π΅ Ρ€Π°Π· случился, Ρ‚ΠΎ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ снова с нуля всС Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ ΠΈ всю страничку Π·Π°ΠΏΠΈΡ…ΠΈΠ²Π°Ρ‚ΡŒ. ΠŸΡ€ΠΈ частых checkpoints, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ гуляСм ΠΏΠΎ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ страничкам, full_page_writes = on Π±ΡƒΠ΄Π΅Ρ‚ большС, Ρ‡Π΅ΠΌ ΠΌΠΎΠ³Π»ΠΎ Π±Ρ‹ Π±Ρ‹Ρ‚ΡŒ, Ρ‚. Π΅. ΠΌΡ‹ большС WAL Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ. Π‘ΠΎΠ»ΡŒΡˆΠ΅ отправляСтся Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ, Π² Π°Ρ€Ρ…ΠΈΠ², Π½Π° диск.

И, соотвСтствСнно, Π΄Π²Π΅ избыточности Ρƒ нас Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚.

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

Если ΠΌΡ‹ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ max_wal_size, получаСтся, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΈ checkpoint, ΠΈ wal writer. И это классно.

Π”Π°Π²Π°ΠΉΡ‚Π΅ поставим Ρ‚Π΅Ρ€Π°Π±Π°ΠΉΡ‚ ΠΈ Π±ΡƒΠ΄Π΅ΠΌ с этим ΠΆΠΈΡ‚ΡŒ. Π§Ρ‚ΠΎ Π² этом ΠΏΠ»ΠΎΡ…ΠΎΠ³ΠΎ? Π­Ρ‚ΠΎ ΠΏΠ»ΠΎΡ…ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² случаС сбоя ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ часами, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ checkpoint Π±Ρ‹Π» Π΄Π°Π²Π½ΠΎ ΠΈ ΡƒΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ измСнилось. И Π½Π°ΠΌ Π½Π° всС это REDO Π½Π°Π΄ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ. И поэтому ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ Π²Ρ‚ΠΎΡ€ΡƒΡŽ ΡΠ΅Ρ€ΠΈΡŽ экспСримСнтов.

ΠœΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΈ смотрим, ΠΊΠΎΠ³Π΄Π° checkpoint Π±Π»ΠΈΠ·ΠΎΠΊ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ, ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ kill -9 Postgres ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ.

И послС этого стартуСм Π΅Π³ΠΎ Π·Π°Π½ΠΎΠ²ΠΎ, ΠΈ смотрим, ΠΊΠ°ΠΊ Π΄ΠΎΠ»Π³ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ Π½Π° этом ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ, Ρ‚. Π΅. сколько ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ REDO Π² этой ΠΏΠ»ΠΎΡ…ΠΎΠΉ ситуации.

Π”Π²Π°ΠΆΠ΄Ρ‹ ΠΎΡ‚ΠΌΠ΅Ρ‡Ρƒ, Ρ‡Ρ‚ΠΎ ситуация плохая. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΌΡ‹ ΡƒΠΏΠ°Π»ΠΈ прямо ΠΏΠ΅Ρ€Π΅Π΄ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ΠΌ checkpoint, соотвСтствСнно, Π½Π°ΠΌ ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π°Π΄ΠΎ. И, Π²ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, Ρƒ нас Π±Ρ‹Π»Π° массивная опСрация. И Ссли Π±Ρ‹ checkpoints Π±Ρ‹Π»ΠΈ ΠΏΠΎ Ρ‚Π°ΠΉΠΌ-Π°ΡƒΡ‚Ρƒ, Ρ‚ΠΎ, скорСС всСго, мСньшС WAL ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π»ΠΎΡΡŒ Π±Ρ‹ с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° послСднСго checkpoint. Π’. Π΅. это Π΄Π²Π°ΠΆΠ΄Ρ‹ Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΠΈΠΊ.

ΠœΡ‹ замСряСм Ρ‚Π°ΠΊΡƒΡŽ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ для Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° max_wal_size ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ, Ссли max_wal_size 64 Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚Π°, Ρ‚ΠΎ Π² Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Ρ…ΡƒΠ΄ΡˆΠ΅ΠΉ ситуации ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ 10 ΠΌΠΈΠ½ΡƒΡ‚. И Π΄ΡƒΠΌΠ°Π΅ΠΌ – устраиваСт нас это ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π­Ρ‚ΠΎ бизнСс-вопрос. ΠœΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ эту ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ Ρ‚Π΅ΠΌ, ΠΊΡ‚ΠΎ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° бизнСс-Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈ ΡΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ: «Бколько ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΠ»Π΅ΠΆΠ°Ρ‚ΡŒ максимум Π² случаС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹? МоТСм Π»ΠΈ ΠΌΡ‹ ΠΏΠΎΠ»Π΅ΠΆΠ°Ρ‚ΡŒ Π² Ρ…ΡƒΠ΄ΡˆΠ΅ΠΉ ситуации 3-5 ΠΌΠΈΠ½ΡƒΡ‚?Β». И ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅.

И Ρ‚ΡƒΡ‚ Π΅ΡΡ‚ΡŒ интСрСсный ΠΌΠΎΠΌΠ΅Π½Ρ‚. Π£ нас Π½Π° ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ Π΅ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π° Π΄ΠΎΠΊΠ»Π°Π΄ΠΎΠ² ΠΏΡ€ΠΎ Patroni. И, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅. Π­Ρ‚ΠΎ autofailover для Postgres. GitLab ΠΈ Data Egret ΠΎΠ± этом рассказывали.

И Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ autofailover, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ наступит Ρ‡Π΅Ρ€Π΅Π· 30 сСкунд, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΡ‹ ΠΈ 10 ΠΌΠΈΠ½ΡƒΡ‚ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΠ»Π΅ΠΆΠ°Ρ‚ΡŒ? ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΊ этому ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΠΌΡΡ Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΡƒ, ΠΈ всС Π±ΡƒΠ΄Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΎ. Π­Ρ‚ΠΎ вопрос спорный. Π― Π½Π΅ знаю Ρ‡Π΅Ρ‚ΠΊΠΎΠ³ΠΎ ΠΎΡ‚Π²Π΅Ρ‚Π°. Π― Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‰ΡƒΡ‰Π°ΡŽ, Ρ‡Ρ‚ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΎΠΊΡ€ΡƒΠ³ восстановлСния послС сбоя эта Ρ‚Π΅ΠΌΠ°.

Если Ρƒ нас Π΄ΠΎΠ»Π³ΠΎΠ΅ восстановлСниС послС сбоя, Ρ‚ΠΎ Π½Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… ситуациях. НапримСр, Π² Ρ‚Π΅Ρ… ΠΆΠ΅ экспСримСнтах, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅ΠΌ ΠΈ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Ρ‹ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΆΠ΄Π°Ρ‚ΡŒ ΠΏΠΎ 10 ΠΌΠΈΠ½ΡƒΡ‚.

Π― Π±Ρ‹ всС-Ρ‚Π°ΠΊΠΈ Π½Π΅ Ρ…ΠΎΠ΄ΠΈΠ» слишком Π΄Π°Π»Π΅ΠΊΠΎ, Π΄Π°ΠΆΠ΅ Ссли Ρƒ нас Π΅ΡΡ‚ΡŒ autofailover. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ‚Π°ΠΊΠΈΠ΅ значСния, ΠΊΠ°ΠΊ 64, 100 Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚ – это Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ значСния. Иногда Π΄Π°ΠΆΠ΅ стоит мСньшС Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, это тонкая Π½Π°ΡƒΠΊΠ°.

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

Π’Π°ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, max_wal_size =1, 8, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ ΠΌΠ°ΡΡΠΎΠ²ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·. Π’Ρ‹ Π΅Π΅ сдСлали. И Π½Π° Ρ‚ΠΎΠΉ ΠΆΠ΅ Π±Π°Π·Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π΅Π΅ Π΅Ρ‰Π΅ Ρ€Π°Π· ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Π½ΠΎ Π²Ρ‹ ΠΆΠ΅ ΡƒΠΆΠ΅ всС ΡƒΠ΄Π°Π»ΠΈΠ»ΠΈ. Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ?

Π― ΠΏΠΎΠΏΠΎΠ·ΠΆΠ΅ расскаТу ΠΏΡ€ΠΎ нашС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ‚Π°ΠΊΠΈΡ… ситуациях. И это самый ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄.

Но Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Π½Π°ΠΌ ΠΏΠΎΠ²Π΅Π·Π»ΠΎ. Если, ΠΊΠ°ΠΊ здСсь написано Β«BEGIN, DELETE, ROLLBACKΒ», Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ DELETE ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ. Π’. Π΅. Ссли ΠΌΡ‹ Π΅Π³ΠΎ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΠ»ΠΈ сами, Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΅Π³ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ. И физичСски Ρƒ вас Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ‚Π°ΠΌ ΠΆΠ΅ Π»Π΅ΠΆΠ°Ρ‚ΡŒ. Π£ вас Π΄Π°ΠΆΠ΅ bloat Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Π½Π΅ образуСтся. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Ρ‚Π°ΠΊΠΈΡ… DELETE.

Π’Π°ΠΊΠΎΠΉ DELETE c ROLLBACK ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ для checkpoint tuning, Π΄Π°ΠΆΠ΅ Ссли Ρƒ вас Π½Π΅Ρ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΠΎΠΉ database labs.

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

ΠœΡ‹ сдСлали Ρ‚Π°Π±Π»ΠΈΡ‡ΠΊΡƒ с ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΎΠΉ Β«iΒ». Π£ Postgres Π΅ΡΡ‚ΡŒ слуТСбныС ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ. Они Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹Π΅, Ссли ΠΈΡ… ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π½Π΅ ΠΏΠΎΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ. Π­Ρ‚ΠΎ: ctid, xmid, xmax.

Ctid – это физичСский адрСс. НулСвая страница, ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ Π² страницС.

Π’ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ послС ROOLBACK ΠΊΠΎΡ€Ρ‚Π΅ΠΆ остался Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ мСстС. Π’. Π΅. ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΅Ρ‰Π΅ Ρ€Π°Π· ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ, ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ сСбя вСсти Ρ‚Π°ΠΊ ΠΆΠ΅. Π­Ρ‚ΠΎ Π³Π»Π°Π²Π½ΠΎΠ΅.

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

Xmax – это врСмя смСрти ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°. Он проставился, Π½ΠΎ Postgres Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ эта транзакция Π±Ρ‹Π»Π° ΠΎΡ‚ΠΊΠ°Ρ‡Π΅Π½Π°, поэтому, Ρ‡Ρ‚ΠΎ 0, Ρ‡Ρ‚ΠΎ откачСнная транзакция – Π½Π΅Π²Π°ΠΆΠ½ΠΎ. Π­Ρ‚ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎ DELETE ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ массовыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ повСдСния систСмы. МоТно ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ database labs для Π±Π΅Π΄Π½Ρ‹Ρ….

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

Π­Ρ‚ΠΎ ΡƒΠΆΠ΅ ΠΏΡ€ΠΎ программистов. ΠŸΡ€ΠΎ DBA Ρ‚ΠΎΠΆΠ΅, ΠΎΠ½ΠΈ всСгда Π·Π° это программистов Ρ€ΡƒΠ³Π°ΡŽΡ‚: Β«Π—Π°Ρ‡Π΅ΠΌ Π²Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ Ρ‚Π°ΠΊΠΈΠ΅ Π΄ΠΎΠ»Π³ΠΈΠ΅ ΠΈ тяТСлыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ?Β». Π­Ρ‚ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ другая пСрпСндикулярная Ρ‚Π΅ΠΌΠ°. РаньшС Π±Ρ‹Π»ΠΎ администрированиС, Π° сСйчас Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°.

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ Ρ€Π°Π·Π±ΠΈΠ»ΠΈ Π½Π° части. Π­Ρ‚ΠΎ понятно. НСльзя Ρ‚Π°ΠΊΠΎΠΉ DELETE для ΠΊΡƒΡ‡ΠΈ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² строк Π½Π΅ Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ Π½Π° части. Он Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒΡΡ 20 ΠΌΠΈΠ½ΡƒΡ‚, ΠΈ всС Π±ΡƒΠ΄Π΅Ρ‚ Π»Π΅ΠΆΠ°Ρ‚ΡŒ. Но, ΠΊ соТалСнию, ошибки ΡΠΎΠ²Π΅Ρ€ΡˆΠ°ΡŽΡ‚ Π΄Π°ΠΆΠ΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ, Π΄Π°ΠΆΠ΅ Π² ΠΎΡ‡Π΅Π½ΡŒ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… компаниях.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π²Π°ΠΆΠ½ΠΎ Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ?

  • Если ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ диску тяТСло, Ρ‚ΠΎ Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΠΌ. И Ссли Ρƒ нас Ρ€Π°Π·Π±ΠΈΡ‚ΠΎ, Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ°ΡƒΠ·Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ, ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ throttling.

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

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

https://postgres.ai/products/joe/

Π­Ρ‚ΠΎ интСрСсно. Π― часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‚: «Какой Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠ°Ρ‡ΠΊΠΈ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ?Β».

ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ, Ρ‡Π΅ΠΌ большС Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠ°Ρ‡ΠΊΠΈ, Ρ‚Π΅ΠΌ мСньшС transaction overhead, Ρ‚. Π΅. Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы ΠΎΡ‚ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ. Но ΠΏΡ€ΠΈ этом врСмя увСличиваСтся Ρƒ этой Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.

Π£ мСня Π΅ΡΡ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ простоС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ: Π²ΠΎΠ·ΡŒΠΌΠΈΡ‚Π΅ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ большС, Π½ΠΎ Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°ΠΉΡ‚Π΅ выполнСния Π² сСкунду.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ сСкунду? ОбъяснСниС ΠΎΡ‡Π΅Π½ΡŒ простоС ΠΈ понятноС всСм, Π΄Π°ΠΆΠ΅ Π½Π΅ тСхничСским людям. ΠœΡ‹ Π²ΠΈΠ΄ΠΈΠΌ Ρ€Π΅Π°ΠΊΡ†ΠΈΡŽ. Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ 50 миллисСкунд. Если Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ измСнилось, Ρ‚ΠΎ Π³Π»Π°Π· наш срСагируСт. Если мСньшС, Ρ‚ΠΎ слоТнСС. Если Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Ρ‡Π΅Ρ€Π΅Π· 100 миллисСкунд, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‹ ΠΌΡ‹ΡˆΠΊΠΎΠΉ Π½Π°ΠΆΠ°Π»ΠΈ, ΠΈ ΠΎΠ½ΠΎ Π²Π°ΠΌ Ρ‡Π΅Ρ€Π΅Π· 100 миллисСкунд ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ»ΠΎ, Π²Ρ‹ ΡƒΠΆΠ΅ чувствуСтС эту Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ. Π‘Π΅ΠΊΡƒΠ½Π΄Π° ΡƒΠΆΠ΅ воспринимаСтся ΠΊΠ°ΠΊ Ρ‚ΠΎΡ€ΠΌΠΎΠ·Π°.

БоотвСтствСнно, Ссли ΠΌΡ‹ наши массовыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Ρ€Π°Π·ΠΎΠ±ΡŒΠ΅ΠΌ Π½Π° 10-Ρ‚ΠΈ сСкундныС ΠΏΠ°Ρ‡ΠΊΠΈ, Ρ‚ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ риск, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ Π·Π°Π±Π»ΠΎΡ‡ΠΈΠΌ. И ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ нСсколько сСкунд, ΠΈ это люди ΡƒΠΆΠ΅ замСтят. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ я ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽ большС сСкунды Π½Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ. Но Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя ΠΈ совсСм ΠΌΠ΅Π»ΠΊΠΎ Π½Π΅ Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ transaction overhead Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΌΠ΅Ρ‚Π΅Π½. Π‘Π°Π·Π΅ Π±ΡƒΠ΄Π΅Ρ‚ тяТСлСС, ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π΅Ρ‰Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

ΠœΡ‹ ΠΏΠΎΠ΄Π±ΠΈΡ€Π°Π΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠ°Ρ‡ΠΊΠΈ. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ случаС ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ это Π΄Π΅Π»Π°Ρ‚ΡŒ. МоТно Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. И убСТдаСмся Π² эффСктивности Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°Ρ‡ΠΊΠΈ. Π’. Π΅. ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ DELETE ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°Ρ‡ΠΊΠΈ ΠΈΠ»ΠΈ UPDATE.

ΠšΡΡ‚Π°Ρ‚ΠΈ, всС, Ρ‡Ρ‚ΠΎ я Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°ΡŽ, это Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎ DELETE. Как Π²Ρ‹ догадались, это Π»ΡŽΠ±Ρ‹Π΅ массовыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

И ΠΌΡ‹ смотрим, Ρ‡Ρ‚ΠΎ ΠΏΠ»Π°Π½ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ. Π’ΠΈΠ΄Π½ΠΎ index scan, Π΅Ρ‰Π΅ Π»ΡƒΡ‡ΡˆΠ΅ index only scan. И Ρƒ нас нСбольшоС количСство Π΄Π°Π½Π½Ρ‹Ρ… задСйствовано. И всС мСньшС сСкунды ΠΎΡ‚Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚. Π‘ΡƒΠΏΠ΅Ρ€.

И ΠΌΡ‹ Π΅Ρ‰Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π³Ρ€Π°Π΄Π°Ρ†ΠΈΠΈ Π½Π΅Ρ‚. Π‘Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΏΠ°Ρ‡ΠΊΠΈ быстро ΠΎΡ‚Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚, Π° ΠΏΠΎΡ‚ΠΎΠΌ всС Ρ…ΡƒΠΆΠ΅-Ρ…ΡƒΠΆΠ΅ ΠΈ Ρ…ΡƒΠΆΠ΅. ΠŸΡ€ΠΎΡ†Π΅ΡΡ Ρ‚Π°ΠΊΠΎΠΉ, Ρ‡Ρ‚ΠΎ Π½Π°Π΄ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Для этого ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΈ Π½ΡƒΠΆΠ½Π° database labs.

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

Если Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ запросов ΠΈ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·, Ρ‚ΠΎ ΠΊΠ°ΠΊ Ρ€Π°Π· Π΅ΡΡ‚ΡŒ такая ΡˆΡ‚ΡƒΠΊΠ°, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ²Π°Ρ€ΠΈΡ‰ Π±ΠΎΡ‚. Он ΡƒΠΆΠ΅ Π³ΠΎΡ‚ΠΎΠ². Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ дСсятками Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ. И ΠΎΠ½ ΡƒΠΌΠ΅Π΅Ρ‚ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΡƒΡŽ Ρ‚Π΅Ρ€Π°Π±Π°ΠΉΡ‚Π½ΡƒΡŽ Π±Π°Π·Ρƒ Π΄Π°Ρ‚ΡŒ ΠΏΠΎ запросу Π·Π° 30 сСкунд, Π²Π°ΡˆΡƒ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ копию. И Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Ρ‚Π°ΠΌ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ RESET, ΠΈ Π΅Ρ‰Π΅ Ρ€Π°Π· ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ с Π½ΠΈΠΌ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Π― Π²ΠΈΠΆΡƒ Π·Π° этой ΡˆΡ‚ΡƒΠΊΠΎΠΉ Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅. И ΠΌΡ‹ это ΡƒΠΆΠ΅ Π΄Π΅Π»Π°Π΅ΠΌ.

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

https://docs.gitlab.com/ee/development/background_migrations.html

КакиС Π΅ΡΡ‚ΡŒ стратСгии разбиСния? Π― Π²ΠΈΠΆΡƒ 3 Ρ€Π°Π·Π½Ρ‹Π΅ стратСгии разбиСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π½Π° ΠΏΠ°Ρ‡ΠΊΠ΅.

ΠŸΠ΅Ρ€Π²Π°Ρ ΠΎΡ‡Π΅Π½ΡŒ простая. Π£ нас Π΅ΡΡ‚ΡŒ айдишник числовой. И Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΌΡ‹ Ρ€Π°Π·ΠΎΠ±ΡŒΠ΅ΠΌ Π½Π° Ρ€Π°Π·Π½Ρ‹Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Ρ‹, ΠΈ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с этим. ΠœΠΈΠ½ΡƒΡ понятСн. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ΅ Ρƒ нас Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ мусора ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ 100 строчСк, Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ 5 строчСк ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ, ΠΈΠ»ΠΈ всС 1 000 строчСк окаТутся мусором. ΠžΡ‡Π΅Π½ΡŒ нСравномСрная Ρ€Π°Π±ΠΎΡ‚Π°, Π½ΠΎ Π·Π°Ρ‚ΠΎ Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ. Взяли ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ID ΠΈ Ρ€Π°Π·Π±ΠΈΠ»ΠΈ. Π­Ρ‚ΠΎ Π½Π°ΠΈΠ²Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄.

Вторая стратСгия – это сбалансированный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Gitlab. Взяли ΠΈ просканировали Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ. ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»ΠΈ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΏΠ°Ρ‡Π΅ΠΊ ID Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ каТдая ΠΏΠ°Ρ‡ΠΊΠ° Π±Ρ‹Π»Π° Ρ€ΠΎΠ²Π½ΠΎ ΠΏΠΎ 10 000 записСй. И засунули Π² ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ. И дальшС ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ. МоТно это Π΄Π΅Π»Π°Ρ‚ΡŒ Π² нСсколько ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ².

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ стратСгии Ρ‚ΠΎΠΆΠ΅, кстати, ΠΌΠΎΠΆΠ½ΠΎ это Π΄Π΅Π»Π°Ρ‚ΡŒ Π² нСсколько ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². Π­Ρ‚ΠΎ Π½Π΅ слоТно.

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

https://medium.com/@samokhvalov/how-partial-indexes-affect-update-performance-in-postgres-d05e0052abc

Но Π΅ΡΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ классный ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. Π­Ρ‚ΠΎ Ρ‚Ρ€Π΅Ρ‚ΡŒΡ стратСгия. И ΠΊΠΎΠ³Π΄Π° это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ Π΅Π΅ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ. ΠœΡ‹ Π½Π° основС ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ индСкса это Π΄Π΅Π»Π°Π΅ΠΌ. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС это Π±ΡƒΠ΄Π΅Ρ‚, скорСС всСго, индСкс ΠΏΠΎ Π½Π°ΡˆΠ΅ΠΌΡƒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ мусора ΠΈ ID. ΠœΡ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠΌ ID, Ρ‡Ρ‚ΠΎΠ±Ρ‹ это Π±Ρ‹Π» index only scan, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΡ‹ Π² heap Π½Π΅ Ρ…ΠΎΠ΄ΠΈΠ»ΠΈ.

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, index only scan – это быстрСС, Ρ‡Π΅ΠΌ index scan.

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

И ΠΌΡ‹ быстро Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ наши айдишники, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ. BATCH_SIZE ΠΌΡ‹ ΠΏΠΎΠ΄Π±ΠΈΡ€Π°Π΅ΠΌ Π·Π°Ρ€Π°Π½Π΅Π΅. И ΠΌΡ‹ ΠΈΡ… Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ, ΠΌΡ‹ ΠΈΡ… ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈ Ρ‚ΡƒΡ‚ ΠΆΠ΅ Π»ΠΎΡ‡ΠΈΠΌ. Но Ρ‚Π°ΠΊ Π»ΠΎΡ‡ΠΈΠΌ, Ρ‡Ρ‚ΠΎ, Ссли ΠΎΠ½ΠΈ ΡƒΠΆΠ΅ Π·Π°Π»ΠΎΡ‡Π΅Π½Ρ‹, ΠΌΡ‹ ΠΈΡ… Π½Π΅ Π»ΠΎΡ‡ΠΈΠΌ, Π° Π΅Π΄Π΅ΠΌ дальшС ΠΈ Π±Π΅Ρ€Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅. Π­Ρ‚ΠΎ for update skip locked. Π­Ρ‚Π° супСрфича Postgres Π½Π°ΠΌ позволяСт Π² нСсколько ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Ссли ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ. МоТно Π² ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡ‚ΠΎΠΊ. И Ρ‚ΡƒΡ‚ Π΅ΡΡ‚ΡŒ CTE – это ΠΎΠ΄ΠΈΠ½ запрос. И Ρƒ нас Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ этаТС этого CTE происходит Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ΅ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ – returning *. МоТно returning id, Π½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ *, Ссли Ρƒ вас Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строчкС.

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

Π—Π°Ρ‡Π΅ΠΌ Π½Π°ΠΌ это Π½ΡƒΠΆΠ½ΠΎ? Π­Ρ‚ΠΎΠΌ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ. ΠœΡ‹ сСйчас ΡƒΠ΄Π°Π»ΠΈΠ»ΠΈ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ строчСк ΠΏΠΎ Ρ„Π°ΠΊΡ‚Ρƒ. И Ρƒ нас Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΏΠΎ ID ΠΈΠ»ΠΈ ΠΏΠΎ created_at Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΠ΅-Ρ‚ΠΎ. МоТно min, max ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ. Π•Ρ‰Π΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ. Π’ΡƒΡ‚ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π·Π°ΠΏΠΈΡ…Π°Ρ‚ΡŒ. И это для ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ.

НасчСт индСкса Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Если ΠΌΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ для этой Π·Π°Π΄Π°Ρ‡ΠΈ Π½ΡƒΠΆΠ΅Π½ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ индСкс, Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π΅ испортит heap only tuples updates. Π’. Π΅. Π² Postgres Π΅ΡΡ‚ΡŒ такая статистика. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² pg_stat_user_tables для вашСй Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ – ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π»ΠΈ hot updates ΠΈΠ»ΠΈ Π½Π΅Ρ‚.

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

Но это самая ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Π°Ρ стратСгия, ΠΊΠ°ΠΊ Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ Π½Π° batches ΠΈ ΠΎΠ΄Π½ΠΈΠΌ запросом ΡΡ‚Ρ€Π΅Π»ΡΡ‚ΡŒ ΠΏΠΎ ΠΏΠ°Ρ‡ΠΊΠ°ΠΌ, ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΏΠΎ Ρ‡ΡƒΡ‚ΡŒ-Ρ‡ΡƒΡ‚ΡŒ ΠΈ Ρ‚. Π΄.

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

Π”ΠΎΠ»Π³ΠΈΠ΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ β€” https://gitlab.com/snippets/1890447

Blocked autovacuum β€” https://gitlab.com/snippets/1889668

Blocking issue β€” https://gitlab.com/snippets/1890428

Ошибка β„– 5 большая. Николай ΠΈΠ· Okmeter рассказывал ΠΏΡ€ΠΎ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Postgres. ИдСального ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Postgres, ΠΊ соТалСнию, Π½Π΅ сущСствуСт. ΠšΡ‚ΠΎ-Ρ‚ΠΎ Π±Π»ΠΈΠΆΠ΅, ΠΊΡ‚ΠΎ-Ρ‚ΠΎ дальшС. Okmeter – достаточно Π±Π»ΠΈΠ·ΠΎΠΊ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ΄Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌ, Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‡Π΅Π³ΠΎ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ ΠΈ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ. К этому Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌ.

НапримСр, dead tuples Π»ΡƒΡ‡ΡˆΠ΅ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΡ‚ΡŒ. Если Ρƒ вас ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ€Ρ‚Π²Π΅Ρ‡ΠΈΠ½Ρ‹ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Ρ‚ΠΎ Ρ‚ΡƒΡ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ. Π›ΡƒΡ‡ΡˆΠ΅ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сСйчас, Π° Ρ‚ΠΎ Ρ‚Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ дСградация, ΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π»Π΅Ρ‡ΡŒ. Π’Π°ΠΊΠΎΠ΅ Π±Ρ‹Π²Π°Π΅Ρ‚.

Если большоС IO, Ρ‚ΠΎ понятно, Ρ‡Ρ‚ΠΎ это Π½Π΅Ρ…ΠΎΡ€ΠΎΡˆΠΎ.

Π”ΠΎΠ»Π³ΠΈΠ΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Ρ‚ΠΎΠΆΠ΅. На OLTP Π΄ΠΎΠ»Π³ΠΈΠ΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π½Π΅ стоит ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ. И Π²ΠΎΡ‚ здСсь ссылка Π½Π° сниппСт, которая позволяСт Π²Π·ΡΡ‚ΡŒ этот сниппСт ΠΈ ΡƒΠΆΠ΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ слСТСниС Π·Π° Π΄ΠΎΠ»Π³ΠΈΠΌΠΈ транзакциями.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π΄ΠΎΠ»Π³ΠΈΠ΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ – это ΠΏΠ»ΠΎΡ…ΠΎ? ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ всС Π»ΠΎΠΊΠΈ отпустятся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΊΠΎΠ½Ρ†Π΅. И ΠΌΡ‹ Π»ΠΎΡ‡ΠΈΠΌ всСх. Плюс ΠΌΡ‹ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρƒ autovacuum для всСх Ρ‚Π°Π±Π»ΠΈΡ†. Π­Ρ‚ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ. Π”Π°ΠΆΠ΅ Ссли Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ΅ Ρƒ вас hot standby Π²ΠΊΠ»ΡŽΡ‡Π΅Π½, это всС Ρ€Π°Π²Π½ΠΎ ΠΏΠ»ΠΎΡ…ΠΎ. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, Π½ΠΈΠ³Π΄Π΅ Π»ΡƒΡ‡ΡˆΠ΅ Π½Π΅ Π΄ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π΄ΠΎΠ»Π³ΠΈΡ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ.

Если Ρƒ нас ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚Π°Π±Π»ΠΈΡ† Π½Π΅ вакуумятся, Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ alert ΠΈΠΌΠ΅Ρ‚ΡŒ. Π’ΡƒΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° такая ситуация ΠΊΠ°ΠΊ Ρ€Π°Π·. ΠœΡ‹ косвСнно ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ autovacuum. Π­Ρ‚ΠΎ сниппСт ΠΎΡ‚ Avito, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я Π½Π΅ΠΌΠ½ΠΎΠΆΠΊΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΠ». И получился интСрСсный инструмСнт, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ нас с autovacuum. НапримСр, Ρ‚Π°ΠΌ ΠΆΠ΄ΡƒΡ‚ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ Π½Π΅ доТдутся своСй ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ. Π’ΠΎΠΆΠ΅ Π½Π°Π΄ΠΎ Π·Π°ΡΡƒΠ½ΡƒΡ‚ΡŒ Π² ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΈ alert ΠΈΠΌΠ΅Ρ‚ΡŒ.

И Π±Π»ΠΎΠΊΠΈ issues. ЛСс Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π² Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ. Π― люблю Ρƒ ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Π·ΡΡ‚ΡŒ ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ. Π—Π΄Π΅ΡΡŒ ΠΎΡ‚ Data Egret взял классный рСкурсивный CTE, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ лСс Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π² Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ. Π­Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ ΡˆΡ‚ΡƒΠΊΠ° для диагностики. И Π½Π° Π΅Π΅ основС Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠΎΡ€ΡƒΠ΄ΠΈΡ‚ΡŒ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³. Но это Π½Π°Π΄ΠΎ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ. НуТно самому сСбС statement_timeout малСнький ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ. И lock_timeout ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ.

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

Иногда всС эти ошибки встрСчаСтся Π² суммС.

На ΠΌΠΎΠΉ взгляд, самая главная ошибка здСсь – это организационная. Она организационная, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° Π½Π΅ тянСт. Π­Ρ‚ΠΎ Π½ΠΎΠΌΠ΅Ρ€ 2 – провСряли Π½Π΅ Ρ‚Π°ΠΌ.

ΠœΡ‹ провСряли Π½Π΅ Ρ‚Π°ΠΌ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρƒ нас Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΊΠ»ΠΎΠ½Π° production, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π»Π΅Π³ΠΊΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ. Π£ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Π±Ρ‹Ρ‚ΡŒ доступа ΠΊ production.

И ΠΌΡ‹ провСряли Π½Π΅ Ρ‚Π°ΠΌ. Если Π±Ρ‹ провСряли Ρ‚Π°ΠΌ, Ρ‚Π°ΠΌ ΠΌΡ‹ сами Π±Ρ‹ это ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈ Π±Π΅Π· DBA это всС ΡƒΠ²ΠΈΠ΄Π΅Π», Ссли ΠΎΠ½ провСрял это Π² Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΌ ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ, Π³Π΄Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΆΠ΅ ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎΠ΅ располоТСниС. Он Π±Ρ‹ всю эту Π΄Π΅Π³Ρ€Π°Π΄Π°Ρ†ΠΈΡŽ ΡƒΠ²ΠΈΠ΄Π΅Π» Π±Ρ‹ ΠΈ Π΅ΠΌΡƒ стыдно Π±Ρ‹Π»ΠΎ Π±Ρ‹.

Π•Ρ‰Π΅ ΠΏΡ€ΠΎ Π°Π²Ρ‚ΠΎΠ²Π°ΠΊΡƒΡƒΠΌ. ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ сдСлали ΠΌΠ°ΡΡΠΈΠ²Π½ΡƒΡŽ зачистку Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² строчСк, Π΅Ρ‰Π΅ Π½ΡƒΠΆΠ½ΠΎ REPACK ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ. ОсобСнно для индСксов это Π²Π°ΠΆΠ½ΠΎ. Им Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ»ΠΎΡ…ΠΎ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ Ρ‚Π°ΠΌ всС почистили.

И Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎ зачисткС, Ρ‚ΠΎ я Π±Ρ‹ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ» это Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Π°Ρ‰Π΅, Π½ΠΎ ΠΌΠ΅Π»ΡŒΡ‡Π΅. МоТно Ρ€Π°Π· Π² ΠΌΠΈΠ½ΡƒΡ‚ ΠΈΠ»ΠΈ Π΅Ρ‰Π΅ Ρ‡Π°Ρ‰Π΅ ΠΏΠΎ Ρ‡ΡƒΡ‚ΡŒ-Ρ‡ΡƒΡ‚ΡŒ. И Π½ΡƒΠΆΠ½ΠΎ Π½Π°Π»Π°Π΄ΠΈΡ‚ΡŒ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π΄Π²ΡƒΡ… Π²Π΅Ρ‰Π΅ΠΉ: Ρ‡Ρ‚ΠΎ ошибок Π½Π΅Ρ‚ Ρƒ этой ΡˆΡ‚ΡƒΡ‡ΠΊΠΈ ΠΈ Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π½Π΅ отстаСт. Π’ΠΎΡ‚ Ρ‚Ρ€ΡŽΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π» ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ это Ρ€Π΅ΡˆΠΈΡ‚ΡŒ.

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

Π’ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ, это open source. Π­Ρ‚ΠΎ Π²Ρ‹Π»ΠΎΠΆΠ΅Π½ΠΎ Π½Π° GitLab. И ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ люди ΠΌΠΎΠ³Π»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π΄Π°ΠΆΠ΅ Π±Π΅Π· DBA. ΠœΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ database lab, Ρ‚. Π΅. ΠΌΡ‹ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ сСйчас Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Joe. И Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π·ΡΡ‚ΡŒ копию production. БСйчас Π΅ΡΡ‚ΡŒ рСализация Joe для slack, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ‚Π°ΠΌ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ: Β«explain Ρ‚Π°ΠΊΠΎΠΉ-Ρ‚ΠΎ запрос» ΠΈ Ρ‚ΡƒΡ‚ ΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ для вашСй ΠΊΠΎΠΏΠΈΠΈ Π±Π°Π·Ρ‹. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ‚Π°ΠΌ Π΄Π°ΠΆΠ΅ DELETE ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, ΠΈ Π½ΠΈΠΊΡ‚ΠΎ этого Π½Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚.

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

Допустим, Ρƒ вас 10 Ρ‚Π΅Ρ€Π°Π±Π°ΠΉΡ‚Π°, ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ database lab Ρ‚ΠΎΠΆΠ΅ 10 Ρ‚Π΅Ρ€Π°Π±Π°ΠΉΡ‚. И с ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ 10-Ρ‚ΠΈ Ρ‚Π΅Ρ€Π°Π±Π°ΠΉΡ‚Π½Ρ‹ΠΌΠΈ Π±Π°Π·Π°ΠΌΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ 10 Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚. ΠœΠΎΠΆΠ΅Ρ‚ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ, Π΄Ρ€ΠΎΠΏΠ°Ρ‚ΡŒ ΠΈ Ρ‚. Π΄. Π’ΠΎΡ‚ такая фантастика. Об этом ΠΌΡ‹ Π·Π°Π²Ρ‚Ρ€Π° Π±ΡƒΠ΄Π΅ΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ.

Π”ΠΎΡ€ΠΎΠ³ΠΎΠΉ DELETE. Николай Π‘Π°ΠΌΠΎΡ…Π²Π°Π»ΠΎΠ² (Postgres.ai)

Π­Ρ‚ΠΎ называСтся thin provisioning. Π­Ρ‚ΠΎ Ρ‚ΠΎΠ½ΠΊΠΈΠΉ ΠΏΡ€ΠΎΠ²ΠΈΠΆΠΈΠ½Π³. Π­Ρ‚ΠΎ такая нСкоторая фантастика, которая сильно ΡƒΠ±ΠΈΡ€Π°Π΅Ρ‚ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅, Π² тСстировании ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΌΠΈΡ€ Π»ΡƒΡ‡ΡˆΠ΅ Π² этом ΠΏΠ»Π°Π½Π΅. Π’. Π΅. ΠΊΠ°ΠΊ Ρ€Π°Π· позволяСт Π²Π°ΠΌ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с массовыми опСрациями.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… Π² 5 Ρ‚Π΅Ρ€Π°Π±Π°ΠΉΡ‚, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΏΠΈΠΈ ΠΌΠ΅Π½Π΅Π΅, Ρ‡Π΅ΠΌ Π·Π° 30 сСкунд. И ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° это Π΄Π°ΠΆΠ΅ Π½Π΅ зависит, Ρ‚. Π΅. Π½Π΅Π²Π°ΠΆΠ½ΠΎ, сколько Ρ‚Π΅Ρ€Π°Π±Π°ΠΉΡ‚.

Π£ΠΆΠ΅ сСгодня Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΉΡ‚ΠΈ Π½Π° Postgres.ai ΠΈ ΠΏΠΎΠΊΠΎΠΏΠ°Ρ‚ΡŒΡΡ Π² Π½Π°ΡˆΠΈΡ… инструмСнтах. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ, ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΌ Π΅ΡΡ‚ΡŒ. ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ сСбС этого Π±ΠΎΡ‚Π°. Он бСсплатный. ΠŸΠΈΡˆΠΈΡ‚Π΅.

Вопросы

ΠžΡ‡Π΅Π½ΡŒ часто Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ситуациях получаСтся Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡΡ‚Π°Ρ‚ΡŒΡΡ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅, ΠΈΡ… Π³ΠΎΡ€Π°Π·Π΄ΠΎ мСньшС, Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ. Π’. Π΅. Π² Ρ‚Π°ΠΊΠΎΠΉ ситуации часто Π»Π΅Π³Ρ‡Π΅ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΎΡ‰Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΡƒΠ΄Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½ΡƒΠΆΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ Π·Π°Ρ‚Ρ€Π°Π½ΠΊΠ΅ΠΉΡ‚ΠΈΡ‚ΡŒ ΡΡ‚Π°Ρ€ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ. ΠŸΠΎΠ½ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ΅Π½ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ для этого ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, ΠΏΠΎΠΊΠ° Ρƒ вас Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. Как Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄?

Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΈ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ Π·Π°Π΄Π°Ρ‡Π°. Она ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ pg_repack, ΠΎΠ½Π° ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ приходится Π΄Π΅Π»Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ айдишники сдСлали 4-Ρ… Π±Π°ΠΉΡ‚Π½Ρ‹ΠΌΠΈ. МногиС Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ это Π΄Π΅Π»Π°Π»ΠΈ нСсколько Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄, ΠΈ ΠΊΠ°ΠΊ Ρ€Π°Π· Ρ‚Π°Π±Π»ΠΈΡ‡ΠΊΠΈ подросли, ΠΈ ΠΈΡ… Π½ΡƒΠΆΠ½ΠΎ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° 8 Π±Π°ΠΉΡ‚.

Π­Ρ‚Π° Π·Π°Π΄Π°Ρ‡Π° довольно трудная. ΠœΡ‹ это Π΄Π΅Π»Π°Π»ΠΈ. И Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½Ρ‹ΠΌΠΈ. Π’Π°ΠΌ Π»ΠΎΠΊΠΈ ΠΈ Ρ‚. Π΄. Но это дСлаСтся. Π’. Π΅. стандартный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΏΠΎΡ…ΠΎΠ΄ Π½Π° pg_repack. Π’Ρ‹ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚Π΅ Ρ‚Π°ΠΊΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ‡ΠΊΡƒ. И ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π² Π½Π΅Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ Π·Π°Π»ΠΈΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΡΠ½Π°ΠΏΡˆΠΎΡ‚ΠΎΠΌ, Π²Ρ‹ Π΅Ρ‰Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚Π΅ ΠΎΠ΄Π½Ρƒ Ρ‚Π°Π±Π»ΠΈΡ‡ΠΊΡƒ, которая всС измСнСния отслСТиваСт. Π’Π°ΠΌ Π΅ΡΡ‚ΡŒ Ρ…ΠΈΡ‚Ρ€ΠΎΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ измСнСния Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ. Π•ΡΡ‚ΡŒ тонкости. И ΠΏΠΎΡ‚ΠΎΠΌ Π²Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚Π΅ΡΡŒ, Π½Π°ΠΊΠ°Ρ‚ΠΈΠ² измСнСния. Π’Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ нСдолгая ΠΏΠ°ΡƒΠ·Π°, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ всСх Π·Π°Π»ΠΎΡ‡ΠΈΠΌ, Π½ΠΎ Π² Ρ†Π΅Π»ΠΎΠΌ это дСлаСтся.

Если Π²Ρ‹ pg_repack Π½Π° GitHub посмотритС, Ρ‚ΠΎ Ρ‚Π°ΠΌ, ΠΊΠΎΠ³Π΄Π° Π±Ρ‹Π»Π° Π·Π°Π΄Π°Ρ‡Π° ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ айдишник с int 4 Π½Π° int 8, Ρ‚ΠΎ Π±Ρ‹Π»Π° идСя сам pg_repack ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Π­Ρ‚ΠΎ Ρ‚ΠΎΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ это Π½Π΅ΠΌΠ½ΠΎΠΆΠΊΠΎ хакСрский ΠΌΠ΅Ρ‚ΠΎΠ΄, Π½ΠΎ ΠΎΠ½ Ρ‚ΠΎΠΆΠ΅ для этого ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΌΠ΅ΡˆΠ°Ρ‚ΡŒΡΡ Π² Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ pg_repack ΠΈ Ρ‚Π°ΠΌ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ: «Нам эти Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹Β», Ρ‚. Π΅. ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π»ΠΈΠ²Π°Π΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ. И ΠΏΠΎΡ‚ΠΎΠΌ ΠΎΠ½ просто ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡΡ ΠΈ всС.

ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ ΠΌΡ‹ Π΅Ρ‰Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π²Ρ‚ΠΎΡ€ΡƒΡŽ копию Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Π΅ ΡƒΠΆΠ΅ индСксированы ΠΈ ΡƒΠ»ΠΎΠΆΠ΅Π½Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ Ρ€ΠΎΠ²Π½ΠΎ с красивыми индСксами.

Bloat Π½Π΅Ρ‚, это Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. Но я знаю, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ для этого, Ρ‚. Π΅. ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. Π― ΠΌΠΎΠ³Ρƒ вас свСсти с этой Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. Она написана Π½Π° Python, Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ ΡˆΡ‚ΡƒΠΊΠ°.

Π― просто Π½Π΅ΠΌΠ½ΠΎΠΆΠΊΠΎ ΠΈΠ· ΠΌΠΈΡ€Π° MySQL, поэтому я ΠΏΡ€ΠΈΡˆΠ΅Π» ΠΏΠΎΡΠ»ΡƒΡˆΠ°Ρ‚ΡŒ. И ΠΌΡ‹ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ Ρ‚Π°ΠΊΠΈΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠΌ.

Но ΠΎΠ½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ, Ссли Ρƒ нас 90 %. Если Ρƒ нас 5 %, Ρ‚ΠΎ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ.

Бпасибо Π·Π° Π΄ΠΎΠΊΠ»Π°Π΄! Если Π½Π΅Ρ‚ рСсурсов ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΡƒΡŽ копию prod, Π΅ΡΡ‚ΡŒ Π»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΈΠ»ΠΈ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π° для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ ΠΈΠ»ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€?

Π₯ΠΎΡ€ΠΎΡˆΠΈΠΉ вопрос. Пока Ρ‡Ρ‚ΠΎ Ρƒ нас получаСтся ΠΌΠ½ΠΎΠ³ΠΎΡ‚Π΅Ρ€Π°Π±Π°ΠΉΡ‚Π½Ρ‹Π΅ Π±Π°Π·Ρ‹ Π½Π°ΠΉΡ‚ΠΈ. ΠŸΡƒΡΡ‚ΡŒ Π΄Π°ΠΆΠ΅ Ρ‚Π°ΠΌ ΠΆΠ΅Π»Π΅Π·ΠΎ Π½Π΅ Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, помСньшС памяти, помСньшС процСссора ΠΈ диски Π½Π΅ совсСм Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅, Π½ΠΎ всС-Ρ‚Π°ΠΊΠΈ ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ это. Если совсСм Π½Π΅Π³Π΄Π΅, Ρ‚ΠΎ Π½Π°Π΄ΠΎ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ. Π”Π°Π²Π°ΠΉΡ‚Π΅ я Π΄ΠΎ Π·Π°Π²Ρ‚Ρ€Π° ΠΏΠΎΠ΄ΡƒΠΌΠ°ΡŽ, Π²Ρ‹ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΈ, ΠΌΡ‹ пообщаСмся, это Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ вопрос.

Бпасибо Π·Π° Π΄ΠΎΠΊΠ»Π°Π΄! Π’Ρ‹ Π²Π½Π°Ρ‡Π°Π»Π΅ Π½Π°Ρ‡Π°Π»ΠΈ ΠΏΡ€ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΡ€ΡƒΡ‚ΠΎΠΉ Postgres, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΠ΅-Ρ‚ΠΎ ограничСния, Π½ΠΎ ΠΎΠ½ развиваСтся. А это всС ΠΊΠΎΡΡ‚Ρ‹Π»ΡŒ ΠΏΠΎ Π±ΠΎΠ»ΡŒΡˆΠ΅ΠΌΡƒ счСту. НС ΠΈΠ΄Π΅Ρ‚ Π»ΠΈ это всС Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡ΠΈΠ΅ с Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ΠΌ самого Postgres, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ DELETE deferent появится ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π΅Ρ‰Π΅, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π½Π° Π½ΠΈΠ·ΠΊΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ пытаСмся здСсь ΠΎΠ±ΠΌΠ°Π·Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠΌΠΈ-Ρ‚ΠΎ своими странными срСдствами?

Если ΠΌΡ‹ Π² SQL сказали ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ°ΠΏΠ΄Π΅ΠΉΡ‚ΠΈΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ записСй Π² ΠΎΠ΄Π½ΠΎΠΉ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Ρ‚ΠΎ ΠΊΠ°ΠΊ Ρ‚Π°ΠΌ Postgres ΠΌΠΎΠΆΠ΅Ρ‚ это Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ? ΠœΡ‹ физичСски ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ Π² опСрациях. ΠœΡ‹ всС Ρ€Π°Π²Π½ΠΎ Π±ΡƒΠ΄Π΅ΠΌ это Π΄Π΅Π»Π°Ρ‚ΡŒ Π΄ΠΎΠ»Π³ΠΎ. И ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π»ΠΎΡ‡ΠΈΡ‚ΡŒ Π² это врСмя ΠΈ Ρ‚. Π΄.

Б индСксами ТС сдСлали.

Π― ΠΌΠΎΠ³Ρƒ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΡ‚ ΠΆΠ΅ checkpoint tuning ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Когда-Π½ΠΈΠ±ΡƒΠ΄ΡŒ это, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π±ΡƒΠ΄Π΅Ρ‚. Но я Ρ‚ΠΎΠ³Π΄Π° вопрос Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ понимаю.

Вопрос Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ Π»ΠΈ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° развития, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ΄Π΅Ρ‚ Π²ΠΎΡ‚ Ρ‚Π°ΠΌ Π²ΠΎΡ‚, Π° здСсь ΠΈΠ΄Π΅Ρ‚ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ ваш? Π’.Π΅. Ρ‚Π°ΠΌ ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎ это Π½Π΅ Π΄ΡƒΠΌΠ°ΡŽΡ‚?

Π― рассказал ΠΏΡ€ΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сСйчас. Π•ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π±ΠΎΡ‚ Nancy, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ checkpoint tuning. Π‘ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ это ΠΊΠΎΠ³Π΄Π°-Ρ‚ΠΎ Π² Postgres? НС знаю, это ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ Π½Π΅ обсуТдаСтся. ΠœΡ‹ ΠΏΠΎΠΊΠ° Π΄Π°Π»Π΅ΠΊΠΈ ΠΎΡ‚ этого. Но Π΅ΡΡ‚ΡŒ ΡƒΡ‡Π΅Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ Π½ΠΎΠ²Ρ‹Π΅ систСмы. И ΠΎΠ½ΠΈ нас ΠΏΠΈΡ…Π°ΡŽΡ‚ Π² автоматичСскиС индСксы. Π•ΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. НапримСр, auto tuning ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ. Он ΠΏΠΎΠ΄Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ автоматичСски. Но ΠΎΠ½ Π²Π°ΠΌ checkpoint tuning ΠΏΠΎΠΊΠ° Π½Π΅ сдСлаСт. Π’. Π΅. ΠΎΠ½ ΠΏΠΎΠ΄Π±Π΅Ρ€Π΅Ρ‚ для performance, shell buffer ΠΈ Ρ‚. Π΄.

А для checkpoint tuning ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ΡˆΡ‚ΡƒΠΊΡƒ: Ссли Ρƒ вас тысяча кластСров ΠΈ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΆΠ΅Π»Π΅Π·ΠΊΠΈ, Ρ€Π°Π·Π½Ρ‹Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π² cloud, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ нашСго Π±ΠΎΡ‚Π° Nancy Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ. И Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ max_wal_size ΠΏΠΎ вашим Ρ†Π΅Π»Π΅Π²Ρ‹ΠΌ установкам автоматичСски. Но ΠΏΠΎΠΊΠ° этого Π² ядрС Π΄Π°ΠΆΠ΅ Π±Π»ΠΈΠ·ΠΊΠΎ Π½Π΅Ρ‚, ΠΊ соТалСнию.

Π”ΠΎΠ±Ρ€Ρ‹ΠΉ дСнь! Π’Ρ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ ΠΎ Π²Ρ€Π΅Π΄Π΅ Π΄ΠΎΠ»Π³ΠΈΡ… Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ. Π’Ρ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‚ΡΡ autovacuum Π² случаС ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΉ. Π§Π΅ΠΌ Π΅Ρ‰Π΅ Π½Π°ΠΌ это Π²Ρ€Π΅Π΄ΠΈΡ‚? ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ большС Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎΠ± освобоТдСнии мСста ΠΈ возмоТности Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Π§Ρ‚ΠΎ Π΅Ρ‰Π΅ ΠΌΡ‹ тСряСм?

Autovacuum – это, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Π½Π΅ самая большая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° здСсь. А Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ долгая транзакция ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π»ΠΎΡ‡ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, эта Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ опасная. Она ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡ‚ΡŒΡΡ, Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ Π½Π΅ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡ‚ΡŒΡΡ. Если ΠΎΠ½Π° Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΠ»Π°ΡΡŒ, Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠ»ΠΎΡ…ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ. И с autovacuum – это Ρ‚ΠΎΠΆΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. Π’ΡƒΡ‚ Π΄Π²Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с Π΄ΠΎΠ»Π³ΠΈΠΌΠΈ транзакциями Π² OLTP: Π»ΠΎΠΊΠΈ ΠΈ autovacuum. И Ссли Ρƒ вас hot standby feedback Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ΅, Ρ‚ΠΎ Π²Π°ΠΌ Π΅Ρ‰Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° autovacuum ΠΏΡ€ΠΈΠ»Π΅Ρ‚ΠΈΡ‚ Π½Π° мастСр, ΠΎΠ½Π° ΠΏΡ€ΠΈΠ»Π΅Ρ‚ΠΈΡ‚ с Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ. Но, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, Ρ‚Π°ΠΌ Π»ΠΎΠΊΠΎΠ² Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. А здСсь Π±ΡƒΠ΄ΡƒΡ‚ Π»ΠΎΠΊΠΈ. ΠœΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎΠ± измСнСниях Π΄Π°Π½Π½Ρ‹Ρ…, поэтому Π»ΠΎΠΊΠΈ – это Π²Π°ΠΆΠ½Ρ‹ΠΉ здСсь ΠΌΠΎΠΌΠ΅Π½Ρ‚. И Ссли это всС Π΄ΠΎΠ»Π³ΠΎ-Π΄ΠΎΠ»Π³ΠΎ, Ρ‚ΠΎ всС большС Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ лочится. Они ΠΌΠΎΠ³ΡƒΡ‚ Π»ΠΎΡ‡ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. И ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΄Π΅Ρ€Π΅Π²ΡŒΡ Π»ΠΎΠΊΠΎΠ². Π― ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ» ссылку Π½Π° сниппСт. И эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° быстрСС становится Π·Π°ΠΌΠ΅Ρ‚Π½Π΅ΠΉ, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с autovacuum, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°Ρ‚ΡŒΡΡ.

Бпасибо Π·Π° Π΄ΠΎΠΊΠ»Π°Π΄! Π’Ρ‹ Π½Π°Ρ‡Π°Π»ΠΈ свой Π΄ΠΎΠΊΠ»Π°Π΄ с Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ тСстировали. ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠ»ΠΈ свою идСю, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅, с Π±Π°Π·ΠΎΠΉ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅. Допустим, ΠΌΡ‹ Π΄Π°Π»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Π±Π°Π·Ρƒ. И ΠΎΠ½ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ» запрос. И Ρƒ Π½Π΅Π³ΠΎ Π²Ρ€ΠΎΠ΄Π΅ Π±Ρ‹ всС Ρ…ΠΎΡ€ΠΎΡˆΠΎ. Но ΠΎΠ½ ΠΆΠ΅ Π½Π΅ провСряСт Π½Π° live, Π° Π½Π° live, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρƒ нас Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Π½Π° 60-70 %. И Π΄Π°ΠΆΠ΅ Ссли ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ этот Ρ‚ΡŽΠ½ΠΈΠ½Π³, получаСтся Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ

Π˜ΠΌΠ΅Ρ‚ΡŒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ экспСрта ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ экспСртам DBA, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΠ³Π½ΠΎΠ· ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅, β€” это Π²Π°ΠΆΠ½ΠΎ. Когда ΠΌΡ‹ просто чистыС наши измСнСния ΠΏΡ€ΠΎΠ³Π½Π°Π»ΠΈ, ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ. Но Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π΅Ρ‰Π΅ Ρ€Π°Π· Ρ‚ΠΎ ΠΆΠ΅ самоС сдСлали, Π½ΠΎ Π΅Ρ‰Π΅ со симулированной с production Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ. Π­Ρ‚ΠΎ совсСм классно. Π”ΠΎ этого Π½Π°Π΄ΠΎ Π΅Ρ‰Π΅ дорасти. Π­Ρ‚ΠΎ ΠΏΠΎ-взрослому. ΠœΡ‹ ΠΈ чисто посмотрСли, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΈ Π΅Ρ‰Π΅ посмотрСли – Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ Π»ΠΈ Π½Π°ΠΌ рСсурсов. Π­Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ вопрос.

Когда ΠΌΡ‹ ΡƒΠΆΠ΅ Π΄Π΅Π»Π°Π΅ΠΌ garbage select ΠΈ Ρƒ нас Π΅ΡΡ‚ΡŒ, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, deleted flag

Π­Ρ‚ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ autovacuum Π΄Π΅Π»Π°Π΅Ρ‚ автоматичСски Π² Postgres.

А, ΠΎΠ½ это Π΄Π΅Π»Π°Π΅Ρ‚?

Autovacuum это ΠΈ Π΅ΡΡ‚ΡŒ garbage collector.

Бпасибо!

Бпасибо Π·Π° Π΄ΠΎΠΊΠ»Π°Π΄! Π•ΡΡ‚ΡŒ Π»ΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ сразу ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ‚Π°ΠΊΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ вСсь мусор отпачковывался ΠΎΡ‚ основной Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΊΡƒΠ΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π² сторону?

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π΅ΡΡ‚ΡŒ.

МоТно Π»ΠΈ Ρ‚ΠΎΠ³Π΄Π° ΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠΈΡ‚ΡŒ сСбя, Ссли ΠΌΡ‹ Π·Π°Π»ΠΎΡ‡ΠΈΠ»ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, которая Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ?

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π΅ΡΡ‚ΡŒ. Но это вопрос ΠΊΠ°ΠΊ ΠΏΡ€ΠΎ ΠΊΡƒΡ€ΠΈΡ†Ρƒ ΠΈ яйцо. Если ΠΌΡ‹ всС Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ, Ρ‚ΠΎ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΡ‹ всС сдСлаСм классно. Но бизнСс мСняСтся, Ρ‚Π°ΠΌ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹Π΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ, Π½ΠΎΠ²Ρ‹Π΅ запросы. А ΠΏΠΎΡ‚ΠΎΠΌ – ΠΎΠΏΠ°, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ это ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ. Но эта идСальная ситуация, Π² ΠΆΠΈΠ·Π½ΠΈ ΠΎΠ½Π° встрСчаСтся, Π½ΠΎ Π½Π΅ всСгда. Но Π² Ρ†Π΅Π»ΠΎΠΌ это Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ идСя. ΠŸΡ€ΠΎΡΡ‚ΠΎ truncate ΠΈ всС.

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