Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СУБД Oracle / Лекции / Лек_ORAC / LCD / Хранение БД.doc
Скачиваний:
50
Добавлен:
16.04.2013
Размер:
173.06 Кб
Скачать

Глобальные разделенные индексы

В некоторых ситуациях полезно создавать глобальные разделенные индексы, которые не являются равноразделенными со своими таблицами. Глобальный разделенный индекс (global partitioned index) может содер­жать ключи из всех разделов соответствующей таблицы. В приложенияхOLTPглобальные индексы могут обеспечивать лучшую производитель­ность, чем локальные, так как они сводят к минимуму число обращений к индексам. Однако при модификации раздела базовой таблицы может быть задействовано большинство или даже все разделы соответствующего глобального индекса. При принятии решения о создании такого разделенного индекса в качестве основного критерия используйте характеристики своего приложения.

Имена таблиц с учетом разделов

В Oracle8 предлагается уникальная синтаксическая конструкция для команд, называемая именами таблиц с учетом разделов, которая может использоваться разработчиками приложений при создании SQL-операторов, работающих с разделенными таблицами. Имя таблицы с учетом разделов (partition-extended table name) - это простой, но эффективный синтаксис, позволяющий приложениям просматривать как таблицы, так и их разделы. Например, с помощью следующего запроса из нужного раздела таблицы выбираютсявсе клиенты, проживающие в Калифорнии (СА -California):

SELECT * FROM usa_customers PARTITION (p1);

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

Если имена таблиц с учетом разделов при разработке приложения все же применяются, не забывайте, что такие имена являются расширением ANSI/ISO(языкаSQL), вводимым вOracle. Когда нужно использовать имена таблиц с учетом разделов и при этом сохранить переносимость приложения, создавайте представления с указанием таких имен и приме­няйте для этих представлений стандартные SQL-операторы. Например:

CREATE VIEW v1 AS SELECT * FROM t1 PARTITION(p1)

SELECT* FROM v1;

Управление разделением

Oracle8 полностью поддерживает работу с разделенными таблицами и индексами. Например:

  • Можно преобразовать неразделенную таблицу в разделенную, и наоборот.

  • Можно добавить новые разделы таблицы к уже о существующим.

  • Можно разбивать и объединять разделы, расположенные в середине таблицы.

  • Можно удалять разделы таблицы, не содержащие строк.

  • Можно укорачивать отдельные разделы таблицы, а не всю таблицу в целом.

Соответствие индексов и таблиц

При модификации разделов таблицы Oracleавтоматически выполняет эквивалентную операцию, чтобы синхронизировать с таблицей все её равноразделенные индексы. При модификации же разделов таблицы, имеющей глобальный разделенный индекс, можно перестроить этот индекс так, чтобы синхронизировать его с измененной таблицей.

Итоги

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

  • В управляющем файле хранится внутрисистемная информация о физической структуре базы данных.

  • Табличные области являются логическими единицами хранения информации базы данных Oracle.

  • Для физического хранения информации каждой табличной области имеется один или несколько файлов данных.

  • Сегмент - это совокупность блоков данных, отводимых для объекта хранения данных: таблицы, кластера данных, индекса или моментального снимка.

  • Экстент - это группа непрерывных блоков данных, выделяемых сегменту объекта.

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

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