27_SH43-0144-00 (1038594), страница 41
Текст из файла (страница 41)
Это условие указывает базеданных, что не нужно применять исходную пользовательскую функциюпредиката или функцию фильтрации после просмотра индекса. Еслипросмотр индекса не используется, должны применяться исходнаяпользовательская функция предиката и функция фильтрации. Если условиеEXACT не задано, после просмотра индекса применяется исходныйпользовательский предикат. Условие EXACT полезно, когда просмотриндекса возвращает те же результаты, что и предикат. Он предотвращаетвыполнение запросом пользовательского предиката для результатов,полученных от просмотра индекса. Если предполагается, что индекс небудет возвращать точно те же результаты, что и предикат, не задавайтеусловие EXACT.Глава 3. Создание базы данных177– Условие WHEN KEY задает назначение поиска.
Для ключа задается толькоодно назначение поиска. Значение, заданное после условия WHEN KEY,указывает имя параметра определяемой функции. Это условие считаетсяистинным, если значение указанного параметра - столбец, входящий виндекс, основанный на заданном расширении индекса.– Условие USE определяет аргумент поиска. Аргумент поиска указывает,какой из методов, определенных в расширении индекса, будетиспользоваться. Заданное здесь имя метода должно совпадать с именемметода, определенным в расширении индекса.
В значениях одного илинескольких параметров указываются имена параметров определяемойфункции, которые не должны совпадать с именами параметров, заданныхдля назначения поиска. Число и типы данных значений параметров должныточно соответствовать параметрам, определенным для этого метода врасширении индекса. Соответствие должно быть точным для встроенных иособых типов, а структурированные типы должны быть совместимыми(быть в одной иерархии типов).||||||||||||||||Сценарий определения расширения индекса||||||||||||||Сценарий определения расширения индекса:1.
Определите структурированные типы (иерархию shape). При помощиоператора CREATE TYPE определим иерархию типов, где shape (форма) это надтип, а nullshape (пустая форма), point (точка), line (линия) и polygon(многоугольник) - подтипы. Эти структурированные типы - модельпространственных объектов. Например, положение магазина - это точка,русло реки - линия, а границы территории - многоугольник.
Атрибут mbr это минимальный ограничивающий прямоугольник. Атрибут gtypeуказывает тип объекта - точка, линия или многоугольник. Длямоделирования географических границ используются атрибуты numpart,numpoint и geometry. Все остальные атрибуты можно игнорировать,поскольку они не используются в этом сценарии.2. Создайте расширение индекса.v Используйте оператор CREATE FUNCTION, чтобы создать функции,используемые для преобразования ключей (gridentry), создания диапазонов(gridrange) и фильтрации индекса (checkduplicate и mbroverlap).v Используйте оператор CREATE INDEX EXTENSION, чтобы создатьостальные требуемые компоненты индекса.3. Создайте преобразование ключей, соответствующее компоненту поддержкииндекса.|||||||||||CREATE INDEX EXTENSION имя_расш_инд (имя_парам тип_данных, ...)FROM SOURCE KEY (имя_парам тип_данных)GENERATE KEY USING вызов_табличной_функции...178Руководство администратора: Реализация|||||||||||Условие FROM SOURCE KEY задает параметр и тип данных преобразованияключей.
Условие GENERATE KEY USING задает функцию отображенияисходного ключа на значение, генерируемое этой функцией.4. Определите функции создания диапазонов и фильтрации индекса,соответствующие компоненту поиска в индексе.CREATE INDEX EXTENSION имя_расш_инд (имя_парам тип_данных, ...)...WITH TARGET KEYWHEN имя_метода (имя_парам тип_данных, ...)RANGE THROUGH вызов_функции_создания_диапазоновFILTER USING вызов_функции_фильтрации_индекса|||||Условие WITH TARGET KEY задает определение метода поиска. УсловиеWHEN задает имя метода. Условие RANGE THROUGH задает функцию,используемую для ограничения рабочей области индекса.
Условие FILTERUSING задает функцию, используемую для исключения из полученныхзначений индекса ненужных элементов.|||||||||||Примечание: В условии FILTER USING вместо функции фильтрации индексаможно задать выражение CASE.5. Определите предикаты для применения этого расширения индекса.|||||||||||||||||В условии PREDICATES определяются один или несколько предикатов,каждый из которых начинается с условия WHEN. Объявление предикатаначинается с условия WHEN, после которого задаются операция сравнения иконстанта или условие EXPRESSION AS. Условие FILTER USING задаетфункцию фильтрации, которая может использоваться для выполнениядополнительной фильтрации таблицы результатов. Это более простая версияопределенной функции (используемой в предикате); она уменьшает числострок, для проверки годности которых нужно выполнить пользовательскийпредикат.
Условие SEARCH BY INDEX EXTENSION задает способприменения индекса. Для применения индекса определяется набор правилиспользования метода поиска расширения индекса, который можетиспользоваться для этого индекса. Условие WHEN KEY задает правилоприменения. Правило применения описывает назначения поиска и аргументыпоиска, а также то, как использовать их для поиска в индексе с помощьюэтого метода.6. Определите функцию фильтрации.CREATE FUNCTION within (x shape, y shape)RETURNS INTEGER...PREDICATESWHEN = 1FILTER USING mbrWithin (x..mbr..xmin, ...)SEARCH BY INDEX EXTENSION grid_extensionWHEN KEY (имя_парам) USE имя_метода(имя_парам)CREATE FUNCTION mbrWithin (...)Глава 3. Создание базы данных179Определенная здесь функция будет использоваться в предикате расширенияиндекса.||||||||Чтобы оптимизатор запросов мог успешно применять созданные для улучшенияпроизводительности запросов индексы, в вызове функции можно задать опциюSELECTIVITY.
Когда известен примерный процент строк, которые можетвозвращать предикат, в вызове функции можно использовать опциюSELECTIVITY (избирательность), помогающую оптимизатору DB2 в выбореболее эффективного пути доступа.|||||В следующем примере пользовательская функция within вычисляет центр ирадиус (на основании первого и второго параметров соответственно) и строитстроку оператора с соответствующей избирательностью:||В этом примере указанный предикат отфильтровывает 95 процентов строк(SELECTIVITY .05) таблицы customer.SELECT * FROM customerWHERE within(loc, circle(100, 100, 10)) = 1 SELECTIVITY .05180Руководство администратора: РеализацияГлава 4. Изменение базы данных||Эта глава посвящена вопросам, которые надо учитывать перед изменением базыданных, а также изменению или отбрасыванию объектов базы данных.Перед изменением базы данных||||||||||Через некоторое время после разработки структуры базы данных можетпотребоваться ее изменение.
Нужно заново рассмотреть основные аспектыструктуры базы данных. Особое внимание нужно уделить следующим вопросам:v “Изменение характеристик логической и физической структуры”v “Изменение лицензионной информации”vvvv“Изменение экземпляров”“Изменение переменных среды и переменных реестра профиля” на стр. 185“Изменение файла конфигурации узлов” на стр. 185“Изменение конфигурации базы данных” на стр. 185Изменение характеристик логической и физической структурыПеред тем как вносить изменения, влияющие на всю базу данных, следуетпроверить все решения, касающиеся логической и физической структуры базыданных.
Например, при изменении табличного пространства следует проверитьвыбор используемого типа хранения - SMS или DMS. (Дополнительнуюинформацию смотрите в руководстве Руководство администратора:Планирование.)|||||Изменение лицензионной информацииВ процессе управления лицензиями на продукты DB2 вы можете обнаружить,что нужно увеличить число лицензий. Чтобы проверить использованиеустановленных продуктов и соответственно увеличить число лицензий, можноиспользовать Центр лицензий, входящий в Центр управления.Изменение экземпляровЭкземпляры создаются таким образом, чтобы они были как можно болеенезависимы от последующих установок и удалений продуктов.В большинстве случаев существующие экземпляры будут автоматическиполучать или терять доступ к функциям устанавливаемых или удаляемыхпродуктов.
Однако при установке или удалении некоторых выполняемыхпрограмм или компонентов существующие экземпляры не наследуютавтоматически новые параметры конфигурации системы или не получаютдоступ ко всем дополнительным функциям. В таком случае экземплярнеобходимо обновить.© Copyright IBM Corp. 1993, 2000181Если DB2 обновляется с помощью временного исправления программы (PTF)или исправления, нужно обновить все существующие экземпляры DB2,используя команду db2iupdt. Нужно также обновить сервер администратора,используя команду dasiupdt.Прежде, чем пытаться изменить или удалить экземпляр, нужно узнатьинформацию об экземплярах и серверах разделов баз данных в экземплярах.Список экземпляровЧтобы получить список всех доступных в системе экземпляров с помощьюЦентра управления:||||||||||1.
Раскройте дерево объектов и найдите папку Базы данных.2. Щелкните правой кнопкой мыши по базе данных, для которой нужно вывести списокэкземпляров, и выберите из всплывающего меню пункт Добавить.3. Нажмите кнопку Обновить и щелкните по стрелке в конце поля Имя базы данных,чтобы увидеть список экземпляров.4. Нажмите кнопку Отмена.|||Чтобы получить список всех доступных в системе экземпляров из команднойстроки, введите команду:||Чтобы узнать, какой экземпляр используется в текущем сеансе (в OS/2 или наподдерживаемых платформах Windows), используйте команду:db2ilistset db2instanceОбновление конфигурации экземпляраПри выполнении команды db2iupdt указанный экземпляр обновляется так:v Заменяются файлы в подкаталоге sqllib начального каталога владельцаэкземпляра.v Если был изменен тип узла, создается новый файл конфигурации менеджерабаз данных. Для этого объединяются соответствующие значения изсуществующего файла конфигурации менеджера базы данных и из файлаконфигурации менеджера базы данных по умолчанию для нового типа узла.Если создается новый файл конфигурации менеджера базы данных, старыйфайл конфигурации копируется в подкаталог backup подкаталога sqllibначального каталога владельца экземпляра.|Команда db2iupdt находится в подкаталоге instance подкаталога для даннойверсии и выпуска продукта (точное имя зависит от конкретной операционнойсистемы).Эта команда используется следующим образом:182Руководство администратора: Реализацияdb2iupdt имя_экземпляраимя_экземпляра - имя регистрации владельца экземпляра.Для этой команды можно использовать другие необязательные параметры:|||||||||||||v –h или –?Выводит для этой команды меню справки.v –dЗадает режим отладки, используемый для обнаружения причин ошибок.v –a тип_аутентификацииЗадает тип аутентификации для экземпляра.