Published on

April 8, 2016

Compreendendo os Tipos de Páginas do SQL Server

Quando se trata de aprender SQL Server, é importante começar com uma base sólida. Assim como um prédio precisa de uma base forte para estabilidade, entender os conceitos básicos do SQL Server é crucial para construir uma base de conhecimento sólida. Neste artigo, exploraremos o conceito de identificação de tipos de páginas no SQL Server.

Recentemente, durante um exercício de consultoria para um cliente, me deparei com um DBA experiente que trabalhava com SQL Server há mais de uma década. Ele estava tentando ler as páginas do SQL Server usando o comando DBCC, especificamente o comando DBCC PAGE(). No entanto, ele não sabia como identificar a página em que estava trabalhando.

Curioso para ajudá-lo, pedi para ele me mostrar o script que estava usando. Para minha surpresa, ele estava usando o comando DBCC PAGE() aleatoriamente, sem uma abordagem estruturada. Decidi orientá-lo em um método mais estruturado para identificar as páginas associadas a uma tabela específica.

Aqui está um exemplo de como podemos obter as páginas associadas a uma tabela específica:

USE AdventureWorks2016
GO
-- Examine as alocações de páginas de dados na tabela Person.Address usando a nova DMF sys.dm_db_database_page_allocations
SELECT *
FROM sys.dm_db_database_page_allocations(db_id('AdventureWorks2016'), 
object_id('Person.Address'), 1, null, 'DETAILED')
WHERE page_type_desc = 'DATA_PAGE'

Ao executar essa consulta, podemos obter uma lista de páginas de dados que foram alocadas para uma determinada tabela. Uma vez que temos essas informações, podemos visualizar facilmente os dados da tabela usando o comando DBCC PAGE().

Por exemplo, para visualizar a primeira página GAM (Global Allocation Map) no arquivo 1, podemos usar o seguinte comando:

-- habilitar TF 3604
DBCC TRACEON (3604)
GO
-- visualizar a primeira página GAM no arquivo 1, a primeira página GAM é a página 2 do arquivo de dados,
-- verifique isso olhando para o campo de tipo de página, m_type.
DBCC PAGE (11, 1, 2, 1)
GO

Após executar esse comando, podemos ver que o tipo de página para a página GAM é 8. No SQL Server, cada tipo de página tem um valor específico:

  • 1 – Página de dados
  • 2 – Página de índice
  • 3 e 4 – Páginas de texto
  • 8 – Página GAM
  • 9 – Página SGAM
  • 10 – Página IAM
  • 11 – Página PFS

Ao entender esses tipos de página, podemos consultar facilmente a página de dados usando o comando DBCC PAGE(). Por exemplo:

-- usando dados de sys.dm_db_database_page_allocations - visualizar página de dados e revisar linhas
DBCC PAGE (11, 1, 10624, 1)
GO

Neste caso, o m_type (tipo de página) será 1, indicando uma página de dados.

Embora esse tópico possa parecer profundamente interno sobre como o SQL Server funciona, é importante ter uma compreensão fundamental desses conceitos. Como profissional do SQL Server, pode haver cenários em que você precise usar comandos DBCC para visualizar dados internamente.

Agora, gostaria de ouvir você. Você já usou comandos DBCC para visualizar dados internamente? Em quais casos você os achou úteis? Por favor, compartilhe suas experiências nos comentários abaixo.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.