Найти в Дзене
ГАУС IT

Кратко о bitmap индекс

Bitmap index Bitmap index – метод битовых индексов заключается в создании отдельных битовых карт (последовательность 0 и 1) для каждого возможного значения столбца, где каждому биту соответствует строка с индексируемым значением, а его значение равное 1 означает, что запись, соответствующая позиции бита содержит индексируемое значение для данного столбца или свойства. Давайте разберем маленький пример. В таблице 1 у нас находятся пол и ID. Во второй таблице у нас лежит битовая маска. Давайте разберем как построена битовая маска для значений пола, т.к. всего значений 5, то битовая маска у нас длинной 5. На месте, где находится значение ставим единицу, таким образом если у нас в первой строке пол мужской, то в битовой маске на первом месте будет 1. Далее идут нули и на 4-ом месте опять находится мужской пол, и значит в 4-й позиции мы ставим 1. - Ключ (собственно значение) - Адреса первой и последней строки диапазона (адрес блока + номер строки округленный побайтово) - Битовая маска вн
Оглавление

Bitmap index

Bitmap index – метод битовых индексов заключается в создании отдельных битовых карт (последовательность 0 и 1) для каждого возможного значения столбца, где каждому биту соответствует строка с индексируемым значением, а его значение равное 1 означает, что запись, соответствующая позиции бита содержит индексируемое значение для данного столбца или свойства.

Давайте разберем маленький пример.

В таблице 1 у нас находятся пол и ID.

Таблица 1
Таблица 1

Во второй таблице у нас лежит битовая маска.

Таблица 2
Таблица 2

Давайте разберем как построена битовая маска для значений пола, т.к. всего значений 5, то битовая маска у нас длинной 5. На месте, где находится значение ставим единицу, таким образом если у нас в первой строке пол мужской, то в битовой маске на первом месте будет 1. Далее идут нули и на 4-ом месте опять находится мужской пол, и значит в 4-й позиции мы ставим 1.

  • Каждая запись в Bitmap-индексе состоит из:

- Ключ (собственно значение)

- Адреса первой и последней строки диапазона (адрес блока + номер строки округленный побайтово)

- Битовая маска внутри этого диапазона, где 1 – значит что эта строка содержит данный Ключ.

  • Каждая запись может охватывать несколько блоков или быть внутри одного

Опять давайте взглянем на картинку и быстро разберем принцип построение.

-4

Первый блок 211 - это название блока далее слеш (/) и с какого байта начинается индекс в данном случае 0, конец 533 блок и 15й байт.

Данная картинка демонстрирует как строятся индексы по значениям.

-5

У нас 2 блока по 4 байта каждый. Построение индексов показаны на значениях 2, 3 и 4. Как идет построение советую посмотреть самостоятельно и закрепить рассказанный ранее материал

Ключевые особенности

Если индекс на основе B*-дерева не является эффективным механизмом доступа к данным, маловероятно, что он станет намного эффективнее, если создавать индекс на основе битовых карт.

Несколько bitmap-индексов могут использоваться совместно в одном запросе.

Индексы на основе битовых карт обычно создаются быстрее и могут занимать удивительно мало места.

Размер индекса на основе битовых карт существенно зависит от распределения данных.

Особенно эффективны bitmap-индексы в больших таблицах с небольшим количеством уникальных значений индексируемого поля.

Изменения столбцов, входящих в индексы на основе битовых карт, а также вставки и удаления данных могут вызывать существенные конфликты блокировок.

Изменения столбцов, входящих в индексы на основе битовых карт, а также вставки и удаления данных могут весьма существенно "ухудшать" индексы.

Для значительного обновления таблиц, содержащих bitmap-индексы, эффективнее удалить такие индексы и, после обновления, построить заново.

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

#it #sql #bitmap #index