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

1 ... 79 80 81 [ 82 ] 83 84 85 ... 346


Экстент

Экстент- это основная единица памяти, используемая при распределении пространства для таблиц и индексов. Экстент состоит из восьми смежных страниц данных объемом 64 Кбайт.

Для тех специалистов, которые знакомы только с принципами организации памяти в операционной системе, принятый в СУБД подход к распределению пространства на основе экстентов вместо использования самого пространства может оказаться довольно сложным для понимания. Ниже приведены наиболее важные сведения, касающиеся применения экстентов.

Если вслед за заполнением очередного экстента возникает необходимость записать следующую строку, то для этой строки вьщеляется пространство, объем которого определяется не размером самой строки, а размером целого нового экстента. Многие разработчики, впервые приступая к эксплуатации СУБД SQL Server, зачастую ошибаются в своих оценках потребности в пространстве, поскольку не учитывают, что вьщеление памяти происходит каждый раз в объеме одного экстента, а не одной строки.

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

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

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

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



Страница

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

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

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

Заголовок страницы

Строка данных 1

Строка данных 2

Строка данных 3

Свободное пространство

□Смещения строк

Рис. 8.1. Размещение данных на странице

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

Страницы данных.

Страницы индексов.

Страницы больших двоичных объектов (Binary Large Object- BLOB) (для данных Image, а также для основной части данных Text и Ntext).

Глобальная таблица распределения (Global Allocation Map - GAM) и разделяемая глобальная таблица распределения (Shared Global Allocation Map - SCAM).

Свободное пространство страницы (Page Free Space - PFS).

Таблица распределения индексов (Index Allocation Map - L\M).

Таблица массовых изменений.

Таблица дифференциальных изменений.



Страницы данных

Страницы данных обеспечивают хранение данных, относящихся к таблице. К данным, размещаемым на страницах, не относятся только данные типа BLOB, которые не определены с помощью опции text in row (текст, заданный в строке). В том случае, если строка включает поле столбца, который содержит данные типа BLOB, на странице данных хранятся обычные данные, в том числе 16-байтовый указатель, позволяющий узнать, где находится страница BLOB, содержащая двоичные данные BLOB. С другой стороны, если используется опция text in row, то текстовые данные типа BLOB хранятся вместе с обычными данными, если текстовые данные являются достаточно короткими, чтобы поместиться в доступном пространстве страницы (в противном случае вместо данньгх BLOB снова записывается 16-байтовый указатель на страницу BLOB).

Страницы индексов

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

Страницы BLOB

Страницы BLOB предназначены для хранения больших двоичных объектов. Для СУБД SQL Server таковыми являются любые данные, хранимые в полях типа Image, а также подавляющее большинство данньгх типа Ntext и Text. Страницы BLOB обладают важными отличительными особенностями по сравнению с другими страницами, предназначенными для хранения данньгх, которые обусловлены тем, что на этих страницах не находятся вообще какие-либо строки. Поле с данными типа BLOB может иметь длину до 2 Гбайт, поэтому предусмотрена возможность переносить эти данные с одной страницы на другую; следует отметить, что формат хранения данных этого типа остается примерно одинаковым, независимо от версии SQL Server. СУБД SQL Server распределяет такое количество страниц, которое требуется для хранения всех данных BLOB, но нет никакой гарантии, что подряд идущие страницы будут смежными, поскольку страницы BLOB могут быть расположены в любом месте одного или нескольких файлов базы данных.

Как было указано выше, если данные типа BLOB не хранятся непосредственно в строке, то связь между строкой и отдельно хранимыми данными типа BLOB поддерживаются с помощью указателя. В версии SQL Server 7.0 были внесены изменения, касающиеся того, какую структуру имеет этот указатель и как СУБД SQL Sei-ver осуществляет переход к данным BLOB. В SQL Server 6.5 и предыдущих версиях страницы BLOB были соединены в цепочку, подобно связному списку. Чтобы найти любую страницу, на которой хранится часть данных BLOB, необходимо было перейти в начало, а затем последовательно перемещаться по страницам, представляющим рассматриваемые данные BLOB. Если же требовалось проведение в той и,аи иной форме поиска в тексте или в двоичных данных, то такая организация хранения данных оказывалась полностью неудовлетворительной, учитывая то, что приходится применять последовательный просмотр данных. Но начиная с версии 7.0 вместо последовательной организации страницы стала применяться структура сбалансированного дерева



1 ... 79 80 81 [ 82 ] 83 84 85 ... 346

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