Sasha Pachev mysql. mechanizmy ...

Sasha Pachev mysql. mechanizmy wewnętrzne bazy danych full version, ebooki

[ Pobierz całość w formacie PDF ]
//-->Narzędziowe wywołania APIMakra preprocesoraZmienne globalne6568704. Komunikacja między klientem a serwerem ............................................................... 73Przegląd protokołuFormat pakietuRelacje między protokołem MySQL a warstwą systemu operacyjnegoUzgadnianie połączeniaPakiet poleceniaOdpowiedzi serwera7373747580835. Zmienne konfiguracyjne .............................................................................................89Zmienne konfiguracyjne: samouczekInteresujące aspekty konkretnych zmiennych konfiguracyjnych89966. Wątkowa obsługażądań...........................................................................................115Wątki kontra procesyImplementacja obsługiżądańProblemy programowania wątkowego1151171217. Interfejs mechanizmów składowania .......................................................................127Klasa handlerDodawanie własnego mechanizmu składowania do MySQL1271428. Dostęp współbieżny i blokowanie ............................................................................ 163Menedżer blokad tabel1649. Parser i optymalizator ............................................................................................... 169ParserOptymalizator16917210. Mechanizmy składowania ........................................................................................ 195Wspólne cechy architekturyMyISAMInnoDBMemory (Heap)MyISAM MergeNDBArchiveFederated1961962022042052052062076|Spis treści11. Transakcje ..................................................................................................................209Implementowanie transakcyjnego mechanizmu składowaniaImplementowanie podklasy handlerDefiniowanie handlertonaPraca z pamięcią podręczną zapytańPraca z binarnym dziennikiem replikacjiUnikanie zakleszczeń20921021221421421512. Replikacja ....................................................................................................................217PrzeglądReplikacja oparta na instrukcjach i na wierszachDwuwątkowy serwer podrzędnyKonfiguracja z wieloma serwerami nadrzędnymiPolecenia SQL ułatwiające zrozumienie replikacjiFormat dziennika binarnegoTworzenie własnego narzędzia do replikacji217218219219220223227Skorowidz .............................................................................................................................229Spis treści|7ROZDZIAŁ 6.Wątkowa obsługażądańPodczas pisania kodu serwera programista staje przed dylematem: czy obsługiwaćżądaniaza pomocą wątków, czy procesów? Oba podejścia mają swoje zalety i wady. Od samego początkuMySQL korzystał z wątków. W tym rozdziale uzasadnimy wątkową obsługężądańw serwerzeMySQL, a także omówimy jej wady i zalety oraz implementację.Wątki kontra procesyByć może najważniejszą różnicą między procesem a wątkiem jest to,żewą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 drugiegomodelu.Zalety wątkówWą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 nowegowątku są ograniczone do stosu oraz do pamięci ewidencyjnej używanej przez menedżerwą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, zwanejmuteksem(opi-sywanej w dalszej części rozdziału). Jeśli nie ma takiej możliwości, dostęp do globalnychdanych można uzyskiwać w taki sposób, jakby nie byłożadnychwątków.•Tworzenie wątku zajmuje znacznie mniej czasu niż tworzenie procesu, ponieważ nie trzebakopiować 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ędzyprocesami. Dzięki temu w mocno obciążonym serwerze procesor ma więcej czasu na wyko-nywanie rzeczywistej pracy.115Wady wątkówWą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łanieinnych wątków.•Łatwopopeł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 defensywnapostawa.•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środowiskachproduk-cyjnych. Wysokie prawdopodobieństwo występowania takich usterek jest następstwemwspółdzielenia przestrzeni adresowej, co znacznie zwiększa stopień interakcji międzywątkami.•W pewnych okolicznościach rywalizacja o blokady może wymknąć się spod kontroli. Jeślizbyt 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 serwerma do dyspozycji 4 GB pamięci RAM, nawet jeśli w komputerze zainstalowano znaczniewięcej fizycznej pamięci. W praktyce przestrzeń adresowa robi się bardzo zatłoczona przyznacznie mniejszym limicie, gdzieś około 1,5 GB w Linuksie x86.•Zatłoczona 32-bitowa przestrzeń adresowa stwarza jeszcze jeden problem: każdy wątekpotrzebuje 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 przestrzeniadresowej serwera. Każdy nowy wątek ogranicza miejsce, które można przeznaczyć nastertę. Jeśli więc nawet w komputerze jest dużo fizycznej pamięci, może się okazać,żenie dasię jednocześnie zaalokować dużych buforów, uruchomić wiele współbieżnych wątkóworaz zapewnić każdemu z nich dużo miejsca na stos.Zalety rozwidlonych procesówWady wątków odpowiadają zaletom korzystania z oddzielnych procesów:•Pomyłki programistyczne nie są tak katastrofalne. Choć niekontrolowany proces możezakłó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, zwyklemożnałatwoją odtworzyć. Każdy rozwidlony proces ma własną przestrzeń adresową, więcstopień 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ń [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • jutuu.keep.pl