SQL Serverの内部構造についていくつか質問があります。
データベースにテーブルがあるとしましょう。
SGAMおよびGAMページは、単一のGAM間隔(〜4GB)内で共有エクステントと均一エクステントを追跡し、ページ/エクステントを割り当てるときに適切なタイプのエクステントを見つけるのに役立ちます(最初の8ページは、混合エクステントとそれらのページの位置から割り当てられます) IAMページへのレコーダー、およびその後のGAMエクステント(均一エクステント)からのこの情報は、次のチェーンIAMページに格納されます)。
たとえば、テーブルのページが割り当てられ、テーブルのサイズが8ページを超えていて、しばらくしてから行が削除され、再利用可能な領域が残ったとします。SQL Serverは、エクステントに空き領域があることをどのように認識しますか?
ページには空き領域のサイズに関する情報がありますが、すべてのページをチェックするには時間がかかりすぎます。SGAM&GAMページのビットは、extendが割り当てられているか、いくつかの空きページがあることを除いて何も通知しません(ページ全体が部分的にではなく、空きです)。
ファイルヘッダー、SGAM、GAM、IAMページは、ファイル内の最初のページに含まれます。実際にそれらを指すデータ構造は何ですか?