Как стать автором
Обновить

Комментарии 14

Хеш-индексы мало кто пробовал, из-за того, что они работают без WAL. С 10-ки, в которой оно наконец появятся, ситуация, возможно, изменится. Кто-нибудь из читателей использует Hash-индексы, и зачем?
Amit Kapila не так давно показал, что хэш-индексы иногда могут быть быстрее B-деревьев. Следовательно, если вы ищите только по равенству, имеет смысл сравнить оба варианта и выбрать тот, который на ваших данных и объемах будет быстрее.
Я пытался, раз в 10 медленнее обычных.

Кто то тут на habre пытался (я предложил попробовать) с аналогичным результатом, там задача была — связка двух таблиц по ключевому полю.

насколько я вижу по описанию и отсутствия тестов производительности совсем все плохо…
тем не менее при джоина почему-то только хэш-таблицы строяться.
тут небольшая разница, я говорю о хешиндексах(постоянно хранимых), а вы о хештаблицах.(динамически создаваемых)
https://habrahabr.ru/post/317980
а суть таже. Построить хешиндекс в памяти и потом по нему быстро искать.

Они, конечно, похожи на уровне общей идеи, но на этом сходство и заканчивается.

Пробовал с полгода назад. На таблице 250М записей для запросов «IN (1000 значений)» при поиске по 64-символьному текстовому ключу (sha1-хэш) скорость чтения по hash-индексу была в три раза лучше чем по btree.
Плюс хорошее влияние на скорость записи (обновление hash-индекса очень быстрое в сравнении с btree). Ну и размер индекса тоже сильно меньше.
В общем, я бы их с удовольствием использовал в проекте, если бы не отсутствие репликации.
Честно говоря, так и не понял из объяснения, почему их так долго держали в недоделанном состоянии.

Спасибо большое за ваши статьи, очень помогают в понимании работы Постгреса. А можно обновить статьи в соответствии с новой версией Постгреса 15? Привет из 2023 года)

Рад, что статьи помогают!

Сейчас наиболее актуальный источник — это книга «PostgreSQL изнутри». А обновлять и книгу, и статьи, увы, никаких сил не хватит.

Честно говоря не совсем понимаю для чего они вообще нужны )) Мне кажется очень тяжело придумать задачу где hash индекс был бы лучше b-tree особенно если учитывать тот факт что после удаления записей кол-во корзин не уменьшается...

Так и страницы B-дерева не объединяются при удалении данных.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий