Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Диагностициране на застой в SQL Server 2005

Според MSDN:

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

Когато опциите READ COMMITTED SNAPSHOT или ALOW SAPSHOT ISOLATION са ВКЛЮЧЕНИ, логическите копия (версии) се поддържат за всички модификации на данни, извършени в базата данни. Всеки път, когато ред се модифицира от конкретна транзакция, екземплярът на Database Engine съхранява версия на предварително записаното изображение на реда в tempdb. Всяка версия е маркирана с поредния номер на транзакцията, която е направила промяната. Версиите на модифицираните редове са свързани във верига с помощта на списък с връзки. Най-новата стойност на ред винаги се съхранява в текущата база данни и е свързана с версиите на редовете, съхранявани в tempdb.

За краткосрочни транзакции, отвращението на модифициран ред може да се кешира в буферния пул, без да бъде записано в дисковите файлове на базата данни tempdb. Ако необходимостта от реда с версии е краткотрайна, той просто ще бъде изхвърлен от буферния пул и може да не е непременно натоварен I/O.

Изглежда, че има леко намаление на производителността за допълнителните режийни разходи, но може да е незначително. Трябва да тестваме, за да сме сигурни.

Опитайте да зададете тази опция и ОТХОДИТЕ всички NOLOCK от кодови заявки, освен ако не е наистина необходимо. NOLOCK или използването на глобални методи в манипулатора на контекста на базата данни за борба с нивата на изолация на транзакциите в базата данни са ленти за проблема. NOLOCKS ще маскира фундаментални проблеми с нашия слой данни и вероятно ще доведе до избиране на ненадеждни данни, където автоматичното избор/актуализиране на версиите на реда изглежда е решението.

ALTER Database [StackOverflow.Beta] SET READ_COMMITTED_SNAPSHOT ON


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да генерирате скриптове за добавяне на ограничения по подразбиране към колона в множество таблици в база данни на SQL Server - SQL Server / TSQL Урок, част 94

  2. Конкатениране на стойности въз основа на ID

  3. Инсталирайте SQL Server 2019 на Mac

  4. Как да използвам ROW_NUMBER()?

  5. Референтен псевдоним (изчислен в SELECT) в клаузата WHERE