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

1 ... 94 95 96 [ 97 ] 98 99 100 ... 346


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

Для этой цели применяется команда SHOWCONTIG, которая фактически является опцией вызова на вьшолнение модуля DBCC (Database Consistency Checker - модуль контроля непротиворечивости базы данных). В наши дни примеры применения команды SHOWCONTIG в той или иной форме можно найти практически в любой базе и можно смело предположить, что эта команда не утратит своего значения в течение многих последующих лет. В версиях, предшествующих SQL Server 2005, команда SHOWCONTIG рассматривалась как наиболее важное средство анализа фрагментации и служила основой системы сопровождения. Кроме того, в Интернете можно найти бесчисленное множество статей и практических рекомендаций по использованию этого инструментального средства.

Но с выходом версии SQL Seruer 2003 команда DBCC SHOWCONTIG во многом утратила свое значение. Корпорацией Microsoft был внесен значительный вклад в расширение функциональных возможностей системных функций sys благодаря чему возникли весьма заманчивые перспективы применения этих функций для получения информации о состоянии базы данных и управления индексами на более высоком уровне. Эти функции кратко описаны ниже с тачки зрения их использования для сопровождения индексов, а более полное их описание будет приведено в главе по администрированию. Несмотря на сказанное, следует учитывать, чтю команда DBCC SHOWCONTIG вполне успешно справлялась со своей работой в течение многих лет, а в тех базах данных, в которых используются версии предшествующие SQL Seruer 2003, остается основным средством контроля над состоянием индексов.

Вызов команды SHOWCONTIG имеет следующий простой синтаксис:

dbcc showcontig

[({<table name><table id><view name><view id>}

[, <index name><index id>])] [with { [ all indexes ] [, fast ] [, tableresults ] [, all levels } ] [, no infomsgs ]

Значительная часть опций этого оператора (таких как имя таблицы) не требует пояснений, а остальные опции рассматриваются в табл. 8.2.

Таблица 8.2. Опции оператора showcontig Опция Описание

table id/view id/ Внутренний идентификатор объекта для таблицы, представления index id или индекса. В предыдущих версиях SQL Server вызов команды внес

showcontig можно было осуществлять исключительно с использованием такого идентификатора, поэтому приходилось предварительно осуществлять выборку требуемого значения с использованием функции object id ()

all indexes Эта опция (буквально означающая все индексы ) относится к числу

тех, которые соответствуют своему названию. Если задана опция all indexes, МОЖНО не указывэть конкретные индексы, поскольку проводится анализ всех индексов и возврат полученных данных



Опция Описание

fast Опция fast прбдназначбна для получения конечных результатов

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

tableresults ОпцИЯ tableresults ПОЗВОЛЯет ВОСПОЛЬЗОВЭТЬСЯ ПреВОСХОДНОЙ ВОЗ-

МОЖНОСТЬЮ получить результаты в виде таблицы, а не в виде текста. Благодаря этому становится намного проще интерпретировать результаты и выполнять автоматизированные действия

all levels Опция all levels фэктически имеет в версии SQL Server 2005 только

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

NO iNFOiyiSGS Опция NO iNFOiyiSGS позволяет исключить чисто информационные

сообщения. Следует подчеркнуть, что применение этой опции приводит к исключению из результатов команды действительно важных ошибок, обнаруживаемые при обработке таблицы (со степенью серьезности 11 или выше), но ошибки со степенью серьезности 10 и ниже исключаются

В качестве примера ниже показано, как получить информацию об индексе PK SalesOrderDetail SalesOrderID SalesOrderDetailID, заданном на таблице Sales.SalesOrderDetail.

use AdventureWorks GO

DBCC SHOWCONTIG (Sales.SalesOrderDetail,

PK SalesOrderDetail SalesOrderID SalesOrderDetailID)

Обратите внимание на то, что имя таблицы заключено в одинарные кавычки. В данном случае кавычки являются обязательными, и это обусловлено тем, что используется двухкомпонентное обозначение таблицы; если бы было указано только имя таблицы (SalesOrderDetail), то кавычки стали бы ненужными. Но применение многокомпонентной структуры именования в операторе DBCC SHOWCONTIG вполне оправдано, поскольку может оказаться так, что после регистрации в системе под другим идентификатором пользователя по умолчанию будет получен доступ к другой схеме, в которой имеется другая таблица с тем же именем; иными словами, если не указано имя схемы, это может привести в возникновению ошибки или выполнению операции не на той таблице, на которой следовало.

Очевидно, что полученные выходные данные требуют определенных пояснений:

DBCC SHOWCONTIG scanning SalesOrderDetail table...

Table: SalesOrderDetail (610101214); index ID: 1, database ID: б

TABLE level scan performed.

- Pages Scanned................................: 123 5

- Extents Scanned..............................: 155

- Extent Switches..............................: 154

- Avg. Pages per Extent........................: 8.0

- Scan Density [Best Count:Actual Count].......: 100.00% [155:155]



- Logical Scan Fragmentation ..................: 0.32%

- Extent Scan Fragmentation ...................: 20.00%

- Avg. Bytes Free per Page.....................: 35.0

- Avg. Page Density (full).....................: 99.57%

DBCC execution conpleted. If DBCC printed error messages, contact your system administrator.

Описание статистических показателей, применяемых в выводе оператора DBCC SHOWCONTIG, приведено в табл. 8.3.

Таблица 8.3. Статистические показатели, применяемые в выводе оператора dbcc showcontig

Статистический показатель

Описание

Pages Scanned Extents Scanned

Extent Switches

Avg. Pages per Extent

Scan Density [Best Count: Actual Count]

Logical Scan Fragmentation

Extent Scan Fragmentation

Количество страниц в таблице (на которой задан кластеризованный индекс) или в индексе

Количество экстентов в таблице или индексе. Минимальное значение этого показателя равняется количеству страниц, деленному на 8, а затем округленному в большую сторону. Чем больше количество экстентов в расчете на одно и то же количество страниц, тем выше фрагментация

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

Среднее количество распределенных страниц в расчете на один экстент. При полном заполнении экстентов этот показатель имеет значение 8

Показатель Best Count определяет идеальное количество переходов с одного экстента на другой при условии безукоризненно качественного расположения данных в таблице. Показатель Actual Count показывает фактическое количество переходов с одного экстента на другой. Показатель Scan Density позволяет узнать плотность полного просмотра - процентное значение, полученное путем деления идеального количества переходов на фактическое количество переходов

Процентная доля смещенных страниц (страниц, не находящихся на предназначенном для них месте в заданной последовательности), которая определяется путем просмотра страниц листового уровня индекса. Данный показатель характеризует только результаты операций полного просмотра, относящиеся к кластеризованной таблице. Как смещенная рассматривается такая страница, для которой следующая страница, указанная в схеме распределения индекса (Index Allocation Map - lAM), отличается от той, на которую направлен указатель следующей страницы на странице листового узла

Этот показатель позволяет определить, имеются ли какие-либо экстенты, не находящиеся физически рядом с тем экстентом, с которым они должны находиться рядом логически. Показатель Extent Scan Fragmentation дает возможность узнать, не нарушена ли физическая последовательность страниц листового уровня индекса (хотя при этом логическая последовательность может оставаться правильной), а также выяснить, какая процентная доля экстентов хранится с нарушением заданного порядка следования



1 ... 94 95 96 [ 97 ] 98 99 100 ... 346

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