Области хранения
Области хранения – это логические наборы экстентов, представленных в виде физических файлов на дисковых носителях. Области хранения представляют собой самую большую единицу хранения в базе данных. Каждая области может состоять из одного или нескольких экстентов. Максимальное количество экстентов в области – 1024.
Области хранения позволяют:
- разделить БД на разные области для повышения производительности и упрощения настройки;
- контролировать оптимальное распределение отдельных таблиц, индексов и LOB ;
- распределить разные области хранения между отдельными дисковыми устройствами для распараллеливания обращения к носителям.
Области хранения делятся на группы:
- Control Area (1)
- BI Area (3)
- Transaction Log Area (4)
- Schema Area (6)
- Data Areas / AI Areas (7 – 32 000)
Прикладные данные – это основная часть базы данных. Для их хранения применяется два типа областей (Data Areas):
- Type I – пространство для хранения данных в областях первого типа выделяется на диске по блокам базы данных. Блоки базы данных в этих областях хранят данные различных объектов. Области первого типа не имеют кластеров.
- Type II – пространство для хранения данных в областях второго типа выделяется на диске кластерами. Кластер представляет собой последовательность из заданного количества блоков базы данных. Объединённые в кластеры блоки базы данных хранят данные только одного объекта.
Все зарезервированные области хранения (области с номерами от 1 до 6) имеют первый тип (Type I).
Области хранения прикладных данных (с номерами от 7 до 32 000) должны обязательно иметь второй тип (Type II).
Существует несколько причин для такой рекомендации:
- Блоки базы данных в кластере хранят только один объект, следовательно меньшее количество блоков подвергается фрагментации и рассеиванию. В результате уменьшается количество операций дискового ввода-вывода.
- Пространство в областях хранения второго типа выделяется одним кластером за один раз. Это сокращает количество операций выделения пространства в экстентах переменного размера и позволяет хранить данные на диске более эффективно, улучшая последовательные операции ввода-вывода.
- При чтении таблицы, хранящейся в области второго типа, AVM (ABL Virtual Machine) быстрее выполняет полное чтение если используется параметр TABLE-SCAN, т.е. когда выборка строк происходит без использования индекса. Вместо индексного чтения AVM получает доступ только к блоку с записями, не используя индексные блоки, что сокращает время выборки данных.
- При использовании опции шифрования данных (TDE), благодаря областям второго типа можно шифровать только отдельные объекты, тем самым сокращая время использования необходимых для шифрования ресурсов.
- Благодаря областям второго типа при использовании альтернативного буферного пула (Alternate Buffer Pool) возможно назначение отдельных объектов для работы с этим пулом.
- Если таблицы хранятся в области второго типа, то администратор может настраивать параметры create/toss limit на уровне отдельной таблицы. Это позволяет управлять более эффективно заполнением блоков с записями отдельных таблиц, что приводит к уменьшению фрагментации записей и повышению производительности.
- Области хранения второго типа обязательны для реализации таких дополнительных опций базы данных как OpenEdge Auditing, Transparent Data Encryption (TDE), Multi-tenancy, Table Partitioning.
Корректное создание областей хранения определяет дальнейшую производительность БД, поэтому необходимо придерживаться следующих рекомендаций:
- Создавайте отдельно области хранения для BI, Schema, AI, TL и областей прикладных данных.
- Используйте область Schema (Area 6) для хранения только схемы базы данных. Никогда не храните прикладные данные в этой области!
- Для больших или активно изменяющихся таблиц создавайте отдельную область для каждой таблицы.
- Для множества небольших таблиц создавайте отдельную область хранения для каждой категории таких таблиц.
- Для индексов больших и активно изменяющихся таблиц создавайте отдельную область для каждого индекса.
- Для небольших индексов создавайте отдельную область для каждой категории таких индексов.
- Для полей с типом LOB всегда создавайте отдельную область хранения для каждого такого поля.