Лекция «Типы сегментов в Oracle», раздел «Сегменты данных»




 

Данные БД Oracle логически хранятся в табличных пространствах, а физически – в файлах данных (файлах ОС).

Табличное пространство – логическая область хранения данных в Oracle.

Файлы данных – физические структуры, связанные только с одним табличным

пространством.

Объекты БД, хранящиеся в табличных пространствах, могут физически находиться в нескольких файлах данных.

Существует несколько основных способов выделения дополнительного пространства для БД:

- добавить файл к табличному пространству;

- создать новое табличное пространство;

- увеличить размер существующего файла данных.

 

В момент создания таблицы (CREATE TABLE…) Oracle автоматически выделяет в соответствующем табличном пространстве сегмент, в котором будут храниться данные этой таблицы.

Управлять распределением и использованием пространства для сегмента данных таблицы можно одним из следующих способов:

a) установлением размера пространства, выделенного для сегмента данных, задавая параметры хранения для этого сегмента;

b) контролем использования свободного пространства в блоках данных, составляющих экстенты сегмента данных (параметры PCTFREE и PCTUSED).

 

Размер и формат строки

 

Oracle хранит каждую строку таблицы, содержащую менее 256 столбцов, в одном или нескольких отрезках. Если в один блок данных может быть вставлена целая строка, она хранится в одном отрезке. Если же все данные строки не могут быть вставлены в один блок или при обновлении существующей строки для неё не хватает места, такая строка хранится в нескольких отрезках разных блоков (расщепление строки).

Если таблица имеет более 255 столбцов, строки, содержащие данные столбцов с порядковыми номерами выше 255, расщепляются в пределах одного блока (внутриблоковое расщепление). Отрезки расщеплённой строки соединяются с помощью специального идентификатора, который определяет местоположение отрезка по его адресу. Если строка помещается в пределах одного блока, внутриблоковое расщепление не снижает производительность операций ввода/вывода.

Каждый отрезок строки содержит заголовок строки и данные для столбцов, входящих в эту строку.

 

 

В целях экономии пространства для столбца с пустым значением хранится только информация о длине (ноль).

 

Производительность и размер блока данных

 

Операции ввода/вывода можно разделить на случайные и последовательные. В части хранения данных производительность определяется также способом хранения данных и размером блока.

Количество дисковых операций существенно зависит от способа хранения объектов, которые приложение читает или пишет. Это, в свою очередь, определяет объём и способ организации дискового массива (уровень RAID) для получения требуемой производительности.

Для последовательного чтения размер буфера ввода/вывода ОС должен быть в 2-3 раза выше размера блока БД. Предполагается, что ОС может буферизовать ввод/вывод таким образом, что следующий блок будет прочитан их данного конкретного буфера.

Существует эмпирическая зависимость размера блока от типа приложений – OLTP (приложения оперативной обработки транзакций) или DSS (приложения поддержки принятия решений).

 

                   

0Kb 2Kb 4Kb 8Kb … 16Kb … 32Kb … 64Kb

OLTP DSS

 

 

Рекомендации при создании таблиц

Для увеличения производительности ввода/вывода:

1. таблицы следует помещать в отдельное табличное пространство;

2. для минимизации фрагментации следует использовать несколько стандартных размеров экстентов, кратных 5*DB_BLOCK_SIZE;

3. для ускорения последовательных операций чтения следует задать размеры экстентов в соответствии со значением DB_FILE_MULTIBLOCK_READ_COUNT (параметр запрашивается серверным процессом у ОС в каждый цикл чтения при поиске по всей таблице);

4. необходимо рассчитать параметр: (средний размер строки – исходный размер строки)*100%/средний размер строки. PCTFREE должен быть достаточно большим, если столбцы имеют пустые значения сначала, но могут быть изменены в последующем или просто возрастут в результате обновлений;

5. необходимо рассчитать параметр PCTUSED: 100- PCTFREE-(средний размер строки*100/объём пространства данных). Правильно подобранные значения PCTFREE и PCTUSED сокращает время поиска в списке свободных блоков, т.к. увеличивается вероятность обнаружения блока, содержащего требуемы объём свободного пространства.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2018-11-17 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: