
-
-
Koszyk jest pustySuma 0
- Kategorie
-
Wydajna praca z MySQL. Efektywne i bezpieczne zarządzanie bazami danych

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ń.
Wysyłka w ciągu | 24 godziny |
Kod kreskowy | |
ISBN | 978-83-283-9290-8 |
EAN | 9788328392908 |
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
Spis treści książki
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
Daniel Nichter — administrator baz danych, od 15 lat specjalizuje się w optymalizacji działania MySQL. W firmie Percona stworzył liczne narzędzia usprawniające pracę programistów i administratorów, z których na szeroką skalę korzystają obecnie największe przedsiębiorstwa IT. Wielokrotny prelegent na konferencjach i laureat nagród programistycznych, w tym MySQL Community Award.
Polub nas na Facebooku