Есть несколько вопросов о внутренней структуре SQL Server.
Предположим, что у нас есть таблица в базе данных.
Страницы SGAM и GAM отслеживают общие и единообразные экстенты в пределах одного интервала GAM (~ 4 ГБ) и помогают нам найти соответствующий тип экстента при выделении страниц / экстентов (первоначально первые 8 страниц выделяются из смешанных экстентов, и позиции этих страниц записывать на страницы IAM, а затем - на экстенты GAM (единообразные экстенты), и эта информация сохраняется на следующей связанной IAM-странице).
Допустим, страницы для таблицы были выделены, а размер таблицы превышает 8 страниц, а спустя некоторое время строки были удалены, оставляя место для повторного использования. Как SQL Server знает, что экстенты имеют свободное место?
На страницах есть информация о размере свободного места, но проверка каждой страницы занимает слишком много времени. Биты на страницах SGAM и GAM не говорят нам ничего, кроме того, что расширение выделено или имеет несколько свободных страниц (вся страница свободна, а не частично).
Заголовок файла и страницы SGAM, GAM и IAM находятся среди первых страниц в файле. Какая структура данных фактически указывает на них?