27_SH43-0144-00 (1038594), страница 38
Текст из файла (страница 38)
Это значение применяется независимо от значения, заданного дляаутентификации.2. Поскольку DB2 хранит ID пользователей в верхнем регистре, значения ‘N’ и‘U’ равнозначны.3. Значение опции fold_pw не имеет значения, если для параметра паролязадано ‘N’. Поскольку в этом случае пароль не посылается, его регистр неиграет роли.4. Не рекомендуется задавать пустое значение для какой-либо из этих опций.Пустое значение может показаться привлекательным, так как DB2 будетделать несколько попыток передать ID пользователя и пароль; однако приэтом может пострадать производительность (DB2, возможно, будетпосылать ID пользователя и пароль четыре раза, прежде чем сможет успешнопройти аутентификацию на источнике данных).Использование непосредственных сеансов с серверамиНепосредственные сеансы позволяют прикладным программам напрямуюсвязываться с серверами, используя метод доступа клиентов этого сервера и егособственный диалект SQL.Непосредственные сеансы удобны, когда:164Руководство администратора: Реализацияv Прикладные программы должны создавать объекты на источнике данных иливыполнять операции INSERT, UPDATE или DELETEv DB2 не поддерживает какую-то особую операцию источника данныхДля ссылок на объекты в непосредственном сеансе должны использоватьсяистинные имена объектов (не псевдонимы).Чтобы запустить непосредственный сеанс и обращаться к серверу напрямую,используйте оператор SET PASSTHRU.
Этот оператор должен выполнятьсядинамически. Пример такого оператора:SET PASSTHRU BACKENDЭтот оператор открывает непосредственный сеанс с источником данныхBACKEND.Дополнительную информацию об операторе SET PASSTHRU и обработке SQL внепосредственных сеансах смотрите в руководстве SQL Reference.Создание псевдонимаВ базе данных объединения псевдонимы - это идентификаторы таблиц, алиасови производных таблиц источников данных.
В распределенных запросах обычноиспользуются псевдонимы, а не имена таблиц или производных таблицисточника данных.Псевдонимы - это одно из средств, используемых DB2 для обеспеченияпрозрачности положения. Для поиска и эффективного обращения к источникуданных, на который указывает псевдоним, используется информация оположении источника данных из определения сервера. Например, с помощьюоператора ALTER SERVER можно изменить для сервера данныепроизводительности или информацию о версии, не оказывая влияния ни напользователей, ни на прикладные программы, которым не потребуетсяиспользовать новые псевдонимы или изменять код программ.Для создания псевдонимов можно использовать Центр управления илипроцессор командной строки.
Для одной таблицы или производной таблицыисточника данных можно определить несколько псевдонимов.Псевдонимы нельзя использовать в статических операторах SQL.Перед созданием псевдонима запустите на источнике данных эквиваленткоманды RUNSTATS и обновите статистику для объектов источника данных.При создании псевдонима статистическая информация собирается изисточников данных и сохраняется в каталоге базы данных объединения. Этиданные каталога содержат определения таблиц и столбцов и, если они доступны,определения индексов и статистики.Глава 3. Создание базы данных165Следующий оператор SQL создает псевдоним CUSTOMER:CREATE NICKNAME CUSTOMER for OS390A.SHAWNB.CUSTLISTЧтобы использовать этот оператор, необходимо обладать полномочиямиSYSADM или DBADM или иметь привилегию базы данных IMPLICIT_SCHEMAили привилегию схемы CREATEIN (для текущей схемы) для базы данныхобъединения.Дополнительную информацию об использовании оператора CREATENICKNAME смотрите в руководстве SQL Reference.Ссылки на псевдонимы и объекты источников данныхДля ссылок на объекты источника данных обычно используются определенныепсевдонимы.
Исключение - ссылки в непосредственном сеансе (дополнительнуюинформацию смотрите в разделе “Использование непосредственных сеансов ссерверами” на стр. 164). Например, если определен псевдоним DEPT длятаблицы источника данных DB2MVS1.PERSON.DEPT, разрешен операторSELECT * FROM DEPT, а оператор SELECT * FROM DB2MVS1.PERSON.DEPTне разрешен.Работа с псевдонимами и объектами источников данныхБольшинство команд утилит (LOAD, IMPORT, EXPORT, REORGCHK,REORGANIZE TABLE) не поддерживают псевдонимы.Оператор COMMENT ON поддерживается для псевдонимов; он обновляетсистемный каталог на базе данных объединения.Операции INSERT, UPDATE и DELETE не поддерживаются для псевдонимов.Идентификация существующих псевдонимов и источников данныхКогда создано некоторое количество псевдонимов, следующая информацияпоможет вам узнать, какому источнику данных соответствует конкретныйпсевдоним, или узнать все псевдонимы для конкретного источника данных.Как узнать источник данных для псевдонимаВ этом примере предполагается, что вы знаете псевдоним (PAYROLL) и знаете,кто его создал (ACCTG), но вам нужна дополнительная информация об этомисточнике данных.
Сначала используйте следующий оператор SQL, чтобыполучить информацию о том, под каким именем PAYROLL известен на своемисточнике данных (SERVER).select option, settingfrom syscat.taboptionswhere tabname = 'PAYROLL'and tabschema = 'ACCTG'and option in ('SERVER','REMOTE_SCHEMA','REMOTE_TABLE');166Руководство администратора: РеализацияНабор ответов этого оператора - DB2_MVS, FINANCE, DEPTJ35_PAYROLL. Теперьвы знаете, что PAYROLL - псевдоним принадлежащей FINANCE таблицыDEPTJ35_PAYROLL на сервере DB2_MVS.
Эту информацию можноиспользовать в следующем операторе SELECT:select option,settingfrom syscat.serveroptionswhere servername = 'DB2_MVS'and option in ('NODE','DBNAME');Набор ответов этого оператора - REGIONW и DB2MVSDB3. Теперь вы знаете, чтотаблица DEPTJ35_PAYROLL находится в базе данных DB2MVSDB3 на узлеREGIONW.Используя эту информацию можно с помощью команды LIST NODE DIRECTORYполучить информацию об узле REGIONW (например, узнать используемыепротокол связи и тип защиты).
Если этот узел используется источником данных,не относящимся к семейству DB2, для получения аналогичной информациинужно будет обратиться к файлам конфигурации этого источника данных.Например, если этот узел относится к источнику данных Oracle, подобнуюинформацию можно получить из файла Oracle tnsnames.ora.Подробную информацию о производных таблицах системного каталогасмотрите в руководстве SQL Reference.Как узнать все псевдонимы, известные DB2Следующий оператор SQL выводит список всех псевдонимов, известных на базеданных объединения (для каждого псевдонима также выводятся имя схемы иудаленный сервер).select tabname,tabschema, setting as remote_serverfrom syscat.taboptionswhere option = 'SERVER';| Создание индекса, расширения индекса или спецификации индексаИндекс - это список позиций строк, отсортированный по содержимому одногоили нескольких указанных столбцов.
Индексы обычно используются дляускорения доступа к таблице. Но можно использовать их и для поддержаниялогической структуры данных. Например, индекс уникальности не допускаетповторения значений в столбцах, гарантируя тем самым, что таблица несодержит совпадающих строк. Индексы могут также создаваться для заданиявосходящего или нисходящего порядка значений в столбце.||Расширение индекса - это индексный объект, используемый с индексами длястолбцов структурированных или особых типов.Спецификация индекса - это компонент метаданных. Она сообщаетоптимизатору, что для задаваемого псевдонимом объекта источника данныхГлава 3.
Создание базы данных167(таблицы или производной таблицы) существует индекс. Спецификация индексане содержит списка позиций строк, она представляет собой лишь описаниеиндекса. Оптимизатор использует спецификацию индекса для оптимизациидоступа к объекту, заданному псевдонимом. При создании псевдонимаспецификация индекса генерируется, если существующий для базовой таблицыисточника данных индекс имеет формат, распознаваемый DB2.Примечание: Если нужно, создайте спецификации индексов для псевдонимовтаблиц или производных таблиц, определенных над однойтаблицей.Создайте индекс или спецификацию индекса вручную, если:v Это может улучшить производительность.
Например, если нужно, чтобыоптимизатор использовал конкретную таблицу или псевдоним в качествевнутренней таблицы объединения с вложенным циклом, создайтеспецификацию индекса для объединяющего столбца, если индекс несуществует. Дополнительную информацию о том, когда может потребоватьсяиндекс или спецификация индекса, смотрите в книге Руководствоадминистратора: Производительность.v Индекс для базовой таблицы был добавлен после того, как был созданпсевдоним.|||||||Спецификации индексов можно создать и для базовых таблиц, не имеющихиндексов (при выполнении оператора CREATE INDEX DB2 не проверяетналичие удаленного индекса).
Спецификация индексов не обеспечиваетуникальность строк, даже если задано ключевое слово UNIQUE.Советчик по индексам DB2 - это мастер, помогающий выбрать оптимальныйнабор индексов. Этот мастер можно вызвать из Центра управления.Соответствующая утилита имеет имя db2advis.Индекс определяется по столбцам базовой таблицы. Он может быть определенсоздателем таблицы или пользователем, который знает, что требуется прямойдоступ к определенным столбцам.
Для первичного ключа автоматическисоздается первичный ключ индекса, если не существует пользовательскийиндекс.Для конкретной базовой таблицы может быть определено любое числоиндексов; они могут положительно влиять на производительность запросов.Однако чем больше существует индексов, тем больше изменений приходитсявносить менеджеру баз данных при выполнении операций изменения, удаления ивставки. Создание большого числа индексов для таблицы, для которойвыполняется много операций изменения данных, может замедлить обработкузапросов. Поэтому используйте индексы, только если очевидны ихпреимущества для частых обращений.168Руководство администратора: РеализацияДлина столбца, входящего в ключ индекса, не может быть больше 255 байт.Максимальное число столбцов в индексе - 16.
Для индекса типизированнойтаблицы максимальное число столбцов - 15. Максимальная длина ключаиндекса - 1024 байта. Как отмечено выше, большое число ключей индексов длятаблицы может замедлить обработку запросов. Длинные ключи индекса такжемогут замедлять обработку запросов.Ключ индекса - это столбец или набор столбцов, на которых определен индекс;эти столбцы определяют полезность индекса. Хотя порядок столбцов в ключеиндекса не имеет значения при создании ключа индекса, он может влиять навыбор использования индекса оптимизатором.Если индекс определяется для пустой таблицы, индекс создается, но записииндекса будут создаваться при загрузке таблицы или вставке в нее строк.