|
Программирование >> Программирование баз данных
опции являются превентивными, поскольку применяются лишь во время создания индекса. Поэтому в процессе эксплуатации базы данных приходится повторно применять опции, регламентирующие степень заполнения, выполняя перестройку индекса и снова вводя в действие указанные опции. В следующем разделе, посвященном вопросам сопровождения, будут приведены более подробные сведения о нюансах использования этой команды, а на данный момент следует лишь отметить, что команды сопровождения, подобные ALTER INDEX, следует рассматривать как неотъемлемую часть процедуры регулярного сопровождения. Оператор ALTER INDEX имеет следующий синтаксис: ALTER INDEX { <name of index> ALL } ON <table or view name> { REBUILD [ [ WITH ( PAD INDEX = { ON I OFF } ] :[J FILLFACTOR = <fillfactor> [,] SORT IN TEMPDB = { ON OFF } ] [,] IGNORE DUP KEY = { ON OFF } ] [,] STATISTICS NORECOMPUTE = { ON OFF } ] [J ONLINE = { ON I OFF } ] [J ALLOW ROW LOCKS = { ON OFF } ] [,] ALLOW PAGE LOCKS = { ON OFF } ] [,] MAXDOP = <max degree of parallelism> ) ] I [ PARTITION = <partition number> [ WITH ( <partition rebuild index option> [ ,...n ] ) ] ] ] DISABLE REORGANIZE [ PARTITION = <partition number> ] [ WITH ( LOB COMPACTION = { ON OFF } ) ] SET ([ ALLOW ROW LOCKS= { ON OFF } ] [[,] ALLOW PAGE LOCKS = { ON OFF } ] [[,] IGNORE DUP KEY = { ON OFF } ] [[J STATISTICS NORECOMPUTE = { ON OFF } ] ) } [ ; ] Некоторые из опций оператора ALTER INDEX совпадают с опциями оператора CREATE INDEX, поэтому их подробное описание здесь не приводится. Кроме того, значительная часть приведенного выше определения синтаксиса оператора ALTER INDEX содержит весьма детализированные опции и применяется для решения таких задач, как устранение фрагментации (сведения о фрагментации и сопровождении будут приведены ниже), или относится к сфере деятельности высококвалифицированного администратора базы данных. Как правило, подобные опции используются лишь время от времени для устранения весьма специфичных проблем. Но некоторые основные элементы синтаксиса этого оператора должны войти в состав планирования регулярного сопровождения. Вначале рассмотрим ряд основных параметров, а затем определим, какие опции должны быть учтены при планировании сопровождения. Имя индекса Если необходимо обеспечить сопровождение одного конкретного индекса, то следует указать имя этого индекса с помощью параметра <name of index>, а для выполнения операции сопровождения на каждом индексе, который связан с указанной таблицей, следует ввести ключевое слово ALL. Имя таблицы или представления Назначение параметра <table or view name> в основном соответствует его определению- этот параметр позволяет указать имя конкретного объекта (таблицы или представления), на котором должна быть выполнена операция сопровождения. Следует отметить, что должен быть указан один конкретный объект базы данных (иными словами, не допускается задавать в качестве этого параметра список объектов). Ключевое слово rebuild Применение ключевого слова REBUILD представляет собой самый радикальный подход к сопровождению индексов. После вызова на выполнение оператора ALTER INDEX с этой опцией существующий индекс полностью отбрасывается и воссоздается с нуля. Результатом становится полностью оптимизированный индекс. В этом индексе реконструирована каждая страница, и на уровне листовых узлов, и на всех остальных уровнях, на основе определений, заданных по умолчанию или откорректированных с использованием таких параметров, как коэффициент заполнения. Если рассматриваемый индекс является кластеризованным, то происходит также реорганизация физических данных. По умолчанию воссоздание страниц индекса происходит с учетом того условия, чтобы на каждой странице находилось максимальное количество строк за вычетом двух. Так же как и при использовании оператора CREATE TABLE, во время вызова на выполнение оператора DBCC DBREINDEX может быть задана опция <f illfactor>, аналогичная FILLFACTOR, которая может принимать любое значение от О до 100. Это число определяет процент заполнения страниц, вернее, то значение, которое будет характеризовать степень заполнения страниц после завершения перестройки индексов. Напомним, что после калсдого разбиения страницы данные по-прежнему распределяются между двумя страницами поровну; таким образом, единственный способ постоянного поддержания заданного значения процента заполнения состоит в осуществлении регулярного восстановления индексов. При использовании этого ключевого слова необходимо соблюдать осторожность. Сразу после вызова на выполнение оператора с опцией REBUILD индекс, с которым вы работаете, становится недоступным до того времени, пока не будет завергиена перестройка индекса. Выполнение всех тех запросов, которые основаны на использовании этого индекса, может стать крайне замедленным (замедление может измеряться несколькими порядками величины). Поэтому операция сопровождения индекса с указанной опцией относится к категории таких операций, которые рекомендуется заранее проверять в системе, не находящейся в эксплуатации, чтобы получить представление о том, сколько времени она может потребовать, и только после этого запланировать ее на выполнение в нерабочие часы (рекомендуется также, чтобы кто-то проконтролировал выполнение этой операции для достижения полной уверенности в том, что индекс снова будет введен в действие ко времени возникновения пиковой нагрузки). Таким образом, при использовании оператора сопровождения индекса с ключевым словом REBUILD приходится учитывать многие важные побочные эффекты, поэтому, как считает автор, применение этого варианта сопровождения должно находиться исключительно в распоряжении администратора базы данных. Ключевое слово disable По своему назначению ключевое слово DISABLE (Отменить) полностью соответствует своему определению. Но следует учитывать, что отмена действия индекса, осуществляемая при использовании этого ключевого слова, приводит к более серьезным последствиям, чем калсется на первый взгляд. Разумеется, было бы неплохо, если бы оператор с этим ключевым словом просто переводил индекс в автономный режим на то время, пока происходит подготовка к дальнейшим действиям, но вместо этого указанный оператор отмечает индекс как непригодный для дальнейшего использования. После отмены действия индекса необходимо выполнить его перестройку (еще раз подчеркиваем, не реорганизацию, а перестройку, с помощью ключевого слова REBUILD), и только после этого индекс снова вводится в действие. Самому разработчику приходится применять ключевое слово DISABLE крайне редко (вместо его использования гораздо лучше удалить индекс). Ситуации, в которых может потребоваться применение этого ключевого слова, скорее всего, могут возникать в период модернизации программного обеспечения SQL Sender или при возникновении каких-то других достаточно редких обстоятельств. Предупреждение о необходимости соблюдать предельную осторожность относится и к этой опции. Например, если отменяется кластеризованный индекс, который задан на таблице, то по существу налагается запрет на использование таблиц. Данные в таблгще остаются незатронутыми, но становятся недостижимыми с применением любых индексов до завершения перестройки кластеризованного индекса, поскольку от кластеризованного индекса зависят все прочие индексы. Ключевое слово reorganize С точки зрения разработчика ключевое слово REORGANIZE является наиболее удобным и предоставляет наилучшие возможности сопровождения индексов. В результате реорганизации индекса достигается немного менее полная оптимизация по сравнению с полной перестройкой, но преимуществом реорганизации является то, что она происходит в оперативном режиме (пользователи могут по-прежнему работать с индексом). Оптимизация является не такой полной, как при перестройке, поскольку выполняется она только на )ровне листовых узлов индекса; уровни индекса, не относящиеся к уровню листовых узлов, остаются незатронутыми. Это означает, что при этом достигается степень оптимизации, немного меньшая по сравнению с возможной, но для подавляющего большинства индексов характерно наличие фрагментации в основном на самом низком уровне иерархической структуры индекса. Тем не менее в некоторых случаях достигаемая степень оптимизации может оказаться недостаточной, поэтому придется воспользоваться другим методом сопровождения индекса. Учитывая то, что оператор сопровождения индекса с ключевым словом REORGANIZE оказывает наименьшее отрицательное влияние на работу пользователей, обычно именно это инструментальное средство становится частью плана регулярного сопровождения индексов. Некоторые дополнительные сведения по этой теме будут приведены в разделе, посвященном фрагментации.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |