
- •Хранение баз данных
- •Табличные области
- •Табличная область system
- •Другие табличные области
- •Оперативные и отключенные табличные области
- •Постоянные и временные табличные области
- •Табличные области только для чтения и чтения/записи
- •Дополнительные сведения о файлах данных
- •Число файлов данных для табличной области
- •Использование пространства файлов данных
- •Сращивание свободного пространства в файлах данных табличной области
- •Размеры файлов данных
- •Повреждение файлов данных
- •Оперативные и отключенные файлы данных
- •Управляющие файлы
- •Зеркально отображенные управляющие файлы
- •Сегменты, экстенты и блоки данных
- •Сегменты данных и индексные сегменты
- •Временные сегменты
- •Временные табличные области
- •Сегменты отката
- •Запись информации в сегменты отката
- •Сегмент отката system
- •Несколько сегментов отката
- •Назначение конкретных сегментов отката
- •Оперативные и отключенные сегменты отката
- •Общие и частные сегменты отката
- •Отложенные сегменты отката
- •Другие функции сегментов отката
- •Блоки данных
- •Выделение блоков данных
- •Доступность блоков данных и списки свободных блоков
- •Сцепление строк и размер блока данных
- •Параметры хранения объектов
- •Размещение табличных областей
- •Параметры для экстентов
- •Initial 500k
- •Специальные параметры хранения данных для сегментов отката
- •Initial 100k
- •Параметры для блоков данных
- •Параметры для списков свободных блоков
- •Пороги блоков
- •Элементы транзакций
- •Установки по умолчанию для хранения объектов
- •Установки по умолчанию для пользователей
- •Установки по умолчанию для табличных областей
- •Initial 100k
- •Уникальность хранения мультимедийных данных
- •Дополнительные сведения о локаторах lob
- •Разделение данных
- •Разделенные таблицы
- •Размещение строк в разделах данных
- •Использование maxvalue
- •Разделенные индексы
- •Варианты создания разделенных индексов
- •Равноразделенные объекты
- •Глобальные разделенные индексы
- •Имена таблиц с учетом разделов
- •Управление разделением
- •Соответствие индексов и таблиц
- •Контрольные вопросы.
Блоки данных
Блок данных (data block) - это единица доступа к дисковой памяти для базы данныхOracle. Посредством блоков данных осуществляется сохранение и считывание информации. Например, когда для некоторой таблицы формируется запрос,Oracleсчитывает в память сервера все блоки данных, которые содержат строки результирующего множества этого запроса.
При создании базы данных следует указать для неё размер блока, который должен быть равен или кратен размеру блока, используемому операционной системой сервера. Например, если размер блока операционной системы сервера ранен 512К, то размер блока базы данных, установленной на этом сервере, может быть равен 512К, 1024К, 2048Kи т.д.
Выделение блоков данных
При создании нового объекта хранения данных, например таблицы, индекса или сегмента отката. Oracleвыделяет для сегмента этого объекта один или несколько экстентов. Экстент - это группа последовательных блоков данных, в файле данных табличной области, в котором хранится сегмент объекта. Если все блоки данных в существующих экстентах сегмента заполняются и одна из транзакций запрашивает пространство для хранения новых данных.Oracleвыделяет сегменту новый экстент.
Доступность блоков данных и списки свободных блоков
Для каждого сегмента данных и индексного сегмента базы данных Oracleсуществует один или несколько списков свободных блоков данных. Список свободных блоков (free list) - это каталог блоков данных, которые доступны для хранения новой информации соответствующего объекта: таблицы, кластера или индекса. На рис. $.8 показано, как блоки данных включаются в список свободных блоков и исключаются из него, по мере того как транзакции вводят, удаляют или обновляют информацию таблицы.
На рис. $.8 видно, каким образом блок данных может включаться в список свободных блоков таблицы и исключаться из него. Когда транзакция намеревается ввести новую строку в таблицу, все блоки данных из списка свободных блоков являются кандидатами на хранение данных новой строки. По мере того как транзакции вводят в таблицу все больше и больше строк, блоки данных заполняются и могут заполниться до конца, что приведет к их удалению из списка свободных блоков таблицы. После того как транзакция удаляет строки таблицы, блоки могут возвращаться в этот список.
В разделе “Пороги блоков” показано, как управлять процессом включения блоков данных в списки свободных блоков сегментов.
Сцепление строк и размер блока данных
Когда в таблицу вводится новая строка, Oracleпомещает эту строку в блок данных из списка свободных блоков таблицы. В оптимальном вариантеOracleразмещает всю информацию новой строки в одном блоке данных. Таким образом, при запросе какой-либо строки таблицыOracleвыбирает необходимую информацию, считывая только один блок данных с диска в оперативную память.
Если строка больше, чем блок данных, то Oracleформирует сцепленную (chained) строку, связывая её с двумя или более блоками данных. Сцепление строк проиллюстрировано на рис. $.9.
Сцепление строк нежелательно, хотя в этой ситуации оно неизбежно. Дело в том, что для обращения к данным таких строк Oracleприходится считывать с диска в память множество блоков данных. Чем больше число операций дискового ввода/вывода, тем медленнее функционирует система. Поэтому сцепления строк следует избегать.
Как правило, задаваемый во время инсталляции OracleServerразмер блока по умолчанию, является оптимальным для большинства баз данных. Однако для некоторых баз данных иногда полезно установить размер блока большим, чем предлагается по умолчанию. Например, когда известно, что многие таблицы базы данных будут содержать строки, превышающие по размеру размер блока по умолчанию, можно уменьшить число сцепленных строк, создав базу данных с большим размером блока.
Кроме того, Oracleможет создать сцепленную строку, когда пользователь обновляет строку таблицы или индекса. Это происходит, когда:
Пользователь обновляет строку таким образом, что она становится больше исходной.
В блоке данных, хранящем строку, нет свободного пространства, достаточного для выполнения обновления.
Когда ожидается, что при обновлении строк их размер будет увеличиваться, зарезервируйте для операций обновления дополнительное пространство блоков данных, это поможет предотвратить сцепление строк. В разделе “Пороги блоков” показано, как управлять пространством блоков данных.