sql >> Database >  >> RDS >> Sqlserver

SQL Server 2005 Geheugendruk en tempdb schrijft probleem

Een hoge schijfwachtrij betekent niet dat je een I/O-bottleneck hebt als je een SAN of NAS hebt, misschien wil je naar andere extra tellers kijken. Bekijk SQL Server Urban Legenden besproken voor meer details.

1:De volgende bewerkingen maken veel gebruik van tempdb

  • Herhaaldelijk maken en neerzetten van tijdelijke tabellen (lokaal of globaal)
  • Tabelvariabelen die tempdb gebruiken voor opslagdoeleinden
  • Werktabellen gekoppeld aan CURSORS
  • Werktabellen gekoppeld aan een ORDER BY-clausule
  • Werktabellen gekoppeld aan een GROUP BY-clausule
  • Werkbestanden gekoppeld aan HASH-PLANNEN

Deze SQL Server 2005-functies maken ook veel gebruik van tempdb:

  • versiebeheer op rijniveau (snapshotisolatie)
  • online index opnieuw opbouwen

Zoals vermeld in andere SO-antwoorden, lees dit artikel op best practice voor het verbeteren van tempdb-prestaties.

2:kijken naar de hoeveelheid vrij RAM op de server, d.w.z. kijken naar de WMI-teller Geheugen->Beschikbare MB's helpt niet omdat SQL Server gegevenspagina's in de cache opslaat in RAM, dus elke db-server die lang genoeg draait, heeft weinig vrije RAM.
De tellers waar u naar moet kijken die zinvoller zijn om u te vertellen of het toevoegen van RAM aan de server zal helpen, zijn:
SQL Server Instance:Buffer Manager->Paginalevensverwachting (in seconden) Een waarde van minder dan 300-400 seconden betekent dat Pages niet erg lang in het geheugen zitten en dat er voortdurend gegevens van schijven worden ingelezen. Servers met een lage paginalevensduur hebben baat bij extra RAM.
en
SQL Server Instance:Buffer Manager->Buffer Cache hit Ratio Dit vertelt u het percentage pagina's dat uit RAM is gelezen en dat niet van de schijf hoeft te worden gelezen. Een cache-hitratio lager dan 85 betekent dat de server profiteert van extra RAM

3 :Ja, kan hier niet fout gaan. Het wordt aanbevolen om tempdb op een aparte set schijven te hebben. Bekijk dit KB-artikel onder de kop:De tempdb-database verplaatsen over hoe dit te doen.



  1. mysql group_concat brengt geen volledige gegevens mee

  2. Definieer de naam van de klasse dynamisch in het peewee-model

  3. Een standaardwaarde instellen voor een bestaande kolom

  4. Hoe een groot aantal records op te slaan in de MySql-database?