Diverse domande su SGAM, GAM, IAM e PFS in SQL Server


8

Hai diverse domande sulla struttura interna di SQL Server.

Supponiamo che abbiamo una tabella in un database.

  1. Le pagine SGAM e GAM tengono traccia delle estensioni condivise e uniformi all'interno di un singolo intervallo GAM (~ 4 GB) e ci aiutano a trovare il tipo appropriato di estensione durante l'allocazione di pagine / estensioni (inizialmente le prime 8 pagine sono allocate da estensioni miste e le posizioni di tali pagine sono registratore alle pagine IAM, e successivamente dalle estensioni GAM (estensioni uniformi) e queste informazioni sono memorizzate nella pagina IAM concatenata successiva).

    Diciamo, le pagine per la tabella sono state allocate e le dimensioni della tabella sono più di 8 pagine e, qualche tempo dopo, le righe sono state eliminate, lasciando spazio riutilizzabile. In che modo SQL Server sa che le estensioni dispongono di spazio libero?

    Le pagine contengono informazioni sulla dimensione dello spazio libero, ma è troppo tempo per controllare ogni pagina. I bit nelle pagine SGAM e GAM non ci dicono nulla a parte che l'estensione è allocata o ha alcune pagine gratuite (l'intera pagina è gratuita, non parzialmente).

  2. Intestazione del file e pagine SGAM & GAM e IAM sono tra le prime pagine di un file. Quale struttura di dati indica effettivamente loro?

Risposte:


11

In che modo SQL Server sa che le estensioni dispongono di spazio libero?

SQL Server tiene traccia dello spazio libero sulla pagina, nelle tabelle heap e nelle pagine LOB utilizzando internamente la pagina PSF .

Inoltre, è possibile utilizzare sys.dm_db_file_space_usageDMV per scoprirlo total_page_count, allocated_extent_page_countnonché unallocated_extent_page_countall'interno di un database.

Le pagine PFS (Free Space) registrano lo stato di allocazione di ciascuna pagina, se una singola pagina è stata allocata e la quantità di spazio libero su ciascuna pagina. Il PFS ha un byte per ogni pagina, registrando se la pagina è allocata e, in tal caso, se è vuota, piena dall'1 al 50 percento, piena dal 51 all'80 percento, piena dall'81 al 95 percento o piena dal 96 al 100 percento.

Una pagina PFS è la prima pagina dopo la pagina di intestazione del file in un file di dati (pagina numero 1). Questa è seguita da una pagina GAM (pagina numero 2), quindi da una pagina SGAM (pagina 3). Esiste una pagina PFS di circa 8.000 pagine dopo la prima pagina PFS. Esiste un'altra pagina GAM 64.000 estensioni dopo la prima pagina GAM a pagina 2 e un'altra pagina SGAM 64.000 estensioni dopo la prima pagina SGAM a pagina 3. L'illustrazione seguente mostra la sequenza di pagine utilizzate dal Motore di database per allocare e gestire le estensioni.

Clicca qui per ingrandire - output usando DBCC PAGE

inserisci qui la descrizione dell'immagine

Fare riferimento a: All'interno del motore di archiviazione: GAM, SGAM, PFS e altre mappe di allocazione

Intestazione del file e pagine SGAM & GAM e IAM sono tra le prime pagine di un file. Quale struttura di dati indica effettivamente loro?

Non capisco questa domanda. La più piccola unità di archiviazione è una pagina. Otto pagine 8K formano un'estensione. Di seguito è riportato ciò che comprende una pagina di dati :

inserisci qui la descrizione dell'immagine

Consiglio vivamente di leggere il blog SQLSkills.com in cui Paul e il suo team blog molto sugli interni di SQL Server .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.