База по оптимизации PostgreSQL: схема, индексы, чтение EXPLAIN, методы доступа и соединения, тюнинг

แชร์
ฝัง
  • เผยแพร่เมื่อ 19 ม.ค. 2025

ความคิดเห็น • 99

  • @t0digital
    @t0digital  หลายเดือนก่อน +9

    На моём авторском курсе «Хардкорная веб-разработка» постгресу посвящено две большие главы. Первая глава по SQL в реализации PostgreSQL - 61 урок общей продолжительностью 9.5 часов, 182 задачи. Вторая глава об оптимизации запросов и настроек - 25 уроков на 5 часов контента и ещё 52 задачи. Приходите прокачиваться: course.to.digital.

  • @Павел-ю5и
    @Павел-ю5и 5 วันที่ผ่านมา +2

    Спасибо за доклад, очень полезная информация. Теперь ждем доклад от Дмитрия Гаврина с последующим ответом на вопрос: "что я не правильно рассказал?" Алексеем.)

  • @sudmal
    @sudmal 27 วันที่ผ่านมา +9

    Благодарю, многое прояснилось! Хотелось бы живой пример "плохого запроса" и как из него при помощи explain сделать хороший и сравнить результаты.

  • @vvvarvfx
    @vvvarvfx หลายเดือนก่อน +21

    Классно рассказываешь, прям молодец! Здоровья тебе и побольше выступлений👍👍

    • @t0digital
      @t0digital  หลายเดือนก่อน +2

      Спасибооо!

  • @hurricane-rus
    @hurricane-rus 11 วันที่ผ่านมา

    Спасибо, отличная лекция!
    Надеюсь, в следующий раз будет намного больше зрителей в зале

  • @erickostandyan8977
    @erickostandyan8977 หลายเดือนก่อน +2

    Я вообще занимаюсь областью безопасности, но мне было просто интересно смотреть ) Продолжай выступать с лекциями в университетах!! Важно, чтобы в этой среде находились такие эксперты

  • @SeRGKIM13
    @SeRGKIM13 หลายเดือนก่อน +5

    Нифига себе подгон! Еще не смотрел, но сразу лайк. Спасибо!!

  • @yaroslavandreyev4246
    @yaroslavandreyev4246 หลายเดือนก่อน +4

    Работаю с oracle уже 9 месяцев понимаю что автор говорит прям нужную базу. Разница конечно определенная есть с Postgres , но сути это не меняет. Респект 👍🏻

  • @АнатолийПостнов-в7х
    @АнатолийПостнов-в7х หลายเดือนก่อน +26

    Для лучшего понимания читайте Домбровская, Новиков, Бейликова Оптимизация запросов в postgresql. Отличная книга, читается на одном дыхании.

    • @t0digital
      @t0digital  หลายเดือนก่อน +6

      Да, она упоминается в презентации 1:22:29

    • @IlyaLychkou
      @IlyaLychkou 25 วันที่ผ่านมา +2

      Для тех кто поверхностно знаком с устройством PostgreSQL я бы еще добавил “PostgreSQL 15 изнутри” Е. Рогов

  • @kawaikaino5277
    @kawaikaino5277 หลายเดือนก่อน +10

    Терпение и труд! У! А! Мастерами Pg не рождаются, мастерами PG становятся )

    • @How_is-x5b
      @How_is-x5b หลายเดือนก่อน

      Пару раз базу грохнешь и станешь мастером

  • @animanoir777
    @animanoir777 หลายเดือนก่อน

    Идеальный формат подачи, понятно, легко, интересно и по делу)

  • @by_yurik
    @by_yurik หลายเดือนก่อน +5

    Очень интересно! Спасибо за публикацию лекции!

  • @Jasha350
    @Jasha350 หลายเดือนก่อน +7

    Отличный доклад, стоит еще добавить что не стоит забывать на чем крутится бд. Это в большинстве случаев какой то линукс который тоже может подкинуть проблем в виде айнод, скорости и/или деградации самих дисков и много чего другого.

    • @oeaoo
      @oeaoo หลายเดือนก่อน +2

      По-любому. Сегодня люди брезгуют пониманием контекста, а ведь там все ключи.

  • @TeppopucT
    @TeppopucT หลายเดือนก่อน +4

    Это мега полезное видео!
    Наконец-то я понял что это за "Попугаи" в cost.
    Спасибо большое!

    • @pyramidhead9692
      @pyramidhead9692 23 วันที่ผ่านมา +1

      Как сказал автор, в курсе QTP от Postgres Pro это очень детально описывается.

  • @QRpeach
    @QRpeach หลายเดือนก่อน +3

    Начал смотрел видосы по Postgres, думал ютюб подкинул в рекомендации старый видос, а он вышел 11 часов назад)

  • @chaizy1218
    @chaizy1218 19 วันที่ผ่านมา

    шикарный доклад! очень полезно 💌

    • @t0digital
      @t0digital  19 วันที่ผ่านมา +1

      Спасибооо!

  • @ponypony5964
    @ponypony5964 หลายเดือนก่อน +1

    О, я очень удивлена тому, насколько это оказалось полезно и интересно (что вообще дичь в случае меня и sql)

  • @stanislavb.4161
    @stanislavb.4161 หลายเดือนก่อน +1

    Спасибо большое! Очень круто!

  • @PodaRock
    @PodaRock หลายเดือนก่อน +1

    Очень круто и полезно!

  • @snatvb
    @snatvb หลายเดือนก่อน +1

    вот такого я не ожидал, вот это контентище) спасибо!

  • @podjigalgoroda6523
    @podjigalgoroda6523 หลายเดือนก่อน +7

    Работаю на бэке второй месяц. Сейчас таска по оптимизации запросов при загрузке некоторых страниц. Стоит постгрес. Пришел с работы, а тут это. Очень своевременно. Благодарю за полезную информацию!

    • @BOSOZOKU-v2j
      @BOSOZOKU-v2j หลายเดือนก่อน +1

      Тоже изучаю питон для бека, подскажи пожалуйста что нужно еще знать помимо Джанго, sql запросов, буду очень благодарен

    • @podjigalgoroda6523
      @podjigalgoroda6523 หลายเดือนก่อน

      ​@@BOSOZOKU-v2j друг, привет. как видишь, я еще сам практически первопроходец, поэтому не считаю себя тем, кто может раздавать другим советы. плюс, у каждой компании свой стэк технологий, который может заметно разниться. единственное, в чем я точно уверен - пили свой пет-проект, там многому научишься. я очень много времени убил на бесконечные курсы, теоретические знания от которых ничего общего не имеют с реальной разработкой. А если все таки нужны технологии - посмотри пол часа джуновские вакансии, там найдешь что требуют)

    • @podjigalgoroda6523
      @podjigalgoroda6523 หลายเดือนก่อน

      @@BOSOZOKU-v2j привет, брат. посмотри вакансии на джуна пол часа, там увидишь, что требуется знать)

  • @ЕвгенийСергейченко
    @ЕвгенийСергейченко หลายเดือนก่อน +1

    Спасибо, доклад очень полезный!!

  • @boleonv
    @boleonv หลายเดือนก่อน +1

    Спасибо за доклад.
    Слайды очень мелкие для просмотра с телефона, пришлось пожертвовать оратором и смотреть с увеличением.

  • @rockkley9159
    @rockkley9159 หลายเดือนก่อน

    Спасибо огромнейшее за лекцию! Очень классно. Ответы из зала разве что субтитрами сопроводить, а то не всё разборчиво.

  • @kwd713
    @kwd713 หลายเดือนก่อน

    Спасибо за классный доклад)
    Вот бы еще по NoSQL базам так доступно увидеть. Из всего зоопарка, к примеру разобрать оптимизацию MongoDB)

  • @takecare-q8b
    @takecare-q8b หลายเดือนก่อน

    Огонь, пожар - оч интересно и полезно)

  • @winter-lb7id
    @winter-lb7id หลายเดือนก่อน

    очень круто, спасибо большое за лекцию

  • @damir_nsk
    @damir_nsk หลายเดือนก่อน

    большое спасибо за доклад!

  • @alekseyeject940
    @alekseyeject940 หลายเดือนก่อน +2

    1:06:08 вот тут прямо чувствуется какое-то противоречие: я понял так, что не надо ковырять постгрес на предмет оптимизации запроса ибо он лучше тебя знает как данные тащить, но при этом, ты должен понимать, как он работает, чтобы сразу составить правильный запрос.

    • @t0digital
      @t0digital  หลายเดือนก่อน +1

      На предмет оптимизации ковырять надо (когда стоит задача оптимизации запроса), а также писать сразу декларативно надо. Не надо писать императивно, навязывая свой план базе. Понимать как работает база надо, в идеале даже рекомендуется «думать как база», понимать, как можно выполнить запрос и как сделать это оптимально - это поможет оптимизировать запросы, а иногда и писать их сразу более правильно (то есть более декларативно).

  • @delir0
    @delir0 หลายเดือนก่อน

    Спасибо за запись!
    P.S. с "каталоха" орнул

  • @ТаймасханХасовский
    @ТаймасханХасовский หลายเดือนก่อน

    Ууу, супер, спасибо за ролик!

  • @problitzru
    @problitzru หลายเดือนก่อน

    Полезно! Спасибо за доклад!

  • @revoluxe
    @revoluxe หลายเดือนก่อน +2

    !0 из 10 по всем пунктам: актуальность, стройность и понятность изложения, качественная запись!

  • @ВладимирКоваленко-ъ6о
    @ВладимирКоваленко-ъ6о หลายเดือนก่อน

    Вот это полезный контент подъехал

  • @pyramidhead9692
    @pyramidhead9692 23 วันที่ผ่านมา +1

    Здравствуйте, спасибо за видео. Очень жаль, что тема vacuum, dead_tuples совершенно не была раскрыта, хотя это тоже может просаживать производительность и отжирать серверные ресурсы.

    • @t0digital
      @t0digital  23 วันที่ผ่านมา +1

      автовакуум по умолчанию включен и главное его не отключать, видя какой-то «левый процесс, поджирающий ресурсы» :) вакуум нужен, статистику собирать нужно и тд

    • @pyramidhead9692
      @pyramidhead9692 23 วันที่ผ่านมา +1

      @@t0digital по умолчанию он тоже настроен так себе :) autovacuum_vacuum_scale_factor установлен в 0.2, это получается должно изменится 10% записей в таблице, чтобы autovacuum туда пришел вновь, отработал и удалил dead_tuples. Но если таблица достаточно большая, 10% это будет уже довольно большое число сток, и в следующий заход отработать ему будет сложнее. К тому что надо стараться настраивать его более агрессивнее, чем с настройками по умолчанию :) И даже в этом случае, может не успевать. На курсах pgpro учат так, пусть чаще работает - но выполняет меньше работы.

    • @t0digital
      @t0digital  23 วันที่ผ่านมา +1

      спасибо, полезный комментарий!

  • @vasya_pipkin
    @vasya_pipkin 17 วันที่ผ่านมา

    Задавали вопрос про random page cost, его уменьшение с увеличением одновременно seq_page_cost позволяет управлять приоритом в выборе идти по индексу или последовательно. Из доки Reducing this value relative to seq_page_cost will cause the system to prefer index scans. То есть если задавать random_page_cost 1 а seq_page_cost 4 оптимизатор будет стараться использовать index scan. Но тут вопрос к дискам, надо понимать что это разговор не о HDD

  • @macoshev9774
    @macoshev9774 29 วันที่ผ่านมา

    The best!

  • @TheDobermanTV
    @TheDobermanTV 12 วันที่ผ่านมา

    если бы у меня в универе были такие преподаватели, я бы был суперменом

  • @bordovichek
    @bordovichek หลายเดือนก่อน +2

    О, мой вуз в видос попал!

  • @bogochort8844
    @bogochort8844 หลายเดือนก่อน +1

    А есть возможность взять только часть курса, именно по постгре?)

    • @t0digital
      @t0digital  หลายเดือนก่อน

      @@bogochort8844 пока что нет, возможно в будущем сделаю

  • @MainTeacher
    @MainTeacher 4 วันที่ผ่านมา

    Классный и очень полезный доклад!
    На работе столкнулся с задачей по кэшированию запросов в постгрес с помощью редиски. На вскидку не подскажете инструменты для этой задачи? Или ручками нужно также прописывать обновление редиски при изменении данных в бд?

    • @t0digital
      @t0digital  4 วันที่ผ่านมา

      Привет! Ручками. Но не при изменении данных в БД, а чаще всего просто по TTL для кэша (time to live) в редисе или просто раз в N минут

  • @hurricane-rus
    @hurricane-rus หลายเดือนก่อน +1

    Алексей, на ютубе где-то есть твое выступление в МИРЭА про чистую архитектуру, которое ты упоминаешь в начале ролика?

    • @t0digital
      @t0digital  หลายเดือนก่อน

      нет

  • @uicodeuz
    @uicodeuz หลายเดือนก่อน +6

    Ждем обзорчик нового ноута)

    • @t0digital
      @t0digital  หลายเดือนก่อน +4

      будет:)

    • @temcodes
      @temcodes หลายเดือนก่อน

      ​@@t0digital точно? 👀

    • @t0digital
      @t0digital  หลายเดือนก่อน

      @@temcodes скорее всего!

  • @vikvik7117
    @vikvik7117 หลายเดือนก่อน +3

    Что Ян Цапник будет про постгресс рассказывать, к такому меня жизнь не готовила )))

  • @nikolajsmiscenko9036
    @nikolajsmiscenko9036 หลายเดือนก่อน +1

    Есть ли в видео информация по индексам в jsonb колонках?

    • @t0digital
      @t0digital  หลายเดือนก่อน +1

      нет

  • @ЕвгенийПерминов-п7к
    @ЕвгенийПерминов-п7к หลายเดือนก่อน

    это очень годно

  • @spacexnix
    @spacexnix หลายเดือนก่อน

    супер!! спасибо!!!!

  • @iiavuk631
    @iiavuk631 หลายเดือนก่อน

    Очень. Годно.

  • @mndtr0
    @mndtr0 หลายเดือนก่อน

    Что думаете про NL2SQL (natural language to SQL)?

  • @Chel1k7
    @Chel1k7 หลายเดือนก่อน +3

    А где прошлые доклады посмотреть?

    • @t0digital
      @t0digital  หลายเดือนก่อน

      @@Chel1k7 я тогда не делал записей

  • @DomainDrivenDesign
    @DomainDrivenDesign หลายเดือนก่อน +2

    Секционирование правильно называется - партицирирование. От слова партиция.
    Еще про шардинг можно бы было рассказать, это тоже неплохой способ оптимизации.
    А так все круто по делу! Спасибо за доклад!

    • @t0digital
      @t0digital  หลายเดือนก่อน +3

      Официальная переведённая документация на сайте Postgres Pro: postgrespro.ru/docs/enterprise/16/ddl-partitioning «5.11. Секционирование таблиц». Склоняюсь к использование этого термина как более правильного на русском языке.

  • @alexfilus
    @alexfilus หลายเดือนก่อน

    Большой IN можно переписать на = any($1)

  • @roman1961
    @roman1961 หลายเดือนก่อน

    🔥

  • @aleksandrkrasavin3094
    @aleksandrkrasavin3094 หลายเดือนก่อน +4

    Хорошее начало, sql кто-то знает?))

    • @t0digital
      @t0digital  หลายเดือนก่อน +2

      В ответ кивали! Но не все уверенно:)

  • @AHaHAahaAHHAhHAHahHahha
    @AHaHAahaAHHAhHAHahHahha หลายเดือนก่อน

    топ контент

  • @konov_ivan
    @konov_ivan หลายเดือนก่อน

    спасибо большое, очень информативно, где можно посмотреть 2 предыдущих выступления?

    • @t0digital
      @t0digital  หลายเดือนก่อน

      Спасибо! Их записей у меня нет, не записывал:)

  • @segreyfurt
    @segreyfurt หลายเดือนก่อน

    а где презу скачать? хочу в заметки положить

    • @t0digital
      @t0digital  หลายเดือนก่อน

      исходники в Markdown, собирал PDF-версию в Marp github.com/alexey-goloburdin/knowledge-base/blob/main/%D0%94%D0%BE%D0%BA%D0%BB%D0%B0%D0%B4%20%C2%AB%D0%9E%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F%20%D0%B1%D0%BE%D0%BB%D1%8C%D1%88%D0%BE%D0%B3%D0%BE%20%D1%81%D0%BB%D0%BE%D0%BD%D0%B0%20%E2%80%94%20PostgreSQL%C2%BB.md

  • @rushanusmanov4850
    @rushanusmanov4850 20 วันที่ผ่านมา

    партиционирование и секционирование это одно и тоже?

    • @t0digital
      @t0digital  20 วันที่ผ่านมา

      да

  • @ИванПоляков-ъ7ц
    @ИванПоляков-ъ7ц หลายเดือนก่อน

    А для какого курса это рассказывается?

    • @t0digital
      @t0digital  หลายเดือนก่อน +1

      просто отдельный доклад

  • @aleksandrkrasavin3094
    @aleksandrkrasavin3094 หลายเดือนก่อน

    МИРЭА закончил в 2006))

  • @zloizebroooo
    @zloizebroooo หลายเดือนก่อน

    в постгресе есть хинты вообще-то

    • @t0digital
      @t0digital  หลายเดือนก่อน +1

      через костыль (pg_hint_plan) можно, но это совсем не то же самое, что оракловые хинты

  • @kirakorunov5407
    @kirakorunov5407 หลายเดือนก่อน +1

    Первым затупит разработчик ;)

    • @t0digital
      @t0digital  หลายเดือนก่อน

      возможно даже до того, как затупит сам сервис:)

  • @hch-t6j
    @hch-t6j หลายเดือนก่อน

    поседел это все пухтон довел

    • @_balancy_
      @_balancy_ หลายเดือนก่อน

      посидел, полежал. Такой день

    • @EverydayAnykey
      @EverydayAnykey หลายเดือนก่อน

      @@_balancy_ типичный день на удалёнке, ХА

    • @hch-t6j
      @hch-t6j หลายเดือนก่อน

      T9

  • @hdhhehehjdjdjjd3982
    @hdhhehehjdjdjjd3982 หลายเดือนก่อน

    ПОСТГРЭСКЛ))))

  • @АлексейИванов-ч3ю8р
    @АлексейИванов-ч3ю8р หลายเดือนก่อน

    Первый!