Программирование >>  Программирование баз данных 

1 ... 89 90 91 [ 92 ] 93 94 95 ... 346


Опция maxdop

Опция MAXDOP позволяет переопределить значение параметра настройки конфигурации системы, определяющее максимальную степень распараллеливания (Degree Of Parallelism- DOP), которая применяется при формировании индекса. В настоящей книге еще не бьыо ничего сказано о распараллеливании операций, поэтом) в данном разделе будут приведены некоторые сведения по этой теме.

Коротко можно отметить, что степень распаралленивания определяет максимальное количество процессов, которые могут быть введены в действие в целях осуществления одной операции в базе данных (в рассматриваемом случае речь идет о формировании индекса). В системе предусмотрен параметр настройки конфигурации, определяющий максимальную степень распараллеливания, который позволяет установить максимальное количество процессов, используемых для выполнения одной операции. А опция MAXDOP, которая входит в состав опций создания индекса, позволяет задать более высокую или более низкую степень распараллеливания по сравнению со значением базового параметра системы в соответствии с конкретными потребностями.

Опция on

В ОЪД SQL Server предусмотрена возможность обеспечить хранение индексов отдельно от данных с помощью опции ON. Такая возможность является очень удобной по многим причинам, в том числе указанным ниже.

Пространство, требуемое для хранения индексов, может быть распределено по другим жестким дискам.

Операции ввода-вывода, связанные с обработкой индекса, не создают дополнительную нагрузку, которая препятствовала бы выполнению операций физической выборки данньгх.

Есть и другие важные соображения в пользу хранения индексов отдельно от данных, но они относятся к области чрезвычайно сложной тематики. Чтобы можно было содержательно раскрыть эту тему, необходимо рассмотреть большой объем сведений, касающихся способов хранения и применения данных, но, по мнению автора, изложение этих сведений выходит за рамки настоящей книги.

Создание индексов XML

Индексы XML бьыи впервые введены в версии SQL Server 2005, и автор должен признать, что был приятно поражен тем, что корпорация Microsoft выполнила задачу по внедрению этих индексов. Я давно знаю многих представителей коллектива разработчиков Microsoft и испытываю к ним глубокое доверие, но задача индексации кода с такой сложной структурой, как код XML, всегда представляла собой проблему, которую многие пытались решить, но лишь немногие сумели добиться реального успеха. Хочу выразить глубокую благодарность коллективу разработчиков программного обеспечения SQL Server за то, что они с)тели справиться с этой задачей. Подробные сведения об индексах XML и их использовании приведены ниже.

При изложении этой темы автору снова приходится сталкиваться с тем, что сведения, необходимые для полного ее понимания, еще не приведены, поскольку в настоящей книге проблематика XML до сих пор фактически не рассматривалась. Однако я счрггаю, что сведения об индексах XML в большей степени относятся к проблематике



индексов, а не к проблематике XML. И действительно, в синтаксическом определении оператора создания индекса XML поддерживаются те же опции, которые рассматривались в приведенном выше описании CREATE INDEX, за исключением опций IGNORE DUP KEY и ONLINE.

Поэтому ниже приведено очень краткое предварительное описание. В отличие от реляционных данных, которые рассматривались до сих пор в настоящей книге, данные, представленные в коде XML, обычно имеют гораздо более сложную структуру. В коде XML для идентификации данньгх используются дескрипторы, а с самим документом XML может быть связана так называемая схема, позволяющая предоставить информацию о типе и структ)ре, которая может применяться для проверки допустимости данных, оформленньгх с помощью кода XML. А в связи с тем, что документы XML имеют сложную струхсгуру, для поиска узлов с данными в документе XML должен бьггь предусмот рен способ перехода к нужному узлу документа, или способ предоставления информации о п\та такого перехода. С другой стороны, индексы предназначены для жесткой регламентации и очень точного определения структуры и порядка расположения данных; в этом и состоргг вся сложность решения задачи определения индексов Д71я документа XML.

В версии SQL Server 2005 предусмотрена возможность создавать индексы на столбцах, предназначенных для хранения данных типа XML. При этом должны учитываться описанные ниже основные требования.

На таблице, содержащей код XML, который подлежит индексации, должен быть задан кластеризованный индекс.

Прежде чем появится возможность создавать вторичные индексы XML, на столбце с данными XML должен быть определен первичный индекс XML (дополнительная информация по этой теме приведена ниже).

Индексы XML должны создаваться только на столбцах типа XML (причем индекс XML является единственным типом индекса, который может создаваться на столбцах, содержащих данные такого типа).

Столбец с данными XML должен входить в состав базовой таблицы, поскольку индекс XML не может быть создан на представлении.

Первичный индекс XML

Первый индекс, создаваемый на столбце с данными XML, должен быть объявлен как первичный (primary). При создании первичного индекса в СУБД SQL Server формируется новый кластеризованный индекс, в котором объединяются кластеризованный индекс базовой таблицы и данные из указанного узла XML.

Вторичные индексы XML

Вторичные индексы XML не имеют каких-либо важных отличительных особенностей. Во многом аналогично тому, как некластеризованные индексы указывают на кластеризованный ключ кластеризованного индекса, вторичные индексы XML указывают на первичный индекс XML в основном по такому же принципу. После создания первичного индекса XML на том же столбце с данными XML может быть создано дополнительно до 248 вторичных индексов XML.



Подразумеваемые индексы, которые создаются после ввода в действие ограничений

Автор хотел бы внести предложение называть индексы, создаваемые в связи с вводом в действие ограничений, индексами, создаваемыми по случаю . Этим я не хочу сказать, что такого индекса не должно быть; речь идет лишь о том, что причиной создания индекса становится ввод в действие ограничения. Кроме того, я применяю такую формулировку, поскольку в своей работе очень часто сталкивался с ситуациями, когда единственными индексами в системе были только созданные таким образом. Обычно при анализе подобных ситуаций вполне оправдывается предположение, что администраторы и (или) проектировщики системы фактически не учитывают, что применение индексов весьма способствует повышению производительности системы.

Но иногда в области применения индексов наблюдается другие, не менее странные отклонения. Таковыми являются ситуации, в которых администратор или проектировщик признает важность индексов, умеет их создавать, но фактически не задумывается над тем, сколько индексов уже определено в системе и для чего они предназначены. Ситуации подобного рода характеризуются также тем, что в них обнаруживаются индексы, дублирующие друг друга. При условии, что для индексов используются разные имена, СУБД SQL Server не препятствует созданию одинаковьгх индексов.

Подразумеваемые индексы создаются после определения для таблицы одного из двух перечисленных ниже ограничений.

Ограничение PRIMARY KEY.

Ограничение UNIQUE (называемое также определением альтернативного ключа).

Выше в данной главе синтаксическая стр)тстура оператора CREATE INDEX рассматривалась достаточно подробно, поэтому мы не будем возвращаться к этой теме. Но следует отметить, что при создании индекса, который рассматривается как подра-з)ТУ1еваемый индекс, относящийся к ограничению, не допускается применение любых опций,кроме {CLUSTERED]NONCLUSTERED} и FILLFACTOR.

Оператор alter index

Оператор ALTER INDEX фактически предназначен не для модификации индекса, что, казалось бы, следует из его названия, а для выполнения других действий. Все операторы ALTER, которые рассматривались до сих пор в настоящей книге, предназначены для корректировки определений тех или иных объектов. Например, оператор ALTER применительно к таблицам служил для добавления столбцов, а также ввода в действие или отмены ограничений. С другой стороны, оператор ALTER INDEX имеет иное назначение - он применяется исключительно для сопровождения индексов и не вносит никаких изменений в ргх структуру. Если же требуется изменить определение индекса, то необходимо либо уничтожить его с помощью оператора DROP, а затем создать, применив оператор CREATE, либо воспользоваться оператором CREATE с опцией DROP EXISTING=ON.

Как уже было сказано выше, программное обеспечение SQL Server поддерживает опцию, позволяющую управлять тем, насколько высокой должна быть степень заполнения страниц листового уровня, а также, при желании, еще одну опцию, от которой зависят показатели заполнения страниц нелистового уровня. К сожалению, эти две



1 ... 89 90 91 [ 92 ] 93 94 95 ... 346

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика