skip to Main Content

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

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Back To Top