Владимир Ситников - B-tree индексы в базах данных на примере PostgreSQL

  Рет қаралды 17,461

Heisenbug

Heisenbug

11 ай бұрын

Ближайшая конференция - Heisenbug 2024 Autumn, 10 октября (Online), 17-18 октября, Санкт-Петербург
- Ближайшая конференция: Heisenbug 2023 Autumn - 10-11 октября (online), 15-16 октября (offline)
Подробности и билеты: bit.ly/3qd3swV
- -
Доклад о том, как работают обычные™ индексы в базах данных. Будет крайне полезно как тем, кто начинает работать с базами данных, так и тем, кто работал, но подзабыл. У вас в проекте наверняка есть база данных. Наверняка изредка запросы тормозят, и довольно часто это случается либо из-за нехватки, либо из-за переизбытка индексов. На докладе мы научимся измерять производительность запросов, узнаем про то, как работают индексы, и научимся правильно их применять. Примеры будут на PostgreSQL, но знания подойдут и ко многим другим базам, ведь алгоритм b-tree изобрели в 1970 году, и его вариации используются сейчас очень часто.
Рассмотрим:
- Как индекс ускоряет поиск;
- Нужно ли индексировать условия where;
- Нужно ли индексировать условия в order by;
- Нужно ли индексировать foreign keys;
- Что делать, если критериев поиска несколько;
- В каком порядке указывать колонки в индексе;
- Случаи, когда индекс замедляет работу, и как снизить влияние индекса на приложение.
#database #postgresql

Пікірлер: 36
@adilkhanzaidulla8244
@adilkhanzaidulla8244 15 күн бұрын
Материал, презентация, доклад, все на высшем уровне, спасибо Владимиру за работу
@user-uf8tc4vg5r
@user-uf8tc4vg5r 9 ай бұрын
Вот это да. 10 лет программирую, столько текстов прочитал о всякой-всячине, но конкретику нашел именно тут. Спасибо за видео
@igorseledtsov7345
@igorseledtsov7345 2 ай бұрын
Что ж вы читали то? тутто как раз вода водой без конкретики
@pyramidhead9692
@pyramidhead9692 2 ай бұрын
​@@igorseledtsov7345а можете подсказать где подробнее всего описана работа индексов без воды? Хочу подробнее разобраться, непонятны некоторые моменты
@gregoryrubies6045
@gregoryrubies6045 6 ай бұрын
Очень полезный доклад. Побольше бы такого. Достаточно прикладные вещи, но мало где это подробно описано
@user-hh1hf9cw8m
@user-hh1hf9cw8m 14 күн бұрын
Спасибо, отличный материал)
@levorlov8788
@levorlov8788 6 ай бұрын
Познавательно. Спасибо :)
@user-cn6wu1db7w
@user-cn6wu1db7w 3 ай бұрын
Владимир, спасибо огромное за доклад!
@Serj1c
@Serj1c 2 ай бұрын
отличный доклад, спасибо
@user-mu8wd3vn8s
@user-mu8wd3vn8s 2 ай бұрын
Прекрасный доклад Спасибо!
@vladglushak4306
@vladglushak4306 5 ай бұрын
Отличный доклад, спасибо !
@user-bz9tz1mf3r
@user-bz9tz1mf3r 11 ай бұрын
Отличный доклад, большое спасибо автору 🙂
@Aleksey_P
@Aleksey_P 27 күн бұрын
Очень доступно для новичков
@sergeng-gd5ev
@sergeng-gd5ev 2 ай бұрын
Владимир, отличный доклад, спасибо!
@romanlunin386
@romanlunin386 4 ай бұрын
Шикарный доклад, посмотрел с удовольствием, хотя знал это всё)
@TheNo0ker
@TheNo0ker 7 ай бұрын
Ситников - топ
@RaptorT1V
@RaptorT1V 7 ай бұрын
Я только начинаю в PostgreSQL, мало что понял, но было интересно
@MrVitalirapalis
@MrVitalirapalis 2 ай бұрын
Очень интересный доклад, больше года к сожалению приходится работать только с nosql elasticsearch и там структура данных при индексирование не b-tree а inverted index (array) что оптимизировано для поиска по тексту, кайфанул от просмотра, очень детально.
@coox4546
@coox4546 10 ай бұрын
Хорошее объяснение. Буду шарить всем неверующим, что юид не самый лучший вариант для айдишки )))
@nikitabukov1292
@nikitabukov1292 5 ай бұрын
Это не так. Есть такая штука как "последовательный uuid" и проблема со вставкой уходит.
@TheMrMagyar
@TheMrMagyar 2 ай бұрын
@@nikitabukov1292 дополню, сортировку поддерживают uuid v6 и v7
@vasyavasin7364
@vasyavasin7364 2 ай бұрын
​@@nikitabukov1292 uuid v6
@aleona136
@aleona136 Ай бұрын
В последнем примере про поиск по статусу и имени почему просто не создать частичный индекс куда войдут только строчки с PENDING если мы ищем только по таким строчкам?
@sergeypoprygin2670
@sergeypoprygin2670 3 ай бұрын
не понял про индекс по статусу и имени, не понял почему выгодно делать индекс статус-имя, ведь у статуса всего три значения и селективность у него будет явно хреновая, а вот у имени, особенно если именем будет какой-то никнейм, ну или даже имя человека, то там будет огромное количество разных значений у колонки и селективность будет явно больше, чем у статуса
@user-fc7ch3yx4c
@user-fc7ch3yx4c Ай бұрын
это только для запросов, где мы ищем сразу по обоим полям всегда. С таким индексом, будет меньше случайных обращений, потому что мы загрузим один блок, где все state будут почти всегда одинаковые и мы разом прочитаем много нужных записей. Если искать только по полю name, то такой индекс считай бесполезен. Тогда действительно стоит создавать (name, state) индекс. Ну или создать рядом ещё один индекс только по полю name
@mcolegon
@mcolegon 6 ай бұрын
Насколько мне известно, при покрытии индекса (когда данные в таблице отсортированы) механизм индексирования не в таблицу заглядывает для определения видимости строк, а в так называемую карту видимости, в которой vacuum отмечает строки которые не менялись очень долгое время, и доступны всем транзакциям. И если идентификатор строки попадает в эту карту то видимость можно не проверять. Поправьте если не прав.
@amarazmable
@amarazmable 5 ай бұрын
Эта штука называется Visibility Map и да она для ускорения и там целый блок помечается битом содержит он данные старые или нет.
@kvintnorris9828
@kvintnorris9828 10 ай бұрын
правильно ли я понял, что случайные uuid как индекс бесполезны и поск все равно будет перебором?
@KikkerRus
@KikkerRus 10 ай бұрын
Нет. Речь была о скорости обновления индекса.
@ivanmatew568
@ivanmatew568 11 ай бұрын
Отсортированный по времени UUID еще называют Ulid.
@PVBovercomes
@PVBovercomes 8 ай бұрын
Это схожие, но разные виды id
@Ieatsomebrains
@Ieatsomebrains 10 ай бұрын
Упал на последней минуте от вопроса "например вот как-бы вот это самое".
@RaptorT1V
@RaptorT1V 7 ай бұрын
Девочка просто хотела понравиться докладчику, показав свою широту знаний) Но получилось наоборот😢
@mgsfdgsfdgsgssdgrsdgdrgsr16
@mgsfdgsfdgsgssdgrsdgdrgsr16 27 күн бұрын
Ни о чем, если честно.
@user-fi9rw4vx2b
@user-fi9rw4vx2b 5 ай бұрын
Очень корявая речь, как-будто к выступлению докладчик не готовился совсем. Местами утверждения некорректные из-за этого
@user-fu6vj6vh5p
@user-fu6vj6vh5p 10 ай бұрын
Спасибо, отличный доклад. Штук 5 видео про индексы я посмотрела на ютубе, и только в этом услышала то, что помогло мне осознать суть происходящего.
小路飞姐姐居然让路飞小路飞都消失了#海贼王  #路飞
00:47
路飞与唐舞桐
Рет қаралды 54 МЛН
Trágico final :(
01:00
Juan De Dios Pantoja
Рет қаралды 22 МЛН
格斗裁判暴力执法!#fighting #shorts
00:15
武林之巅
Рет қаралды 31 МЛН
ИНДЕКСЫ В БАЗАХ ДАННЫХ. СОБЕС В OZON.
33:59
Ваня Ио про разработку
Рет қаралды 36 М.
CSRF (доска)
9:52
Владимир Башун
Рет қаралды 8 М.
Индексы баз данных - Почему так быстро - проще некуда
44:54
Базы данных B-tree
19:28
Sergey Nemchinskiy
Рет қаралды 23 М.
Как устроен B-TREE индекс в базах данных
23:06
Ваня Ио про разработку
Рет қаралды 2,7 М.
Postgres vs Mongo / Олег Бартунов (Postgres Professional)
52:34
ACID на примере PostgreSQL
21:25
Ivan Matveev
Рет қаралды 7 М.
Вселенная и Специальная теория относительности.
3:51:36
ЗЛОЙ АНАЛИТИК ВСЕЛЕННОЙ.
Рет қаралды 6 МЛН
小路飞姐姐居然让路飞小路飞都消失了#海贼王  #路飞
00:47
路飞与唐舞桐
Рет қаралды 54 МЛН