Okno 24x7 vs Noc

19

Gdzie mogę znaleźć zasoby, jak lepiej przejść do operacji 24x7? Jak to osiągają duże firmy z dużymi bazami danych? Nasze nocne prace, takie jak

  1. oczyścić stare dane
  2. reindex
  3. aktualizacja statystyk

wszystkie wydają się mieć krytyczny wpływ na nasz system ( tj . użytkownicy online i kanały danych w czasie rzeczywistym). Szukałem w Amazon każdej książki związanej z tym tematem i jak dotąd niczego nie znalazłem.

NealWalters
źródło
Czy chcesz przenieść bazy danych z jednego serwera na inny, czy może lepiej zarządzać wpływem swoich nocnych zadań?
Mike Fal
Jak zarządzać wpływem nocnych miejsc pracy? Tj. Jak zmniejszyć lub wyeliminować nocne „okno partii”.
NealWalters
2
@NealWalters Na jakiej wersji programu SQL Server używasz? (Przebudowywanie indeksu online i partycjonowanie tabel w celu wyrzucenia starych danych są dostępne w wersji Enterprise Edition)
Martin Smith
1
Jakiej wersji serwera SQL używasz? Przedsiębiorstwo / standard? Enterprise ma pewne funkcje, które pozwalają wykonywać niektóre operacje w trybie ONLINE przy minimalnym wpływie na użytkownika.
Kin Shah
1
@NealWalters Sprawdź Dzielenie DBCC CHECKDB przez wiele dni daje więcej szczegółów. Chociaż jest to więcej w przypadku CHECKDB, ale pomoże ci uzyskać więcej pomysłów. Daj nam znać, z której wersji korzystasz, aby ludzie tutaj mogli Ci pomóc.
Kin Shah

Odpowiedzi:

27

Utrzymywanie baz danych 24x7 to dość duży temat z wieloma opcjami do rozważenia. Ten szeroki temat ma wiele kwestii do rozważenia, ale możemy spróbować dotknąć niektórych z najważniejszych punktów.

To, co najpierw chcesz zidentyfikować, to fakt, że podczas gdy wiele operacji trwa 24 godziny na dobę, 7 dni w tygodniu, zwykle zdarza się, że mało się dzieje. Możesz wykorzystać te czasy do przeprowadzenia konserwacji, aby zmniejszyć ingerencję w bazę danych. Po drugie, musisz zarezerwować trochę czasu na całkowite przestoje (np. Dodatki Service Pack lub migracje baz danych), więc będziesz musiał negocjować pełne okna konserwacji z kierownictwem. W przypadku poszczególnych elementów należy rozważyć i zaplanować każdy z nich, a także odpowiednio wykorzystać swoje narzędzia. Ważne jest, abyś PLANował każdy z nich, a wszelkie podane przeze mnie przykłady są bardzo „twoje mile mogą się różnić”.

Kopie zapasowe

Kopie zapasowe zwykle nie będą miały dużego wpływu na obciążenia, ale należy je uwzględnić, ponieważ mogą zużywać dużo operacji we / wy. Będziesz chciał odpowiednio je zaplanować i monitorować czas potrzebny do ukończenia. Największą przeszkodą jest to, że podczas operacji 24x7 prawdopodobnie nie będziesz w stanie wykonywać pełnych kopii zapasowych w nocy każdej nocy w tygodniu. Będziesz chciał zaplanować, kiedy możesz zrobić pełne, kiedy bierzesz różnice i okresy przechowywania dla obu z nich w połączeniu z kopiami zapasowymi dziennika.

Jako przykład wykonuję pełne kopie zapasowe wszystkich moich baz danych w niedzielę wieczorem (najniższa aktywność), różnice we wszystkich pozostałych nocach (od poniedziałku do soboty). Trzymam ostatnie dwa tygodnie pełnych i różnic na dysku, logi z ostatnich dwóch dni. Daje mi to wystarczającą elastyczność do odzyskiwania, ale w razie potrzeby może być konieczne odzyskanie kopii zapasowych z taśmy.

Utrzymanie indeksu / statystyki

Jest to najczęstszy rodzaj aktywnej konserwacji, z którą będziesz musiał sobie poradzić. Nie możesz tego uniknąć, ale możesz złagodzić wpływ. Początkowa zasada jest taka, że ​​należy wykonywać czynności konserwacyjne tylko na obiektach, które tego potrzebują. Ogólne wytyczne dotyczą tylko odbudowywania indeksów, które są podzielone na ponad 30% i zawierają więcej niż 1000 stron . Jeśli masz statystyki automatycznych aktualizacji , poradzisz sobie z większością statystyk, ale codzienne zadanie synchronizacji nie jest złym pomysłem.

Jeśli masz wersję Enterprise, masz również dostęp do niektórych innych opcji zarządzania konserwacją. Przede wszystkim są to Online Index Rebuilds , które pozwolą ci odbudowywać indeksy, gdy są one nadal w użyciu (w zasadzie buduje indeks obok siebie, a następnie zamienia go). Można także wykorzystać partycjonowanie dla „dużych” tabel, aby skrócić niezbędny czas odbudowy.

Najlepszym rozwiązaniem dla tego rodzaju konserwacji, jeśli nie masz niestandardowych skryptów obsługujących te najlepsze praktyki, jest użycie skryptów konserwacji Ola Hallengren . Są one dość łatwe w konfiguracji i konfiguracji oraz mają wbudowane wiele z tych wytycznych.

Sprawdzanie spójności DBCC

W zależności od ogólnego obciążenia pracą może okazać się, że kontrole DBCC mogą zakłócać działanie. Istnieją dwa typowe sposoby zminimalizowania wpływu DBCC na bazy danych:

  • PHYSICAL_ONLY- Uruchomienie tej opcji sprawdzi bazy danych na poziomie strony fizycznej i pozwoli uniknąć bardziej inwazyjnego pełnego sprawdzania. Obejmuje to identyfikację najbardziej prawdopodobnych rodzajów korupcji.
  • Sprawdzanie przywróconej kopii - jeśli masz miejsce, możesz przywrócić bazę danych do innej instancji i uruchomić sprawdzenie DBCC względem przywróconej kopii. To opowie tę samą historię o twojej bazie danych na żywo, ale oczywiście nie będziesz ingerował w aktywność. Niektóre inne alternatywy tutaj działają na DBCC dla kopii dostarczonej z logiem lub kopii lustrzanej db.

Ten post na blogu zawiera więcej szczegółów na temat twoich opcji.

Zadania wsadowe / ETL

To naprawdę sprowadza się do sposobu projektowania procesów. Twój ETL zawsze może zakłócać bieżące tabele OLTP (podobnie jak każda inna aplikacja), więc pamiętaj o kilku kluczach:

  • Zaplanuj taką pracę wokół innych czynności konserwacyjnych i w okresach niskiej aktywności.
  • Odpowiedni rozmiar pracy, aby był dopasowany zarówno pod kątem wydajności, jak i aby partia nie była tak duża, że ​​blokuje stół na wiele godzin. Przykłady końców spektrum: wiersz po agonizującym wierszu (RBAR) w porównaniu do usunięcia pojedynczego miliona wierszy.
  • Skorzystaj z tabel etapów i w razie potrzeby przetwarzaj dane offline. Dotykaj na żywo tylko wtedy, gdy jest to absolutnie konieczne.

Wniosek

Znowu jest tu wiele do omówienia. Nie jest to wyczerpujący przewodnik, ale ogólny przegląd niektórych podejść. Nie omawiałem nawet opcji wysokiej dostępności (takich jak Grupy dostępności i Klaster pracy awaryjnej). Będziesz musiał przejrzeć każdy przedmiot i opracować plan jego obsługi. Pod wieloma względami będziesz musiał także iterować i udoskonalać swoją pracę w miarę postępów.

Dodatkowe zasoby:

Najlepsze praktyki obsługi VLDB umiejętności SQL

Mike Fal
źródło
Uzgodniona, doskonała, pomocna, szczegółowa odpowiedź. Dzięki! Pracujemy przez to.
NealWalters
Innym czynnikiem, nad którym pracujemy, jest przeniesienie wielu przestarzałych danych do ODS (Operational Data Store), aby utrzymać główną bazę danych w jeszcze lepszym stanie. Odkryliśmy również, że „Aktualizacja statystyk” działa około 2 do 2,5 godziny każdego ranka, co wydaje się spowalniać ogólną wydajność. Czy „najlepszą praktyką” jest codzienne uruchamianie statystyk aktualizacji?
NealWalters
Zazwyczaj to zrobię, ale YMMV. Ryzyko braku aktualizacji statystyk powoduje, że statystyki stają się nieaktualne i zaczynają się pojawiać złe plany zapytań. Musisz przeanalizować, czy jest to problem, jeśli nie uruchamiasz statystyk aktualizacji co noc. Możesz dowiedzieć się więcej o rozstawianiu zadań związanych ze statystykami i ogólnie sprawdzić, jak działają Twoje zapytania.
Mike Fal