Wysoko wydajny PostgreSQL 9.0
Gregory Smith
Cena detaliczna: 79,00 zł
Twoja cena: 71,10 zł
Wydawnictwo: Helion
Oprawa: miękka
Numer katalogowy: 537054
Dostępność: 2 - 4 dni
Poleć znajomym:










Wysoko wydajny PostgreSQL 9.0 - opis
Poznaj najlepsze techniki zwiększania wydajności PostgreSQL i sprawdzone rozwiązania najczęściej spotykanych problemów!
- Jak dobierać komponenty serwera, aby maksymalnie wykorzystać jego możliwości?
- Jak przeprowadzać testy wydajności całego systemu, od sprzętu po aplikację?
- Jak skutecznie indeksować bazę danych i optymalizować zapytania?
- poznasz najlepsze praktyki pozwalające na obsłużenie wymagających aplikacji
- odkryjesz, dlaczego sprzęt komputerowy nadaje się (lub nie) dla wysoko wydajnych aplikacji bazodanowych
- zrozumiesz, na czym polegają kompromisy związane z szybkością i niezawodnością działania
- zoptymalizujesz system operacyjny, aby osiągnąć najlepszą wydajność bazy danych
- przeprowadzisz testy wydajności całego systemu, od sprzętu komputerowego po aplikację
- przeanalizujesz rzeczywiste przykłady, co pozwoli Ci poznać wpływ różnych ustawień parametrów serwera na wydajność
- będziesz skutecznie monitorować zdarzenia zachodzące na serwerze, zarówno w bazie danych, jak i poza nią
- znajdziesz najlepsze dodatki, rozszerzające podstawowe możliwości bazy danych PostgreSQL
- dowiesz się, jak przygotować replikację systemów za pomocą najnowszych funkcji wprowadzonych w PostgreSQL 9.0
Wysoko wydajny PostgreSQL 9.0 - spis treści
O autorze (13)
O recenzentach (15)
Wprowadzenie (17)
Rozdział 1. Wersje PostgreSQL (21)
- Wydajność we wcześniejszych wydaniach PostgreSQL (22)
- Wybór odpowiedniej wersji (23)
- Uaktualnienie do nowszej głównej wersji (23)
- PostgreSQL czy inna baza danych? (26)
- Narzędzia PostgreSQL (27)
- Moduły contrib w PostgreSQL (27)
- pgFoundry (30)
- Dodatkowe oprogramowanie związane z PostgreSQL (30)
- Cykl życiowy aplikacji PostgreSQL (31)
- Optymalizacja wydajności w praktyce (32)
- Podsumowanie (34)
- Zrównoważenie wydatków na zakup sprzętu (35)
- Procesor (36)
- Pamięć (37)
- Dyski twarde (37)
- Kontrolery dysków (43)
- Niezawodne kontrolery i konfiguracja dysków (48)
- Bufor zapisu (49)
- Wpływ bufora bez wstrzymywania zapisu na wydajność (52)
- Podsumowanie (53)
- Testy wydajności procesora i pamięci (55)
- memtest86+ (56)
- Testowanie pamięci za pomocą narzędzia STREAM (56)
- Testy wydajności procesora (59)
- Powody wolnego działania procesora i pamięci (60)
- Fizyczna wydajność dysku (61)
- Swobodny dostęp i liczba operacji wejścia-wyjścia na sekundę (61)
- Dostęp sekwencyjny i ZCAV (63)
- Liczba wykonywanych operacji zatwierdzania (64)
- Narzędzia do testowania wydajności dysku (65)
- hdtune (65)
- dd (69)
- bonnie++ (70)
- sysbench (75)
- Skomplikowane testy wydajności dysku twardego (77)
- Przykładowe wyniki testu wydajności dysku (78)
- Oczekiwana wydajność dysku (80)
- Podsumowanie (83)
- Maksymalna wielkość systemu plików (85)
- Odzyskiwanie danych po awarii systemu plików (86)
- Systemy plików z księgowaniem (87)
- Systemy plików w Linuksie (88)
- ext2 (88)
- ext3 (89)
- ext4 (91)
- XFS (91)
- Inne systemy plików w Linuksie (93)
- Bariery zapisu (94)
- Ogólne dostrajanie systemów plików w Linuksie (96)
- Systemy plików Solaris i FreeBSD (102)
- Solaris UFS (102)
- FreeBSD UFS2 (104)
- ZFS (105)
- Systemy plików w Windows (107)
- FAT32 (107)
- NTFS (107)
- Konfiguracja dysku dla PostgreSQL (108)
- Dowiązania symboliczne (108)
- Tablespace (109)
- Drzewo katalogów bazy danych (109)
- Macierze dyskowe, RAID i konfiguracja dysków (112)
- Podsumowanie (115)
- Jednostki pamięci w pliku konfiguracyjnym postgresql.conf (118)
- Zwiększenie parametrów pamięci współdzielonej w systemie Unix w celu zdefiniowania większego bufora (119)
- Semafory jądra (120)
- Oszacowanie wielkości pamięci współdzielonej (121)
- Przegląd bufora bazy danych (122)
- Instalacja pg_buffercache w bazie danych (123)
- Konfiguracja układu dysków (124)
- Utworzenie nowego bloku w bazie danych (126)
- Zapis zmodyfikowanych bloków na dysku (127)
- Naprawa bazy danych po awarii a wielkość bufora (128)
- Podstawy przetwarzania punktów kontrolnych (128)
- Dziennik zapisu z wyprzedzeniem a proces naprawy po awarii (128)
- Tworzenie punktów kontrolnych (129)
- Cykl życia bloku bazy danych (131)
- Bufor bazy danych kontra bufor systemu operacyjnego (132)
- Podwójnie buforowane dane (133)
- Przeciążenie punktu kontrolnego (134)
- Początkowe wskazówki dotyczące wielkości (135)
- Analiza zawartości bufora (136)
- Zapytania pozwalające na przegląd zawartości bufora (137)
- Przegląd wielkości bufora i jej dostosowanie (141)
- Podsumowanie (141)
- Interakcja z używaną konfiguracją (144)
- Ustawienia domyślne i sposoby ich zerowania (144)
- Dozwolony kontekst do przeprowadzania zmian (144)
- Ponowne wczytywanie pliku konfiguracyjnego (146)
- Ustawienia na poziomie serwera (147)
- Połączenia z bazą danych (147)
- Pamięć współdzielona (149)
- Rejestrowanie zdarzeń (150)
- Polecenie VACUUM i dane statystyczne (152)
- Punkty kontrolne (155)
- Ustawienia mechanizmu WAL (156)
- Replikacja WAL i PITR (159)
- Ustawienia na poziomie klienta (159)
- Optymalizacje niezalecane (162)
- Optymalizacja ustawień nowego serwera (164)
- Wskazówki dotyczące serwerów dedykowanych (164)
- Wskazówki dotyczące serwerów współdzielonych (165)
- pgtune (166)
- Podsumowanie (166)
- Widoczność transakcji wraz z kontrolą współbieżności (167)
- Wewnętrzne mechanizmy określające widoczność (168)
- Uaktualnienia (169)
- Konflikty podczas blokowania rekordów (171)
- Usunięcie (173)
- Zalety mechanizmu MVCC (174)
- Wady mechanizmu MVCC (174)
- Wyzerowanie identyfikatora transakcji (174)
- Vacuum (176)
- Implementacja procesu vacuum (177)
- Operacja czyszczenia na podstawie kosztów (179)
- Demon autovacuum (181)
- Powszechnie spotykane problemy z vacuum i autovacuum (185)
- Automatyczna analiza (190)
- Nadmuchane indeksy (191)
- Pomiar nadmuchania indeksu (191)
- Szczegółowe monitorowanie stron indeksu i danych (193)
- Monitorowanie dzienników zdarzeń zapytań (194)
- Podstawowa konfiguracja rejestracji zdarzeń w PostgreSQL (194)
- Rejestrowanie trudnych zapytań (199)
- Analiza pliku dziennika zdarzeń (200)
- Podsumowanie (207)
- Domyślne testy pgbench (209)
- Definicja tabeli (210)
- Wykrywanie skali wielkości bazy danych (210)
- Definicja skryptu zapytania (211)
- Konfiguracja serwera bazy danych pod kątem pgbench (213)
- Ręczne uruchamianie pgbench (214)
- Wyniki graficzne generowane za pomocą pgbench-tools (216)
- Konfiguracja pgbench-tools (216)
- Przykładowe wyniki testów pgbench (217)
- Test przeprowadzający jedynie zapytania SELECT (217)
- Test transakcji TPC-B-like (218)
- Analiza opóźnienia (219)
- Powody otrzymywania błędnych wyników i różnic (222)
- Programistyczne wersje PostgreSQL (223)
- Wątki worker i ograniczenia programu pgbench (224)
- Własne testy pgbench (225)
- Test szybkości wstawiania danych (225)
- Testy wydajności Transaction Processing Performance Council (226)
- Podsumowanie (228)
- Przegląd sposobów indeksowania (230)
- Dane statystyczne służące do pomiaru wielkości zapytania na dysku i bloku indeksu (230)
- Uruchomienie przykładu (231)
- Konfiguracja przykładowych danych (232)
- Proste wyszukiwania za pomocą indeksów (233)
- Pełne skanowanie tabeli (234)
- Tworzenie indeksu (235)
- Wyszukiwanie za pomocą nieefektywnego indeksu (235)
- Łączenie indeksów (237)
- Przejście ze skanowania indeksowanego na sekwencyjne (238)
- Klastry kontra indeksy (239)
- Polecenie Explain oraz liczniki bufora (241)
- Tworzenie indeksu i jego obsługa (241)
- Zapewnienie unikalności indeksów (242)
- Współbieżne tworzenie indeksu (243)
- Klastrowanie indeksu (243)
- Ponowne indeksowanie (244)
- Rodzaje indeksów (245)
- B-tree (245)
- Hash (246)
- GIN (246)
- GiST (247)
- Zaawansowane sposoby korzystania z indeksów (247)
- Indeksy wielokolumnowe (248)
- Indeksy dla operacji sortowania (248)
- Indeksy częściowe (249)
- Indeksy bazujące na wyrażeniu (249)
- Indeksowanie na potrzeby wyszukiwania pełnego tekstu (250)
- Podsumowanie (250)
- Przykładowe zbiory danych (253)
- Pagila (254)
- Dell Store 2 (254)
- Podstawy polecenia EXPLAIN (256)
- Obciążenie związane z pomiarem (256)
- Zachowanie przy zimnym i rozgrzanym buforze (257)
- Struktura węzłów planu zapytania (259)
- Podstawy obliczania kosztu (260)
- Narzędzia analizy danych polecenia EXPLAIN (262)
- Graficzne przedstawienie danych EXPLAIN (262)
- Rozbudowane dane wyjściowe (263)
- Dane wyjściowe EXPLAIN w postaci czytelnej dla komputera (263)
- Narzędzia służące do analizy planu (264)
- Łączenie zbiorów rekordów (265)
- Identyfikator krotki (265)
- Skanowanie sekwencyjne (266)
- Skanowanie indeksu (266)
- Mapa bitowa i skanowanie indeksu (267)
- Przetwarzanie węzłów (268)
- Węzeł Sort (268)
- Węzeł Limit (270)
- Węzeł Aggregate (271)
- Węzeł HashAggregate (272)
- Węzeł Unique (273)
- Węzeł Result (274)
- Węzeł Append (275)
- Węzeł Group (276)
- Węzły Subquery Scan i Subplan (277)
- Operacje ustawiania (278)
- Materializacja (279)
- Skanowanie CTE (280)
- Złączenia (281)
- Pętle zagnieżdżone (281)
- Złączenie Merge Join (283)
- Złączenia Hash Join (285)
- Dane statystyczne (290)
- Przeglądanie i szacowanie za pomocą danych statystycznych (290)
- Cele danych statystycznych (293)
- Obszary trudne do oszacowania (295)
- Inne parametry planowania zapytania (295)
- effective_cache_size (295)
- work_mem (297)
- constraint_exclusion (298)
- cursor_tuple_fraction (298)
- Wykonywanie innych typów zapytań (298)
- Poprawianie zapytań (299)
- Optymalizacja dla w pełni buforowanych zbiorów danych (300)
- Poszukiwanie odpowiednika zapytania (300)
- Wyłączanie funkcji optymalizatora (301)
- Rozwiązywanie błędów optymalizatora (305)
- Unikanie planu restrukturyzacji za pomocą OFFSET (306)
- Zewnętrzne źródła problemów (309)
- Ograniczenia SQL (309)
- Numerowanie rekordów w SQL (309)
- Używanie funkcji Window do numerowania (311)
- Używanie funkcji Window do kumulowania wyniku (311)
- Podsumowanie (313)
- Widoki danych statystycznych (315)
- Widoki kumulacyjne i żywe (317)
- Dane statystyczne tabel (318)
- Operacje wejścia-wyjścia tabel (320)
- Dane statystyczne indeksu (322)
- Operacje wejścia-wyjścia indeksu (323)
- Dane statystyczne dotyczące całej bazy danych (324)
- Połączenia i aktywność (324)
- Blokady (325)
- Transakcje wirtualne (326)
- Dekodowanie informacji o blokadzie (327)
- Oczekiwanie na blokadę transakcji (330)
- Oczekiwanie na blokadę tabeli (331)
- Rejestrowanie informacji o blokadach (332)
- Wykorzystanie dysku (333)
- Bufor, zapis w tle oraz aktywność tworzenia punktu kontrolnego (335)
- Zapis migawek pg_stat_bgwriter (337)
- Optymalizacja z użyciem danych statystycznych dotyczących zapisu w tle (339)
- Podsumowanie (341)
- Narzędzia monitorujące w systemie Unix (343)
- Przykładowa konfiguracja (344)
- vmstat (344)
- iostat (347)
- top (355)
- sysstat i sar (357)
- Narzędzia monitorujące dla Windows (360)
- Menedżer zadań (360)
- Monitor systemu Windows (360)
- Oprogramowanie trendów (362)
- Rodzaje monitorowania i oprogramowanie trendów (363)
- Nagios (364)
- Cacti (366)
- Munin (366)
- Inne pakiety trendów (367)
- Podsumowanie (369)
- Pula połączeń (371)
- Liczniki puli połączeń (372)
- pgpool-II (373)
- pgBouncer (374)
- Buforowanie bazy danych (376)
- memcached (376)
- pgmemcache (377)
- Podsumowanie (378)
- Hot Standby (381)
- Terminologia (382)
- Konfiguracja przekazywania danych mechanizmu WAL (383)
- Protokół Streaming Replication (384)
- Optymalizacja funkcji Hot Standby (384)
- Menedżery kolejki replikacji (386)
- Slony (387)
- Londiste (387)
- Skalowanie odczytu za pomocą oprogramowania replikacji bazującego na kolejce (388)
- Wymagania aplikacji specjalnych (388)
- Bucardo (388)
- pgpool-II (389)
- Inne interesujące projekty replikacji (389)
- Podsumowanie (391)
- Partycjonowanie o zasięgu tabeli (393)
- Określenie pola klucza używanego do partycjonowania (394)
- Wielkości partycji (395)
- Tworzenie partycji (396)
- Przekierowywanie poleceń INSERT do partycji (397)
- Plany zapytań dla pustej partycji (399)
- Zmiana daty i uaktualnianie wyzwalacza (400)
- Migracja partycjonowanej używanej tabeli (401)
- Zapytania partycjonowane (403)
- Tworzenie nowych partycji (405)
- Zalety partycjonowania (406)
- Błędy często popełniane podczas partycjonowania (407)
- Partycjonowanie poziome za pomocą PL/Proxy (408)
- Generowanie wartości hash (408)
- Skalowanie za pomocą PL/Proxy (410)
- Skalowanie za pomocą GridSQL (411)
- Podsumowanie (412)
- Operacja bulk-loading (415)
- Metody wczytywania danych (416)
- Optymalizacja operacji bulk-loading (417)
- Pominięcie optymalizacji mechanizmu WAL (418)
- Ponowne utworzenie indeksów i dodanie ograniczeń (419)
- Przywracanie równoległe (419)
- Czyszczenie po operacji wczytania danych (420)
- Najczęstsze problemy związane z wydajnością (421)
- Zliczanie rekordów (421)
- Niewyjaśnione operacje zapisu (422)
- Wolne wykonywanie funkcji i poleceń składowanych (423)
- Testy wydajności PL/pgSQL (424)
- Ogromne przeciążenie klucza zewnętrznego (424)
- Użycie pamięci przez wyzwalacz (425)
- Ogromne przeciążenie mechanizmu zbierającego dane statystyczne (426)
- Zmaterializowane widoki (427)
- Profilowanie bazy danych (427)
- gprof (427)
- OProfile (428)
- Visual Studio (428)
- DTrace (428)
- Problemy wydajności w poszczególnych wersjach (429)
- Agresywne uaktualnienia PostgreSQL (430)
- 8.1 (431)
- 8.2 (432)
- 8.3 (432)
- 8.4 (434)
- 9.0 (436)
- Podsumowanie (441)



