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

Diagnosticering af dødvande i SQL Server 2005

Ifølge MSDN:

http://msdn.microsoft.com/en-us/library/ms191242.aspx

Når enten READ COMMITTED SNAPSHOT eller ALLOW SNAPSHOT ISOLATION-databaseindstillingerne er TIL, vedligeholdes logiske kopier(versioner) for alle dataændringer, der udføres i databasen. Hver gang en række ændres af en specifik transaktion, gemmer forekomsten af ​​Database Engine en version af det tidligere overførte billede af rækken i tempdb. Hver version er markeret med transaktionssekvensnummeret for den transaktion, der foretog ændringen. Versionerne af ændrede rækker er kædet sammen ved hjælp af en linkliste. Den nyeste rækkeværdi gemmes altid i den aktuelle database og kædes sammen med de versionerede rækker, der er gemt i tempdb.

For kortvarige transaktioner kan aversion af en ændret række blive gemt i bufferpuljen uden at blive skrevet ind i diskfilerne i tempdb-databasen. Hvis behovet for den versionerede række er kortvarigt, vil den simpelthen blive droppet fra bufferpuljen og vil ikke nødvendigvis medføre I/O-overhead.

Der ser ud til at være en lille præstationsstraf for den ekstra overhead, men den kan være ubetydelig. Vi bør teste for at være sikre.

Prøv at indstille denne mulighed og FJERN alle NOLOCKs fra kodeforespørgsler, medmindre det virkelig er nødvendigt. NOLOCKs eller brug af globale metoder i databasens kontekstbehandler til at bekæmpe isolationsniveauer for databasetransaktioner er bånd til problemet. NOLOCKS vil maskere grundlæggende problemer med vores datalag og muligvis føre til valg af upålidelige data, hvor automatisk valg/opdatering af rækkeversionering ser ud til at være løsningen.

ALTER Database [StackOverflow.Beta] SET READ_COMMITTED_SNAPSHOT ON


  1. FEJL 2003 (HY000):Kan ikke oprette forbindelse til MySQL-server på '127.0.0.1' (111)

  2. Bedste måde at teste, om der findes en række i en MySQL-tabel

  3. Er det muligt at gemme værdien af ​​en udvalgt kolonne og bruge den til den næste?

  4. Bestilt antal på hinanden følgende gentagelser / dubletter