SELECT
(CASE WHEN ([is_modified] = 1) THEN 'Dirty' ELSE 'Clean' END) AS 'Page State',
(CASE WHEN ([database_id] =
32767) THEN 'Resource Database' ELSE
DB_NAME (database_id) END) AS 'Database Name',
COUNT
(*) AS 'Page Count',
cast((COUNT (*) * 8) as numeric(10,2))/1024 AS 'MBs used'
FROM sys.dm_os_buffer_descriptors
GROUP BY [database_id],
[is_modified]
ORDER BY [database_id],
[is_modified]
Então vamos entender os registros acima. O que acontece é que o SQL Server faz uso de memória para o Buffer Pool, que é onde ele mantém uma cópia em memória de dados acessados a partir de consultas feitas anteriormente para que ele não precise acessar o disco/storage caso a consulta seja feita novamente. A consulta acima mostra quão grande é o Buffer Pool para cada banco de dados.
Pages são as unidades de armazenamento de dados do SQL Server, e por padrão tem 8 KBytes. O resultado da coluna Page Reads, que pode ser Dirty ou Clean, diferencia o status dos pages. Existem os que contém dados que estão alinhados com o banco de dados (clean) e os que já foram modificados em memória mas ainda não em disco (dirty). Multiplicando o número de pages por 8Kb e dividindo por 1024 temos o número de MBs alocados por banco.
Hoje o post foi mais curto, mas espero que seja útil e obrigado por visitar o blog! :)
Muito útil Bona, gostei da maneira como após resolver o problema tu explica detalhadamente o funcionamento da query. Show de bola continua com as dicas =D
ResponderExcluir