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

Planowe utrzymanie bazy danych IS 24/7 w MS SQL Server

Wprowadzenie

Ten artykuł jest krótkim przeglądem głównych planowanych prac konserwacyjnych z bazą danych całodobowego systemu informacyjnego, który nie ma przestojów, a także podejść do ich wykonania w MS SQL Server.

Wszelkie komentarze i aktualizacje artykułu są mile widziane.

Zaplanowana konserwacja

Chciałbym zwrócić uwagę na następującą zaplanowaną konserwację:

  1. Zaplanowane kopie zapasowe z dalszą weryfikacją bez przywracania
  2. Zaplanowane przywracanie kopii zapasowych w celu weryfikacji ich wydajności
  3. Analiza urządzenia do przechowywania danych, które zawiera system i wszystkie niezbędne bazy danych
  4. Zaplanowane testowanie wymaganych usług
  5. Zaplanowana optymalizacja wydajności systemu
  6. Zaplanowane utrzymanie integralności danych
  7. Zaplanowana konserwacja walidacji danych

Najważniejsze są trzy pierwsze punkty, które zapewniają przywracanie systemu po różnych awariach. Jednak sugerowałbym również wykonanie co najmniej trzech punktów, aby użytkownicy mogli swobodnie pracować (a zatem wszystkie zapytania powinny być wykonywane szybko) i aby dane były sprawdzane we wszystkich systemach raportowania.

Aby zautomatyzować zaplanowaną konserwację, możliwe jest rozmieszczenie jej części w agencie lub harmonogramie Windows.

Szósty punkt opiera się na poleceniu CHECKDB.

Siódmy punkt dotyczy obszaru domeny używanego w systemie informacyjnym.

Opowiem szczegółowo o pierwszych pięciu punktach.

Zaplanowane kopie zapasowe z dalszą weryfikacją bez przywracania

Ponieważ istnieje wiele artykułów na ten temat, należy zauważyć, że tę zaplanowaną konserwację należy regularnie przeprowadzać na serwerze kopii zapasowych, a nie na serwerze głównym. Ten serwer backupu powinien zawierać aktualne dane (na przykład ten, który został uzyskany wraz z replikacją). Dodatkowo, musisz wykonać kopię zapasową wszystkich systemowych baz danych (z wyjątkiem tempdb) na każdej instancji MS SQL Server.

Gdy tworzenie kopii zapasowej nie powiedzie się lub skanowanie kopii zapasowej wykryje problem, należy zgłosić te informacje administratorom. Na przykład możesz je wysłać e-mailem.

Ważne jest, aby określić strategię tworzenia kopii zapasowych, która odpowie na następujące pytania:

  1. Jak często i kiedy powinniśmy tworzyć kopie zapasowe danych (pełny, różnicowy i dziennik transakcji)?
  2. Jak długo i kiedy powinniśmy usuwać kopie zapasowe?

Zaplanowane przywracanie kopii zapasowych w celu weryfikacji ich wydajności

Zalecam wykonanie tej procedury na serwerze kopii zapasowej za pomocą narzędzi innych firm lub PRZYWRÓĆ polecenie.

Gdy przywracanie kopii zapasowej nie powiedzie się, wymagane jest zgłoszenie tej informacji administratorom. Na przykład możesz je wysłać e-mailem.

Ponadto konieczne jest przywracanie kopii zapasowych baz danych systemu. Aby to zrobić, musisz przywrócić je jako zwykłą bazę danych użytkowników o nazwie, która różni się od nazw baz danych systemowych.

Analiza urządzeń do przechowywania danych zawierających system i wszystkie niezbędne bazy danych

Musisz przeanalizować, ile miejsca zajmuje każda baza danych, jak zmieniają się rozmiary plików i jak zmieniają się rozmiary wolnego miejsca na całym urządzeniu pamięci masowej. Na przykład, możesz wykonać to zadanie częściowo za pomocą automatycznego zbierania danych o plikach baz danych i dyskach logicznych systemu operacyjnego w MS SQL Server.

Możesz to sprawdzać codziennie, a następnie wysyłać wyniki. Jak zwykle możesz wysłać je na e-mail.

Konieczne jest również monitorowanie baz danych systemu, aby upewnić się, że wszystko działa poprawnie.

Ponadto ważne jest, aby przetestować urządzenia pamięci masowej, aby sprawdzić, czy są jakieś amortyzowane lub uszkodzone sektory.

Pamiętaj, że podczas testowania urządzenie powinno być wyłączone, a wszystkie dane powinny zostać skopiowane do innego urządzenia, ponieważ testowanie drastycznie je ładuje.

To zadanie jest ściśle związane z obowiązkami administratora systemu, więc odłożymy je na bok. Aby przejąć pełną kontrolę nad sprawą, musisz zautomatyzować dostarczanie raportów pocztą elektroniczną.

Polecam wykonanie tego testu dwa razy w roku.

Zaplanowane testowanie wymaganych usług

Przestój usługi to zła praktyka. Dlatego w przypadku awarii uruchomi się serwer zapasowy. Mimo to od czasu do czasu konieczne jest sprawdzenie logów. Ponadto możesz również pomyśleć o automatycznym gromadzeniu danych z dalszym powiadomieniem administratora, wysyłając wiadomość e-mail.

Niezbędne jest sprawdzanie zadań SQL Server Agent lub Windows Scheduler za pomocą automatycznego zbierania danych o wykonanych zadaniach w MS SQL Server.

Zaplanowana optymalizacja wydajności systemu

Obejmuje następujące aspekty:

  1. Automatyzacja defragmentacji indeksów w bazach danych MS SQL Server
  2. Automatyzacja zbierania danych o zmianach schematów baz danych w MS SQL Server. Możesz przywrócić kopię zapasową i porównać zmiany, na przykład za pomocą dbForge
  3. Automatyczne czyszczenie zablokowanych procesów w MS SQL Server
  4. Czyszczenie pamięci podręcznej procedur. Tutaj musisz określić, kiedy i co należy posprzątać
  5. Wdrażanie wskaźnika wydajności
  6. Tworzenie i modyfikowanie indeksów klastrowych

Ponadto zalecam wyłączenie AUTO_CLOSE funkcja.

Czasami, z różnych powodów, optymalizator paralelizuje zapytanie, co nie zawsze jest optymalne.

Dlatego istnieje kilka zaleceń, o których należy pamiętać:

  1. Jeśli otrzymujesz dużo danych, zostaw równoległość.
  2. Jeśli masz kilka danych, nie używaj równoległości.

Istnieją dwa parametry w ustawieniach instancji SQL Server odpowiedzialne za równoległość:

  1. maksymalny stopień równoległości. Aby wyłączyć równoległość, ustaw „1” jako wartość, co oznacza, że ​​tylko jeden procesor wykona kod.
  2. próg kosztów dla równoległości. Powinien być ustawiony domyślnie.

Istnieją dwie główne kolejki:

  1. kolejka czasu procesora (kolejka QCPU). Ma to miejsce, gdy zapytanie zostało włączone i czeka na jego wykonanie przez procesor.
  2. kolejka zasobów (kolejka QR). Ma to miejsce, gdy zapytanie czeka na zwolnienie zasobów w celu wykonania procesu.

Poniższa formuła opisuje wykonanie zapytania (T):

T=TP+TQR+TCPU+TQCPU, gdzie:

  • TP opracowuje czas na plan
  • TQR to czas oczekiwania na zasoby (kolejka QR)
  • TQCPU to czas oczekiwania w kolejce na niezwiązane zasoby (kolejka QCPU)
  • TCPU to czas na wykonanie zapytania

W widoku systemowym sys.dm_exec_query_stats:

  1. total_worket_time =TP+TCPU+TQCPU
  2. total_elapsed_time =TQR+TCPU

Wbudowane narzędzia nie pozwalają na dokładną ocenę czasu wykonania zapytania.

W większości przypadków total_elapsed_time zapewnia czas zbliżony do czasu wykonania zapytania.

Za pomocą śledzenia można dokładniej określić czas wykonania zapytania. Alternatywnie możesz rejestrować czas rozpoczęcia i zakończenia zapytania. Uważaj na ślady, ponieważ znacznie obciążają system. Dlatego lepiej wykonać ją na serwerze zapasowym i zebrać dane z serwera głównego. W takim przypadku zostanie załadowana tylko sieć.

Podczas zrównoleglania SQL Server alokuje N procesów do zapytania (w edycji Standart n<=4). Każdy proces wymaga czasu procesora na wykonanie zapytania (jeden proces nie zawsze musi być wykonywany na każdym rdzeniu).

Im więcej masz procesów, tym większe szanse, że niektóre zostaną zastąpione innymi, co prowadzi do zwiększenia TQCPU.

Wykonanie zapytania podczas zrównoleglania może zająć znacznie więcej czasu w następujących przypadkach:

  1. Niska przepustowość podsystemu dysku. W takim przypadku dekompozycja zapytania zajmuje znacznie więcej czasu.
  2. Dane mogą zostać zablokowane dla tego procesu.
  3. Nie ma indeksu dla predykatu, co prowadzi do skanowania tabeli.
    Uwagi:
    Musisz wyłączyć zapytania równoległe na serwerach, na których nie ma potrzeby wykonywania dużej selekcji (należy skrócić całkowity_czas_pracy ze względu na możliwy spadek TCPU i TQCPU). Aby to zrobić, musisz ustawić maksymalny stopień funkcji równoległości na '1', aby działał tylko jeden procesor.
    Ponadto, możesz użyć innych frameworków do zbudowania systemu, który określa wysoką wydajność baz danych . Ważne jest, aby zrozumieć, jak działają te struktury i jak interpretować pobrane liczby.

Jeśli chodzi o rozwój i modyfikację indeksów, a mianowicie indeksów klastrowych, głównym celem jest zrozumienie, jak ustawiona jest logika indeksów i jak to działa.

Pamiętaj, że klucze podstawowe i klastrowe nie oznaczają tego samego:

klucz podstawowy to kolumna lub zestaw kolumn, które sprawiają, że rekord jest unikalny w tabeli. Dla klucza podstawowego można utworzyć unikatowy indeks klastrowany lub nieklastrowany. Klucz podstawowy jest używany w innych tabelach jako klucz obcy w celu zapewnienia integralności danych.

indeks klastrowy jest drzewem B lub jego modyfikacją. Liście zawierają same dane, podczas gdy węzły przechowują informacje o indeksie. Ponadto indeks klastrowy może być również nieunikatowy. Mimo to polecam, aby był wyjątkowy.

Przypomnę, że B-drzewo to struktura przechowująca dane w kolejności filtrowanej według indeksu klastrowego. Dlatego ważne jest, aby pogrupować zmienne wybrane jako indeks klastrowy w porządku malejącym lub rosnącym. W przypadku indeksu klastrowego można użyć kolumn liczb całkowitych (tożsamości), a także danych i czasu. Mimo to kolumny takie jak unikalny identyfikator nie są odpowiednie, ponieważ te ostatnie prowadzą do regularnej restrukturyzacji B-drzewa, co zwiększy liczbę odczytów i zapisów na urządzeniu magazynującym, na którym znajduje się baza danych.

Ponadto musisz upewnić się, że indeks jest używany z widokiem systemowym sys.dm_db_index_usage_stats.

PS Konieczne jest sprawdzenie aktualności danych na serwerze backupu, a także sprawdzenie systemu, który synchronizuje te dane (np. replikacje).

Przeczytaj także:

Automatyzacja defragmentacji indeksów w bazach danych MS SQL Server

Automatyczne zbieranie danych o zmianach schematu bazy danych w MS SQL Server

Automatyczne usuwanie zablokowanych procesów w MS SQL Server

Rozwiązywanie problemów z długimi zapytaniami w MS SQL Server

Wdrażanie wskaźnika wydajności


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przewodnik dla początkujących po tablicach SQL

  2. Wybór narzędzia do monitorowania serwera SQL dopasowanego do Twoich potrzeb

  3. Jak odwoływać się do kluczy JSON zawierających znaki specjalne podczas korzystania z OPENJSON, JSON_QUERY i JSON_VALUE (SQL Server)

  4. Schemat serwera SQL i domyślny schemat

  5. Czy powinienem używać wbudowanej kolumny varchar(max) czy przechowywać ją w osobnej tabeli?