Программирование баз данных MS SQL Server (1084479), страница 95
Текст из файла (страница 95)
Фрагментация Значительная часть настоящей главы была посвящена описанию того, как происходит разбиение страниц, но фактически еще ничего не было сказано по поводу 372 Глава 9 возникающей при этом фрагментации. Речь не идет о тех общеизвестных проблемах фрагментации файлов операционной системы, для устранения которых предусмотрен целый ряд инструментальных средств дефрагментации. К сохсалению, подобные программные средства не могут помочь устранить фрагментацию базы данных.
Фрагментация базы данных возникает в результате того, что объем базы данных возрастает, происходит разбиение страниц, а затем в конечном итоге часть данных удаляется. Безусловно, механизм сопровождения В-дерева неплохо справляется с задачей обеспечения сбалансированности индекса при выполнении операций вставки данных, но практически не позволяет достичь той же цели, когда удаляются данные.
В результате может сложиться такая ситуация, что на отдельных страницах будут находиться всего лишь одна-две строки. Иными словами, многие страницы будут содержать небольшое количество данных, составляющее лишь незначительную долю от того количества данных, которые они могли бы содержать. Фрагментация становится причиной возникновения целого ряда проблем. Первая проблема является вполне очевидной — непроизводительное расходование внешней памяти.
Напомним, что в СУБД БОЕ Бестег распределение пространства осусцесталяется путем выделения сразу целого экстента. Даже если требуется записать в память только одну страницу с единственной строкой, распределяется целый экстент. Вторая проблема в большей степени касается снижения производительности операций доступа к данным. Дело в том, что если база данных фрагментнрована, то строки данных в ней не сосредоточены в одном месте, а распределены по всему пространству памяти, поэтому в процессе выборки данных возникают дополнительные издержки.
Скажем, вместо загрузки одной страницы и получения всех искомых десяти строк в СУБД БОЕ Зегчег для получения той же информации приходится загружать десять отдельных страниц, поскольку доступ к строкам предоставляется только после считывания страницы, на которой они находятся. А чем больше страниц приходится считывать для получения одних и тех же данных, тем больший объем работы приходится при этом выполнять. Тем не менее фрагментация базы данных имеет и свою положительную сторону, поскольку в результате фрагментации в системе ОЕТР повьпвается производительность выполнения операций вставки данных. Дело в том, что в результате разбиения страниц количество данных, хранимых на каждой отдельной странице, уменьшается, поэтому вставка данных на страницы, подвергшиеся разбиению, происходит быстрее.
Таким образом, уъеличение степени фрагментации приводит к уменьшению производительности операций выборки данных, но вместе с тем способствует значительному повышению производительности операций вставки данных. Из этого следует, что для систем ОЕАР фрагментация является неблагоприятным фактором, а в системах ОЕТР играет двоякую роль. Получение сведений о фрагментации и оценка вероятности разбиения страниц Программное обеспечение ЯЯЕ Яегчег предоставляет возможность определить, какова степень заполнения страниц и экстентов в базе данных. На следующем этапе полученная информация может использоваться для принятия определенных решений по сопровождению базы данных.
Для этой цели применяется команда эссоуссОустс", которая фактически является опцией вызова на выполнение модуля ЕУВСС (ЕУасаЬазе Сопзйсепсу СЬес)сег — модуль контроля непротиворечивости базы данных). Структуры памяти и индексные структуры $9Е Бегчег 373 Синтаксис оператора вызова на выполнение команды ЯНОНСОНТ16 довольно прост: Рвсс Янонсонтьз [ [[<гаые паве>)<гаые гн>)<ч1ев паве>)<ч1ев Ьн>) [, <1псех папе>)<тппех 1Н>])] [Н1ТН [АЬЬ 1НРЕХЕЯ)ГАЯТ [, АЬЬ 1НРЕХЕЯ ])ТАВЬЕНЕЯОЬТЯ [, АЬЬ 1НРЕХЕЯ])] [ РАЯТ ] АЬЬ ЬЕУЕЬЯ ) РВСС ЯНОНСОНТ16 [(<ГаЫе оЬ3ест 1Н>], [<Ьппех гб>]) В качестве примера ниже показано, как получить информацию об индексе РК Огс[ег Рета115, заданном на таблице Огс[ег Рета115. ОЯЕ Могтпв1пс) 60 РВСС ЯНОНСОНТ16 [81с), 81пх1Р) 60 Очевидно, что полученные выходные данные требуют определенных пояснений: 1Р: б 33.3 Описание статистических показателей, применяемых в выводе оператора РВСС ЯНОНСОНТ16,приведено в табл.
9.2. Информация, которая формируется с помощью оператора РВСС ЯНОНСОМТ16, мох<ет использоваться по-разному, в зависимости от конкретных условий. В частности, вывод команды ЯНОНСОМТ16 позволяет получить значительный объем сведений о том, являются ли страницы и экстенты базы данных полностью заполненными, в значительной степени фрагментированными, или находятся в какомто промелсуточном состоянии (последний вариант, по-видимому, является наиболее вероятным). Если база данных применяется в системе ОЕАР, то при высокой плотности заполнения страниц быстродействие системы повышается, а при наличии значительной степени фрагментации система функционирует менее эффективно.
В системе ОЕТР проявляются почти противоположные закономерности [хотя и до определенной степени). Для того чтобы перейти к описанию того, какие действия следует предпринимать, если состояние базы данных является неудовлетворительным, необходимо вначале рассмотреть такие понятия, как перестройка индекса и коэффициент заполнения. РВСС ЯНОНСОНТ16 всапп1пд 'Огпег Рета11в' ГаЪ1е... ТаЬ1е: 'Огоег Рета11в' (325576198); 1ппех 10: 1, Натапаве ТАВЬЕ 1ече1 всап реггогеео. Радев Ясаппео Ехтептв Ясаппеп.
Ехтепс Ячттспев. Ачд. Радев рег Ехтепт. ясап Репв1гу [Вевг соспг:Асгпа1 соопг]........: вод].са1 Ясап Ргадеептат1оп Ехтепт Ясап Ргадеептат1оп Ачд. Вутев Ргее рег Раде............... Ачд. Раде Репв1ту [1п11) РВСС ехесоттоп соер1етеН. 11 РВСС ргтптео егтог ееввадев, вувтее асьв1пьвтгатог. 9 б 5 1.5 3$ [2: б] 0.00% 16.67Е 673.2 91.68$ соптасг уосг 374 Глава 9 Статистический показатель Описание Радея Ясаппец Количество страниц в таблице (на которой задан кластеризованный индекс) или в индексе Ехьепгз Ясаппес! Количество экстентов в таблице или индексе. Минимальное значение этого показателя равняется количеству страниц, деленному на 8, а затем округ- ленному в большую сторону. Чем больше количество экстентов в расчете на одно и то же количество страниц, тем выше фрагментация Ехьелг ЯнгСсЬеэ Количество операций перехода от одного экстента к другому, выполненных в модуле ОВСС в ходе перебора страниц таблицы или индекса.
Это — еще один показатель, позволяющий оценивать степень фрагментации: чем больше количество переходов, которые пришлось выполнить дпя просмотра одного и того же количества страниц, тем выше степень фрагментации Ачд. Радев рег ехсепг. Среднее количество распределенных страниц в расчете на один экстент. При полном заполнении экстентов этот показатель имеет значение 8 5сап Репэ1Су (Везс соопсг Асгиа1 Сосок) Показатель веэс соопс определяет идеальное количество переходов с одного экстента на другой при условии безукоризненно качественного рас- положения данных в таблице. Показатель Ассизс аоопс показывает факти- ческое количество переходов с одного экстента на другой. Показатель ясзп репэ1су позволяет узнать плотность полного просмотра — процентное значение, полученное путем деления идеального количества переходов на фактическое количество переходов Еодсса1 Ясап РгаджепьаС1ол Процентная доля смещенных страниц (страниц, не находящихся на пред- назначенном для них месте в заданной последовательности), которая определяется путем просмотра страниц листового уровня индекса.
Данный показатель характеризует только результаты операций полного просмотра, относящиеся к кластеризованной таблице. Как смещенная рассматривается такая страница, для которой следующая страница, указанная в схеме рас- пределения индекса ((пбех Айосабоп Мар — (АМ), отличается от той, на кото- рую направлен указатель следующей страницы на странице листового узла Этот показатель позволяет определить, имеются ли какие-либо экстенты, не находящиеся физически рядом с тем зкстентом, с которым они должны находиться рядом логически. Показатель ехсепс Ясап Ргздмепгзг1оп дает возможность узнать, не нарушена ли физическая последовательность страниц листового уровня индекса(хотя при этом логическая последовательность может оставаться правильной), а также выяснить, какая процентная доля зкстентов хранится с нарушением заданного порядка следования ЕхСепг 5сап Ргадпепгагсоп Ачд.
Вугез тгее рег раде Среднее количество свободных байтов на страницах, считанных в результате полного просмотра. Этот показатель может принимать неоправданно высо- кое значение, если используемые строки имеют большую длину. Например, если строки имеют длину 4040 байтов, то на каждой странице помещается только одна строка, а среднее количество свободных байтов всегда со- ставляет приблизительно 4020 байтов. При этом создается впечатление, что среднее количество свободных байтов весьма велико, но при такой величине строки фактически не может быть достигнуто более низкое значение данного показателя Ачд. Раде Цепэ1Су (Ро11! Средняя плотность страницы (в процентах).