27_SH43-0144-00 (1038594), страница 46
Текст из файла (страница 46)
Это параметры -u <имя_пользователя> и -p<пароль>, которые задают пользователя и пароль. Этот пользовательдолжен обладать полномочиями SYSADM или DBADM. Еслипользователь и пароль не заданы, используется текущий ID пользователя.|||Чтобы получить информацию справки для этой утилиты, введитекоманду:|Если задан параметр справки, все остальные параметры игнорируются.|||||||||||Несмотря на то, что таблица находится в состоянии отложенной проверки,она блокируется на все время этого процесса. Смысл блокировки в том,что к таблицам, находящимся в состоянии отложенной проверки, могутобращаться другие утилиты. Блокировка предотвращает конфликтымежду этими утилитами.v Вы предполагаете, что объем журналов для обновления генерируемыхстолбцов достаточен для выполнения команды SET INTEGRITY.
Этотипичная ситуация. После загрузки данных выполните вычисление иприсваивание значений генерируемым столбцам, используя команду:|Примечание: В этот момент можно использовать таблицы исключений.v Таблица имеет очень большой размер, вы не уверены, что объемажурналов достаточно для выполнения этой задачи, но не хотитеиспользовать первый из описанных методов. После загрузки данных, ноперед включением проверки целостности нужно:a. Установить монопольную блокировку этой таблицы.
Это запретит всеобращения к этой таблице, кроме транзакций чтения без принятия.|||||||||db2gncol -hSET INTEGRITY FOR t1 IMMEDIATE CHECKEDFORCE GENERATEDLOCK TABLE t1b. Переведите таблицу в рабочий режим без проверки данных.SET INTEGRITY FOR t1 ALL IMMEDIATE UNCHECKEDГлава 4. Изменение базы данных203c. Обновите генерируемые столбцы, используя чередующиеся предикатыи операции принятия, чтобы предотвратить переполнение журналов.||||||||||||||||||||UPDATE t1 SET (c3, c4) = (DEFAULT, DEFAULT) WHERE <предикат>d.
Переведите таблицу в рабочий режим с проверкой ее целостности.SET INTEGRITY FOR t1 OFFSET INTEGRITY FOR t1 IMMEDIATE CHECKEDe. Разблокируйте таблицу, завершив транзакцию с помощью операторапринятия.COMMITv Известно, что таблица была создана с опцией NOT LOGGED INITIALLY.При этом способе для таблицы отключена запись информации в журналы,что вызывает обычные последствия и риск при работе со значениямигенерируемых столбцов.a. Активируйте опцию NOT LOGGED INITIALLY.ALTER TABLE t1 ACTIVATE NOT LOGGED INITIALLYb.
Сгенерируйте значения.SET INTEGRITY FOR t1 IMMEDIATE CHECKED FORCE GENERATIONc. Опять отключите опцию NOT LOGGED INITIALLY, выполнивпринятие транзакции.COMMIT|||Значения для генерируемых столбцов можно также просто проверить, примениввыражение, как при проверке проверочного ограничения равенства:|||||Если в генерируемый столбец были помещены значения, например, с помощьюоперации LOAD, и известно, что эти значения совпадают с результатамивыражения генерации, таблицу можно вывести из состояния отложеннойпроверки, не выполняя проверку или присваивание значений:|||||Генерируемые столбцы можно определить только с типами данных, длякоторых определена операция сравнения.
Типы данных, которые нельзяиспользовать для генерируемых столбцов: структурированные типы, LOB,CLOB, DBCLOB, LONG VARCHAR, LONG VARGRAPHIC и пользовательскиетипы, определенные на основе этих типов.||||Генерируемые столбцы нельзя использовать в ограничениях, уникальныхиндексах, реляционных ограничениях, первичных ключах и глобальныхвременных таблицах. Таблицы, созданные с опцией LIKE, и материализованныепроизводные таблицы не наследуют свойства генерируемых столбцов.SET INTEGRITY FOR t1 IMMEDIATE CHECKEDSET INTEGRITY FOR t1 GENERATED COLUMN IMMEDIATE UNCHECKED204Руководство администратора: Реализация|||||||Для вставки или изменения значений генерируемых столбцов должноиспользоваться ключевое слово DEFAULT. Когда при вставке используетсяключевое слово DEFAULT, не нужно перечислять эти столбцы в списке столбцов.Вместо этого для них можно задать DEFAULT (значение по умолчанию) всписке значений.
Когда ключевое слово DEFAULT используется при изменениистрок, оно позволяет заново вычислять значения генерируемых столбцов,помещенные командой SET INTEGRITY без проверки.||||Порядок обработки триггеров требует, чтобы генерируемые столбцы неиспользовались в триггерах BEFORE в их заголовках (перед обновлением) илителах. В соответствии с порядком обработки генерируемые столбцыобрабатываются после триггеров BEFORE.||Утилита db2look не видит проверочные ограничения, генерируемыегенерируемым столбцом.|||||||При использовании репликации таблица назначения не должна использовать всвоем отображении генерируемые столбцы.
При репликации есть двевозможности:v Таблица назначения должна содержать вместо генерируемого столбцаобычный столбецv Генерируемый столбец должен быть опущен из отображения таблицыназначения|||||Ограничения при работе с генерируемыми столбцами:v Генерируемые столбцы не должны зависеть друг от друга.v Используемые для создания генерируемых столбцов выражения не должнысодержать подзапросы. Сюда относятся выражения с функциями,выполняющими операцию READS SQL DATA.|||v Для генерируемых столбцов не разрешены проверочные ограничения.v Для генерируемых столбцов не разрешены уникальные индексы. Сюдаотносятся ограничения уникальности и первичные ключи.||||||||||||Объявление таблицы нестабильного объемаТаблица нестабильного объема - это таблица, объем содержимого которойможет во время работы меняться от нулевого до очень большого.Нестабильность объема или чрезвычайное непостоянство содержимого такоготипа таблиц делает ненадежными показатели статистики, собранные функциейRUNSTATS.
Статистика собирается в определенный момент времени и отражаетсостояние таблицы только на этот момент времени. При создании планадоступа, использующего таблицу нестабильного объема, может получитьсяневерный план или план с плохой производительностью. Например, еслипоказатели статистики собраны в момент, когда таблица нестабильного объемабыла пуста, оптимизатор предпочтет для доступа к этой таблице использоватьсканирование таблицы, а не сканирование индексов.Глава 4. Изменение базы данных205Чтобы предотвратить подобные ситуации, можно с помощью оператора ALTERTABLE объявить таблицу таблицей нестабильного объема.
Если таблицаобъявлена таблицей нестабильного объема, оптимизатор будет пытатьсяиспользовать для нее сканирование индексов вместо сканирования таблицы.Планы доступа, использующие объявленные таблицы нестабильного объема, небудут зависеть от существующей статистики для этих таблиц.Чтобы объявить таблицу таблицей нестабильного объема с помощью Центрауправления:|||||||||1. Раскройте дерево объектов и найдите папку Таблицы.2. Щелкните правой кнопкой по таблице, которую нужно изменить, и выберите извсплывающего меню пункт Изменить.3. На странице Таблица включите переключатель Объем таблицы может сильноменяться во время работы и нажмите кнопку OK.Чтобы объявить таблицу таблицей нестабильного объема из командной строки,введите команду:||||ALTER TABLE <имя_таблицы>VOLATILE CARDINALITYЧтобы объявить таблицу “таблицей нестабильного объема”, используйтекоманду:ALTER TABLE TABLENAMEVOLATILE CARDINALITYИзменение ключей разделенияКлюч разделения можно изменить только для таблиц в однораздельных группахузлов.
Сначала отбросьте существующий ключ разделения, а затем создайтеновый.|||Следующий оператор SQL отбрасывает ключ разделения MIX_INT из таблицыMIXREC:ALTER TABLE MIXRECDROP PARTITIONING KEYДополнительную информацию смотрите в главе об операторе ALTER TABLEруководства SQL Reference.Нельзя изменить ключ разделения таблицы в многораздельной группе узлов.При попытке сделать это возникает ошибка.Чтобы изменить ключ разделения для многораздельной группы узлов, можно:v Экспортировать все данные в однораздельную группу узлов и затемследовать представленным выше инструкциям.|||206Руководство администратора: Реализация||v Или экспортировать все данные, отбросить таблицу, заново определить ключразделения и затем импортировать все данные.|Ни один из этих методов не удобен для крупных баз данных, поэтому передсозданием крупных баз данных важно определить подходящий ключ разделения.Изменение атрибутов таблицВам может потребоваться изменить атрибуты таблицы, такие как опциюзахвата данных, процент свободного пространства на каждой странице(PCTFREE), размер блокировок или режим добавления.Объем свободного пространства, оставляемого на каждой странице таблицы,задается параметром PCTFREE; это важный фактор эффективностииспользования индексов кластеризации.
Правильное значение зависит отприроды существующих и ожидаемых будущих данных. Значение параметраPCTFREE влияет на выполнение операций LOAD и REORG, но игнорируетсяоперациями вставки, изменения и импорта.Задание большего значения PCTFREE обеспечит поддержку кластеризации набольшее время, однако потребует использования большего объема дисковогопространства.С помощью параметра LOCKSIZE можно задать размер блокировок,используемый при обращениях к этой таблице. По умолчанию при созданиитаблицы задается использование блокировок уровня строки. Использованиеблокировок уровня таблицы может улучшить производительность запросов, таккак ограничивает число блокировок, которые приходится устанавливать иосвобождать.Задав опцию APPEND ON, можно улучшить общую производительность.
Онаускоряет выполнение операций вставки, устраняя необходимость поддерживатьинформацию о свободном пространстве.Таблицу с индексом кластеризации нельзя перевести в режим добавления.Аналогично индекс кластеризации нельзя создать для таблицы в режимедобавления.||||||Изменение свойств сводной таблицыС некоторыми ограничениями можно преобразовать сводную таблицу вобычную или обычную таблицу в сводную. Другие типы таблиц нельзяпреобразовать; преобразовать можно только обычные и сводные таблицы.Например, нельзя преобразовать реплицируемую сводную таблицу в обычнуютаблицу или наоборот.Глава 4. Изменение базы данных207||||||После преобразования обычной таблицы в сводную она переводится в состояниеотложенной проверки.