O SQL Server rastreia a alocação de página em vários bitmaps internos . Entre elas estão as páginas Global Allocation Map (GAM) e Page Free Space (PFS). Sabemos que as páginas GAM ocorrem em intervalos definidos de 511.232 páginas e que as páginas PFS ocorrem em intervalos definidos de 8.088 páginas.
Dado um arquivo de dados grande o suficiente, essa repetição acabará levando uma página a ser a próxima na fila para GAM e PFS. Fazendo as contas, isso acontece após 1.011 GAMs ou 63.904 páginas PFS na página número 516.855.552. Isso equivale a um único arquivo de sistema operacional com pouco menos de 4 TB. Como o tamanho máximo de um único arquivo de dados é de 16 TB ( source ), isso foi permitido.
Minha pergunta: quando um único arquivo de dados atinge 4 TB, qual tipo de página é a página 516855552 - GAM ou PFS? Para onde vai o outro? Este comentário de Paul Randal sugere que é desviado para uma das páginas não utilizadas na extensão GAM:
As extensões GAM, exceto a primeira, têm GAM, SGAM, DIFF_MAP, ML_MAP. Cada 4 TB da extensão GAM também terá uma página PFS.
Eu encontrei isso referenciado aqui , mas não explicado categoricamente:
-- There may be an issue with the ML map page position -- on the four extents where PFS pages and GAM pages live -- (at page IDs 516855552, 1033711104, 1550566656, 2067422208) -- but I think we'll be ok.
Nenhum outro resultado significativo aparece para mim nos googles.
Os bancos de dados aos quais tenho acesso possuem vários arquivos, portanto, nenhum atende ao requisito de tamanho.
Em um banco de dados SQL Server 2022 recém-criado, o script abaixo mostra que a página 516855552 é uma página PFS e 516855553 é uma página GAM.