понедельник, 12 апреля 2010 г.

Индекс-таблицы

Индекс-таблицы отличаются от обычных таблиц способом структурирования, хранения и индексирования данных. Чтобы лучше объяснить эти отличии, сравним индекс-таблицы с обычными таблицами, а также перечислим ситуации когда индекс-таблицу использовать предпочтительнее чем обычную таблицу.

Сравнение индекс-таблиц и обычных таблиц

Строка в обычной таблице имеет постоянный физический адрес. После того, как строка записана в какое-либо место на диске, она никогда полностью не меняет своего расположения. Даже если часть строки переносится (например, при добавлении новых данных), некоторая ее часть всегда остается в исходном месте (определяется физическим идентификатором ROWID). С этого места система начинает поиск других частей строки. Пока строка существует, ее физический ROWID не меняется. В индексе обычной таблицы хранятся и данные столбца, и идентификатор ROWID.

У строки в индекс-таблице нет постоянного физического расположения. Ее данные хранятся в упорядоченном виде в листьях индекса в виде В-дерева, построенного по первичному ключу таблицы. Физическое расположение строк индекс-таблиц может меняться для того, чтобы сохранить упорядоченность. Например, вставка данных может привести к перемещению существующей строки в другую область или даже в другой блок данных.

В листьях индекса в виде В-дерева хранятся значения первичного ключа и сами строки таблицы. Изменения данных таблицы (например, добавление новых строк, изменение или удаление существующих строк) приводят только к изменению индекса.


Приемущество индекс-таблиц

Так как строки в индекс-таблицах хранятся в формате, оптимизированном для доступа по первичному ключу, эти таблицы имеют следующие приемущества перед обычными таблицами.

Более быстрый доступ к данным таблицы при запросах, содержащих условия поиска по точному совпадению и/или по диапазону значений первичного ключа. Для получения результатов нужно лишь найти адрес искомых значений ключа - оставшиеся данные расположены в этом месте. Для их получения не нужно переходить в новую область памяти, указанную ROWID индекса. Это уменьшает количество операций ввода-вывода, необходимых для доступа к данным таблицы.

Наилучшая структура таблиц, для баз данных, находящихся в постоянном доступе. Индекс-таблицы оптимально подходят для баз данных, которые должны быть доступны постоянно, так как они предоставляются следущюие возможности:
  • реорганизация индекс-таблиц или секций индекс-таблиц (для восстановления пространства или увеличения производительности) без перестройки их вторичных индексов. Для этого необходим только короткий перерыв для проведения реорганизации;
  • реорганизация индекс-таблиц в оперативном режиме. Эта возможность (в сочетании с реорганизацией вторичных индексов в оперативном режиме) позволяет выполнять реорганизацию не прерывая работу базы данных.

Уменьшение пространства для хранения. В отличие от обычного способа хранения (где ключевые столбцы хранятся как в таблице, так и в индексе), в индекс-таблице такого дублирования не происходит. Кроме того, для индекс-таблиц не требуется дополнительное пространство для хранения идентификаторов ROWID. Если ключевые столбцы составляют существенную часть строки, экономия может достигать 50%.


Использование индекс-таблиц

Существует несколько ситуаций, когда предпочтительнее использовать индекс-таблицы, а не обычные таблицы.

Индекс-таблицы являются частью Oracle Advanced Queuing. В сервер базы данных индегрированы очереди сообщений, организацию которых осуществляет компонент Oracle Advanced Queuing. В Oracle Advanced Queuing метаданные о нескольких пользовательских очередях сообщений храняться в индекс таблицых.

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

Индекс-таблицы подходят для приложений VLDB и OLTP. Благодаря тому, что индекс-таблицы можно секционировать по диапазону значений столбцов, эти таблицы подходят для приложений, работающих с очень большими базами данных (VLDB).

Индекс-таблицы эффективны для хранения вложенных таблиц. Для столбца типа "вложенная таблица" создается таблица хранения, в которую помещаются все строки вложенной таблицы.

В индекс-таблицах могут храниться данных расширяемых индексов. Среда Extensible Indexing Framework позволяет добавлять новый метод доступа к базе данных. Обычно для доменных схем индексирования необходим определенный механизм хранения индексных данных. Индекс-таблицы идеально подходят для хранения таких индексов доменов. Так, компоненты interMedia, Spatial и Text хранят свои индексные данные в индекс-таблицах.

Комментариев нет:

Отправить комментарий