- file-io records each file's drive: sys.dm_os_volume_stats from 2008 R2 SP1 (new capability VolumeStats, mount points included), otherwise derived from the path (D:\..., \server\share\, / on Linux), so 2005 works too - migration 0007: Volume and IntervalSeconds on FileIoSamples, and DiskHourly (rolled up by maintenance, kept HourlyDays) - DiskActivity sums files per drive: read/write IOPS, MB/s and latency weighted by I/O count - instance page: "Diskhastighed pr. drev" (table and MB/s + latency charts); time window analysis and its PDF: per drive against the same hours of the four previous weeks - SQLI-IO-001/002 now report per drive (one finding when the storage is slow, the slowest files in the evidence) instead of per file Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
4.8 KiB
Analyse af tidsrum
Hvad skete der på en instans mellem fx kl. 03 og 04 den 20. september? Siden Analyse af tidsrum viser det ud fra det, agenten har gemt, på samme måde som Statspack/AWR i Oracle.
Åbn en instans i webbrugerfladen, og vælg Analysér et tidsrum. Tidspunkterne i listerne over blocking og deadlocks på instansens side er også links: de åbner tidsrummet en halv time før og efter hændelsen.
Angiv fra og til (i webbrugerfladens tidszone, SQLInsight:Web:TimeZone), eller vælg Seneste time, I nat 00–06 eller I går. Højst 31 dage ad gangen. Hent som PDF giver det samme som rapport.
Indhold
| Afsnit | Hvad |
|---|---|
| Belastning | Forløb af CPU (SQL Server og andre processer), batch requests og compilations pr. sekund, page life expectancy, brugerforbindelser, memory grants pending og blokerede processer |
| Største ventetider | Ventetid pr. minut i tidsrummet, sammenlignet med normalen. Harmløse baggrundsventetider er udeladt |
| Tungeste forespørgsler | De forespørgsler, der brugte mest CPU, tid, læsninger eller blev kørt flest gange i tidsrummet, med tekst og database |
| Diskhastighed pr. drev | Læse- og skrive-IOPS, MB/s og gennemsnitlig latens pr. drev, sammenlignet med normalen (se nedenfor) |
| I/O-latens pr. fil | Læsninger, skrivninger og gennemsnitlig latens pr. databasefil |
| Blocking og deadlocks | Blocking-kæder over 5 sekunder (head blocker, antal blokerede, længste ventetid) og deadlocks med graf (.xdl) |
| Fund | Fund, der var aktive på et tidspunkt i tidsrummet |
Normalen er samme klokkeslæt og ugedag de 4 foregående uger (timeværdier). En ventetid markeres med rødt, når den er mindst dobbelt så høj som normalt og udgør mindst 5 % af ventetiden i tidsrummet. En måling markeres, når gennemsnittet er mindst 50 % værre end normalt (for page life expectancy: halvt så højt). Uden historik vises normalen som "–".
Hvor langt tilbage
Kun tidsrum, hvor agenten kørte og data stadig er gemt:
| Data | Opbevaring (standard, SQLInsight:Retention) |
|---|---|
| Målinger hvert 5. minut: belastning, ventetider, I/O, forespørgsler | 14 dage (RawDays) |
| Timeværdier: belastning, ventetider og diskhastighed pr. drev | 400 dage (HourlyDays) |
| Blocking og deadlocks | 90 dage (EventDays) |
Ligger tidsrummet længere tilbage end RawDays, bruges timeværdier. Det står på siden. Så er der ingen I/O pr. fil og ingen forespørgsler, men belastning og ventetider kan stadig sammenlignes.
Diskhastighed pr. drev
Agenten læser hvert 5. minut, hvor meget hver databasefil har læst og skrevet (sys.dm_io_virtual_file_stats: antal I/O'er, bytes og ventetid), og lægger filerne sammen pr. drev:
- IOPS = læsninger eller skrivninger pr. sekund, MB/s = data pr. sekund, latens = gennemsnitlig ventetid pr. læsning eller skrivning, vægtet efter antal I/O'er.
- Drevet kommer fra
sys.dm_os_volume_stats(SQL Server 2008 R2 SP1 og nyere), så mount points vises rigtigt. På ældre versioner udledes det af filens sti (D:\…→D:\), og et mount point under et drevbogstav tælles da med drevet. - Det er tal set fra SQL Server: kun SQL Servers egne filer, ikke andre programmer på samme drev.
- Instanssiden viser de seneste 24 timer med graf over MB/s og latens pr. drev. Fundene SQLI-IO-001 (læselatens på datafiler) og SQLI-IO-002 (skrivelatens på logfiler) gælder pr. drev, med de langsomste filer som målinger.
Et drev markeres med rødt, når datafiler har over 20 ms pr. læsning, logfiler over 5 ms pr. skrivning, eller latensen er mindst dobbelt så høj som normalt.
Tungeste forespørgsler
Agenten læser sys.dm_exec_query_stats hvert 5. minut (collector query-stats, kan ændres med SQLInsight:CollectorIntervals) og gemmer, hvad hver forespørgsel brugte siden sidst:
- Forespørgsler med samme struktur men forskellige værdier tælles som én (
query_hash). På SQL Server 2005 er en forespørgsel en sætning i en batch. - Kun de forespørgsler, der har kørt siden sidst, og blandt dem de 50 tungeste efter CPU, tid, læsninger og antal kørsler. Teksten gemmes én gang, højst 4.000 tegn. Ingen planer.
- En plan, der er kompileret om eller smidt ud af plan cache, starter forfra. Der tælles aldrig negativt. Efter en genstart af SQL Server går der én måling, før der er tal igen.
- Tal er kun så præcise som plan cache: forespørgsler med
OPTION (RECOMPILE)eller planer, der smides ud mellem to målinger, kan mangle.
Rettigheden er VIEW SERVER STATE fra grant-least-privilege.sql. SQL Server 2000 har ikke DMV'en, så her er der ingen forespørgselsstatistik.
Forespørgselstekst er kundedata. Den gemmes kun i kundens eget repository, vises kun i webbrugerfladen og i PDF'en hos kunden, og sendes aldrig til SQLInsight Hub. Se databehandling.md.