Сравнение индекс-таблиц и обычных таблиц
Строка в обычной таблице имеет постоянный физический адрес. После того, как строка записана в какое-либо место на диске, она никогда полностью не меняет своего расположения. Даже если часть строки переносится (например, при добавлении новых данных), некоторая ее часть всегда остается в исходном месте (определяется физическим идентификатором ROWID). С этого места система начинает поиск других частей строки. Пока строка существует, ее физический ROWID не меняется. В индексе обычной таблицы хранятся и данные столбца, и идентификатор ROWID.
У строки в индекс-таблице нет постоянного физического расположения. Ее данные хранятся в упорядоченном виде в листьях индекса в виде В-дерева, построенного по первичному ключу таблицы. Физическое расположение строк индекс-таблиц может меняться для того, чтобы сохранить упорядоченность. Например, вставка данных может привести к перемещению существующей строки в другую область или даже в другой блок данных.
В листьях индекса в виде В-дерева хранятся значения первичного ключа и сами строки таблицы. Изменения данных таблицы (например, добавление новых строк, изменение или удаление существующих строк) приводят только к изменению индекса.
Приемущество индекс-таблиц
Так как строки в индекс-таблицах хранятся в формате, оптимизированном для доступа по первичному ключу, эти таблицы имеют следующие приемущества перед обычными таблицами.
Более быстрый доступ к данным таблицы при запросах, содержащих условия поиска по точному совпадению и/или по диапазону значений первичного ключа. Для получения результатов нужно лишь найти адрес искомых значений ключа - оставшиеся данные расположены в этом месте. Для их получения не нужно переходить в новую область памяти, указанную ROWID индекса. Это уменьшает количество операций ввода-вывода, необходимых для доступа к данным таблицы.
Наилучшая структура таблиц, для баз данных, находящихся в постоянном доступе. Индекс-таблицы оптимально подходят для баз данных, которые должны быть доступны постоянно, так как они предоставляются следущюие возможности:
- реорганизация индекс-таблиц или секций индекс-таблиц (для восстановления пространства или увеличения производительности) без перестройки их вторичных индексов. Для этого необходим только короткий перерыв для проведения реорганизации;
- реорганизация индекс-таблиц в оперативном режиме. Эта возможность (в сочетании с реорганизацией вторичных индексов в оперативном режиме) позволяет выполнять реорганизацию не прерывая работу базы данных.
Уменьшение пространства для хранения. В отличие от обычного способа хранения (где ключевые столбцы хранятся как в таблице, так и в индексе), в индекс-таблице такого дублирования не происходит. Кроме того, для индекс-таблиц не требуется дополнительное пространство для хранения идентификаторов ROWID. Если ключевые столбцы составляют существенную часть строки, экономия может достигать 50%.
Использование индекс-таблиц
Существует несколько ситуаций, когда предпочтительнее использовать индекс-таблицы, а не обычные таблицы.
Индекс-таблицы являются частью Oracle Advanced Queuing. В сервер базы данных индегрированы очереди сообщений, организацию которых осуществляет компонент Oracle Advanced Queuing. В Oracle Advanced Queuing метаданные о нескольких пользовательских очередях сообщений храняться в индекс таблицых.
Индекс-таблицы позволяют избежать хранения избыточных данных. В обычных таблицах, в которых большинство столбцов входят в первичный ключ, хранится значительный объем избыточных данных. Такой избыточности можно избежать при использовании индекс-таблиц. Кроме того, индекс-таблицы увеличивают эффективность доступа по первичному ключу к неключевым столбцам.
Индекс-таблицы подходят для приложений VLDB и OLTP. Благодаря тому, что индекс-таблицы можно секционировать по диапазону значений столбцов, эти таблицы подходят для приложений, работающих с очень большими базами данных (VLDB).
Индекс-таблицы эффективны для хранения вложенных таблиц. Для столбца типа "вложенная таблица" создается таблица хранения, в которую помещаются все строки вложенной таблицы.
В индекс-таблицах могут храниться данных расширяемых индексов. Среда Extensible Indexing Framework позволяет добавлять новый метод доступа к базе данных. Обычно для доменных схем индексирования необходим определенный механизм хранения индексных данных. Индекс-таблицы идеально подходят для хранения таких индексов доменов. Так, компоненты interMedia, Spatial и Text хранят свои индексные данные в индекс-таблицах.
Комментариев нет:
Отправить комментарий