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

MySQL. Mechanizmy wewnętrzne bazy danych

Book Description

Dzięki tej ksišżce poznasz kod ?ródłowy i sposób działania tego narzędzia. Autor, przez wiele lat pracujšcy w zespole tworzšcym MySQL, przedstawia w niej tajniki systemu. Podczas czytania poznasz architekturę i wzajemne powišzania pomiędzy komponentami MySQL, strukturę kodu ?ródłowego oraz metody modyfikowania go przez kompilacjš. Dowiesz się także, jak przebiega komunikacja pomiędzy klientem i serwerem bazy danych, jak realizowane sš zapytania, w jaki sposób składowane sš dane i jak implementowane sš mechanizmy replikacji.

Table of Contents

  1. MySQL. Mechanizmy wewnętrzne bazy danych
  2. Dedykacja
  3. Przedmowa
    1. Organizacja książki
    2. Dla kogo jest ta książka?
    3. Konwencje typograficzne
    4. Przykładowy kod
    5. Podziękowania
  4. 1. Historia i architektura MySQL
    1. Historia MySQL
    2. Architektura MySQL
      1. Podstawowe moduły
      2. Współpraca między modułami podstawowymi
      3. Szczegółowy opis modułów podstawowych
        1. Moduł inicjalizacji serwera
        2. Menedżer połączeń
        3. Menedżer wątków
        4. Wątek połączenia
        5. Moduł uwierzytelniania użytkowników
        6. Moduł kontroli dostępu
        7. Parser
        8. Dyspozytor poleceń
        9. Moduł pamięci podręcznej zapytań
        10. Optymalizator
        11. Menedżer tabel
        12. Moduły modyfikacji tabel
        13. Moduł konserwacji tabel
        14. Moduł raportowania stanu
        15. Interfejs abstrakcyjnego mechanizmu składowania (moduł obsługi tabel)
        16. Implementacje mechanizmów składowania (MyISAM, InnoDB, MEMORY, Berkeley DB)
        17. Moduł rejestrowania zdarzeń
        18. Moduł nadrzędnego serwera replikacji
        19. Moduł podrzędnego serwera replikacji
        20. Interfejs protokołu klient-serwer
        21. Interfejs niskopoziomowego sieciowego wejścia-wyjścia
        22. Rdzenny interfejs API
  5. 2. Praca z kodem źródłowym MySQL
    1. Powłoka Uniksa
    2. BitKeeper
    3. Przygotowywanie systemu do budowania MySQL z drzewa BitKeepera
    4. Budowanie MySQL z drzewa BitKeepera
    5. Budowanie z dystrybucji źródłowej
    6. Instalowanie MySQL w katalogu systemowym
    7. Układ katalogów z kodem źródłowym
    8. Przygotowywanie systemu do uruchomienia MySQL w debugerze
    9. Wycieczka po kodzie źródłowym w towarzystwie debugera
    10. Podstawy pracy z gdb
    11. Wyszukiwanie definicji w kodzie źródłowym
    12. Interesujące punkty wstrzymania i zmienne
    13. Modyfikowanie kodu źródłowego
    14. Wskazówki dla koderów
      1. Stabilność
      2. Przenośność
      3. Wydajność
      4. Styl i łatwość integracji
    15. Aktualizowanie repozytorium BitKeepera
    16. Zgłaszanie poprawki
  6. 3. Podstawowe klasy, struktury, zmienne i interfejsy API
    1. THD
    2. NET
    3. TABLE
    4. Field
    5. Narzędziowe wywołania API
    6. Makra preprocesora
    7. Zmienne globalne
  7. 4. Komunikacja między klientem a serwerem
    1. Przegląd protokołu
    2. Format pakietu
    3. Relacje między protokołem MySQL a warstwą systemu operacyjnego
    4. Uzgadnianie połączenia
      1. Bezpieczeństwo protokołu uwierzytelniania
      2. Maska bitowa możliwości protokołu
    5. Pakiet polecenia
    6. Odpowiedzi serwera
      1. Pole danych
      2. Pakiet OK
      3. Pakiet błędu
      4. Pakiet EOF
      5. Pakiety zbioru wyników
  8. 5. Zmienne konfiguracyjne
    1. Zmienne konfiguracyjne: samouczek
      1. Plik konfiguracyjny i opcje wiersza polecenia
      2. Analiza składniowa opcji konfiguracyjnych
      3. Przykład dodawania nowej zmiennej konfiguracyjnej
    2. Interesujące aspekty konkretnych zmiennych konfiguracyjnych
      1. big-tables
      2. concurrent-insert
      3. core-file
      4. default-storage-engine
      5. delay-key-write
      6. ft_stopword_file
      7. innodb_buffer_pool_size
      8. innodb_flush_log_at_trx_commit
      9. innodb_file_per_table
      10. innodb_lock_wait_timeout
      11. innodb_force_recovery
      12. init-file
      13. key_buffer_size
      14. language
      15. log
      16. log-bin
      17. log-isam
      18. log-slow-queries
      19. max_allowed_packet
      20. max_connections
      21. max_heap_table_size
      22. max_join_size
      23. max_sort_length
      24. myisam-recover
      25. query_cache_type
      26. read_buffer_size
      27. relay-log
      28. server-id
      29. skip-grant-tables
      30. skip-stack-trace
      31. slave-skip-errors
      32. sort_buffer_size
      33. sql-mode
      34. table-cache
      35. temp-pool
      36. transaction-isolation
  9. 6. Wątkowa obsługa żądań
    1. Wątki kontra procesy
      1. Zalety wątków
      2. Wady wątków
      3. Zalety rozwidlonych procesów
      4. Wady rozwidlonych procesów
    2. Implementacja obsługi żądań
      1. Struktury, zmienne, klasy i interfejsy API
      2. Wykonywanie żądań krok po kroku
    3. Problemy programowania wątkowego
      1. Wywołania standardowej biblioteki C
      2. Blokady z wzajemnym wykluczaniem (muteksy)
      3. Blokady odczytu-zapisu
      4. Synchronizacja
      5. Wywłaszczanie
  10. 7. Interfejs mechanizmów składowania
    1. Klasa handler
      1. handlerton
    2. Dodawanie własnego mechanizmu składowania do MySQL
      1. Instrukcja integracji z wersją 4.1
      2. Instrukcja integracji z wersją 5.1
  11. 8. Dostęp współbieżny i blokowanie
    1. Menedżer blokad tabel
      1. Żądanie blokady odczytu
      2. Żądanie blokady zapisu
        1. Interakcje mechanizmów składowania z menedżerem blokad tabel
      3. Blokowanie w InnoDB
        1. Typy blokad
        2. Blokowanie rekordów
        3. Obsługa zakleszczeń
  12. 9. Parser i optymalizator
    1. Parser
      1. Skaner leksykalny
      2. Moduł reguł gramatycznych
      3. Drzewo składniowe
    2. Optymalizator
      1. Podstawowe informacje o algorytmie optymalizatora
      2. Używanie instrukcji EXPLAIN do zrozumienia działania optymalizatora
        1. Interpretacja wyników instrukcji EXPLAIN
        2. Typy instrukcji SELECT
        3. Typy dostępu do rekordów
        4. Pole Extra
      3. Optymalizator zakresów
        1. Range
        2. Index_merge
        3. Range_desc
        4. Fulltext
        5. ROR_intersect
        6. ROR_union
        7. Group_min_max
      4. Optymalizacja podzapytań
      5. Kluczowe klasy i struktury optymalizatora
        1. JOIN
        2. JOIN_TAB
        3. select_result
      6. Drzewo składniowe instrukcji SELECT
        1. Wykonywanie instrukcji SELECT na poziomie kodu
  13. 10. Mechanizmy składowania
    1. Wspólne cechy architektury
    2. MyISAM
      1. Architektura MyISAM
        1. Plik danych
        2. Plik indeksu
      2. Typy kluczy MyISAM
        1. Klucze w postaci B-drzewa
        2. Klucze pełnotekstowe
        3. Klucze przestrzenne
    3. InnoDB
    4. Memory (Heap)
    5. MyISAM Merge
    6. NDB
    7. Archive
    8. Federated
  14. 11. Transakcje
    1. Implementowanie transakcyjnego mechanizmu składowania
    2. Implementowanie podklasy handler
    3. Definiowanie handlertona
    4. Praca z pamięcią podręczną zapytań
    5. Praca z binarnym dziennikiem replikacji
    6. Unikanie zakleszczeń
  15. 12. Replikacja
    1. Przegląd
    2. Replikacja oparta na instrukcjach i na wierszach
    3. Dwuwątkowy serwer podrzędny
    4. Konfiguracja z wieloma serwerami nadrzędnymi
    5. Polecenia SQL ułatwiające zrozumienie replikacji
    6. Format dziennika binarnego
    7. Tworzenie własnego narzędzia do replikacji
  16. A. O autorze
  17. Indeks
  18. Kolofon
  19. Copyright