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

Problemy z fragmentacją serwera SQL

Indeksy klastrowe kontrolują kolejność danych na dysku. Jest to jeden z głównych powodów, dla których zwykle zaleca się skonfigurowanie zawsze rosnącego klucza liczby całkowitej, który będzie działał jako indeks klastrowy. W ten sposób, gdy więcej danych jest dodawanych do tabeli, są one dodawane na końcu aktualnie istniejących danych.

Jeśli nie jest to liczba automatycznie zwiększająca się, a nowe wiersze mogą zawierać wartości, które byłyby uporządkowane gdzieś pomiędzy istniejącymi wartościami, SQL Server zasadniczo wypchnie dane na dysk, do którego należą (aby zachować kolejność wartości kluczy indeksu klastrowanego), powodując fragmentację i potencjalnie poważne obciążenie, ponieważ zapisy we/wy dodatkowo spowalniają bazę danych.

Podejrzewam, że masz ten sam problem z wartościami UserRecord.

Więc co bym zrobił, to dodać osobny klastrowany klucz główny z automatycznym zwiększaniem do każdej tabeli i przerobić referencje i zapytania FK tam, gdzie to konieczne.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zainstalować sqlcmd i bcp w Red Hat?

  2. Wykrywanie dat NULL i wyświetlanie pustego ciągu w SSRS

  3. Plik CSV dzielący moje dane wierszy na osobne wiersze

  4. Co robi program SQL Server z żądaniem przekroczenia limitu czasu?

  5. Rozpocznij pierwszy dzień tygodnia jako niedziela w SQL