O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Wysoko wydajne MySQL. Optymalizacja, archiwizacja, replikacja. Wydanie II

Book Description

Książka Wysoko wydajne MySQL. Optymalizacja, archiwizacja, replikacja. Wydanie II szczegółowo prezentuje zaawansowane techniki, dzięki którym można w pełni wykorzystać cały potencjał, drzemiący w MySQL.

Table of Contents

  1. Wysoko wydajne MySQL. Optymalizacja, archiwizacja, replikacja
  2. Przedmowa
  3. Wprowadzenie
    1. W jaki sposób zorganizowana jest książka?
      1. Ogólny opis
      2. Zapewnienie solidnych fundamentów
      3. Dostrajanie aplikacji
      4. Skalowanie w górę po wprowadzeniu modyfikacji
      5. Zapewnienie niezawodności aplikacji
      6. Różne użyteczne tematy
    2. Wersje oprogramowania i dostępność
    3. Konwencje zastosowane w książce
    4. Używanie przykładowych kodów
    5. Podziękowania do wydania drugiego
      1. Od Barona
      2. Od Petera
      3. Od Vadima
      4. Od Arjena
    6. Podziękowania do wydania pierwszego
      1. Od Jeremego
      2. Od Dereka
  4. 1. Architektura MySQL
    1. Architektura logiczna MySQL
      1. Zarządzanie połączeniami i bezpieczeństwo
      2. Optymalizacja i wykonywanie zapytań
    2. Kontrola współbieżności
      1. Blokady odczytu (zapisu)
      2. Zasięg działania blokad
        1. Blokada tabeli
        2. Blokada rekordu
    3. Transakcje
      1. Poziomy izolacji
      2. Zakleszczenia
      3. Rejestrowanie zdarzeń transakcji
      4. Transakcje w MySQL
        1. AUTOCOMMIT
        2. Łączenie w transakcjach różnych silników magazynu danych
        3. Blokady jawne i niejawne
    4. Mechanizm Multiversion Concurrency Control
    5. Silniki magazynu danych w MySQL
      1. Silnik MyISAM
        1. Magazyn danych
        2. Funkcje MyISAM
        3. Skompresowane tabele MyISAM
      2. Silnik MyISAM Merge
      3. Silnik InnoDB
      4. Silnik Memory
      5. Silnik Archive
      6. Silnik CSV
      7. Silnik Federated
      8. Silnik Blackhole
      9. Silnik NDB Cluster
      10. Silnik Falcon
      11. Silnik solidDB
      12. Silnik PBXT (Primebase XT)
      13. Silnik magazynu danych Maria
      14. Inne silniki magazynu danych
      15. Wybór odpowiedniego silnika
      16. Zalecenia
      17. Przykłady praktyczne
        1. Dziennik zdarzeń
        2. Tabele tylko do odczytu lub głównie do odczytu
        3. Przetwarzanie zamówienia
        4. Notowanie giełdowe
        5. Ogłoszenia i fora dyskusyjne na bazie wątków
        6. Aplikacje na płytach CD-ROM
      18. Podsumowanie silników magazynu danych
      19. Konwersja tabeli
        1. ALTER TABLE
        2. Zrzucanie i importowanie zawartości tabeli
        3. Polecenia CREATE i SELECT
  5. 2. Określanie wąskich gardeł: testy wydajności i profilowanie
    1. Dlaczego warto przeprowadzić testy wydajności?
    2. Strategie przeprowadzania testów wydajności
      1. Co należy sprawdzać?
    3. Taktyki przeprowadzania testów wydajności
      1. Projektowanie i planowanie testu wydajności
      2. Uzyskanie prawidłowych wyników testu
      3. Wykonanie testu wydajności i analiza wyników
    4. Narzędzia do przeprowadzania testów wydajności
      1. Kompletne narzędzia
      2. Narzędzia testowania wydajności pojedynczego komponentu
    5. Przykładowe testy wydajności
      1. http_load
      2. sysbench
        1. Test wydajności procesora za pomocą narzędzia sysbench
        2. Test wydajności operacji I/O na pliku za pomocą narzędzia sysbench
        3. Test wydajności OLTP za pomocą narzędzia sysbench
        4. Inne funkcje narzędzia sysbench
      3. Narzędzie dbt2 TPC-C z zestawu Database Test Suite
      4. Zestaw testów wydajności MySQL
    6. Profilowanie
      1. Profilowanie aplikacji
        1. Co i w jaki sposób sprawdzać?
        2. Przykłady profilowania PHP
      2. Profilowanie MySQL
        1. Rejestrowanie zapytań
        2. Dokładniejsza kontrola nad procesem rejestracji zdarzeń
        3. W jaki sposób odczytywać dziennik rejestrujący wolne zapytania?
        4. Narzędzia służące do analizy dzienników zdarzeń
      3. Profilowanie serwera MySQL
      4. Profilowanie zapytań za pomocą polecenia SHOW STATUS
      5. SHOW PROFILE
      6. Inne sposoby profilowania MySQL
      7. Kiedy nie można dodać kodu profilowania?
    7. Profilowanie systemu operacyjnego
      1. Rozwiązywanie problemów związanych z połączeniami MySQL oraz procesami
      2. Zaawansowane profilowanie i usuwanie błędów
  6. 3. Optymalizacja schematu i indeksowanie
    1. Wybór optymalnego rodzaju danych
      1. Liczby całkowite
      2. Liczby rzeczywiste
      3. Ciągi tekstowe
        1. Rodzaje VARCHAR i CHAR
        2. Rodzaj BLOB i TEXT
        3. Używanie ENUM zamiast ciągu tekstowego
      4. Rodzaje danych dla daty i godziny
      5. Bitowe rodzaje danych
      6. Wybór identyfikatorów
      7. Dane specjalnego rodzaju
    2. Podstawy indeksowania
      1. Rodzaje indeksów
        1. Indeksy typu B-Tree
        2. Indeksy typu hash
        3. Indeksy przestrzenne (R-Tree)
        4. Indeks pełnotekstowy
    3. Strategie indeksowania w celu osiągnięcia maksymalnej wydajności
      1. Izolacja kolumny
      2. Prefiks indeksu oraz selektywność indeksu
      3. Indeksy klastrowane
        1. Porównanie schematu danych InnoDB i MyISAM
        2. Wstawianie rekordów w kolejności klucza podstawowego za pomocą InnoDB
      4. Indeksy pokrywające
      5. Używanie skanowania indeksu w celu przeprowadzenia sortowania
      6. Indeksy spakowane (ze skompresowanymi prefiksami)
      7. Indeksy zbędne i powielone
      8. Indeksy i blokady
    4. Studium przypadku z zakresu indeksowania
      1. Obsługa wielu rodzajów filtrowania danych
      2. Unikanie warunków obejmujących wiele zakresów
      3. Zoptymalizowane sortowanie
    5. Obsługa indeksu oraz tabeli
      1. Wyszukiwanie i naprawa uszkodzeń tabeli
      2. Uaktualnianie danych statystycznych indeksu
      3. Ograniczanie wielkości indeksu i fragmentacji danych
      4. Normalizacja i denormalizacja
      5. Wady i zalety znormalizowanego schematu
      6. Wady i zalety nieznormalizowanego schematu
      7. Połączenie schematu znormalizowanego i nieznormalizowanego
      8. Tabele bufora oraz podsumowania
        1. Tabele liczników
      9. Przyspieszanie działania polecenia ALTER TABLE
      10. Modyfikacja jedynie pliku .frm
      11. Szybkie budowanie indeksu MyISAM
    6. Uwagi dotyczące silników magazynowania danych
      1. Silnik magazynu danych MyISAM
      2. Silnik magazynu danych w pamięci
      3. Silnik magazynu danych InnoDB
  7. 4. Optymalizacja wydajności zapytań
    1. Podstawy powolnych zapytań: optymalizacja dostępu do danych
      1. Czy zapytanie bazy danych obejmuje dane, które są niepotrzebne?
      2. Czy MySQL analizuje zbyt dużą ilość danych?
        1. Czas wykonywania zapytania
        2. Rekordy przeanalizowane i rekordy zwrócone
        3. Rekordy przeanalizowane i rodzaje dostępu do danych
    2. Sposoby restrukturyzacji zapytań
      1. Zapytanie skomplikowane kontra wiele mniejszych
      2. Podział zapytania
      3. Podział złączeń
    3. Podstawy wykonywania zapytań
      1. Protokół klient-serwer MySQL
        1. Stany zapytania
      2. Bufor zapytania
      3. Proces optymalizacji zapytania
        1. Analizator składni i preprocesor
        2. Optymalizator zapytania
        3. Dane statystyczne dotyczące tabeli i indeksu
        4. Strategia MySQL w trakcie wykonywania złączeń
        5. Plan wykonywania
        6. Optymalizator złączeń
        7. Optymalizacja sortowania
      4. Silnik wykonywania zapytań
      5. Zwrot klientowi wyników zapytania
    4. Ograniczenia optymalizatora zapytań MySQL
      1. Podzapytania skorelowane
        1. Kiedy podzapytanie skorelowanie jest dobre?
        2. Ograniczenia klauzuli UNION
        3. Optymalizacja połączonych indeksów
        4. Szerzenie równości
        5. Wykonywanie równoległe
        6. Złączenia typu hash
        7. Luźne skanowanie indeksu
        8. Funkcje MIN() i MAX()
        9. Równoczesne wykonywanie poleceń SELECT i UPDATE w tej samej tabeli
    5. Optymalizacja określonego rodzaju zapytań
      1. Optymalizacja zapytań COUNT()
        1. Jakie jest działanie funkcji COUNT()?
        2. Mity dotyczące MyISAM
        3. Prosta optymalizacja
        4. Bardziej skomplikowana optymalizacja
      2. Optymalizacja zapytań typu JOIN
      3. Optymalizacja podzapytań
      4. Optymalizacja zapytań typu GROUP BY i DISTINCT
        1. Optymalizacja zapytań typu GROUP BY WITH ROLLUP
      5. Optymalizacja zapytań typu LIMIT i OFFSET
      6. Optymalizacja za pomocą opcji SQL_CALC_FOUND_ROWS
      7. Optymalizacja klauzuli UNION
      8. Opcje dotyczące optymalizatora zapytań
    6. Zmienne zdefiniowane przez użytkownika
      1. Podczas uaktualniania MySQL należy zachować ostrożność
  8. 5. Zaawansowane funkcje MySQL
    1. Bufor zapytań MySQL
      1. W jaki sposób MySQL sprawdza, czy można użyć bufora?
      2. W jaki sposób bufor wykorzystuje pamięć?
      3. Kiedy bufor zapytań okazuje się użyteczny?
      4. W jaki sposób dostroić i obsługiwać bufor zapytań?
        1. Zmniejszanie poziomu fragmentacji
        2. Usprawnienie używania bufora zapytań
      5. Bufor zapytań i InnoDB
      6. Ogólna optymalizacja bufora zapytań
      7. Czym zastąpić bufor zapytań?
    2. Przechowywanie kodu wewnątrz MySQL
      1. Procedury składowane i funkcje
      2. Wyzwalacze
      3. Zdarzenia
      4. Umieszczanie komentarzy w kodzie składowanym
      5. Kursory
      6. Polecenia spreparowane
      7. Optymalizacja poleceń spreparowanych
      8. Interfejs SQL dla poleceń spreparowanych
      9. Ograniczenia poleceń spreparowanych
    3. Funkcje zdefiniowane przez użytkownika
      1. Widoki
      2. Widok z możliwością uaktualnienia
      3. Implikacje wydajności związane z widokami
      4. Ograniczenia widoków
    4. System kodowania znaków i kolejność sortowania
      1. W jaki sposób MySQL używa systemu kodowania znaków?
        1. Wartości domyślne używane podczas tworzenia obiektów
        2. Konfiguracja komunikacji klient-serwer
        3. W jaki sposób MySQL porównuje wartości?
        4. Szczególne przypadki zachowań
      2. Wybór kodowania znaków oraz kolejności sortowania
      3. W jaki sposób kodowanie znaków i kolejność sortowania wpływają na zapytania?
      4. Wyszukiwanie pełnotekstowe
      5. Wyszukiwanie pełnotekstowe w języku naturalnym
      6. Wyszukiwanie pełnotekstowe typu Boolean
      7. Zmiany dotyczące wyszukiwania pełnotekstowego w MySQL 5.1 i nie tylko
      8. Koszty związane z wyszukiwaniem pełnotekstowym oraz pokonywanie ograniczeń
      9. Dostrajanie i optymalizacja wyszukiwania pełnotekstowego
    5. Ograniczenia klucza zewnętrznego
    6. Tabele Merge i partycjonowane
      1. Tabele Merge
        1. Wpływ tabel typu Merge na wydajność
        2. Zalety tabel typu Merge
      2. Tabele partycjonowane
        1. Dlaczego partycjonowanie się sprawdza?
        2. Przykłady partycjonowania
        3. Ograniczenia tabel partycjonowanych
        4. Optymalizacja zapytań wykonywanych do tabel partycjonowanych
    7. Transakcje rozproszone (XA)
      1. Wewnętrzne transakcje XA
      2. Zewnętrzne transakcje XA
  9. 6. Optymalizacja konfiguracji serwera
    1. Podstawy konfiguracji
    2. Składnia, zasięg oraz dynamizm
      1. Efekt uboczny ustawiania zmiennych
      2. Wprowadzenie
    3. Ogólne dostrajanie
      1. Dostrajanie zużycia pamięci
        1. Ile pamięci może użyć MySQL?
        2. Ilość pamięci używanej przez każde połączenie
        3. Rezerwacja pamięci dla systemu operacyjnego
        4. Alokacja pamięci dla buforów
      2. Bufor kluczy MyISAM
        1. Wielkość bloku klucza MyISAM
      3. Pula buforów InnoDB
      4. Bufor wątków
      5. Bufor tabel
      6. Słownik danych InnoDB
    4. Dostrajanie zachowania operacji I/O w MySQL
      1. Dostrajanie operacji I/O w MyISAM
      2. Dostrajanie I/O w InnoDB
        1. Dziennik zdarzeń transakcji InnoDB
        2. W jaki sposób InnoDB otwiera i czyści pliki dzienników zdarzeń oraz pliki danych?
        3. Przestrzeń tabel InnoDB
        4. Bufor podwójnego zapisu
        5. Dostosowanie innych opcji I/O
    5. Dostosowanie współbieżności MySQL
      1. Dostosowanie współbieżności w silniku MyISAM
      2. Dostrajanie współbieżności w silniku InnoDB
      3. Dostrajanie na podstawie obciążenia
      4. Optymalizacja obciążeń związanych z wartościami BLOB i TEXT
        1. Optymalizacja sortowania pliku
      5. Przegląd stanu zmiennych serwera MySQL
      6. Dostrajanie ustawień w ramach każdego połączenia
  10. 7. Optymalizacja systemu operacyjnego i osprzętu
    1. Co ogranicza wydajność MySQL?
    2. W jaki sposób wybrać procesor dla MySQL?
      1. Co jest lepsze: szybszy procesor czy większa liczba procesorów?
      2. Architektura procesora
      3. Rozbudowa do wielu procesorów i rdzeni
      4. Zrównoważenie pamięci i zasobów dyskowych
      5. Losowe kontra sekwencyjne operacje I/O
      6. Buforowanie, odczyt i zapis
      7. Jaki zestaw roboczy jest odpowiedni dla Ciebie?
        1. Zestaw roboczy i jednostka bufora
      8. Znalezienie efektywnego współczynnika pamięć-dysk
      9. Wybór dysków twardych
    3. Wybór osprzętu komputerowego dla serwera podległego
    4. Optymalizacja wydajności macierzy RAID
      1. Awaria macierzy RAID, odzyskiwanie danych i monitoring
      2. Zrównoważenie sprzętowej i programowej macierzy RAID
      3. Konfiguracja macierzy RAID i buforowanie
        1. Wielkość jednostki zdublowanej macierzy RAID
        2. Bufor macierzy RAID
    5. Urządzenia Storage Area Network oraz Network Attached Storage
      1. Storage Area Networks
      2. Network Attached Storage
    6. Używanie woluminów składających się z wielu dysków
      1. Konfiguracja sieciowa
      2. Wybór systemu operacyjnego
      3. Wybór systemu plików
      4. Wątkowanie
      5. Przestrzeń wymiany
    7. Stan systemu operacyjnego
      1. W jaki sposób odczytywać dane wyjściowe vmstat?
      2. W jaki sposób odczytywać dane wyjściowe narzędzia iostat?
      3. Komputer ograniczany procesorem
      4. Komputer ograniczony operacjami I/O
      5. Komputer intensywnie używający przestrzeni wymiany
      6. Komputer bezczynny
  11. 8. Replikacja
    1. Ogólny opis replikacji
      1. Problemy rozwiązywane za pomocą replikacji
      2. W jaki sposób działa replikacja?
    2. Konfiguracja replikacji
      1. Utworzenie kont replikacji
      2. Konfiguracja serwera głównego i podległego
      3. Uruchomienie serwera podległego
      4. Inicjalizacja serwera podległego z poziomu innego serwera
      5. Zalecana konfiguracja replikacji
    3. Szczegóły kryjące się za replikacją
      1. Replikacja na bazie poleceń
      2. Replikacja na bazie rekordów
      3. Pliki replikacji
      4. Wysyłanie zdarzeń replikacji do innych serwerów podległych
      5. Filtry replikacji
    4. Topologie replikacji
      1. Serwer główny i wiele serwerów podległych
      2. Serwer główny-główny w trybie aktywny-aktywny
      3. Serwer główny-główny w trybie aktywny-pasywny
      4. Układ serwer główny-główny razem z serwerami podległymi
      5. Ring
      6. Serwer główny, rozpraszający serwer główny oraz serwery podległe
      7. Drzewo lub piramida
      8. Własne rozwiązania dotyczące replikacji
        1. Replikacja selektywna
        2. Rozdział funkcji
        3. Archiwizacja danych
        4. Używanie serwerów podległych podczas wyszukiwania pełnotekstowego
        5. Serwery podległe w trybie tylko do odczytu
        6. Emulacja replikacji używającej wielu serwerów głównych
        7. Tworzenie serwera dzienników zdarzeń
    5. Replikacja i planowanie pojemności
      1. Dlaczego replikacja nie pomaga w skalowalności operacji zapisu?
      2. Planowanie niewykorzystania pełnych możliwości
    6. Administracja replikacją i jej obsługa
      1. Monitorowanie replikacji
      2. Pomiar opóźnienia serwera podległego
      3. Określanie, czy serwer podległy zachowuje spójność z serwerem głównym
      4. Ponowna synchronizacja serwera podległego z serwerem głównym
      5. Zmiana serwera głównego
        1. Awans planowany
        2. Awans nieplanowany
        3. Określanie pożądanego położenia w pliku dziennika
      6. Zamiana ról w konfiguracji serwer główny-główny
    7. Problemy związane z replikacją i sposoby ich rozwiązywania
      1. Błędy spowodowane przez uszkodzenie lub utratę danych
      2. Używanie tabel nietransakcyjnych
      3. Łączenie tabel transakcyjnych i nietransakcyjnych
      4. Polecenia niedeterministyczne
      5. Różne silniki magazynu danych w serwerze głównym i podległym
      6. Zmiana danych w serwerze podległym
      7. Nieunikalne identyfikatory serwerów
      8. Niezdefiniowane identyfikatory serwerów
      9. Zależności dotyczące niereplikowalnych danych
      10. Brakujące tabele tymczasowe
      11. Niereplikowanie wszystkich uaktualnień
      12. Zablokowanie treści spowodowane przez blokowanie poleceń SELECT w InnoDB
      13. Zapis do obu serwerów głównych w replikacji typu serwer główny-główny
      14. Ogromne opóźnienie replikacji
        1. Nie powielaj kosztownych fragmentów operacji zapisu
        2. Wykonywanie równoległych operacji zapisu poza replikacją
        3. Przygotowanie bufora dla wątku serwera podległego
      15. Zbyt duże pakiety w serwerze głównym
      16. Ograniczona przepustowość replikacji
      17. Brak miejsca na dysku
      18. Ograniczenia replikacji
    8. Jak szybka jest replikacja?
      1. Przyszłość replikacji w MySQL
  12. 9. Skalowalność i wysoka dostępność
    1. Terminologia
    2. Skalowalność MySQL
      1. Planowanie skalowalności
      2. Poświęcenie czasu przed opracowaniem skalowalności
      3. Skalowanie pionowe
      4. Skalowanie poziome
        1. Partycjonowanie funkcjonalne
        2. Sharding danych
        3. Wybór klucza partycjonowania
        4. Wykonywanie zapytań między serwerami
        5. Alokacja danych, serwerów i węzłów
        6. Alokacja stała
        7. Alokacja dynamiczna
        8. Alokacja jawna
        9. Ponowne balansowanie serwerów
        10. Generowanie globalnie unikalnych identyfikatorów
        11. Narzędzia służące do shardingu
      5. Skalowanie w dół
        1. Utrzymywanie rozdzielności aktywnych danych
      6. Skalowanie poprzez klastry
        1. Klastrowanie
        2. Federacja
      7. Równoważenie obciążenia
      8. Połączenie bezpośrednie
        1. Rozdzielanie odczytu i zapisu w replikacji
        2. Zmiana konfiguracji aplikacji
        3. Zmiana nazw DNS
        4. Przenoszenie adresów IP
      9. Wprowadzenie pośrednika
        1. Stabilizatory obciążenia
        2. Algorytmy równoważenia obciążenia
        3. Dodawanie i usuwanie serwerów z puli
      10. Równoważenie obciążenia za pomocą serwera głównego i wielu serwerów podległych
    3. Wysoka dostępność
      1. Planowanie wysokiej dostępności
      2. Zwiększanie poziomu redundancji
        1. Architektury współdzielonych magazynów danych
        2. Architektury dysku replikowanego
        3. Synchroniczna replikacja MySQL
      3. Zapewnienie pracy w przypadku awarii i przywrócenie działania
        1. Awansowanie serwera podległego lub zamiana ról
        2. Wirtualne adresy IP lub przejęcie IP
        3. Narzędzie MySQL Master-Master Replication Manager
        4. Rozwiązania z użyciem pośrednika
        5. Obsługa zapewnienia pracy w przypadku awarii bezpośrednio w aplikacji
  13. 10. Optymalizacja na poziomie aplikacji
    1. Ogólny opis wydajności aplikacji
      1. Odszukanie źródła problemu
      2. Wyszukiwanie najczęściej występujących problemów
    2. Kwestie związane z serwerem WWW
      1. Znalezienie optymalnej współbieżności
      2. Buforowanie
      3. Buforowanie poza aplikacją
      4. Buforowanie na poziomie aplikacji
      5. Polityki kontrolowania bufora
      6. Hierarchie obiektów bufora
      7. Wcześniej wygenerowana treść
      8. Rozbudowa MySQL
      9. Co zamiast MySQL?
  14. 11. Kopia zapasowa i odzyskiwanie
    1. Ogólny opis
      1. Terminologia
      2. Wszystko dotyczy odzyskiwania
      3. Tematy, które nie zostaną poruszone
      4. Najważniejsze aspekty
      5. Dlaczego kopia zapasowa?
    2. Wady i zalety rozwiązania
      1. Na utratę których danych można sobie pozwolić?
      2. Kopia zapasowa online czy offline?
      3. Logiczna czy bezpośrednia kopia zapasowa?
        1. Logiczna kopia zapasowa
        2. Kopia zapasowa bezpośrednich plików danych
      4. Co należy umieszczać w kopii zapasowej?
        1. Przyrostowa kopia zapasowa
      5. Silniki magazynów danych i spójność
        1. Spójność danych
        2. Spójność plików
      6. Replikacja
    3. Zarządzanie kopią zapasową binarnych dzienników zdarzeń i jej tworzenie
      1. Format binarnych dzienników zdarzeń
      2. Bezpieczne usuwanie starych binarnych dzienników zdarzeń
    4. Tworzenie kopii zapasowej danych
      1. Tworzenie logicznej kopii zapasowej
        1. Zrzuty SQL
        2. Kopia zapasowa w postaci plików z ogranicznikami
        3. Równoległe operacje zrzucania i przywracania
      2. Migawka systemu plików
        1. W jaki sposób działają migawki LVM?
        2. Przygotowania i konfiguracja
        3. Tworzenie, montowanie i usuwanie migawki LVM
        4. Migawki LVM służące do tworzenia kopii zapasowej w trybie online
        5. Wykonywanie kopii zapasowej InnoDB za pomocą migawek LVM i bez nakładania blokad
        6. Planowanie tworzenia kopii zapasowych za pomocą LVM
        7. Inne sposoby wykorzystania migawki i inne możliwości
    5. Odzyskiwanie z kopii zapasowej
      1. Ograniczony dostęp do MySQL
      2. Przywracanie bezpośrednich plików
        1. Uruchomienie MySQL po przywróceniu bezpośrednich plików
      3. Przywracanie logicznych kopii zapasowych
        1. Wczytywanie plików SQL
        2. Wczytywanie plików z ogranicznikami
      4. Odzyskanie do wskazanego punktu w czasie
      5. Bardziej zaawansowane techniki odzyskiwania
        1. Opóźniona replikacja służąca do szybkiego odzyskiwania
        2. Odzyskiwanie za pomocą serwera dzienników zdarzeń
      6. Odzyskiwanie InnoDB
        1. Przypadki uszkodzenia InnoDB
        2. W jaki sposób odzyskać uszkodzone dane InnoDB?
    6. Szybkość tworzenia kopii zapasowej i odzyskiwania
    7. Narzędzia służące do obsługi kopii zapasowej
      1. mysqldump
      2. mysqlhotcopy
      3. Kopia zapasowa InnoDB tworzona „na gorąco”
      4. mk-parallel-dump
      5. mylvmbackup
      6. Zmanda Recovery Manager
        1. Instalacja i testowanie ZRM
      7. R1Soft
      8. Kopia zapasowa MySQL w trybie online
      9. Porównanie narzędzi służących do tworzenia kopii zapasowej
    8. Kopie zapasowe za pomocą skryptów
  15. 12. Bezpieczeństwo
    1. Terminologia
    2. Podstawy dotyczące kont
      1. Prawa dostępu
      2. Tabele uprawnień
      3. W jaki sposób MySQL sprawdza uprawnienia?
      4. Dodawanie, usuwanie i przeglądanie uprawnień
      5. Konfiguracja uprawnień w MySQL
      6. Zmiany w zakresie uprawnień w MySQL 4.1
      7. Zmiany w zakresie uprawnień w MySQL 5.0
        1. Kod składowany
        2. Wyzwalacze
        3. Widoki
        4. Uprawnienia w tabelach INFORMATION_SCHEMA
      8. Uprawnienia i wydajność
      9. Najczęściej występujące problemy i sposoby ich rozwiązywania
        1. Nawiązywanie połączenia poprzez localhost kontra 127.0.0.1
        2. Bezpieczne używanie tabel tymczasowych
        3. Wyłączenie dostępu niewymagającego użycia hasła
        4. Wyłączenie użytkowników anonimowych
        5. Należy pamiętać o ujmowaniu w oddzielne apostrofy nazw serwerów
        6. Nie używaj ponownie tych samych nazw użytkowników
        7. Nadanie uprawnienia SELECT pozwala na wykonywanie polecenia SHOW CREATE TABLE
        8. Nie nadawaj uprawnień bazie danych mysql
        9. Nie nadawaj dowolnie uprawnienia SUPER
        10. Nadawanie uprawnień bazom danych przy użyciu znaków wieloznacznych
        11. Odbieranie określonych uprawnień
        12. Użytkownik może nawiązać połączenie nawet po wydaniu polecenia REVOKE
        13. Kiedy nie można nadać lub odebrać uprawnień?
        14. Uprawnienia niewidzialne
        15. Zbędne uprawnienia
    3. Bezpieczeństwo systemu operacyjnego
      1. Wskazówki
    4. Bezpieczeństwo sieciowe
      1. Tylko połączenia z komputera lokalnego
      2. Zapora sieciowa
        1. Brak trasy domyślnej
      3. Serwer MySQL w strefie zdemilitaryzowanej
      4. Szyfrowanie połączenia oraz tunelowanie
        1. Wirtualne sieci prywatne
        2. SSL w MySQL
        3. Tunelowanie SSH
      5. Osłony TCP
      6. Automatyczne blokowanie serwerów
    5. Szyfrowanie danych
      1. Ukrywanie haseł
      2. Szyfrowane systemy plików
      3. Szyfrowanie na poziomie aplikacji
        1. Kwestie związane z projektem
        2. Szyfrowanie i deszyfrowanie wewnątrz MySQL
      4. Modyfikacje kodu źródłowego
    6. MySQL w środowisku chroot
  16. 13. Stan serwera MySQL
    1. Zmienne systemowe
    2. SHOW STATUS
      1. Dane statystyczne dotyczące wątku i połączenia
      2. Stan dzienników binarnych
      3. Polecenia liczników
      4. Tymczasowe pliki i tabele
      5. Operacje Handler
      6. Bufor kluczy MyISAM
      7. Deskryptory plików
      8. Bufor zapytań
      9. Rodzaje polecenia SELECT
      10. Sortowanie
      11. Blokowanie tabeli
      12. Secure Sockets Layer (SSL)
      13. Zmienne charakterystyczne dla InnoDB
      14. Zmienne charakterystyczne dla rozszerzenia
      15. Różne zmienne
    3. SHOW INNODB STATUS
      1. Nagłówek
      2. Semafory
      3. LATEST FOREIGN KEY ERROR
      4. LATEST DETECTED DEADLOCK
      5. TRANSACTIONS
      6. FILE I/O
      7. Sekcja INSERT BUFFER AND ADAPTIVE HASH INDEX
      8. LOG
      9. Sekcja BUFFER POOL AND MEMORY
      10. ROW OPERATIONS
    4. SHOW PROCESSLIST
    5. SHOW MUTEX STATUS
    6. Stan replikacji
    7. INFORMATION_SCHEMA
  17. 14. Narzędzia zapewniające wysoką wydajność
    1. Narzędzia interfejsu
      1. Narzędzia graficzne MySQL
      2. SQLyog
      3. phpMyAdmin
    2. Narzędzia monitorowania
      1. Nieinteraktywne systemy monitorowania
        1. Samodzielnie opracowane systemy
        2. Nagios
        3. Co zamiast Nagios?
        4. MySQL Monitoring and Advisory Service
        5. MONyog
        6. Systemy bazujące na RRDTool
      2. Narzędzia interaktywne
        1. innotop
    3. Narzędzia analizy
      1. Narzędzia HackMySQL
      2. Narzędzia analizy Maatkit
    4. Narzędzia MySQL
      1. Proxy MySQL
      2. Dormando Proxy for MySQL
      3. Narzędzia Maatkit
    5. Źródła dalszych informacji
  18. A. Przesyłanie dużych plików
    1. Kopiowanie plików
      1. Przykład naiwny
      2. Metoda z użyciem jednego kroku
      3. Unikanie obciążenia związanego z szyfrowaniem
      4. Inne możliwości
    2. Testy operacji kopiowania pliku
  19. B. Używanie polecenia EXPLAIN
    1. Wywoływanie EXPLAIN
      1. Pisanie nowych zapytań innych niż SELECT
    2. Kolumny danych wyjściowych polecenia EXPLAIN
      1. Kolumna id
      2. Kolumna select_type
      3. Kolumna table
        1. Tabele pochodne i unie
        2. Przykład złożonych rodzajów SELECT
      4. Kolumna type
      5. Kolumna possible_keys
      6. Kolumna key
      7. Kolumna key_len
      8. Kolumna ref
      9. Kolumna rows
      10. Kolumna filtered
      11. Kolumna Extra
    3. Wizualne EXPLAIN
  20. C. Używanie silnika Sphinx w MySQL
    1. Ogólny opis: typowe wyszukiwanie Sphinksa
    2. Dlaczego warto używać silnika Sphinx?
      1. Efektywne i skalowalne wyszukiwanie pełnotekstowe
      2. Efektywne stosowanie klauzuli WHERE
      3. Wyszukiwanie najwyższych wyników w zamówieniu
      4. Optymalizacja zapytań GROUP BY
      5. Równoległe generowanie zbiorów wyników
      6. Skalowanie
      7. Agregacja danych stosujących sharding
    3. Ogólny opis architektury
      1. Ogólny opis instalacji
      2. Typowe użycie partycji
    4. Funkcje specjalne
      1. Ocena trafności wyrażenia
      2. Obsługa atrybutów
      3. Filtrowanie
      4. Silnik magazynowania danych SphinxSE z obsługą rozszerzeń
      5. Zaawansowana kontrola wydajności
    5. Przykłady praktycznej implementacji
      1. Wyszukiwanie pełnotekstowe na witrynie Mininova.org
      2. Wyszukiwanie pełnotekstowe na witrynie BoardReader.com
      3. Optymalizacja poleceń SELECT na witrynie Sahibinden.com
      4. Optymalizacja poleceń GROUP BY na witrynie BoardReader.com
      5. Optymalizacja współdzielonych zapytań JOIN na witrynie Grouply.com
    6. Podsumowanie
  21. D. Usuwanie błędów w blokadach
    1. Blokada oczekiwania na poziomie serwera
      1. Blokady tabeli
        1. Odszukanie procesu, który nałożył blokadę
      2. Globalna blokada odczytu
      3. Blokady nazwane
      4. Blokady nałożone przez użytkownika
    2. Blokady oczekiwania w silnikach magazynów danych
      1. Blokada oczekiwania InnoDB
        1. W kierunku bardziej użytecznych danych wyjściowych dotyczących blokad
      2. Blokada oczekiwania silnika Falcon
  22. E. O autorach
  23. Indeks
  24. Kolofon
  25. Copyright