|
Программирование >> Проектирование баз данных
INITIAL и NEXT Следуя приведенным выше правилам, администратор БД может создавать табличные пространства для маленьких объектов (со значениями INITIAL и NEXT по умолчанию, равными 10 Кбайт), для средних объектов (100 Кбайт) и так далее. При этом фрагментация табличного пространства в классическом виде будет невозможна. Вероятно, не все экстенты объектов будут находиться в непрерывном пространстве, но это не имеет значения. MAXEXTENTS и MINEXTENTS В версии 7.3, где число экстентов для объекта уже не ограничено размером заголовочного блока сегмента, может потребоваться установить для объекта максимальное число экстентов (MAXEXTENTS). Реже встречаются случаи, когда нужно установить минимальный размер объекта с помощью MINEXTENTS. Управление пространством в Oracle не является таким трудоемким процессом, чтобы нельзя было себе позволить добавить экстент в режиме реального времени, поэтому единственная нормальная причина использования MINEXTENTS - резервирование места для объекта на случай увеличения его в табличном пространстве, которое в противном случае переполнилось бы. Если подумать, то это нелогично, так как означает, что какой-то другой объект не сможет увеличиться в размерах, а это может оказаться не менее важной проблемой. FREELISTS и FREELIST GROUPS Параметры FREELIST и FREELIST GROUPS играют важную роль для многопроцессорных систем и сред с параллельными серверами соответственно. Поскольку наша книга ориентирована на проектировщиков, а не на администраторов БД, скажем лишь, что эти параметры нужно использовать только тогда и там, где это действительно необходимо. Если предстоит работа на многопроцессорной платформе или в среде с параллельным сервером Oracle, то обязательно нужно сообщить администратору базы данных, в какие таблицы будут одновременно вставлять данные несколько процессов, а также дать ему представление о степени параллельности. PCTFREE и PCTUSED Осталось рассмотреть параметры PCTFREE и PCTUSED, которые используются незаслуженно редко. Возьмем простой случай. PCTFREE для индекса применяется только во время создания индекса и задает объем свободного пространства, которое необходимо оставить в блоках-листьях. Однако, используя этот параметр, можно существенно ускорить сопровождение индексов в приложениях, где новые и существующие значения индекса распределены случайным образом. Хороший пример такого случая - индекс по фамилиям в таблице служащих (если только принятая в организации политика найма не предполагает дискриминации по первой букве фамилии). Если у нас 10000 служащих и за период существования индекса ожидается прием на работу еще 2000, то хорошее значение для PCTFREE - 25, которое почти гарантирует, что ни один блок-лист индекса не будет разбит. Если индекс строится для ключа, где каждое новое значение больше текущего (например, для ключа, построенного на возрастающей последовательности), то единственно приемлемое значение параметра PCTFREE - нуль. С таблицами (и кластерами) PCTFREE используется при операциях вставки и предписывает оставить после вставки строки свободной как минимум указанную долю блока. В действительности свободным остается несколько больше пространства - как правило, PCTFREE плюс половина средней длины строки. Это пространство может использоваться находящимися в блоке строками, которые расширяются в результате операций обновления. Приведенный ниже оператор UPDATE может вызвать увеличение длины строки, так как неопределенное значение превращается в 37-символь-ную строку. UPDATE parts master р SET p.descr = No description available at I I TO CHAR (SYSDATE) WHERE p.descr IS NULL; Для необновляемых таблиц рекомендуется установить PCTFREE равным О - для экономии дискового пространства (и, следовательно, для ускорения полного сканирования таблиц). Для таблиц, которые обновляются, рекомендуем определить PCTFREE на основе вероятных длин строк при создании и после обновления и сообщить предлагаемое значение администратору БД. Если не сделать значение PCTFREE достаточно большим, то это приведет к миграции строк. Если строка удлиняется до такой степени, что для нее уже нет места в блоке, в котором она первоначально находилась, то она удаляется из этого блока и вставляется в текущий блок вставки таблицы (или списка свободных блоков, используемого в транзакции, если таблица имеет несколько списков свободных блоков). Эта операция занимает много времени. Кроме того, мигрировавшие строки неэффективны для индексного доступа, потому что элементы индекса продолжают ссылаться на исходный блок, где имеется фиктивная строка, содержащая идентификатор новой строки. Положение не изменится даже после удаления и повторного создания индекса, и при каждом индексном доступе к строке будет требоваться одно дополнительное посещение блока. Параметр PCTUSED используется операцией DELETE (и UPDATE), для того чтобы определить, когда блок можно поместить в список свободных (т.е. когда он станет доступным для вставки строк). Как только использованное пространство в блоке становится меньше этой величины, блок вновь становится доступным для вставки. Естественно, если сумма значений PCTFREE и PCTUSED слишком близка в 100 процентам, то блоки будут включаться в список свободных и исключаться из него очень часто. Во многих версиях Oracle есть защитный код, предотвращающий это. Предполагаемая цель этого кода - сделать блоки утерянными для механизма свободного пространства. Трудно преувеличить вред, который может Принести желание сэкономить при помощи PCTUSED, и во всех ситуациях, кроме самых неординарных, рекомендуем устанавливать этот параметр в нуль. Самый эффективный способ вернуть в работу пространство, занятое в таблице удаленными строками, - вывести таблицу из работы и ее реорганизовать. Хотя мы знаем, что это не всегда возможно. Создание скриптов Скрипт - это файл, который пользователь запускает для того, чтобы избежать утомительной работы по вводу команд вручную. Существуют скрипты для таких средств Oracle, как SQL*Loader, SQL*Plus, SQL*DBA и Server Manage, a также скрипты для операционных систем, например, скрипты интерпретаторов команд Unix. В большинстве проектов имеется набор полезных скриптов, с помощью которых можно создавать тестовые и живые среды, а иногда и данные. Если используется CASE-средство, то оно должно само создавать большинство скриптов на основе информации, хранящейся в репозитарии. Многие скрипты, разработанные на этапах проектирования и генерации, используются затем при тестировании и эксплуатации системы. Вот некоторые задачи, для реализации которых требуется разработка скриптов: Создание новых учетных записей и предоставление ролям и (или) пользователям доступа к объектам базы данных. Создание синонимов (общедоступных или частных), обеспечивающих обращение к объектам БД в другой схеме без запрашивания префикса схемы (ЕМР, а не SCOTT.EMP). Создание справочных данных, которые не изменяются и поэтому не требуют для заполнения отдельной экранной формы. Проверка целостности данных там, где они не защищены ограничением или триггером. На практике эти скрипты создаются всегда, независимо от других средств защиты, поскольку триггеры и ограничения в процессе разработки иногда удаляются или отключаются. Создание дружественной разработчику оболочки для исходной управляющей системы. Создание пакетов и процедур. Автоматическое формирование новой редакции из последней версии всего исходного кода.
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |