Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

E/A-Statistiken der SQL Server-Leistungsdatei

Hallo,

Festplatten-IO-Statistiken sind sehr wichtig für die Leistungskriterien von SQL Server.

Jede Transaktion in SQL Server macht IO, um Daten von der physischen Festplatte zum Puffer zu bringen, und genau das Gegenteil, wenn die Transaktion abgeschlossen ist, werden alle zugehörigen Daten vom Puffer auf die physische Festplatte übertragen.

Daher sind Festplattengeschwindigkeit und E/A-Statistiken sehr wichtig für Leistungskriterien.

Um IO-Statistiken und folgende Informationen anzuzeigen, können Sie das folgende Skript ausführen.

  • Maschinenname
  • Instanzname
  • SQL-Servername
  • Datenbankname
  • Logischer Name
  • Physischer Name
  • Laufwerk
  • Dateityp
  • Zustand
  • Größe auf der Festplatte
  • Wachstum
  • Anzahl der Lesevorgänge
  • Anzahl der Schreibvorgänge
  • IO_stall_read_ms
  • IO_stall_write_ms

select 
serverproperty('MachineName') 'machine_name'
,isnull(serverproperty('InstanceName'),'mssqlserver') 'instance_name'
,@@SERVERNAME 'sql_server_name'
,DB_NAME(mf.database_id) 'database_name'
,mf.name 'logical_name'
,mf.physical_name 'physical_name'
,left(mf.physical_name,1) 'disk_drive'
,mf.type_desc 'file_type'
,mf.state_desc 'state'
,case mf.is_read_only
when 0 then 'no'
when 1 then 'yes'
end 'read_only'
,convert(numeric(18,2),convert(numeric,mf.size)*8/1024) 'size_mb'
,divfs.size_on_disk_bytes/1024/1024 'size_on_disk_mb'
,case mf.is_percent_growth
when 0 then cast(convert(int,convert(numeric,mf.growth)*8/1024) as varchar) + ' MB'
when 1 then cast(mf.growth as varchar) + '%'
end 'growth'
,case mf.is_percent_growth
when 0 then convert(numeric(18,2),convert(numeric,mf.growth)*8/1024)
when 1 then convert(numeric(18,2),(convert(numeric,mf.size)*mf.growth/100)*8/1024)
end 'next_growth_mb'
,case mf.max_size
when 0 then 'NO-growth'
when -1 then (case mf.growth when 0 then 'NO-growth' else 'unlimited' end)
else cast(convert(int,convert(numeric,mf.max_size)*8/1024) as varchar)+' MB'
end 'max_size'

,divfs.num_of_reads
,divfs.num_of_bytes_read/1024/1024 'read_mb'
,divfs.io_stall_read_ms

,divfs.num_of_writes
,divfs.num_of_bytes_written/1024/1024 'write_mb'
,divfs.io_stall_write_ms

from sys.master_files as mf
left outer join sys.dm_io_virtual_file_stats(null,null) as divfs
on mf.database_id=divfs.database_id and mf.file_id=divfs.file_id;