E-book details

Wydajna praca z MySQL. Efektywne i bezpieczne zarządzanie bazami danych

Wydajna praca z MySQL. Efektywne i bezpieczne zarządzanie bazami danych

Daniel Nichter

Ebook

Efektywny MySQL

To książka skierowana do programistów, którzy znają podstawy MySQL, choć niekoniecznie na zaawansowanym poziomie, i chcą zgłębić wiedzę na temat tej technologii, aby móc z niej korzystać w maksymalnie wydajny sposób. Stawia na naukę efektywności pracy - pokazuje i objaśnia rozwiązania pozwalające na szybkie i proste posługiwanie się relacyjnymi bazami danych. Co ważne, treść została zilustrowana wieloma przykładami dotyczącymi różnych elementów i mechanizmów MySQL, których zastosowanie umożliwia wysyłanie do bazy danych zoptymalizowanych zapytań.

Daniel Nichter prezentuje dobre praktyki, po które warto sięgać, aby tworzyć wydajny kod. Korzystając z wieloletniego doświadczenia w pracy z relacyjnymi bazami danych, podaje gotowe rozwiązania wraz z wyjaśnieniami umożliwiającymi wysyłanie nawet skomplikowanych zapytań przy minimalnym obciążeniu serwera. To cenne źródło wiedzy niezbędnej do szybkiej nauki praktycznego zastosowania MySQL.

W książce między innymi:

  • przykłady kodu i jego zastosowania
  • porady dotyczące tworzenia szybkich zapytań generujących jak najmniejsze obciążenie serwera
  • opisy narzędzi i mechanizmów do diagnostyki i optymalizacji działania baz danych MySQL

Wprowadzenie

Rozdział 1. Czas udzielenia odpowiedzi na zapytanie

  • Prawdziwa historia błędnie pojętej wydajności działania
  • Gwiazda polarna
  • Raport dotyczący zapytania
    • Źródła
    • Agregacja
    • Raportowanie
  • Analiza zapytania
    • Wskaźniki zapytania
    • Metadane i aplikacja
    • Wartości względne
    • Średnia, percentyle i maksimum
  • Poprawienie czasu udzielenia odpowiedzi na zapytanie
    • Bezpośrednia optymalizacja zapytania
    • Pośrednia optymalizacja zapytania
  • Kiedy optymalizować zapytania?
    • Wydajność działania wpływa na klienta
    • Przed wprowadzeniem i po wprowadzeniu zmiany w kodzie
    • Raz w miesiącu
  • Większa wydajność działania MySQL
  • Podsumowanie
  • Ćwiczenia praktyczne: identyfikacja wolno wykonywanych zapytań

Rozdział 2. Indeksy i indeksowanie

  • Fałszywe tropy dotyczące wydajności działania
    • Lepsze i szybsze komponenty komputera
    • Dostrajanie serwera MySQL
  • Indeksy MySQL - wprowadzenie
    • Tabele InnoDB są indeksami
    • Metody dostępu do tabeli
    • Wymóg w postaci skrajnego lewego prefiksu
    • EXPLAIN - plan wykonywania zapytania
    • Klauzula WHERE
    • Klauzula GROUP BY
    • Klauzula ORDER BY
    • Indeks pokrywający
    • Złączenia tabel
  • Indeksowanie - jak to wygląda z perspektywy serwera MySQL?
    • Poznanie zapytania
    • Zapytanie EXPLAIN
    • Optymalizacja zapytania
    • Wdrażanie i weryfikowanie
  • To był dobry indeks, dopóki.
    • Zmienione zapytania
    • Nadmierne, powielone i nieużywane
    • Wyjątkowa selektywność
    • To pułapka (gdy MySQL wybiera inny indeks)
  • Algorytmy złączania tabel
  • Podsumowanie
  • Ćwiczenia praktyczne: wyszukiwanie powielonych indeksów

Rozdział 3. Dane

  • Trzy tajemnice
    • Indeksy niekoniecznie okażą się pomocne
    • Im mniej danych, tym lepiej
    • Im mniej QPS, tym lepiej
  • Reguła najmniejszej ilości danych
    • Dostęp do danych
    • Magazyn danych
  • Usunięcie lub zarchiwizowanie danych
    • Narzędzia
    • Wielkość operacji hurtowej
    • Rywalizacja o blokadę rekordu
    • Pamięć masowa i czas
    • Paradoks binarnego dziennika zdarzeń
  • Podsumowanie
  • Ćwiczenia praktyczne: audyt dostępu do danych zapytania

Rozdział 4. Wzorce dostępu

  • MySQL nic nie robi
  • Destabilizacja wydajności działania po osiągnięciu wartości granicznej
  • Toyota i Ferrari
  • Wzorce dostępu do danych
    • Odczyt i zapis
    • Przepustowość
    • Wiek danych
    • Model danych
    • Izolacja transakcji
    • Spójność odczytu
    • Współbieżność
    • Dostęp do rekordów
    • Zbiór wynikowy
  • Zmiany w aplikacji
    • Audyt kodu
    • Przekazywanie operacji odczytu
    • Kolejkowanie operacji zapisu
    • Partycjonowanie danych
    • Nie używaj MySQL
  • Lepsze i szybsze komponenty komputera
  • Podsumowanie
  • Ćwiczenia praktyczne: opisz wzorce dostępu

Rozdział 5. Sharding

  • Dlaczego pojedyncza baza danych nie skaluje się zbyt dobrze?
    • Obciążenie aplikacji
    • Testy wydajności są syntetyczne
    • Zapis
    • Zmiana schematu
    • Operacje
  • Kamyki, nie głazy
  • Sharding - krótkie wprowadzenie
    • Klucz shardingu
    • Strategie
    • Wyzwania
  • Alternatywy dla shardingu
    • NewSQL
    • Oprogramowanie pośredniczące
    • Mikrousługi
    • Nie używaj MySQL
  • Podsumowanie
  • Ćwiczenia praktyczne: plan czteroletni

Rozdział 6. Wskaźniki serwera

  • Wydajność działania zapytania kontra wydajność działania serwera
  • Normalna i stabilna - najlepsza baza danych to nudna baza danych
  • Kluczowe wskaźniki wydajności działania
  • Dziedzina wskaźników
    • Czas udzielenia odpowiedzi
    • Współczynniki
    • Poziom użycia
    • Oczekiwanie
    • Błąd
    • Wzorce dostępu
    • Wskaźniki wewnętrzne
  • Spektra
    • Czas udzielenia odpowiedzi
    • Błędy
    • Zapytania
    • Wątki i połączenia
    • Obiekty tymczasowe
    • Polecenia składowane
    • Nieprawidłowe polecenie SELECT
    • Przepustowość sieci
    • Replikacja
    • Wielkość danych
    • InnoDB
  • Monitorowanie i ostrzeganie
    • Rozdzielczość
    • Szukanie wiatru w polu (wartości progowe)
    • Informowanie o ograniczeniach
    • Przyczyna i skutek
  • Podsumowanie
  • Ćwiczenia praktyczne: analiza kluczowych wskaźników wydajności działania
  • Ćwiczenia praktyczne: analiza wartości progowych i komunikatów ostrzeżeń

Rozdział 7. Opóźnienie replikacji

  • Podstawy
    • Źródło do repliki
    • Zdarzenia binarnego dziennika zdarzeń
    • Opóźnienie replikacji
  • Podstawowe przyczyny opóźnienia replikacji
    • Przepustowość transakcji
    • Odtwarzanie po awarii
    • Problemy z siecią
  • Niebezpieczeństwo - utrata danych
    • Replikacja asynchroniczna
    • Replikacja półsynchroniczna
    • Zmniejszenie opóźnienia replikacji - replikacja wielowątkowa
  • Monitorowanie
  • Czas odzyskiwania
  • Podsumowanie
  • Ćwiczenia praktyczne: monitorowanie opóźnienia krótszego niż 1 sekunda

Rozdział 8. Transakcje

  • Nakładanie blokad na rekordy
    • Blokada rekordu indeksu i następnego klucza
    • Blokady luk
    • Indeksy wtórne
    • Blokada zamiaru wstawienia
  • MVCC i dzienniki przywracania
  • Wielkość listy historii
  • Najczęściej pojawiające się problemy
    • Ogromne transakcje (wielkość transakcji)
    • Długo wykonywane transakcje
    • Transakcje przeciągające się
    • Transakcje porzucone
  • Zgłaszanie problemów
    • Aktywne transakcje - najnowsze
    • Aktywne transakcje - podsumowanie
    • Aktywna transakcja - historia
    • Transakcje zatwierdzone - podsumowanie
  • Podsumowanie
  • Ćwiczenia praktyczne: ostrzeżenie dotyczące wielkości listy historii
  • Ćwiczenia praktyczne: analiza blokad rekordów

Rozdział 9. Inne wyzwania

  • Niespójność danych to ogromne zagrożenie
  • Oddalanie się danych jest faktem, ale pozostaje niewidoczne
  • Nie ufaj mapowaniu obiektowo-relacyjnemu
  • Schematy zawsze się zmieniają
  • MySQL rozszerza standard SQL
  • Hałaśliwi sąsiedzi
  • Aplikacja nie kończy elegancko pracy
  • Wysoka wydajność działania MySQL jest trudna do osiągnięcia
  • Ćwiczenia praktyczne: identyfikacja sposobów zabezpieczających przed niespójnością danych
  • Ćwiczenia praktyczne: sprawdzenie pod kątem oddalania się danych
  • Ćwiczenia praktyczne: chaos

Rozdział 10. MySQL w chmurze

  • Zgodność
  • Zarządzanie (DBA)
  • Opóźnienie. sieci i pamięci masowej
  • Wydajność działania to pieniądze
  • Podsumowanie
  • Ćwiczenia praktyczne: wypróbowanie MySQL w chmurze
  • Title: Wydajna praca z MySQL. Efektywne i bezpieczne zarządzanie bazami danych
  • Author: Daniel Nichter
  • Original title: Efficient MySQL Performance: Best Practices and Techniques
  • Translation: Robert Górczyński
  • ISBN: 978-83-283-9291-5, 9788328392915
  • Date of issue: 2022-09-13
  • Format: Ebook
  • Item ID: wydpra
  • Publisher: Helion