3) сегменты отката (rollback segments);
4) временные сегменты (temporary segments).
Сегменты отката и временные сегменты создаются, как правило, сис-
темой. Сегменты данных и сегменты индексов – это объекты пользовате-
ля. Следует отметить, что многие объекты схемы имеют сегменты, рас-
полагаемые в табличных пространствах. Однако в БД есть ряд объектов
пользователя, которые нельзя квалифицировать как сегменты. Это пред-
ставления, последовательности, синонимы, связи, триггеры, хранимые
функции и процедуры и пакеты. Информация о них хранится в словаре
данных, но в БД они места не занимают.
При создании объекта ему выделяется некоторое пространство в ука-
занном табличном пространстве – сегмент. Задавая имя табличного про-
странства, следует учесть объем имеющегося свободного места в таб-
личном пространстве и возможность автоматического расширения фай-
лов данных, составляющих табличное пространство. При увеличении
объекта размер сегмента может увеличиться на заданный размер расши-
рения сегмента, называемый экстентом.
Экстенты – это объекты информационной структуры хранения дан-
ных. Каждый сегмент БД состоит из одного или нескольких экстентов.
Внешняя память для объекта БД выделяется порциями из определенного
числа блоков. В файлах БД эти блоки должны быть смежными. Группа
смежных блоков называется экстентом. Следует отметить, что память
для объектов выделяется экстентами, которые могут находиться на раз-
ных дисках. После выделения экстента объекту эти блоки не могут быть
использованы другими объектами БД. При создании объекта система
Oracle автоматически распределяет в соответствующий сегмент началь-
ный экстент для данного объекта. Если начальный сегмент полностью
заполняется данными во время работы с объектом, то Oracle автоматиче-
ски выделяет дополнительные экстенты для этого объекта. При удалении
информации экстенты освобождаются, но остаются связанными с объек-
том (за исключением экстентов сегмента отката и временного сегмента)
до тех пор, пока не будет выполнена операция удаления объекта. Напри-
мер, если удалить все строки таблицы, то распределенные ей блоки все
равно остаются закрепленными за этой таблицей. Таблицу нужно уда-
лить (оператор DROP) или усечь (оператор TRUNCATE), чтобы освобо-
дить внешнюю память, выделенную таблице. Удаление объектов может
привести к фрагментации. В системе Oracle устранением фрагментации
занимается системный монитор SMON.
Кратко опишем назначение перечисленных типов сегментов
.
110
Сегменты данных предназначены для хранения обычных таблиц и
кластеризованных таблиц, следовательно, содержат строки таблиц дан-
ных. Экстенты для таблицы могут быть выделены из различных файлов,
но эти файлы должны обязательно принадлежать одному табличному
пространству. Одной таблице соответствует один сегмент.
Сегменты индексов служат для хранения индексов – это специальные
таблицы, которые содержат информацию из ключевого столбца таблицы
и идентификатор номера строки – ROWID.
Сегменты отката – это объекты информационной структуры БД.
Они строятся системой и используются при выполнении транзакций.
При модификации данных транзакцией их предыдущее состояние копи-
руется в сегмент отката, а изменения выполняются в блоках, сохраняе-
мых в кэш-буфере данных. Если другой запрос пользователя затребует
эти данные, то они извлекаются из сегмента отката. Когда же результаты
модификации считаются окончательно принятыми, соответствующий
сегмент отката помечается как недействительный. Если транзакция за-
вершается неуспешно, то информация из сегмента отката помещается
назад в БД, и исходное состояние БД восстанавливается. Сегменту отка-
та необходимо как минимум два экстента. Первый сегмент отката созда-
ется автоматически при создании БД, имеет имя SYSTEM и размещается
в табличном пространстве SYSTEM. Сегменты отката также использу-
ются для восстановления БД после сбоев оборудования или отмены дей-
ствий операторов модификации данных.
Временные сегменты создаются системой и используют пространство
в файлах БД, чтобы создать временную рабочую область для промежу-
точных стадий обработки запроса, записанного на языке SQL, и для
больших операций сортировки. Следующие операции могут приводить к
созданию временных сегментов:
1) создание индекса;
2) использование фраз ORDER BY, DISTINCT или GROUP BY в опе-
раторе SELECT;
3) использование операторов работы с множествами UNION, INTER-
SECT, MINUS;
4) создание соединений таблиц;
5) использование некоторых типов подзапросов.
В целях более эффективной работы рекомендуется сегменты данных
размещать в одном табличном пространстве, сегменты индексов – в дру-
гом, временные сегменты – в третьем и т. д.
Достарыңызбен бөлісу: