mysql. mechanizmy wewnętrzne bazy danych pełna wersja.pdf
(
6935 KB
)
Pobierz
Narzędziowe wywołania API
65
Makra preprocesora
68
Zmienne globalne
70
4.
Komunikacja między klientem a serwerem ............................................................... 73
Przegląd protokołu
73
Format pakietu
73
Relacje między protokołem MySQL a warstwą systemu operacyjnego
74
Uzgadnianie połączenia
75
Pakiet polecenia
80
Odpowiedzi serwera
83
5.
Zmienne konfiguracyjne .............................................................................................89
Zmienne konfiguracyjne: samouczek
89
Interesujące aspekty konkretnych zmiennych konfiguracyjnych
96
6.
Wątkowa obsługa żądań ........................................................................................... 115
Wątki kontra procesy
115
Implementacja obsługi żądań
117
Problemy programowania wątkowego
121
7.
Interfejs mechanizmów składowania .......................................................................127
Klasa handler
127
Dodawanie własnego mechanizmu składowania do MySQL
142
8.
Dostęp współbieżny i blokowanie ............................................................................ 163
Menedżer blokad tabel
164
9.
Parser i optymalizator ............................................................................................... 169
Parser
169
Optymalizator
172
10.
Mechanizmy składowania ........................................................................................ 195
Wspólne cechy architektury
196
MyISAM
196
InnoDB
202
Memory (Heap)
204
MyISAM Merge
205
NDB
205
Archive
206
Federated
207
6
|
Spis treści
11.
Transakcje ..................................................................................................................209
Implementowanie transakcyjnego mechanizmu składowania
209
Implementowanie podklasy handler
210
Definiowanie handlertona
212
Praca z pamięcią podręczną zapytań
214
Praca z binarnym dziennikiem replikacji
214
Unikanie zakleszczeń
215
12.
Replikacja ....................................................................................................................217
Przegląd
217
Replikacja oparta na instrukcjach i na wierszach
218
Dwuwątkowy serwer podrzędny
219
Konfiguracja z wieloma serwerami nadrzędnymi
219
Polecenia SQL ułatwiające zrozumienie replikacji
220
Format dziennika binarnego
223
Tworzenie własnego narzędzia do replikacji
227
Skorowidz ............................................................................................................................. 229
Spis treści
|
7
ROZDZIAŁ 6.
Wątkowa obsługa żądań
Podczas pisania kodu serwera programista staje przed dylematem: czy obsługiwać żądania
za pomocą wątków, czy procesów? Oba podejścia mają swoje zalety i wady. Od samego początku
MySQL korzystał z wątków. W tym rozdziale uzasadnimy wątkową obsługę żądań w serwerze
MySQL, a także omówimy jej wady i zalety oraz implementację.
Wątki kontra procesy
Być może najważniejszą różnicą między procesem a wątkiem jest to, że wątek potomny współ-
dzieli stertę (globalne dane programu) z wątkiem macierzystym, a proces potomny — nie.
Ma to pewne konsekwencje, które trzeba uwzględnić podczas wybierania jednego albo drugiego
modelu.
Zalety wątków
Wątki są implementowane w bibliotekach programistycznych i systemach operacyjnych z nastę-
pujących powodów:
•
Zmniejszone wykorzystanie pamięci. Koszty pamięciowe związane z tworzeniem nowego
wątku są ograniczone do stosu oraz do pamięci ewidencyjnej używanej przez menedżer
wątków.
•
Dostęp do globalnych danych serwera bez użycia zaawansowanych technik. Jeśli dane mogą
zostać zmodyfikowane przez inny działający równolegle wątek, wystarczy chronić odpo-
wiednią sekcję za pomocą blokady ze wzajemnym wykluczaniem, zwanej
muteksem
(opi-
sywanej w dalszej części rozdziału). Jeśli nie ma takiej możliwości, dostęp do globalnych
danych można uzyskiwać w taki sposób, jakby nie było żadnych wątków.
•
Tworzenie wątku zajmuje znacznie mniej czasu niż tworzenie procesu, ponieważ nie trzeba
kopiować segmentu sterty, który może być bardzo duży.
•
Program szeregujący w jądrze szybciej przełącza konteksty między wątkami niż między
procesami. Dzięki temu w mocno obciążonym serwerze procesor ma więcej czasu na wyko-
nywanie rzeczywistej pracy.
115
Wady wątków
Wątki odgrywają ważną rolę we współczesnych systemach komputerowych, ale mają również
pewne wady:
•
Pomyłki programistyczne są bardzo kosztowne. Awaria jednego wątku powoduje załama-
nie całego serwera. Jeden wyrodny wątek może uszkodzić globalne i zakłócić działanie
innych wątków.
•
Łatwo popełnić pomyłkę. Programista musi stale myśleć o problemach, jakie może spowo-
dować jakiś inny wątek, oraz o tym, jak ich uniknąć. Niezbędna jest bardzo defensywna
postawa.
•
Wielowątkowe serwery są znane z usterek synchronizacyjnych, które są trudne do odtwo-
rzenia podczas testów, ale ujawniają się w bardzo złym momencie w środowiskach produk-
cyjnych. Wysokie prawdopodobieństwo występowania takich usterek jest następstwem
współdzielenia przestrzeni adresowej, co znacznie zwiększa stopień interakcji między
wątkami.
•
W pewnych okolicznościach rywalizacja o blokady może wymknąć się spod kontroli. Jeśli
zbyt wiele wątków próbuje jednocześnie pozyskać ten sam muteks, może to doprowadzić
do nadmiernego przełączania kontekstów: procesor przez większość czasu zamiast użytecz-
nej pracy wykonuje program szeregujący.
•
W systemach 32-bitowych przestrzeń adresowa procesu jest ograniczona do 4 GB. Ponie-
waż wszystkie wątki współdzielą tę samą przestrzeń adresową, teoretycznie cały serwer
ma do dyspozycji 4 GB pamięci RAM, nawet jeśli w komputerze zainstalowano znacznie
więcej fizycznej pamięci. W praktyce przestrzeń adresowa robi się bardzo zatłoczona przy
znacznie mniejszym limicie, gdzieś około 1,5 GB w Linuksie x86.
•
Zatłoczona 32-bitowa przestrzeń adresowa stwarza jeszcze jeden problem: każdy wątek
potrzebuje trochę miejsca na stos. Kiedy stos zostaje przydzielony, to nawet jeśli wątek ko-
rzysta z niego w minimalnym stopniu, konieczne jest zarezerwowanie części przestrzeni
adresowej serwera. Każdy nowy wątek ogranicza miejsce, które można przeznaczyć na
stertę. Jeśli więc nawet w komputerze jest dużo fizycznej pamięci, może się okazać, że nie da
się jednocześnie zaalokować dużych buforów, uruchomić wiele współbieżnych wątków
oraz zapewnić każdemu z nich dużo miejsca na stos.
Zalety rozwidlonych procesów
Wady wątków odpowiadają zaletom korzystania z oddzielnych procesów:
•
Pomyłki programistyczne nie są tak katastrofalne. Choć niekontrolowany proces może
zakłócić działanie całego serwera, jest to znacznie mniej prawdopodobne.
•
Trudniej popełnić pomyłkę. Przez większość czasu programista może myśleć tylko o jed-
nym wątku wykonania, nie martwiąc się o potencjalnych intruzów.
•
Pojawia się znacznie mniej fantomowych usterek. Kiedy wystąpi jakaś usterka, zwykle
można łatwo ją odtworzyć. Każdy rozwidlony proces ma własną przestrzeń adresową, więc
stopień ich wzajemnej interakcji jest znacznie mniejszy.
•
W systemach 32-bitowych ryzyko wyczerpania przestrzeni adresowej jest dużo mniejsze.
116
|
Rozdział 6. Wątkowa obsługa żądań
Plik z chomika:
grzesiek0023
Inne pliki z tego folderu:
szesc-medali-wartosci- full version.pdf
(4055 KB)
bezmarketing. przestań kusić klientów, zacznij z nimi rozmawiać! ebook.pdf
(21274 KB)
mysql. mechanizmy wewnętrzne bazy danych pełna wersja.pdf
(6935 KB)
skuteczny-marketing-w-malej-firmie.-wydanie-ii-zaktualizowane full scan.pdf
(8742 KB)
twoje finanse. organizowanie i planowanie własnych finansów cała książka.pdf
(8438 KB)
Inne foldery tego chomika:
►►eBook!!!
Biznes
Cialo i duch
Ebooki
ebooki-Dieta Zdrowie
Zgłoś jeśli
naruszono regulamin