Cтраница 3
Из приведенных диаграмм видно, что оптимальное размещение индекса цилиндра определяется распределением обращений к цилиндрам, содержащим записи файла. [31]
Режим INDEXAREA ( п) указывает системе, что индекс цилиндров объявляемого файла должен полностью или частично считываться в основную память. В этом случае при чтении или обновлении набора данных поиск в индексе цилиндров будет выполняться в основной памяти, что позволяет значительно сократить время обработки записей набора данных. [32]
Каждый элемент главного индекса указывает на соответствующую дорожку в индексе цилиндров. [33]
Для ускорения обработки главный индекс, а часто также и индекс цилиндров, считывается в основную память, когда индексно-последовательный файл открывается. Это уменьшает время поиска соответствующего элемента индекса за счет сокращения количества операций чтения в ходе просмотра содержимого индекса. Соответствующий элемент главного индекса указывает на вторую дорожку области индекса цилиндров. Индекс дорожек этого цилиндра указывает, что записи с значениями ключей, удовлетворяющими условию: 3180 ключ3240, размещены на дорожке 3, и требуемая запись находится в области основных данных. Если же эта запись окажется в области переполнения, то записи переполнения будут последовательно обрабатываться, начиная с первой из них, при этом адрес записи, логически следующей за только что обработанной записью, выбирается из поля указателя последней. [34]
Системный программист имеет возможность выбора любого из цилиндров для хранения индекса цилиндров, при этом он должен стремиться минимизировать время перехода от индекса цилиндров к цилиндрам, содержащим записи. Как ни странно, очень часто для этой цели отводят цилиндр О, несмотря на то что в большинстве случаев этот выбор является наихудшим. При равномерном распределении ( по цилиндрам) обращений к записям целесообразно отвести для этой цели цилиндр, близкий к середине набора данных. Если распределение обращений не является равномерным, то соответствующими вычислениями можно выбрать оптимальное размещение индекса цилиндров. [35]
Главный индекс является индексом более высокого уровня по сравнению с индексом цилиндров. Индексы цилиндров хранятся на нескольких дорожках внешнего устройства, при этом главный индекс содержит значение максимального ключа для каждой из этих дорожек, а также указатель на данную дорожку. [36]
Если файл занимает более одного цилиндра, то операционная система создает индекс цилиндра, содержащий список ключей последних записей на цилиндре. Чтобы увеличить скорость поиска в индексе цилиндра, можно дополнительно предусмотреть главный индекс для нескольких цилиндров, причем система допускает три уровня главных индексов. Часть файла, которая содержит главные индексы и индексы цилиндров, называется индексной областью. [37]
Помимо этого, файл может содержать индексную область, где размещаются индексы цилиндра и главный индекс, и независимую область переполнения. Индексная часть располагается перед основной областью данных, а область переполнения является дополнительной областью и описывается отдельным оператором. [38]
Если для индексного файла эта фраза опущена, ечитается, что индекс цилиндров является индексом самого высокого уровня и находится на том же устройстве, что и основные данные. Если указан вариант ГЛАВНЫЙ-ЙНДЕКС, тогда и главный индекс и индекс цилиндров будут находиться на указанном устройстве. [39]
Помимо этого, файл может содержать индексную область, где размещаются индексы цилиндра и главный индекс, и независимую область переполнения. Индексная часть располагается перед основной областью данных, а область переполнения является дополнительной областью и описывается отдельным оператором. [40]
Фраза указывает область основной памяти, которая будет использоваться для хранения индекса цилиндров. [41]
NTMn ( QISAM, вывод) - число дорожек, занимаемых индексом цилиндра, для которых образуется элемент в главном индексе самого низкого уровня. Если операнд NTM опущен, то операнд OPTCDM игнорируется и главный индекс не создается. [42]
Если индексно-последовательный набор занимает более одного цилиндра, то операционная система создает индекс цилиндра, содержащий столько записей, сколько цилиндров занимает набор данных. Индекс цилиндров содержит поле ключа и поле данных, в которых располагаются соответственно максимальный ключ записи на цилиндре и адрес первой записи индекса дорожек этого цилиндра. [43]
В общем случае может быть создано три индекса - главный индекс, индекс цилиндра и индекс дорожки. Главный индекс выгодно использовать для очень больших файлов ( когда индекс цилиндров размещается на четырех и более дорожках), а два других индекса должны присутствовать всегда. [44]
Для ключей индексно-последовательного набора данных организуется система индексов: индекс дорожек, индекс цилиндров и до трех уровней главных индексов. Эта система индексов обеспечивает как прямой, так и последовательный доступ к записям набора данных. При работе с набором данных поиск записи осуществляется по ключу: сначала просматриваются индексы и отыскивается адрес дорожки, на которой затем находится запись с заданным ключом. Следовательно, после того как определен адрес дорожки, содержащей искомую запись, поиск записи ограничивается пределами этой дорожки. [45]