Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Diagnozowanie zakleszczeń w SQL Server 2005

Według MSDN:

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

Gdy opcje bazy danych ODCZYTAJ ZATWIERDZONY ZDJĘCIE lub ZEZWÓL NA IZOLACJĘ ZDJĘĆ są WŁĄCZONE, kopie logiczne (wersje) są zachowywane dla wszystkich modyfikacji danych wykonywanych w bazie danych. Za każdym razem, gdy wiersz jest modyfikowany przez określoną transakcję, wystąpienie aparatu bazy danych przechowuje wersję wcześniej zatwierdzonego obrazu wiersza w tempdb. Każda wersja jest oznaczona numerem sekwencji transakcji, która dokonała zmiany. Wersje zmodyfikowanych wierszy są łączone za pomocą listy linków. Najnowsza wartość wiersza jest zawsze przechowywana w bieżącej bazie danych i połączona z wersjonowanymi wierszami przechowywanymi w tempdb.

W przypadku krótkotrwałych transakcji niechęć do zmodyfikowanego wiersza może zostać zbuforowana w puli buforów bez zapisywania w plikach dyskowych bazy danych tempdb. Jeśli potrzeba wersjonowanego wiersza jest krótkotrwała, zostanie po prostu usunięta z puli buforów i niekoniecznie pociągnie za sobą obciążenie we/wy.

Wydaje się, że za dodatkowe obciążenie występuje niewielka obniżka wydajności, ale może być ona znikoma. Powinniśmy przetestować, aby się upewnić.

Spróbuj ustawić tę opcję i USUŃ wszystkie NOLOCKs z zapytań o kod, chyba że jest to naprawdę konieczne. NOLOCKs lub użycie globalnych metod w obsłudze kontekstu bazy danych w celu zwalczania poziomów izolacji transakcji w bazie danych to pomoce w rozwiązaniu problemu. NOLOCKS zamaskuje fundamentalne problemy z naszą warstwą danych i prawdopodobnie doprowadzi do wybrania niewiarygodnych danych, gdzie automatyczne wybieranie / aktualizowanie wersji wiersza wydaje się być rozwiązaniem.

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. Poznaj przyczyny i rozwiązania korupcji bazy danych SQL Server

  2. PARSE() vs TRY_PARSE() w SQL Server:jaka jest różnica?

  3. Sprawdzanie kopii zapasowej serwera SQL

  4. Ulubione triki dostrajania wydajności

  5. Sprawdź, czy wiersz istnieje, w przeciwnym razie wstaw