Szczegóły ebooka

SQL Server - zaawansowane techniki rozwiązywania problemów i poprawiania wydajności

SQL Server - zaawansowane techniki rozwiązywania problemów i poprawiania wydajności

Dmitri Korotkevitch

Ebook

Najlepsze praktyki i techniki

Książka ta jest przeznaczona dla praktyków i zawiera wyczerpujący przegląd najlepszych metod rozwiązywania problemów w systemie Microsoft SQL Server oraz poprawiania jego wydajności. Inżynierowie, programiści i administratorzy baz danych dowiedzą się, jak identyfikować problemy związane z wydajnością, traktować je w sposób całościowy i ustalać priorytety działań związanych z dostrajaniem, aby osiągnąć najwyższą wydajność systemu.

Autorem książki jest Dmitri Korotkevitch - posiadacz tytułów Microsoft Data Platform MVP i Microsoft Certified Master (MCM). Wyjaśnia w niej zależności między komponentami środowiska SQL Server. Dzięki temu można się dowiedzieć, jak szybko zdiagnozować system i odkryć pierwotną przyczynę każdego problemu. Techniki przedstawione w tej książce można zastosować we wszystkich wersjach SQL Server. Dotyczą zarówno środowiska zainstalowanego w siedzibie firmy, jak i w chmurze.

Zagadnienia przeanalizowane w książce:

- Radzenie sobie z problemami wydajnościowymi występującymi w SQL Server

- Narzędzia, metody i technologie umożliwiające przeprowadzanie testów diagnostycznych w SQL Server

- Kontrola stanu instalacji SQL Server

- Zależności pomiędzy komponentami SQL Server

- Poprawa wydajności SQL Server i redukcja wąskich gardeł

- Wykrywanie źle zoptymalizowanych zapytań i nieefektywnych planów wykonania zapytań

- Wykrywanie niewydajnych indeksów i typowych problemów związanych z projektowaniem bazy danych

- Zastosowanie poznanych technik w bazach danych Microsoft Azure SQL, Azure SQL Managed Instances oraz Amazon RDS for SQL Server

"Świetny zbiór technik, wskazówek i skryptów pozwalających radzić sobie z problemami zarówno w sposób reaktywny, jak i proaktywny. Szkoda, że nie miałem takiej książki 25 lat temu, gdy zaczynałem pracę z bazą danych SQL Server.

-Thomas Grohser

Architekt infrastruktury SQL Server

Dmitri Korotkevitch jest posiadaczem tytułów Microsoft Data Platform MVP i Microsoft Certified Master (SQL Server). Ma wieloletnie doświadczenie w branży IT. Wiedzę związaną z produktem Microsoft SQL Server zdobył będąc programistą aplikacji i baz danych, administratorem i architektem. Dmitri specjalizuje się w projektowaniu, rozwijaniu i dostrajaniu złożonych systemów OLTP, które działając przez całą dobę obsługują tysiące transakcji na sekundę. Obecnie kieruje zespołem ds. usług bazodanowych w Chewy.com oraz świadczy usługi konsultacyjne i szkoleniowe w zakresie systemu SQL Server dla klientów z całego świata.

  • Spis treści
  • Wstęp
  • Podziękowania
  • Rozdział 1
  • Instalowanie i konfigurowanie systemu bazy danych SQL Server
    • Rozważania dotyczące sprzętu i systemu operacyjnego
      • Procesor
      • Pamięć
      • Podsystem dyskowy
      • Sieć
      • Systemy operacyjne i aplikacje
      • Wirtualizacja i środowiska chmurowe
    • Konfigurowanie SQL Server
      • Wersja SQL Server oraz poziom wdrożenia poprawek
      • Natychmiastowa inicjalizacja pliku
      • Konfigurowanie bazy tempdb
      • Opcje śledzenia
      • Opcje serwera
    • Konfigurowanie baz danych
      • Ustawienia dotyczące bazy danych
      • Ustawienia związane z dziennikiem transakcji
      • Pliki danych i grupy plików
    • Analizowanie dziennika błędów w SQL Server
    • Konsolidacja instancji i baz danych
    • Efekt obserwatora
    • Podsumowanie
    • Zestawienie metod rozwiązywania problemów
  • Rozdział 2
  • Model wykonawczy SQL Server i statystyka oczekiwania
    • SQL Server architektura wysokopoziomowa
    • SQLOS i model wykonawczy systemu
    • Statystyka oczekiwania
    • Dynamiczne widoki zarządzania związane z modelem wykonawczym produktu SQL Server
      • sys.dm_os_wait_stats
      • sys.dm_exec_session_wait_stats
      • sys.dm_os_waiting_tasks
      • sys.dm_exec_requests
      • sys.dm_os_schedulers
    • Opcja Resource Governor
    • Podsumowanie
    • Zestawienie metod rozwiązywania problemów
  • Rozdział 3
  • Działanie podsystemu dyskowego
    • Anatomia podsystemu operacji wejścia i wyjścia w środowisku SQL Server
      • Zarządzanie procesami oraz operacje wejścia i wyjścia
      • Odczytywanie danych
      • Zapisywanie danych
    • Podsystem pamięci masowej analiza całościowa
      • Widok sys.dm_io_virtual_file_stats
      • Liczniki wydajnościowe oraz wskaźniki związane z systemem operacyjnym
      • Wirtualizacja, HBA i urządzenia pamięci masowej
    • Dostrajanie punktów kontrolnych
    • Typy oczekiwania związane z operacjami wejścia i wyjścia
      • Typ oczekiwania ASYNC_IO_COMPLETION
      • Typ oczekiwania IO_COMPLETION
      • Typ oczekiwania WRITELOG
      • Typ oczekiwania WRITE_COMPLETION
      • Typ oczekiwania PAGEIOLATCH
    • Podsumowanie
      • Podsumowanie metod rozwiązywania problemów
  • Rozdział 4
  • Nieoptymalne zapytania
    • Problem nieoptymalnych zapytań
    • Statystyki wykonania oparte na magazynie planów
    • Zdarzenia rozszerzone i mechanizm monitorowania SQL Trace
    • Mechanizm monitorowania Query Store
      • Raporty z Query Store uzyskiwane w środowisku SQL Server Management Studio
      • Wykorzystywanie dynamicznych widoków zarządzania dostępnych w Query Store
    • Narzędzia innych firm
    • Podsumowanie
      • Podsumowanie metod rozwiązywania problemów
  • Rozdział 5
  • Przechowywanie danych i dostrajanie zapytań
    • Wzorce przechowywania danych i dostępu do nich
      • Tabele w magazynie opartym na wierszach
      • Indeksy oparte na B-drzewie
      • Indeksy złożone
      • Indeksy nieklastrowe
    • Fragmentacja indeksu
    • Statystyki i szacowanie liczności
      • Obsługa statystyk
      • Modele szacowania liczności
    • Analiza planu wykonania
      • Wykonanie w trybie wierszowym i wsadowym
      • Statystyki zapytań na żywo i profilowanie statystyk wykonania
    • Powszechnie spotykane problemy i przypadki nieefektywności
      • Nieefektywny kod
      • Nieefektywne przeszukiwanie indeksu
      • Niewłaściwy typ złączenia
      • Nadmierna liczba operacji wyszukiwania kluczy
    • Indeksowanie danych
    • Podsumowanie
      • Podsumowanie metod rozwiązywania problemów
  • Rozdział 6
  • Obciążenie procesora
    • Niezoptymalizowane zapytania i kod T-SQL
      • Nieefektywny kod T-SQL
      • Skrypty rozwiązujące problem wysokiego obciążenia procesora
      • Wzorce niezoptymalizowanych zapytań, na które należy zwracać uwagę
    • Kompilacja zapytania i buforowanie planu
      • Plany zależne od parametrów
      • Niezależność wartości od parametrów
    • Kompilacja i parametryzacja
      • Automatyczna parametryzacja
      • Parametryzacja prosta
      • Parametryzacja wymuszona
    • Równoległość
    • Podsumowanie
      • Podsumowanie metod rozwiązywania problemów
  • Rozdział 7
  • Problemy związane z pamięcią
    • Użycie i konfigurowanie pamięci w SQL Server
      • Konfiguracja pamięci w systemie SQL
      • Jaka ilość pamięci jest wystarczająca?
    • Alokacje pamięci
      • Administratorzy pamięci
      • Polecenie DBCC MEMORYSTATUS
    • Wykonywanie zapytania i przydziały pamięci
      • Optymalizacja zapytań wymagających dużych ilości pamięci
      • Sprzężenie zwrotne przydziału pamięci
      • Zarządzanie wielkością przydziałów pamięci
    • Wykorzystanie pamięci i rozwiązywanie problemów w przypadku implementacji In-Memory OLTP
    • Podsumowanie
      • Podsumowanie metod rozwiązywania problemów
  • Rozdział 8
  • Blokady, blokowanie i współbieżność
    • Typy blokad i ich zachowanie
      • Podstawowe rodzaje blokad
      • Kompatybilność blokad
      • Poziomy izolacji transakcji i zachowanie blokad
    • Problemy związane z blokowaniem
      • Rozwiązywanie w czasie rzeczywistym problemów z blokowaniem
      • Użycie raportu o zablokowanych procesach
      • Technologia Event Notifications i narzędzia monitorujące blokowanie
    • Zakleszczenia
      • Rozwiązywanie problemów związanych z zakleszczeniami
      • Blokowanie i indeksy
    • Optymistyczne poziomy izolacji
      • Poziom izolacji READ COMMITTED SNAPSHOT
      • Poziom izolacji SNAPSHOT
    • Blokady schematu
    • Eskalacja blokad
      • Rozwiązywanie problemów z eskalacją blokad
    • Typy oczekiwania związane z blokadami
      • Typ oczekiwania LCK_M_U
      • Typ oczekiwania LCK_M_S
      • Typ oczekiwania LCK_M_X
      • Typy oczekiwania LCK_M_SCH_S i LCK_M_SCH_M
      • Typy oczekiwania LCK_M_I* związane z blokadami intencjonalnymi
      • Typy oczekiwania LCK_M_R* związane z blokadami zakresów
    • Podsumowanie
      • Podsumowanie metod rozwiązywania problemów
  • Rozdział 9
  • Użycie bazy tempdb i optymalizacja jej wydajności
    • Obiekty tymczasowe użycie i najlepsze wzorce postępowania
      • Tabele tymczasowe i zmienne tabelaryczne
      • Buforowanie obiektów tymczasowych
      • Parametry tabelaryczne
      • Zwykłe tabele w bazie tempdb i rejestrowanie transakcji
    • Wewnętrzne klienty bazy danych tempdb
      • Magazyn wersji
      • Przekazywanie danych do bazy tempdb
    • Typowe problemy związane z bazą tempdb
      • Współzawodniczenie o strony systemowe
      • Brak wolnego miejsca
    • Konfigurowanie bazy tempdb
    • Podsumowanie
      • Podsumowanie metod rozwiązywania problemów
  • Rozdział 10
  • Zatrzaski
    • Wprowadzenie do zatrzasków
    • Zatrzaski stronicowe
      • Przeciwdziałanie powstawaniu hotspotów opcja indeksu OPTIMIZE_FOR_SEQUENTIAL_KEY
      • Przeciwdziałanie powstawaniu hotspotów partycjonowanie haszujące
      • Przeciwdziałanie powstawaniu hotspotów mechanizm In-Memory OLTP
    • Inne typy zatrzasków
    • Podsumowanie
      • Podsumowanie metod rozwiązywania problemów
  • Rozdział 11
  • Dziennik transakcji
    • Wewnętrzne mechanizmy dziennika transakcji
      • Modyfikacje danych i rejestrowanie transakcji
      • Wpływ transakcje zatwierdzanych jawnie oraz automatycznie na rozmiar dziennika
      • Opóźnione utrwalanie
      • Rejestrowanie transakcji w technologii In-Memory OLTP
      • Wirtualne pliki dziennika
    • Konfigurowanie dziennika transakcji
    • Problemy związane z obcinaniem dziennika
      • Oczekiwanie typu LOG_BACKUP na ponowne użycie dziennika
      • Oczekiwanie typu ACTIVE_TRANSACTION na ponowne użycie dziennika
      • Oczekiwanie typu AVAILABILITY_REPLICA na ponowne użycie dziennika
      • Oczekiwanie typu DATABASE_MIRRORING na ponowne użycie dziennika
      • Oczekiwanie typu REPLICATION na ponowne użycie dziennika
      • Oczekiwanie typu ACTIVE_BACKUP_OR_RESTORE na ponowne użycie dziennika
      • Inne metody rozwiązywania problemów
    • Accelerated Database Recovery
    • Wydajność dziennika transakcji
    • Podsumowanie
      • Podsumowanie metod rozwiązywania problemów
  • Rozdział 12
  • Grupy dostępności AlwaysOn
    • Sposób działania grup dostępności AlwaysOn
    • Rodzaje kolejek w grupie dostępności
    • Replikacja synchroniczna i niebezpieczeństwo związane z typem oczekiwania HADR_SYNC_COMMIT
      • Zdarzenia rozszerzone związane z grupą dostępności
    • Replikacja asynchroniczna a węzły drugorzędne z uprawnieniami tylko do odczytu
      • Wpływ węzłów drugorzędnych z uprawnieniami tylko do odczytu
    • Równoległy proces powtarzania
    • Rozwiązywanie problemów związanych ze zdarzeniami trybu awaryjnego
      • Grupy dostępności i klaster pracy awaryjnej serwera Windows
      • Rozwiązywanie problemów z awariami
      • Kiedy nie wystąpi przejście do trybu awaryjnego?
    • Podsumowanie
      • Podsumowanie metod rozwiązywania problemów
  • Rozdział 13
  • Inne ważne typy oczekiwania
    • Typ oczekiwania ASYNC_NETWORK_IO
    • Typ oczekiwania THREADPOOL
    • Typy oczekiwania związane z kopiami zapasowymi
      • Poprawa wydajności tworzenia kopii zapasowych
      • Opcje BUFFERCOUNT i MAXTRANSFERSIZE
      • Częściowe kopie zapasowe bazy danych
    • Typy oczekiwania HTBUILD i inne HT*
    • Typy oczekiwania związane z wywłaszczaniem
      • Typ oczekiwania PREEMPTIVE_OS_WRITEFILEGATHER
      • Typ oczekiwania PREEMPTIVE_OS_WRITEFILE
      • Typy oczekiwania związane z uwierzytelnieniem
      • Typy oczekiwania OLEDB
    • Typy oczekiwania podsumowanie
    • Podsumowanie
      • Podsumowanie metod rozwiązywania problemów
  • Rozdział 14
  • Schemat bazy danych i analiza indeksów
    • Analiza schematu bazy danych
      • Tabele będące stertą
      • Indeksy dla typu danych uniqueidentifier
      • Rozległe i nieunikatowe indeksy klastrowe
      • Niezaufane klucze obce
      • Nieindeksowane klucze obce
      • Indeksy nadmiarowe
      • Wysokie wartości w kolumnach identyfikacyjnych
    • Analiza indeksów
      • Widok sys.dm_db_index_usage_stats
      • Widok sys.dm_db_index_operational_stats
      • Podejście holistyczne procedura składowana sp_Index_Analysis
    • Podsumowanie
      • Podsumowanie metod rozwiązywania problemów
  • Rozdział 15
  • SQL Server w środowisku wirtualnym
    • Wirtualizować czy nie wirtualizować? Oto jest pytanie
    • Konfigurowanie SQL Server w środowisku wirtualnym
      • Planowanie konfiguracji sprzętowej
      • Konfigurowanie procesora
      • Pamięć RAM
      • Pamięć masowa
      • Sieć komputerowa
    • Zarządzanie dyskami wirtualnymi
    • Strategia i narzędzia wykorzystywane podczas tworzenia kopii zapasowych
    • Rozwiązywanie problemów w środowiskach wirtualnych
      • Niewystarczająca moc procesora
      • Presja pamięci
      • Wydajność podsystemu dyskowego
    • Podsumowanie
      • Podsumowanie metod rozwiązywania problemów
  • Rozdział 16
  • SQL Server w chmurze
    • Platformy chmurowe ogólna analiza
      • Niezawodność platformy
      • Zarządzanie poziomem wydajności
      • Topologia
    • Rozważania dotyczące komunikacji i obsługa błędów tymczasowych
      • Dostęp do instancji bazy danych
      • Błędy tymczasowe
    • SQL Server w chmurowych maszynach wirtualnych
      • Konfiguracja podsystemu wejścia i wyjścia oraz jego wydajność
      • Konfiguracja mechanizmu wysokiej dostępności
      • Opóźnienia międzyregionalne
    • Zarządzane usługi Microsoft Azure SQL
      • Rozważania dotyczące architektury i projektowania usług
      • Sposoby rozwiązywania problemów
    • Usługa SQL Server RDS w Amazon AWS
      • CloudWatch
      • Performance Insights
    • Usługa Cloud SQL firmy Google
    • Podsumowanie
      • Podsumowanie metod rozwiązywania problemów
  • Dodatek A
  • Typy oczekiwania
    • ASYNC_IO_COMPLETION
    • ASYNC_NETWORK_IO
    • BACKUPBUFFER
    • BACKUPIO
    • BTREE_INSERT_FLOW_CONTROL
    • CXCONSUMER
    • CXPACKET
    • DIRTY_PAGE_TABLE_LOCK
    • DPT_ENTRY_LOCK
    • EXCHANGE
    • HADR_GROUP_COMMIT
    • HADR_SYNC_COMMIT
    • HTBUILD
    • HTDELETE, HTMEMO, HTREINIT oraz HTREPARTITION
    • IO_COMPLETION
    • LATCH_*
    • LCK_M_*
    • LCK_M_I*
    • LCK_M_R*
    • LCK_M_S
    • LCK_M_SCH_M
    • LCK_M_SCH_S
    • LCK_M_U
    • LCK_M_X
    • LOGBUFFER
    • OLEDB
    • PAGEIOLATCH*
    • PAGELATCH
    • PARALLEL_REDO_FLOW_CONTROL
    • PARALLEL_REDO_TRAN_TURN
    • PREEMPTIVE_OS_ACCEPTSECURITYCONTEXT
    • PREEMPTIVE_OS_AUTH*
    • PREEMPTIVE_OS_LOOKUPACCOUNTSID
    • PREEMPTIVE_OS_WRITEFILE
    • PREEMPTIVE_OS_WRITEFILEGATHER
    • QDS*
    • RESOURCE_SEMAPHORE
    • RESOURCE_SEMAPHORE_QUERY_COMPILE
    • THREADPOOL
    • WRITE_COMPLETION
    • WRITELOG
  • O autorze
  • Kolofon
  • Polecamy także
  • Tytuł: SQL Server - zaawansowane techniki rozwiązywania problemów i poprawiania wydajności
  • Autor: Dmitri Korotkevitch
  • ISBN: 9788375415018, 9788375415018
  • Data wydania: 2022-11-19
  • Format: Ebook
  • Identyfikator pozycji: e_2zld
  • Wydawca: Promise