Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Хранение данных






 

 

Рис. Иерархия хранения в СУБД Oracle

Система хранения объектов СУБД Oracle 10g представляет собой иерархическую модель, самой малой единицей выделения пространства в которой является блок, а самой крупной – табличные пространства и файлы данных.

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

Табличное пространство (tablespace) – логическая структура для хранения объектов БД, контейнер для более мелких логических объектов. На физическом уровен табличное пространство (ТП) образуется из одного или нескольких файлов данных. Объект БД, рассматриваемый как элемент хранения, называется сегментом (выделяют сегменты таблиц, сегмент индексов, сегменты отката, сегмент временных ТП). Каждый объект, занимающий место на диске, имеет соответствующий сегмент. Комнада CREATE < some_db_object > создает, помимо структуры объекта и сегмент для его хранения. В большинстве случаев одному объекту соответствует один сегмент. В случае с секционированными объектами одному объекту может соответствовать более чем один сегмент хранения. Каждый сегмент всегда хранится в одном ТП, но может храниться в разных файлах данных, составляющих ТП (подробнее см. ниже). Различные сегменты одного и того же объекта (секционированные) могут храниться в разных табличных пространствах.

В свою очередь, сегменты состоят из экстентов. Экстент – непрерывный фрагмент пространства в ТП. Каждый сегмент изначально состоих хотя бы из одного экстента определенного размера. Когда свободное место в выделенном экстенте исчерпано, необходимо выделить очередной экстент(ы). Именно через выделение экстентов и осуществляется рост сегментов БД. В сегменте может быть большое число экстентов (в том числе и разного размера). Отдельно взятый экстент непрерывен, но сегмент может состоять из экстентов, расположенных в произвольном порядке в рамках ТП. Экстент всегда хранится в одном файле данных (помимо того, что в одном ТП), но разные экстенты одного и того же сегмента могут находиться в разных файлах.

Экстент состоит из блоков данных (тех самых блоков данных, стандартный размер которых указывается параметром DB_BLOCK_SIZE в файле параметров инициализации). В блоках хранятся строки таблиц, индексов и т.д. Блоками сервер Oracle осуществляет чтение и запись данных на диск.

Структура блока данных СУБД Oracle 10gпредставлена на следующей схеме:

 

Заголовок блока
Заголовок блока – содержит информацию о типе блока (блок таблицы, индекса и т.д.), адрес (местоположение) блока на диске.

Каталог таблиц


Каталог строк
Каталог таблиц – список таблиц, строки которых содержатся в блоке.

Каталог строк – список строк, хранящихся в блоке, их адреса внутри блока.

 

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

 

Строки данных –

Строки данных
последовательность строк, хранящихся в блоке, конкретные данные.

 

Заголовок блока, каталог таблиц и каталог строк образуют служебное пространство блока (block overhead). Оно используется сервером Oracle и не предназначено для хранения данных.В зависимости от наполнения блока может занимать в среднем от 84 до 107 байт.

 

Управление экстентами в табличных пространствах

 

Когда создается какой-либо сегмент, ему выделяется, как минимум, один экстент, называемый начальным (initial extent). По мере добавления строк в таблицу начальный экстент может быть заполнен полностью. В этом случае для сегмента выделяется последующий экстент (incremental, next extent). Размеры последующих экстентов могут отличаться от размера начального экстента. Выделение дополнительных экстентов (не считая случая создания сегмента) чаще всего происходит по требованию, т.е. тогда, когда существующее свободное место исчерпано.

 

До версии СУБД Oracle8 i все табличные пространства были словарно управляемыми (dictionary managed). В них выделение экстентов осуществлялось с помощью специальных таблиц словаря данных, где выделение или освобождение экстента вызывала вставку либо удаление строк в этих таблицах. Во многих случаях это снижало общую производительность системы.

Начиная с версии СУБД Oracle8 i появились т.н. локально управляемые (locally managed) табличные пространства, в которых распределение экстентов происходит с помощью специальной битовой карты (bitmap), хранящейся прямо в ТП (занимающей дополнительные 64 Кб). Выделение и освобождение экстента сведено к выставлению или снятию бита в этой карте, что выполняется гораздо быстрее по сравнению с подобной операцией в словарно управляемом ТП.

В СУБД Oracle 10gвсе ТП создаваемые без явного указания типа режима управления экстентами создаются как локально управляемые. Эксперты Oracle настоятельно рекомендуют использовать локально управляемые табличные пространства. Поддержка словарно управляемых ТП оставлена, в основном, для совместимости.

 

 

Параметры хранения

 

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

Например, вы можете создать некоторую таблицу сразу с большим числом экстентов, зарезервировав место для ее роста, или ограничить число экстентов для нее. Каждый сегмент может иметь свои собственные параметры хранения, которые указываются с помощью фразы STORAGE в командах CREATE или ALTER. Если вы не указываете эту фразу, то сегмент будет использовать параметры хранения табличного пространства, в котором он находится.

 

Параметры хранения для сегментов и табличных пространств:

 

Параметр хранения Описание
INITIAL Размер начального экстента для сегмента в байтах (K, M – килобайты, мегабайты)
NEXT Размер последующего экстента.
PCTINCREASE Процент, определяющий, насколько каждые последующий экстент, начиная со второго (NEXT), будет больше, чем предыдущий.
MINEXTENTS Минимальное число экстентов, выделяемых при создании сегмента.
MAXEXTENTS Максимальное число экстентов, которое может иметь сегмент. Неограниченное число экстентов указывается как UNLIMITED.

Для сегментов выделяют дополнительные параметры:

 

Параметр хранения Описание
FREELIST GROUPS Число групп списков свободных блоков. Этот параметр игнорируется для сегментов в локально управляемых табличных пространствах с автоматическим управлением пространством внутри сегмента.
FREELISTS Число элементов для каждой из групп списков свободных блоков. Этот параметр игнорируется для сегментов в локально управляемых табличных пространствах с автоматическим управлением пространством внутри сегмента.
OPTIMAL Только для сегментов отката, создаваемых вручную.
BUFFER POOL Определяет буфер кэша данных по умолчанию для объекта.

 

Параметры хранения описываются, в основном, для словарно управляемых ТП и сегментов. В локально управляемых ТП эти параметры в большинстве случаев не имеют влияния.

 

 

Управление экстентами в локально управляемых табличных пространствах

 

При рассмотрении локально управляемых табличных пространств, помимо основных характеристик (имени, расположения и размера файла данных) необходимо отметить 2 момента:

 

- Принцип определения размера экстента;

- Принцип управления пространством внутри сегментов.

 

Принцип определения размера экстента

 

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

Фраза AUTOALLOCATE (используемая по умолчанию при значении параметра инициализации COMPATIBLE равном 9.0.0 или выше) в команде CREATE TABLESPACE говорит о том, что СУБД Oracle 10gбудет автоматически выделять для сегментов в этом ТП экстенты некоторых типовых размеров, выбираемых автоматически.

Фраза UNIFORM < size> говорит о том, что для всех экстентов создаваемого ТП будет использован один и тот же указанный размер (по умолчанию – 1Мб).

 

Например:

 

CREATE TABLESPACE tbs_03 DATAFILE 'file_1_03.dbf' SIZE 100MEXTENT MANAGEMENT LOCAL AUTOALLOCATE;

 

CREATE TABLESPACE tbs_04 DATAFILE 'file_1_04.dbf' SIZE 10MEXTENT MANAGEMENT LOCAL UNIFORM SIZE 2M;

 

Принцип управления пространством внутри сегментов

 

Фраза SEGMENT SPACE MANAGEMENT в команде CREATE TABLESPACE определяет способ управления свободных и занятым местом внутри сегмента этого ТП. Возможны два варианта:

 

· MANUAL – говорит о том, что будут использоваться списки свободных блоков (free lists) для управления свободным местом в сегментах. В этих списках находятся блоки, доступные для вставки. Такой способ называется ручным управлелением пространством внутри сегментов (manual segment-space management). Параметры хранения PCTUSED, FREELISTS, и FREELISTS влияют на настройку.

· AUTO – говорит о том, что будет использован автоматический алгоритм управления пространством внутри сегмента с использованием битовой карты состояния блоков данных сегмента. Этот способ называется автоматическим управлением пространством внутри сегмента (automatic segment-space management). Параметры хранения PCTUSED, FREELISTS, и FREELISTS не влияют на настройку. Этот способ является более предпочтительным (не используется для временных локально управляемых ТП).

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.