183
ГБ данных. В карте GAM приходится по одному биту на каждый экстент в покрываемом им
интервале. Если бит равен 1, то экстент свободен; если бит равен 0, то экстент задействован.
• Общая глобальная карта распределения (SGAM)
На SGAM-страницах записано, какие экстенты в текущий момент используются в каче-
стве смешанных экстентов и имеют как минимум одну неиспользуемую страницу. В каждой
карте SGAM содержится сведения об использовании 64 000 экстентов или о размещении
почти 4 ГБ данных. В карте SGAM приходится по одному биту на каждый экстент в покры-
ваемом им интервале. Если бит
равен 1, то экстент используется как смешанный экстент и
имеет свободную страницу. Если бит равен 0, то экстент не используется как смешанный
экстент, или он является смешанным экстентом, но все его страницы используются.
Это дает простые алгоритмы управления экстентами страниц. Для использования для
хранения объекта однородного экстента компонент СУБД Database Engine производит на
карте GAM
поиск бита 1 и заменяет его на бит 0. Для поиска смешанного экстента со сво-
бодными страницами компонент Database Engine производит поиск на карте SGAM бита 1.
Для размещения смешанного экстента компонент Database Engine производит на карте GAM
поиск бита 1 и заменяет его на бит 0, а затем устанавливает значение соответствующего бита
на карте SGAM равным 1. Для освобождения экстента компонент Database Engine устанав-
ливает
бит GAM равным 1, а соответствующий бит SGAM равным 0. Внутренние алгоритмы,
которые на самом деле используются компонентом Database Engine, более сложны, чем это
описано в данном подразделе, так как компонент Database Engine распространяет данные в
базе данных равномерно. Однако даже настоящие алгоритмы упрощаются из-за того, что от-
падает необходимость управления цепочками сведений о размещении экстентов.
Отслеживание свободного места
На страницы PFS (Page Free Space) записывается состояние размещения каждой стра-
ницы, информация о том, была ли отдельная страница использована или нет, а также количе-
ство свободного места на каждой странице. В PFS на каждую страницу приходится по одно-
му байту, хранящему информацию о том, была ли страница использована или нет, а если бы-
ла — то
пустая она, или ее заполнение находится в промежутке от 1 до 50 процентов, от 51
до 80 процентов, от 81 до 95 процентов или от 96 до 100 процентов.
После размещения объекта в экстенте компонент Database Engine использует PFS-
страницы для записи информации о том, какие страницы в экстенте использованы, а какие
свободны. Эти сведения используются компонентом Database Engine при выборе новой стра-
ницы для размещения объектов. Количеством свободного места на странице можно управ-
лять только в случае кучи и страниц с типами данных «Текст» и «Примечание». Это исполь-
зуется при поиске страницы, обладающей свободным местом, достаточным для сохранения в
ней новой добавляемой строки. Для индексов не требуется, чтобы отслеживалось свободное
место на странице
, так как место, в которое будет вставляться новая строка, назначается зна-
чениями ключа индекса.
PFS-страница является первой страницей после страницы заголовка файла в файле дан-
ных (страница номер 1). Потом следует GAM-страница (страница номер 2), а затем SGAM-