Volume de IO por Banco de Dados
Neste post vamos ver como retornar o volume de IO por banco de dados em uma instância do SQL Server.
Uma instância do SQL Server pode ter vários bancos de dados, seria muito útil para o DBA ter informações estatísticas da atividade de cada banco. Um modo simples de obter estatísticas de IO é o uso da função dinâmica de sistema sys.dm_io_virtual_file_stats. Rode o script abaixo no seu servidor:
with IO_por_Banco as ( select db_name(database_id) as Banco, cast(sum(num_of_bytes_read + num_of_bytes_written) / 1048576 as decimal(12,2)) as IO_Total_MB, cast(sum(num_of_bytes_read) / 1048576 as decimal(12,2)) as IO_Leitura_MB, cast(sum(num_of_bytes_written) / 1048576 as decimal(12,2)) as IO_Escrita_MB from sys.dm_io_virtual_file_stats(NULL,NULL) as dm group by database_id) select row_number() over (order by IO_Total_MB DESC) as Ranking, Banco, IO_Leitura_MB, IO_Escrita_MB, IO_Total_MB, cast(IO_Total_MB / sum(IO_Total_MB) over() * 100 as decimal(5,2)) as Percentual from IO_por_Banco order by Ranking
O resultado traz o ranking por volume de IO do maior para o menor banco de dados. O DBA pode utilizar estas informações para planejar a realocação de bancos entre servidores, ou em um projeto de consolidação de servidores.
Até o próximo post,
Landry