sql >> Database teknologi >  >> RDS >> Sqlserver

SQL Server 2005 Hukommelsestryk og tempdb skriveproblem

En høj diskkølængde betyder ikke, at du har en I/O-flaskehals, hvis du har et SAN eller NAS, du vil måske se på andre ekstra tællere. Tjek SQL Server Urban Legender diskuteret for flere detaljer.

1:Følgende operationer bruger i høj grad tempdb

  • Gentagne oprettelse og slip af midlertidige tabeller (lokale eller globale)
  • Tabelvariabler, der bruger tempdb til opbevaringsformål
  • Arbejdstabeller tilknyttet CURSORER
  • Arbejdstabeller knyttet til en ORDER BY-klausul
  • Arbejdstabeller knyttet til en GROUP BY-sætning
  • Arbejdsfiler tilknyttet HASH PLANS

Disse SQL Server 2005-funktioner bruger også tempdb i høj grad:

  • versionering på rækkeniveau (snapshotisolation)
  • genopbygning af onlineindeks

Som nævnt i andre SO-svar læs denne artikel om bedste praksis for at øge tempdb-ydeevnen.

2:At se på mængden af ​​ledig RAM på serveren, dvs. at se på WMI-tælleren Hukommelse->Available Mbytes hjælper ikke, da SQL Server vil cache datasider i RAM, så enhver db-server, der kører længe nok, vil have lidt ledig RAM.
De tællere, du bør se på, som er mere meningsfulde til at fortælle dig, om tilføjelse af RAM til serveren hjælper, er:
SQL Server Instance:Buffer Manager->Forventet sidelevetid (i sekunder) En værdi under 300-400 sekunder vil betyde, at siderne ikke er ret lange i hukommelsen, og at data løbende bliver læst ind fra diske. Servere, der har en lav forventet sidelevetid, vil drage fordel af ekstra RAM.
og
SQL Server Instance:Buffer Manager->Buffer Cache hit Ratio Dette fortæller dig procentdelen af ​​sider, der blev læst fra RAM, der ikke behøvede at pådrage sig en læsning fra disk, et cache hit ratio lavere end 85 vil betyde, at serveren vil drage fordel af yderligere RAM

3 :Ja, det kan ikke gå galt her. Det anbefales at have tempdb på et separat sæt diske. Se denne KB-artikel under overskriften:Flytning af tempdb-databasen om hvordan man gør dette.



  1. Sideinddeling i Laravel 4 fungerer for én side. men fungerer ikke for en anden

  2. 2 måder at returnere ASCII-koden for en given karakter i MariaDB

  3. GROUP BY interval overlappende tidsstempel MySQL-forespørgsel

  4. Eksporterer stor MySql-tabel