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

SQL Server — łączenie dużych tabel bez blokowania danych

Zmień swój interfejs, aby używać NOLOCK lub READ UNCOMMITTED podczas wykonywania wyborów .

Nie można NOLOCK MERGE, INSERT lub UPDATE, ponieważ rekordy muszą być zablokowane w celu wykonania aktualizacji. Możesz jednak NIE ZABLOKOWAĆ WYBORÓW.

Pamiętaj, że powinieneś używać tego ostrożnie. Jeśli brudne odczyty są w porządku, śmiało. Jeśli jednak odczyty wymagają zaktualizowanych danych, musisz wybrać inną ścieżkę i dokładnie dowiedzieć się, dlaczego łączenie rekordów 3M powoduje problem.

Byłbym skłonny założyć się, że większość czasu spędza się na czytaniu danych z dysku podczas komendy scalania i/lub pracy w sytuacjach braku pamięci. Być może lepiej będzie po prostu włożyć więcej pamięci RAM do serwera bazy danych.

Idealną ilością byłoby posiadanie wystarczającej ilości pamięci RAM, aby w razie potrzeby wciągnąć całą bazę danych do pamięci. Na przykład, jeśli masz bazę danych o pojemności 4 GB, upewnij się, że masz 8 GB pamięci RAM... oczywiście na serwerze x64.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Różnica między JOIN a INNER JOIN

  2. Przechwytywanie liczby z zapytania SQL

  3. Zbuduj dynamiczną listę wartości instrukcji INSERT

  4. Tablix:Powtarzanie wierszy nagłówka na każdej stronie nie działa — Report Builder 3.0

  5. Czy MS SQL Server między obejmuje granice zakresu?