Андрей Сальников — Индексы в PostgreSQL. Как понять, что создавать

preview_player
Показать описание
Ближайшая конференция — Joker 2024, 9 октября (Online), 15–16 октября (Санкт-Петербург + трансляция).
— —
Любой разработчик знает, что индексы — это мощный инструмент, который может улучшить работу запросов в базе данных и, как следствие, сократить отклик приложения или сервиса на внешние запросы.

Но опыт Андрея, как ДБА, показывает, что у разработчиков нет понимания, какой, когда и из каких соображений можно создавать индекс. Спикер приведет простые и понятные примеры, которые вы сможете легко повторить на своих реальных базах данных.

Рекомендации по теме
Комментарии
Автор

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

esabkosabko
Автор

сколько ж надо всякой хероты просмотреть, чтобы найти это гениальное видео

jellyfish
Автор

Отличный доклад, информативный, без воды. На 1.75 хорошо слушается.

mgsfdgsfdgsgssdgrsdgdrgsr
Автор

Докладчик не очень быстрый, тк не хватает индекса

pick-pock
Автор

Очень классный доклад, спасибо Андрею Сальникову за доклад!

mcewdbp
Автор

"Ты считаешь себя умнее базы данных?" - лучший ответ, по моему )

gregoryrubies
Автор

Доклад, конечно, достойный. Но явно вводит в заблуждение пример с idx(created, state) — это эффективно будет работать только в частном случае распределения данных. В общем случае (и для разных СУБД), для реализации очереди или Top-N вариант с idx(state, created) будет гораздо более предсказуемым. Здесь явно не хватило подробных планов и сравнений.
Кроме того, если таблица очень волотильная, то статистика может показывать «мультики», иногда ее следует отключить или «заморозить», чтобы оптимизатор не оптимизировал под «вчерашний день».

eugenevodyanko
Автор

Андрей, Вас очень приятно слушать, Вы объясняете очень доходчиво, большое спасибо! 🤝

dvfx
Автор

Супер-доклад, раскрываются неочевидные моменты.

jgbmftq
Автор

Блин! Век живи, век учись!
Буквально недавно прошёл курс от Postgres Pro по оптимизации запросов и смотря этот доклад, про себя думаю "Наверно мало чего нового узнаю"... А НЕТ!
Очень крутой момент по индекс на ForeignKey. Я знал, что его нужно создавать, если планируется делать JOIN, но про кейс с удалением каскадом вообще не думал. За это огромное спасибо!

antonmuzeev
Автор

Очень добротный доклад, все по существу

Alex-qymh
Автор

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

maxxi
Автор

Очень содержательно! Жаль, что Андрею не предоставили больше времени

andreymironov
Автор

Спасибо за видео. Очень хороший доклад.

oleg_shulga
Автор

Не понял немного пример по индексу, где мы создали по (дата, state). Если я захочу выбрать не обработанные транзакции по state, то индекс не будет работать. Чтобы работал мне надо в запросе использовать дату. А как я узнаю с какой даты у меня начинаются необработанные транзакции не используя для этого дополнительный запрос?

hqnmtfj
Автор

музыкальный инструмент на фоне - весьма нетонкий троллинг)))

tebbrse
Автор

Почему сказано что VACUUM не чистит индексы? Это конечно можно отключить и он их реже чистит чем таблицу, но чистит и можно явно указать чтобы чистил всегда.

lvhnuze
Автор

Интересный разбор, только надо было всетаки по просьбе Владимира включить buffers в analyze. Тогда стало бы видно, что если первым полем в составном индексе сделать поле которое с критерием на равенство (статус), а вторым интервальный критерий (дату), то было бы меньше чтений блоков индекса, т к плотность нужных данных в листьях индекса была бы выше и соотв такой вариант эффективнее... и что ценно для ДБА - меньший IO

Romerosmr
Автор

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

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

danku
Автор

на 49:00 разве нахождение дубликатов в btree, которое внесли в 13 версию не сделает эту работу за нас?