VSAM - Альтернативный индекс
Альтернативный индекс - это дополнительный индекс, который создается для наборов данных KSDS / ESDS в дополнение к их первичному индексу. Альтернативный индекс обеспечивает доступ к записям с использованием более чем одного ключа. Ключ альтернативного индекса может быть неуникальным или иметь дубликаты.
Создание альтернативного индекса
Следующие шаги используются для создания альтернативного индекса -
- Определить альтернативный индекс
- Определить путь
- Индекс строительства
Определить альтернативный индекс
Альтернативный индекс определяется с помощью DEFINE AIX команда.
DEFINE AIX -
(NAME(alternate-index-name) -
RELATE(vsam-file-name) -
CISZ(number) -
FREESPACE(CI-Percentage,CA-Percentage) -
KEYS(length offset) -
NONUNIQUEKEY / UNIQUEKEY -
UPGRADE / NOUPGRADE -
RECORDSIZE(average maximum)) -
DATA -
(NAME(vsam-file-name.data)) -
INDEX -
(NAME(vsam-file-name.index))
Синтаксис выше показывает параметры, которые используются при определении альтернативного индекса. Мы уже обсудили некоторые параметры в модуле определения кластера, и некоторые из новых параметров используются при определении альтернативного индекса, который мы обсудим здесь -
Старший Нет | Параметры с описанием |
---|---|
1 | DEFINE AIX Команда Define AIX используется для определения альтернативного индекса и указания атрибутов параметров для его компонентов. |
2 | NAME NAME определяет имя альтернативного индекса. |
3 | RELATE RELATE указывает имя кластера VSAM, для которого создается альтернативный индекс. |
4 | NONUNIQUEKEY / UNIQUEKEY UNIQUEKEY указывает, что альтернативный индекс уникален, а NONUNIQUEKEY указывает, что могут существовать дубликаты. |
5 | UPGRADE / NOUPGRADE UPGRADE указывает, что альтернативный индекс должен быть изменен, если базовый кластер изменен, а NOUPGRADE указывает, что альтернативные индексы должны быть оставлены в покое, если базовый кластер изменен. |
пример
Ниже приведен базовый пример, показывающий, как определить альтернативный индекс в JCL.
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = IDCAMS
//SYSPRINT DD SYSOUT = *
//SYSIN DD *
DEFINE AIX (NAME(MY.VSAM.KSDSAIX) -
RELATE(MY.VSAM.KSDSFILE) -
CISZ(4096) -
FREESPACE(20,20) -
KEYS(20,7) -
NONUNIQUEKEY -
UPGRADE -
RECORDSIZE(80,80)) -
DATA(NAME(MY.VSAM.KSDSAIX.DATA)) -
INDEX(NAME(MY.VSAM.KSDSAIX.INDEX))
/*
Если вы выполните вышеуказанный JCL на сервере мэйнфреймов. Он должен выполняться с MAXCC = 0, и он создаст альтернативный индекс MY.VSAM.KSDSAIX.
Определить путь
Определить путь используется для связи альтернативного индекса с базовым кластером. При определении пути мы указываем имя пути и альтернативный индекс, с которым этот путь связан.
DEFINE PATH -
NAME(alternate-index-path-name) -
PATHENTRY(alternate-index-name))
Вышеупомянутый синтаксис имеет два параметра. NAME используется для указания имени альтернативного пути индекса, а PATHENTRY используется для указания альтернативного имени индекса.
пример
Ниже приведен базовый пример определения пути в JCL.
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = IDCAMS
//SYSPRINT DD SYSOUT = *
//SYSIN DD *
DEFINE PATH -
NAME(MY.VSAM.KSDSAIX.PATH) -
PATHENTRY(MY.VSAM.KSDSAIX))
/*
Если вы выполните вышеуказанный JCL на сервере мэйнфреймов. Он должен выполняться с MAXCC = 0, и он создаст путь между альтернативным индексом к базовому кластеру.
Индекс строительства
Команда BLDINDEX используется для построения альтернативного индекса. BLDINDEX считывает все записи в индексированном наборе данных VSAM (или базовом кластере) и извлекает данные, необходимые для построения альтернативного индекса.
BLDINDEX -
INDATASET(vsam-cluster-name) -
OUTDATASET(alternate-index-name))
Вышеупомянутый синтаксис имеет два параметра. INDATASET используется для указания имени кластера VSAM, а OUTDATASET используется для указания альтернативного имени индекса.
пример
Ниже приведен базовый пример построения индекса в JCL.
//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = IDCAMS
//SYSPRINT DD SYSOUT = *
//SYSIN DD *
BLDINDEX -
INDATASET(MY.VSAM.KSDSFILE) -
OUTDATASET(MY.VSAM.KSDSAIX))
/*
Если вы выполните вышеуказанный JCL на сервере мэйнфреймов. Он должен выполняться с MAXCC = 0, и он построит индекс.