В чём разница между индексами BRIN (Block Range Index) и B-Tree в PostgreSQL? Для каких типов таблиц, например логов и временных рядов, индекс BRIN даст значительную экономию дискового пространства и превзойдёт B-Tree по скорости создания?

B-tree хранит упорядоченные ключи, BRIN — сводки по диапазонам блоков. BRIN особенно компактен на больших таблицах, где значения коррелируют с физическим порядком строк.

Короткий ответ

Что ответить на собеседовании

B-tree хранит упорядоченные ключи, BRIN — сводки по диапазонам блоков. BRIN особенно компактен на больших таблицах, где значения коррелируют с физическим порядком строк.

Подробный разбор

Ответ с пояснениями

B-tree хранит упорядоченные ключи, BRIN — сводки по диапазонам блоков. BRIN особенно компактен на больших таблицах, где значения коррелируют с физическим порядком строк.

Типичный пример — преимущественно дописываемый журнал с возрастающим временем. По границам диапазонов BRIN отбрасывает ненужные блоки, а оставшиеся строки перепроверяются: индекс является lossy.

За счёт меньшего числа записей он часто занимает значительно меньше места и быстрее строится, чем B-tree. Но не гарантирует лучший поиск: случайно перемешанные значения ухудшают отсечение, а точечные запросы нередко выгоднее обслуживает B-tree. Настройка размера диапазона балансирует размер индекса и точность. Проверяйте фактическую корреляцию и планы запросов.

Источник: www.postgresql.org.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее