УДК 004(06) Информатика и процессы управления С.И. ТКАЧЕНКО Московский инженерно-физический институт (государственный университет) ИССЛЕДОВАНИЕ РАЗЛИЧНЫХ ПОДХОДОВ В ОРГАНИЗАЦИИ ХРАНЕНИЯ LOB ОБЪЕКТОВ В СУБД ORACLE В работе рассматривается влияние различных параметров СУБД ORACLE на эффективность работы с LOB объектами. В настоящее время большие объемы информации хранятся в различных СУБД, но все чаще СУБД используется не только для хранения текстовой или числовой информации, но и для хранения большого объема двоичной информации (содержимого файлов операционной системы). Такой подход (в рассматриваемом нами случае использования СУБД Oracle) имеет ряд преимуществ: - количество файлов в директории ОС не рекомендуется делать больше чем тысячу, а СУБД этих ограничений не имеет; - СУБД ORACLE содержит развитый по сравнению с ОС механизм резервного копирования и восстановления; - уровень защиты хранящейся под управлением СУБД информации выше, чем в ОС. Эффективность организации хранения и работы с LOB в БД под управлением СУБД ORACLE определяется типом этих LOB, выбранными параметрами их хранения и настройками конфигурации СУБД. Цель данной работы - определить рациональные значения параметров конфигурации СУБД ORACLE для различных типовых ситуаций использования наиболее распространенных LOB - Binary LOB (BLOB). Были определены следующие типичные варианты использования BLOB объектов: - требуется обработка небольших объектов до 4000 байт; - требуется обработка большого количества объектов размером от 4000 байт до 2-3 Мб; - требуется обработка объектов более 3 Мб. В ORACLE хранение LOB объектов имеет ряд особенностей, на которые обращается особое внимание: - если размер LOB объекта больше 4000 байт, то однозначно создается LOB сегмент, в котором будет физически храниться содержимое LOB объекта, а также создается индекс, с помощью которого ISBN 5-7262-0555-3. НАУЧНАЯ СЕССИЯ МИФИ-2005. Том 12 96 УДК 004(06) Информатика и процессы управления индексируется содержимое LOB сегмента. В таблицу, содержащую столбец типа LOB, записывается указатель (так называемый LOB локатор), который занимает всего 20 байт и является указателем на область LOB сегмента; - если размер LOB меньше или равен 4000 байт, то можно явно указать Oracle, для того чтобы содержимое LOB объекта хранилось вместе с содержимым таблицы; - единицей хранения LOB объектов является так называемый CHUNK, а не блок, используемый самой СУБД. Один CHUNK не может использоваться для хранения частей нескольких LOB объектов в отличие от механизма использования блоков, а также можно сделать вывод, что параметры хранения PCTFREE и PCTUSED не имеют никакого значения при использовании LOB [2]; - существует параметр (PCTVERSION), определяющий какой процент от размера LOB сегмента будет зарезервирован для хранения устаревших LOB страниц, он используется для согласования чтения и записи одного и того же LOB; - LOB сегмент, индекс, данные таблицы, содержащей LOB столбец, могут храниться в трех различных табличных пространствах. С учетом вышеизложенного в ходе исследований изучалось влияние (с точки зрения быстродействия выполнения типовых операций с LOB) следующих параметров: - размер блока базы данных; - варианты распределения по табличным пространствам; - размер CHUNK и параметры хранения INITIAL, NEXT и PCTINCREASE; - LOGGING и NOLOGGING, PCTVERSION; - Различные параметры SGA, связанные с чтением и буферизацией блоков БД; - CACHE/NOCACHE/CACHE READS; - ENABLE/DISABLE STORAGE IN ROW. Выполненная работа позволяет сформулировать обоснованные рекомендации по организации хранения и обработки BLOB определенных выше размеров. Список литературы 1. Oracle9i Application Developer's Guide - Large Objects (LOBs) Release 2 (9.2). 2. Oracle для профессионалов. Книга 1 Архитектура и основные особенности. Второе издание. Том Кайт. DiaSoft, М.: Санкт-Петербург: Киев: 2004. ISBN 5-7262-0555-3. НАУЧНАЯ СЕССИЯ МИФИ-2005. Том 12 97 УДК 004(06) Информатика и процессы управления ISBN 5-7262-0555-3. НАУЧНАЯ СЕССИЯ МИФИ-2005. Том 12 98