Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00140 001882 12453623 na godz. na dobę w sumie
PostgreSQL. Receptury dla administratora - książka
PostgreSQL. Receptury dla administratora - książka
Autor: , Liczba stron: 408
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-246-3061-5 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> bazy danych >> postgresql - programowanie
Porównaj ceny (książka, ebook, audiobook).

Poznaj najlepsze przepisy na pracę z PostgreSQL!

PostgreSQL to jedna z najbardziej zaawansowanych baz danych o otwartym kodzie źródłowym. Przez wiele lat była niedoścignionym wzorem dla innego darmowego rozwiązania - MySQL. Dziś znajduje zastosowanie wszędzie tam, gdzie wymagana jest najwyższa niezawodność i wydajność, a brak konieczności zapłaty gra kluczową rolę. Stosunek jakości do ceny w przypadku PostgreSQL zmierza do nieskończoności!

Trzymasz w rękach książkę zawierającą liczne przepisy na najlepsze wykorzystanie PostgreSQL. System ten sprawdza się zawsze, gdy chcesz szybko i bezproblemowo osiągnąć zamierzone cele. W trakcie lektury dowiesz się, jak nawiązać połączenie z serwerem, skorzystać z graficznych lub tekstowych narzędzi administracyjnych oraz bezpiecznie zmienić hasło administratora. Ponadto nauczysz się kontrolować przestrzeń dyskową wykorzystywaną przez poszczególne bazy danych, tworzyć tabele, ładować dane oraz zarządzać użytkownikami i ich uprawnieniami. Autorzy dużo miejsca poświęcają kwestii bezpieczeństwa. W końcu dane to najcenniejsza rzecz, jaką przechowuje się w bazach! Każdy z rozdziałów przynosi ogrom wiedzy o różnym poziomie skomplikowania. Zaawansowanych użytkowników zainteresuje rozdział poświęcony replikacji, a tych początkujących rozdział traktujący o uruchamianiu i zatrzymywaniu serwera baz danych. Ta książka przyda się po prostu wszystkim użytkownikom PostgreSQL!

Zobacz, co możesz osiągnąć razem z bazą PostgreSQL!

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Idź do • Spis treści • Przykładowy rozdział • Skorowidz Katalog książek • Katalog online • Zamów drukowany katalog Twój koszyk • Dodaj do koszyka Cennik i informacje • Zamów informacje o nowościach • Zamów cennik Czytelnia • Fragmenty książek online Kontakt Helion SA ul. Kościuszki 1c 44-100 Gliwice tel. 32 230 98 63 e-mail: helion@helion.pl © Helion 1991–2011 PostgreSQL. Receptury dla administratora Autor: Simon Riggs, Hannu Krosing Tłumaczenie: Mikołaj Szczepaniak ISBN: 978-83-246-3061-5 Tytuł oryginału: PostgreSQL 9 Administration Cookbook Format: 170×230, stron: 408 Poznaj najlepsze przepisy na pracę z PostgreSQL! • Jak zapewnić bezpieczeństwo bazom danych? • Jak uruchomić kilka serwerów baz danych w ramach jednego systemu operacyjnego? • Jak zarządzać użytkownikami i ich uprawnieniami? PostgreSQL to jedna z najbardziej zaawansowanych baz danych o otwartym kodzie źródłowym. Przez wiele lat była niedoścignionym wzorem dla innego darmowego rozwiązania – MySQL. Dziś znajduje zastosowanie wszędzie tam, gdzie wymagana jest najwyższa niezawodność i wydajność, a brak konieczności zapłaty gra kluczową rolę. Stosunek jakości do ceny w przypadku PostgreSQL zmierza do nieskończoności! Trzymasz w rękach książkę zawierającą liczne przepisy na najlepsze wykorzystanie PostgreSQL. System ten sprawdza się zawsze, gdy chcesz szybko i bezproblemowo osiągnąć zamierzone cele. W trakcie lektury dowiesz się, jak nawiązać połączenie z serwerem, skorzystać z graficznych lub tekstowych narzędzi administracyjnych oraz bezpiecznie zmienić hasło administratora. Ponadto nauczysz się kontrolować przestrzeń dyskową wykorzystywaną przez poszczególne bazy danych, tworzyć tabele, ładować dane oraz zarządzać użytkownikami i ich uprawnieniami. Autorzy dużo miejsca poświęcają kwestii bezpieczeństwa. W końcu dane to najcenniejsza rzecz, jaką przechowuje się w bazach! Każdy z rozdziałów przynosi ogrom wiedzy o różnym poziomie skomplikowania. Zaawansowanych użytkowników zainteresuje rozdział poświęcony replikacji, a tych początkujących rozdział traktujący o uruchamianiu i zatrzymywaniu serwera baz danych. Ta książka przyda się po prostu wszystkim użytkownikom PostgreSQL! • Zalety PostgreSQL w kontekście innych rozwiązań bazodanowych • Udostępnianie serwera w sieci • Zastosowanie narzędzia psql do wykonywania zapytań • Sprawdzanie wersji serwera • Lista baz danych na serwerze • Planowanie nowej bazy danych • Parametry, ich znaczenie i ustawianie • Uruchamianie i zatrzymywanie serwera • Ponowne ładowanie plików konfiguracyjnych • Przyznawanie użytkownikom własnych baz danych • Wiele serwerów baz danych w ramach jednego systemu operacyjnego • Generowanie danych testowych • Tworzenie kont użytkowników i zarządzanie nimi oraz ich uprawnieniami • Równoległe wykonywanie zadań – polecenie pg_batch • Monitorowanie i diagnostyka serwera PostgreSQL • Przygotowywanie kopii bezpieczeństwa Zobacz, co możesz osiągnąć razem z bazą PostgreSQL! Spis treĂci O autorach O recenzentach Przedmowa Rozdziaï 1. Pierwsze kroki Wprowadzenie Wprowadzenie do systemu PostgreSQL 9 Jak zdobyÊ system PostgreSQL ’Èczenie z bazÈ danych PostgreSQL Umoĝliwianie zdalnego dostÚpu do serwera za poĂrednictwem sieci Korzystanie z graficznych narzÚdzi administracyjnych Stosowanie narzÚdzi psql do wykonywania zapytañ i skryptów Bezpieczna zmiana hasïa Unikanie trwaïego kodowania hasïa Stosowanie pliku usïugi poïÈczeñ RozwiÈzywanie problemów zwiÈzanych z nawiÈzywaniem poïÈczenia Rozdziaï 2. Poznawanie bazy danych Wprowadzenie Która wersja serwera? Od kiedy dziaïa dany serwer? Lokalizacja plików serwera bazy danych Lokalizacja dziennika komunikatów serwera bazy danych Lokalizacja identyfikatora systemu bazy danych Lista baz danych na danym serwerze bazy danych Ile tabel w bazie danych? Ile przestrzeni dyskowej zajmuje baza danych? Ile przestrzeni dyskowej zajmuje tabela? Które tabele sÈ najwiÚksze? Ile wierszy w tabeli? Szybkie szacowanie liczby wierszy w tabeli Odkrywanie zaleĝnoĂci ïÈczÈcych obiekty 9 11 13 19 19 20 22 24 27 29 35 39 40 42 43 47 47 48 50 51 53 56 57 60 63 64 65 65 67 71 Spis treĞci Rozdziaï 3. Konfiguracja Wprowadzenie Lektura podrÚcznika uĝytkownika (RTFM) Planowanie nowej bazy danych Zmiana parametrów na poziomie programów Jakie sÈ bieĝÈce ustawienia konfiguracyjne? Które parametry zawierajÈ wartoĂci inne niĝ ustawienia domyĂlne? Aktualizacja pliku parametrów Ustawianie parametrów dla konkretnych grup uĝytkowników Lista podstawowych zadañ zwiÈzanych z konfiguracjÈ serwera Dodawanie moduïu zewnÚtrznego do systemu PostgreSQL Uruchamianie serwera w trybie oszczÚdzania energii Rozdziaï 4. Kontrola serwera Wprowadzenie RÚczne uruchamianie serwera bazy danych Szybkie i bezpieczne zatrzymywanie serwera Awaryjne zatrzymywanie serwera Ponowne ïadowanie plików konfiguracyjnych serwera Szybkie restartowanie serwera Zapobieganie nowym poïÈczeniom Ograniczanie liczby sesji dla kaĝdego uĝytkownika do jednej RozïÈczanie uĝytkowników Projektowanie pod kÈtem obsïugi wielu podmiotów Stosowanie wielu schematów Przyznawanie uĝytkownikom wïasnych, prywatnych baz danych Uruchamianie wielu serwerów w jednym systemie Konfigurowanie puli poïÈczeñ Rozdziaï 5. Tabele i dane Wprowadzenie Wybieranie wïaĂciwych nazw dla obiektów bazy danych Obsïuga obiektów z nazwami otoczonymi cudzysïowami Wymuszanie stosowania tych samych definicji dla tak samo nazwanych kolumn Identyfikacja i usuwanie powtarzajÈcych siÚ wierszy Zapobieganie wystÚpowaniu powtarzajÈcych siÚ wierszy Odnajdywanie unikatowego klucza dla zbioru danych Generowanie danych testowych Losowe próbkowanie danych ’adowanie danych z arkusza kalkulacyjnego ’adowanie danych ze zwykïych plików 75 75 76 77 79 81 82 84 85 87 89 91 93 93 94 95 96 97 99 101 103 104 106 107 110 112 113 117 117 118 120 122 126 129 135 137 141 143 146 4 Spis treĞci Rozdziaï 6. Bezpieczeñstwo Wprowadzenie Wycofywanie dostÚpu uĝytkownika do tabeli Nadawanie uĝytkownikowi uprawnieñ dostÚpu do tabeli Tworzenie nowego uĝytkownika Tymczasowe uniemoĝliwianie uĝytkownikowi nawiÈzywania poïÈczenia Usuwanie uĝytkownika bez usuwania jego danych Sprawdzanie, czy wszyscy uĝytkownicy stosujÈ bezpieczne hasïa Nadawanie konkretnym uĝytkownikom ograniczonych uprawnieñ superuĝytkownika Weryfikacja zmian wprowadzonych za pomocÈ wyraĝeñ jÚzyka DDL Weryfikacja zmian w danych Integracja z serwerem LDAP NawiÈzywanie poïÈczenia SSL Szyfrowanie poufnych danych Rozdziaï 7. Administracja bazÈ danych Wprowadzenie Pisanie skryptu, który albo jest wykonywany w caïoĂci, albo nie jest wykonywany wcale Pisanie skryptu narzÚdzia psql, który przerwie pracÚ w momencie napotkania pierwszego bïÚdu Wykonywanie operacji na wielu tabelach Dodawanie i usuwanie kolumn tabeli Zmiana typu danych kolumny Dodawanie i usuwanie schematów Przenoszenie obiektów pomiÚdzy schematami Dodawanie i usuwanie przestrzeni tabel Przenoszenie obiektów pomiÚdzy przestrzeniami tabel Uzyskiwanie dostÚpu do obiektów naleĝÈcych do innych baz danych PostgreSQL Umoĝliwianie aktualizacji perspektyw Rozdziaï 8. Monitoring i diagnostyka Wprowadzenie Czy uĝytkownik jest poïÈczony? Co uruchamiajÈ uĝytkownicy? Czy uĝytkownicy sÈ aktywni, czy zablokowani? Kto blokuje uĝytkowników? Zabijanie konkretnej sesji Rozstrzyganie transakcji, której przygotowanie budzi wÈtpliwoĂci Czy ktokolwiek uĝywa okreĂlonej tabeli? Kiedy ktoĂ po raz ostatni uĝywaï tej tabeli? Ile przestrzeni dyskowej zajmujÈ dane tymczasowe? Dlaczego spadïa szybkoĂÊ wykonywania zapytañ? Badanie bïÚdów i przygotowywanie raportów Generowanie codziennych podsumowañ bïÚdów zarejestrowanych w pliku dziennika 151 151 153 155 157 158 160 162 163 166 168 171 172 175 181 181 183 185 187 192 195 198 200 201 205 208 214 221 221 225 226 229 231 232 235 235 237 240 242 246 248 5 Spis treĞci Rozdziaï 9. BieĝÈca konserwacja Wprowadzenie Kontrola automatycznej konserwacji bazy danych Unikanie automatycznego mroĝenia i uszkodzeñ stron Unikanie przekrÚcania licznika transakcji Usuwanie starych, przygotowanych transakcji CzynnoĂci na rzecz uĝytkowników czÚsto korzystajÈcych z tabel tymczasowych Identyfikacja i naprawianie przeroĂniÚtych tabel i indeksów Konserwacja indeksów Odnajdywanie nieuĝywanych indeksów Ostroĝne usuwanie niepotrzebnych indeksów Planowanie konserwacji Rozdziaï 10. WydajnoĂÊ i przetwarzanie wspóïbieĝne Wprowadzenie Odnajdywanie wolnych wyraĝeñ jÚzyka SQL Gromadzenie standardowych statystyk z perspektyw pg_stat* Identyfikacja przyczyn wolnego dziaïania wyraĝeñ jÚzyka SQL Ograniczanie liczby zwracanych wierszy Upraszczanie zïoĝonych wyraĝeñ jÚzyka SQL Przyspieszanie zapytañ bez ich przebudowywania Dlaczego zapytanie nie uĝywa indeksu? Jak wymusiÊ na zapytaniu uĝycie indeksu? Stosowanie techniki blokowania optymistycznego Raportowanie o problemach zwiÈzanych z wydajnoĂciÈ Rozdziaï 11. Kopie zapasowe i odzyskiwanie baz danych Wprowadzenie Rozumienie procesu odzyskiwania danych po awarii oraz kontrola odpowiednich mechanizmów Planowanie tworzenia kopii zapasowych Logiczna kopia zapasowa jednej bazy danych tworzona w czasie rzeczywistym Logiczna kopia zapasowa wszystkich baz danych tworzona w czasie rzeczywistym Logiczna kopia zapasowa wszystkich tabel w pojedynczej przestrzeni tabel tworzona w czasie rzeczywistym Kopia zapasowa definicji obiektów bazy danych Autonomiczna, fizyczna kopia zapasowa bazy danych tworzona w czasie rzeczywistym Fizyczna kopia bazy danych tworzona w czasie rzeczywistym i archiwizacja ciÈgïa Odzyskiwanie wszystkich baz danych Odzyskiwanie do punktu w czasie Odzyskiwanie usuniÚtej lub uszkodzonej tabeli Odzyskiwanie usuniÚtej lub uszkodzonej przestrzeni tabel Odzyskiwanie usuniÚtej lub uszkodzonej bazy danych Podnoszenie wydajnoĂci tworzenia kopii zapasowych i (lub) odzyskiwania baz danych Przyrostowe i róĝnicowe tworzenie kopii zapasowych i odzyskiwanie baz danych 251 251 252 258 260 262 265 266 271 275 276 278 281 281 282 285 287 291 293 299 302 303 305 307 309 310 310 312 316 318 319 321 322 325 328 332 335 338 340 341 345 6 Spis treĞci Rozdziaï 12. Replikacja i aktualizacje Wprowadzenie Terminologia zwiÈzana z replikacjÈ Zalecane praktyki replikacji Replikacja poprzez przesyïanie dzienników w formie plików Konfigurowanie replikacji poprzez strumieniowe przesyïanie dzienników ZarzÈdzanie replikacjÈ poprzez przesyïanie dzienników ZarzÈdzanie trybem gorÈcej gotowoĂci Replikacja selektywna przy uĝyciu narzÚdzia Londiste Replikacja selektywna przy uĝyciu narzÚdzia Slony 2.0 Równowaĝenie obciÈĝeñ za pomocÈ narzÚdzia pgpool-II 3.0 Aktualizacje (podwersje) Aktualizacje dziaïajÈcego serwera do wersji gïównych Aktualizacje do wersji gïównych w sieci przy uĝyciu narzÚdzi do replikacji Skorowidz 349 349 350 354 356 361 366 370 375 380 385 389 390 393 395 7 3 Konfiguracja Ten rozdziaï zawiera nastÚpujÈce podrozdziaïy: Q „Lektura podrÚcznika uĝytkownika (RTFM)” Q „Planowanie nowej bazy danych” Q „Zmiana parametrów na poziomie programów” Q „Jakie sÈ bieĝÈce ustawienia konfiguracyjne?” Q „Które parametry zawierajÈ wartoĂci inne niĝ ustawienia domyĂlne?” Q „Aktualizacja pliku parametrów” Q „Ustawianie parametrów dla konkretnych grup uĝytkowników” Q „Lista podstawowych zadañ zwiÈzanych z konfiguracjÈ serwera” Q „Dodawanie moduïu zewnÚtrznego do systemu PostgreSQL” Q „Uruchamianie serwera w trybie oszczÚdzania energii” Wprowadzenie OtrzymujÚ mnóstwo pytañ dotyczÈcych ustawiania parametrów w systemie PostgreSQL. Wszyscy jesteĂmy zajÚci, zatem wiÚkszoĂÊ z nas szuka ěródïa informacji, które pozwoliïoby w ciÈgu piÚciu minut rozstrzygnÈÊ wszystkie wÈtpliwoĂci. WïaĂnie taki jest cel kaĝdej ksiÈĝki zïoĝonej z receptur, wiÚc jesteĂmy na najlepszej drodze do osiÈgniÚcia wymarzonego ideaïu. Niektórzy sÈdzÈ, ĝe istniejÈ jakieĂ magiczne, uniwersalne ustawienia parametrów, które podniosÈ wydajnoĂÊ ich systemów. PoĂwiÚcajÈ dïugie godziny na lekturÚ rozmaitych ksiÈĝek w poszukiwa- niu wskazówek. Innych nie opuszcza zadowolenie, poniewaĝ odkryli jakÈĂ witrynÚ internetowÈ, która wszystko wyjaĂnia — sÈ pewni, ĝe ich baza danych jest skonfigurowana prawidïowo. PostgreSQL. Receptury dla administratora W wiÚkszoĂci przypadków zrozumienie ustawieñ nie stanowi wiÚkszego problemu. Duĝo trud- niejsze jest wypracowanie najlepszych ustawieñ. Co wiÚcej, nawet optymalne ustawienia nierzadko zmieniajÈ siÚ wraz z rozwojem sytuacji. W tym rozdziale skoncentrujemy siÚ przede wszystkim na tym, jak, kiedy i gdzie naleĝy zmieniaÊ ustawienia parametrów. Lektura podrÚcznika uĝytkownika (RTFM) Skrót RTFM (od ang. Reading the Fine Manual) czÚsto jest uĝywany w roli bardziej opryskli- wego odpowiednika stwierdzenia „nie przeszkadzaj, jestem zajÚty”. Co ciekawe, zachÚta do przeczytania podrÚcznika uĝytkownika w zdecydowanej wiÚkszoĂci przypadków jest najlepszÈ moĝliwÈ radÈ. Nie naleĝy z góry odrzucaÊ podobnych sugestii — powinniĂmy raczej korzystaÊ z tak cennych wskazówek. Warto przy tym pamiÚtaÊ, ĝe zawsze naleĝy siÚgaÊ po podrÚcznik uĝytkownika, którego wersja odpowiada wersji serwera, na którym pracujemy. PodrÚcznik uĝytkownika systemu PostgreSQL jest napisany w bardzo przemyĂlany sposób. Co wiÚcej, omawia wybrane zagadnienia w sposób wyczerpujÈcy. JednÈ z jego najwiÚkszych wad jest to, ĝe dokumenty skïadajÈce siÚ na ten podrÚcznik nie sÈ zorganizowane z myĂlÈ o oso- bach, które dopiero poznajÈ system PostgreSQL. Rozkïad materiaïu przystosowano raczej do po- trzeb osób poszukujÈcych konkretnych informacji technicznych, tak aby mogïy bïyskawicznie oceniaÊ, czy napotykane problemy wynikajÈ na przykïad z bïÚdów samych uĝytkowników. PodrÚcznik w niektórych przypadkach odpowiada na pytanie Co?, ale juĝ duĝo rzadziej od- powiada na pytania Dlaczego? czy Jak?. Poniewaĝ sam uczestniczyïem w pisaniu wybranych sekcji dokumentacji systemu PostgreSQL, uwaĝam za swój obowiÈzek zachÚciÊ czytelnika do lektury tego materiaïu. Mimo wszystkich zalet podrÚcznika, ta ksiÈĝka zawiera mnóstwo przydatnych informacji, których nie moĝna znaleěÊ w tamtych dokumentach. Jak to zrobiÊ… Najwaĝniejsze dokumenty dla kaĝdego wydania sÈ dostÚpne na nastÚpujÈcej stronie interne- towej: http://www.postgresql.org/docs/manuals/. NajwiÚkszym zainteresowaniem cieszÈ siÚ nastÚpujÈce fragmenty dokumentacji: Q dokumentacja poleceñ jÚzyka SQL oraz podrÚcznik uĝytkownika narzÚdzi klienta i serwera (http://www.postgresql.org/docs/9.0/interactive/reference.html); Q konfiguracja (http://www.postgresql.org/docs/9.0/interactive/runtime-config.html); Q funkcje (http://www.postgresql.org/docs/9.0/interactive/functions.html). Czytelnik moĝe teĝ pobraÊ podrÚcznik uĝytkownika w formie pliku PDF, który w pewnych przypadkach uïatwia wyszukiwanie informacji. Szczerze odradzam drukowanie tego dokumentu! Caïa dokumentacja zajmuje ponad 2000 stron A4. 76 Rozdziaá 3. • Konfiguracja Jak to dziaïa… Dokumenty systemu PostgreSQL napisano w jÚzyku SGML, który pod wieloma wzglÚdami przypomina jÚzyk XML, choÊ w paru aspektach jest nieco inny. Pliki jÚzyka SGML sÈ nastÚpnie przetwarzane i konwertowane na pliki w formatach HTML, PDF itp. To nie wszystko… Warto teĝ zajrzeÊ do serwisu wiki w ramach witryny postgresql.org. Dodatkowe informacje moĝna znaleěÊ takĝe pod adresem http://wiki.postgresql.org. Planowanie nowej bazy danych Planowanie nowej bazy danych bywa ĝmudnym zadaniem. Dla wielu uĝytkowników mnogoĂÊ opcji jest przytïaczajÈca — w tym podrozdziale zaproponujemy kilka przydatnych koncepcji. Naleĝy wystrzegaÊ siÚ dróg na skróty i nieprzemyĂlanych dziaïañ w nadziei, ĝe nasza ograni- czona wiedza na zawsze pozwoli rozstrzygaÊ wszelkie wÈtpliwoĂci. Przygotowania Czytelnik powinien byÊ przygotowany na to zadanie. Nie naleĝy jednak oczekiwaÊ, ĝe ktoĂ dokïadnie powie, co robiÊ. JeĂli nie dysponujemy jasno sprecyzowanymi wymaganiami, po- winniĂmy sami je spisaÊ, oznaczajÈc kaĝdÈ pozycjÚ jako zaïoĝenie, nie wymaganie — nie wolno myliÊ obu pojÚÊ. Naleĝy przeprowadziÊ tyle operacji, ile bÚdzie konieczne do uzgodnienia wymagañ ze wszystkimi zainteresowanymi. Po sporzÈdzeniu wymagañ moĝna przystÈpiÊ do budowy prototypu. Jak to zrobiÊ… Naleĝy przygotowaÊ dokument obejmujÈcy nastÚpujÈce aspekty: Q Projekt bazy danych: naleĝy zaplanowaÊ projekt bazy danych. Q Naleĝy obliczyÊ poczÈtkowy rozmiar bazy danych. Q Analiza transakcji: jak uĝytkownicy bÚdÈ uzyskiwali dostÚp do bazy danych? Q Naleĝy przeanalizowaÊ najczÚĂciej uĝywane Ăcieĝki dostÚpu. Q Jakie sÈ wymagania odnoĂnie czasów odpowiedzi? 77 PostgreSQL. Receptury dla administratora Q Konfiguracja sprzÚtowa Q WstÚpna analiza wydajnoĂci — czy wszystkie dane zmieszczÈ siÚ w pamiÚci operacyjnej? Q Plan lokalizacji Q Naleĝy wybraÊ obowiÈzujÈce na serwerze schemat kodowania, ustawienia regionalne i strefÚ czasowÈ. Q Plan dostÚpu i zabezpieczeñ Q Naleĝy zidentyfikowaÊ systemy klienckie i wskazaÊ wymagane sterowniki. Q Naleĝy utworzyÊ role zgodnie z przyjÚtym wczeĂniej planem kontroli dostÚpu. Q Naleĝy przygotowaÊ plik pg_hba.conf. Q Plan konserwacji: kto bÚdzie dbaï o bieĝÈce funkcjonowanie bazy danych? Jak bÚdzie to robiï? Q Plan dostÚpnoĂci: naleĝy przemyĂleÊ wymagania w zakresie dostÚpnoĂci. Q Naleĝy okreĂliÊ parametr checkpoint_timeout. Q Naleĝy zaplanowaÊ mechanizm tworzenia kopii zapasowych i poddaÊ je testom. Q Plan wysokiej dostÚpnoĂci Q Naleĝy zdecydowaÊ, czy bÚdzie konieczna replikacja, a jeĂli tak — w jakiej formie. Jak to dziaïa… Jednym z najwaĝniejszych powodów planowania bazy danych z wyprzedzeniem sÈ utrudnie- nia zwiÈzane ze zmianÈ pewnych aspektów na póěniejszych etapach pracy. Problem jest szczególnie dotkliwy w przypadku schematów kodowania i ustawieñ regionalnych, których zmiana juĝ po wdroĝeniu bazy danych moĝe nie tylko wymagaÊ sporych nakïadów pracy, ale teĝ wiÈzaÊ siÚ z koniecznoĂciÈ dïugiego przestoju. Takĝe konfigurowanie zabezpieczeñ po wdroĝeniu systemu jest nieporównanie trudniejsze niĝ definiowanie odpowiednich ustawieñ z wyprzedzeniem. To nie wszystko… Planowanie zawsze jest pomocne. O ile sami doskonale wiemy, co robimy, nasi wspóïpracow- nicy mogÈ nie dysponowaÊ podobnymi informacjami. Naleĝy wiÚc wszystkim wyjaĂniÊ nasze zamiary, aby nie traciÊ czasu w przyszïoĂci. JeĂli nie jesteĂmy pewni sïusznoĂci jakiegoĂ zaïo- ĝenia, powinniĂmy zbudowaÊ prototyp, który uïatwi nam podjÚcie ostatecznej decyzji — szkielet rozwiÈzañ administracyjnych powinien mieÊ priorytet nie mniejszy niĝ wïaĂciwe czynnoĂci. Warto teĝ przygotowaÊ listÚ decyzji do rozstrzygniÚcia i kolejno pracowaÊ nad jej pozycjami. 78 Rozdziaá 3. • Konfiguracja Ta receptura celowo jest bardzo krótka. Kaĝdy ma wïasny sposób osiÈgania wyznaczonych celów, zatem niezwykle waĝne jest unikanie precyzyjnego opisywania, jak zrealizowaÊ po- szczególne zadania. JeĂli czytelnik dysponuje juĝ planem, to Ăwietnie. JeĂli nie, naleĝy zasta- nowiÊ siÚ, co naleĝy zrobiÊ, sporzÈdziÊ listÚ i wreszcie wykonaÊ zaplanowane zadania punkt po punkcie. Zmiana parametrów na poziomie programów System PostgreSQL umoĝliwia ustawianie niektórych parametrów osobno dla kaĝdej sesji lub kaĝdej transakcji. Jak to zrobiÊ… WartoĂÊ parametru moĝna zmieniÊ w czasie trwania sesji, na przykïad za pomocÈ nastÚpujÈ- cego wyraĝenia: SET work_mem = 16MB ; W takim przypadku uĝyta wartoĂÊ bÚdzie obowiÈzywaïa dla kaĝdej kolejnej transakcji. Istnieje teĝ moĝliwoĂÊ zmiany ustawieñ tylko na czas trwania bieĝÈcej transakcji: SET LOCAL work_mem = 16MB ; Tak zdefiniowane ustawienie bÚdzie obowiÈzywaïo tylko do momentu uĝycia nastÚpujÈcego wyraĝenia: RESET work_mem; lub RESET ALL; Wyraĝenia SET i RESET to polecenia jÚzyka SQL, które moĝna stosowaÊ za poĂrednictwem do- wolnego interfejsu. Oba wyraĝenia mogÈ byÊ uĝywane tylko dla parametrów serwera Post- greSQL, czyli parametrów wpïywajÈcych na funkcjonowanie tego serwera (choÊ niekoniecz- nie na caïy serwer). W systemie mogÈ wystÚpowaÊ inne parametry, na przykïad parametry sterownika JDBC, których nie moĝna ustawiaÊ w ten sposób. WiÚcej informacji na ten temat moĝna znaleěÊ w rozdziale „Kontrola serwera”. 79 PostgreSQL. Receptury dla administratora Jak to dziaïa… Zmiana wartoĂci parametru w czasie trwania sesji, na przykïad za pomocÈ nastÚpujÈcego wy- raĝenia: SET work_mem = 16MB ; powoduje, ĝe w perspektywie katalogowej pg_settings sÈ zapisywane nastÚpujÈce dane: postgres=# SELECT name, setting, reset_val, source FROM pg_settings WHERE source = session ; name | setting | reset_val | source ----------+---------+-----------+--------- work_mem | 16384 | 1024 | session Przytoczone ustawienia obowiÈzujÈ do momentu uĝycia nastÚpujÈcego polecenia: RESET work_mem; Powyĝsze wyraĝenie powoduje przywrócenie wartoĂci reset_val i — tym samym — ponowne umieszczenie w kolumnie source wartoĂci domyĂlnej. name | setting | reset_val | source ---------+---------+-----------+--------- work_mem | 1024 | 1024 | default To nie wszystko… WartoĂÊ parametru moĝna zmieniÊ takĝe w czasie trwania transakcji — wystarczy uĝyÊ wyra- ĝenia w postaci: SET LOCAL work_mem = 16MB ; Powyĝsze polecenie wprowadza nastÚpujÈcÈ zmianÚ w perspektywie katalogowej pg_settings: postgres=# SELECT name, setting, reset_val FROM pg_settings WHERE source = session ; name | setting | reset_val | source ----------+---------+-----------+--------- work_mem | 1024 | 1024 | session Co to? Co staïo siÚ z uĝytÈ wartoĂciÈ parametru? Okazuje siÚ, ĝe wyraĝenie SET LOCAL wpïywa tylko na transakcjÚ, w ramach której jest wykonywane, czyli w naszym przypadku wïaĂnie na polecenie SET LOCAL. Musimy wiÚc wykonaÊ to polecenie w ramach bloku transakcji, aby wprowadzona zmiana byïa uwzglÚdniana w kolejnych operacjach skïadajÈcych siÚ na tÚ trans- akcjÚ: BEGIN; SET LOCAL work_mem = 16MB ; 80 Rozdziaá 3. • Konfiguracja Efekt wykonania tych wyraĝeñ widaÊ teraz w perspektywie katalogowej pg_settings: postgres=# SELECT name, setting, reset_val, source FROM pg_settings WHERE source = session ; name | setting | reset_val | source ----------+---------+-----------+--------- work_mem | 16384 | 1024 | session Warto teĝ zwróciÊ uwagÚ na to, ĝe w kolumnie source widnieje wartoĂÊ session, nie wartoĂÊ transaction, która w tych okolicznoĂciach wydawaïaby siÚ bardziej naturalna. Jakie sÈ bieĝÈce ustawienia konfiguracyjne? W pewnym momencie kaĝdy z nas zada sobie pytanie „Jakie sÈ bieĝÈce ustawienia konfigura- cyjne?”. Jak to zrobiÊ… W pierwszym odruchu wiÚkszoĂÊ uĝytkowników odpowiada: „wystarczy zajrzeÊ do pliku postgresql.conf”. To rozwiÈzanie zdaje egzamin pod warunkiem, ĝe dysponujemy tylko jed- nym plikiem z parametrami. JeĂli istniejÈ dwa takie pliki, moĝe okazaÊ siÚ, ĝe czytamy nie- wïaĂciwy plik! (SkÈd wïaĂciwie mielibyĂmy wiedzieÊ, który jest wïaĂciwy)? W tej sytuacji naj- bezpieczniejszym sposobem jest rezygnacja z przeglÈdania plików tekstowych na rzecz odwoïania siÚ do samego serwera. Z podrozdziaïu „Zmiana parametrów na poziomie programów” wiemy teĝ, ĝe kaĝdy parametr ma okreĂlony zasiÚg, decydujÈcy o tym, kiedy jego wartoĂÊ moĝe byÊ skutecznie zmieniana. O ile niektóre parametry moĝna ustawiaÊ za poĂrednictwem pliku postgresql.conf, o tyle po- zostaïe podlegajÈ zmianom juĝ po zaïadowaniu zawartoĂci tego pliku. Oznacza to, ĝe bieĝÈcy stan ustawieñ konfiguracyjnych moĝe byÊ inny, niĝ to wynika z zapisów we wspomnianym pliku. Do uzyskania obowiÈzujÈcych ustawieñ moĝna uĝyÊ polecenia SHOW, na przykïad w tej formie: postgres=# SHOW work_mem; work_mem ---------- 1MB (1 row) Warto jednak pamiÚtaÊ, ĝe polecenie SHOW prezentuje wartoĂÊ wskazanego parametru obowiÈ- zujÈcÈ w momencie wywoïania i ĝe ta wartoĂÊ moĝe byÊ w tym czasie zmieniana. Innym sposobem uzyskiwania bieĝÈcych ustawieñ jest dostÚp do perspektywy katalogowej systemu PostgreSQL, nazwanej pg_settings: 81 PostgreSQL. Receptury dla administratora postgres=# \x Expanded display is on. postgres=# SELECT * FROM pg_settings WHERE name = work_mem ; [ RECORD 1 ] ------------------------------------------------------------ name | work_mem setting | 1024 unit | kB category | Resource Usage / Memory short_desc | Sets the maximum memory to be used for query workspaces. extra_desc | This much memory can be used by each internal sort operation and ´hash table before switching to temporary disk files. context | user vartype | integer source | default min_val | 64 max_val | 2147483647 enumvals | boot_val | 1024 reset_val | 1024 sourcefile | sourceline | Oznacza to, ĝe polecenia SHOW moĝna uĝywaÊ zarówno do uzyskiwania wybranych ustawieñ, jak i do uzyskiwania dostÚpu do peïnego wykazu szczegóïów za poĂrednictwem odpowiedniej tabeli katalogowej. Jak to dziaïa… Kaĝdy parametr jest buforowany w ramach kaĝdej sesji, dziÚki czemu dysponujemy bïyska- wicznym dostÚpem do ustawieñ reprezentowanych przez poszczególne parametry. Zastoso- wany model powoduje, ĝe odczytywanie ustawieñ zapisanych w parametrach jest dziecinnie proste. Warto pamiÚtaÊ, ĝe wyĂwietlane wartoĂci nie zawsze odzwierciedlajÈ ustawienia dotyczÈce caïego serwera — wiele spoĂród tych parametrów jest ĂciĂle zwiÈzanych z bieĝÈcÈ sesjÈ. To odróĝnia system PostgreSQL od wielu innych baz danych i w duĝej mierze decyduje o jego elastycznoĂci. Które parametry zawierajÈ wartoĂci inne niĝ ustawienia domyĂlne? CzÚsto musimy sprawdziÊ, które parametry zostaïy juĝ zmienione lub czy nasze zmiany zo- staïy prawidïowo uwzglÚdnione w ustawieniach systemu PostgreSQL. 82 Rozdziaá 3. • Konfiguracja Jak to zrobiÊ… postgres=# SELECT name, source, setting FROM pg_settings WHERE source != default AND source != override ORDER by 2, 1; name | source | setting ---------------------------+----------------------+---------- application_name | client | psql log_timezone | command line | PL TimeZone | command line | PL timezone_abbreviations | command line | Default archive_command | configuration file | (disabled) archive_mode | configuration file | off archive_timeout | configuration file | 5 bgwriter_delay | configuration file | 10 checkpoint_timeout | configuration file | 30 log_checkpoints | configuration file | on log_destination | configuration file | stderr log_filename | configuration file | log Y logging_collector | configuration file | on log_line_prefix | configuration file | t[ p] log_min_messages | configuration file | log max_prepared_transactions | configuration file | 5 max_standby_delay | configuration file | 90 port | configuration file | 5443 max_stack_depth | environment variable | 2048 work_mem | session | 204800 (29 rows) (WartoĂÊ Override wykluczono z wyników dla poprawy czytelnoĂci). Jak to dziaïa… Na podstawie danych widocznych w perspektywie pg_settings moĝna bez trudu stwierdziÊ, które wartoĂci sÈ róĝne od ustawieñ domyĂlnych i jakie jest ěródïo bieĝÈcych wartoĂci. Polecenie SHOW nie okreĂla, czy poszczególne parametry majÈ przypisane wartoĂci domyĂlne. Dziaïanie tego polecenia ogranicza siÚ do zwrócenia interesujÈcej nas wartoĂci, co w ĝaden sposób nie rozstrzyga, co i dlaczego zostaïo zmienione. JeĂli ěródïem zmiany sÈ zapisy w pliku konfiguracyjnym, wartoĂci w kolumnach sourcefile i sourceline takĝe sÈ ustawione. Analiza tych wartoĂci bywa przydatna w procesie identyfika- cji ěródeï poszczególnych ustawieñ konfiguracyjnych. 83 PostgreSQL. Receptury dla administratora To nie wszystko… Kolumna setting perspektywy pg_settings zawiera co prawda bieĝÈcÈ wartoĂÊ parametru, jednak warto zwróciÊ uwagÚ na kolumny boot_val i reset_val, które zawierajÈ odpowiednio wartoĂÊ ustawionÈ na etapie inicjalizacji klastra baz danych PostgreSQL ( initdb ) oraz war- toĂÊ, która zostanie przywrócona w danym parametrze wskutek uĝycia komendy RESET. Kto to ustawiï? Parametr max_stack_depth jest wyjÈtkowy — z danych prezentowanych przez perspektywÚ pg_settings wynika, ĝe jego wartoĂÊ zostaïa ustawiona przez zmiennÈ ĂrodowiskowÈ, mimo ĝe w rzeczywistoĂci zostaïa zmieniona przez polecenie ulimit -s (w systemach Linux i Unix). Tylko w systemie Windows parametr max_stack_depth wymaga bezpoĂredniego ustawienia. Takĝe ustawienia strefy czasowej sÈ okreĂlane na podstawie Ărodowiska systemu operacyjne- go, zatem ich bezpoĂrednie ustawianie nie jest konieczne. Co ciekawe, z danych prezentowa- nych przez perspektywÚ pg_settings wynika, ĝe sÈ to ustawienia definiowane z poziomu wiersza poleceñ. Aktualizacja pliku parametrów Podstawowym miejscem definiowania wartoĂci parametrów na potrzeby serwera PostgreSQL jest plik parametrów. W pliku parametrów nazwanym postgresql.conf moĝna ustawiÊ wszyst- kie parametry tego serwera. IstniejÈ teĝ dwa inne pliki parametrów, nazwane pg_hba.conf i pg_ident.conf. Zapisy zawarte w obu tych plikach majÈ zwiÈzek z zarzÈdzaniem poïÈczeniami i zabezpieczeniami, zatem wrócimy do nich w dalszych rozdziaïach poĂwiÚconych tym zagadnieniom. Przygotowania W pierwszym kroku naleĝy znaleěÊ plik postgresql.conf (odpowiedniÈ procedurÚ opisano juĝ wczeĂniej). Jak to zrobiÊ… Wszystkie parametry moĝna ustawiÊ w pliku parametrów nazwanym postgresql.conf. Niektóre spoĂród tych parametrów sÈ uwzglÚdniane tylko podczas pierwszego uruchamiania serwera. Typowym przykïadem jest parametr shared_buffers, definiujÈcy rozmiar wspóïdzielonej pa- miÚci podrÚcznej. 84 Rozdziaá 3. • Konfiguracja Wiele innych parametrów moĝna zmieniÊ w czasie dziaïania serwera. Po zmianie wybranych parametrów naleĝy wykonaÊ na serwerze operacjÚ reload, aby wymusiÊ na systemie PostgreSQL ponowne zaïadowanie pliku postgresql.conf: pg_ctl -D data reload Plik konfiguracyjny postgresql.conf ma postaÊ normalnego pliku tekstowego, którego zawar- toĂÊ moĝna bez trudu edytowaÊ. WiÚkszoĂÊ parametrów od poczÈtku jest zapisana w tym pliku, zatem nasza rola sprowadza siÚ do ich wyszukania i zastÈpienia dotychczasowych ustawieñ wïasnymi wartoĂciami. Jak to dziaïa… W przypadku dwukrotnego ustawienia tego samego parametru w dwóch róĝnych miejscach pliku konfiguracyjnego, zostanie uwzglÚdnione ostatnie ustawienie. Taka sytuacja moĝe ro- dziÊ sporo nieporozumieñ, jeĂli na przykïad dopisujemy ustawienia na koñcu pliku, zatem naleĝy tego unikaÊ. ZalecanÈ praktykÈ jest pozostawienie oryginalnej struktury pliku konfiguracyjnego i sama edycja wybranych wartoĂci lub wrÚcz rozpoczÚcie pracy od pustego pliku i umieszczenie w nim tylko tych parametrów, których wartoĂci chcemy zmieniÊ. Sam preferujÚ model polegajÈcy na sto- sowaniu plików zïoĝonych z wartoĂci innych niĝ domyĂlne. Takie rozwiÈzanie uïatwia ocenÚ sytuacji. Niezaleĝnie od wybranej metody zaleca siÚ zapisywanie kopii starszych wersji plików .conf. Wystarczy albo rÚcznie skopiowaÊ pliki przeznaczone do modyfikacji, albo posïuĝyÊ siÚ sys- temem kontroli wersji, na przykïad systemem SVN. To nie wszystko… W pliku postgresql.conf moĝna teĝ stosowaÊ dyrektywÚ include. Oznacza to, ĝe plik postgresql. conf moĝna skonstruowaÊ w taki sposób, aby odwoïywaï siÚ do innych plików, które z kolei mogÈ odwoïywaÊ siÚ do jeszcze innych plików itd. Takie rozwiÈzanie moĝe nam uïatwiÊ lep- szÈ organizacjÚ parametrów, o ile nie zastosujemy zbyt skomplikowanej struktury. Ustawianie parametrów dla konkretnych grup uĝytkowników System PostgreSQL obsïuguje wiele róĝnych sposobów definiowania wartoĂci parametrów dla poszczególnych grup uĝytkowników. 85 PostgreSQL. Receptury dla administratora Jak to zrobiÊ… Ustawienia dla wszystkich uĝytkowników bazy danych saas moĝna ustawiaÊ za pomocÈ wyraĝenia: ALTER DATABASE saas SET configuration_parameter = value1; Ustawienia dla uĝytkownika simon poïÈczonego z dowolnÈ bazÈ danych moĝna ustawiÊ za pomocÈ wyraĝenia: ALTER ROLE simon SET configuration_parameter = value2; Istnieje teĝ moĝliwoĂÊ ustawienia parametru dla konkretnego uĝytkownika poïÈczonego z okreĂlo- nÈ bazÈ danych: ALTER ROLE simon IN DATABASE saas SET configuration_parameter = value3; Sam uĝytkownik nie wie, ĝe specjalnie z myĂlÈ o nim wykonano tego rodzaju wyraĝenie. Tak zdefiniowane ustawienia w wiÚkszoĂci przypadków peïniÈ funkcjÚ wartoĂci domyĂlnych i jako takie mogÈ byÊ zmieniane przez uĝytkownika potrzebujÈcego innych wartoĂci parametrów. Jak to dziaïa… Parametry moĝna ustawiaÊ na nastÚpujÈcych poziomach: Q bazy danych; Q uĝytkownika (w systemie PostgreSQL uĝytkownika okreĂla siÚ mianem roli); Q kombinacji bazy danych i uĝytkownika. WartoĂÊ domyĂlne tych parametrów sÈ nadpisywane wartoĂciami definiowanymi na kolejnych poziomach powyĝszej listy. Oznacza to, ĝe w przypadku wykonania powyĝszych trzech wyraĝeñ jÚzyka SQL bÚdÈ obo- wiÈzywaïy nastÚpujÈce ustawienia: Q uĝytkownik hannu ïÈczy siÚ z bazÈ danych saas — zastosowanie ma wartoĂÊ value1; Q uĝytkownik simon ïÈczy siÚ z bazÈ danych innÈ niĝ saas — zastosowanie ma wartoĂÊ value2; Q uĝytkownik simon ïÈczy siÚ z bazÈ danych saas — zastosowanie ma wartoĂÊ value3. System PostgreSQL implementuje te reguïy dokïadnie tak, jakby uĝytkownik rÚcznie uĝyï odpowiednich wyraĝeñ SET bezpoĂrednio po nawiÈzaniu poïÈczenia. 86 Rozdziaá 3. • Konfiguracja Lista podstawowych zadañ zwiÈzanych z konfiguracjÈ serwera System PostgreSQL domyĂlnie jest skonfigurowany pod kÈtem pracy w roli systemu wspóï- dzielonego, jednak wielu uĝytkowników woli dysponowaÊ dedykowanymi systemami baz danych. Jednym z celów projektu PostgreSQL jest zapewnienie moĝliwoĂci zgodnego wspóïistnienia tego systemu z innymi programami dziaïajÈcymi po stronie serwera, zatem wykorzystywanie peïnych zasobów serwera byïoby niepoĝÈdane. JeĂli jednak administrator systemu wie, ĝe w tym samym systemie nie bÚdÈ dziaïaïy inne waĝne serwery, moĝe bez obaw zmieniÊ para- metry serwera PostgreSQL na wyĝsze. Przygotowania Zanim przystÈpimy do modyfikowania parametrów systemu, musimy dysponowaÊ dwiema informacjami: Po pierwsze, musimy znaÊ wielkoĂÊ fizycznej pamiÚci RAM przeznaczonej dla systemu PostgreSQL. Po drugie, musimy wiedzieÊ, jakiego rodzaju aplikacje bÚdÈ uĝywaïy systemu PostgreSQL. Jak to zrobiÊ… JeĂli rozmiar bazy danych przekracza 32 MB, zwiÚkszenie wartoĂci parametru shared_buffers powinno podnieĂÊ wydajnoĂÊ systemu. Teoretycznie moĝna tÚ wartoĂÊ zwielokrotniÊ, jednak mu- simy mieÊ na uwadze, ĝe w systemach Linux nieuĝywany bufor moĝe trafiÊ do pliku wymiany, zatem powinniĂmy zachowaÊ ostroĝnoĂÊ. NowÈ wartoĂÊ moĝna ustawiÊ w pliku postgresql.conf i stopniowo zwiÚkszaÊ, kaĝdorazowo sprawdzajÈc, czy zmiana przyniosïa poĝÈdany efekt. W przypadku zwiÚkszenia wartoĂci parametru shared_buffers na serwerze z systemem ope- racyjnym innym niĝ Windows niemal zawsze naleĝy dodatkowo zwiÚkszyÊ wartoĂÊ parametru SHMMAX samego systemu operacyjnego (na niektórych platformach moĝemy stanÈÊ przez ko- niecznoĂciÈ zmiany takĝe innych parametrów). W systemach Linux, Mac OS i FreeBSD naleĝy albo zmieniÊ zawartoĂÊ pliku /etc/sysctl.conf, albo uĝyÊ polecenia sysctl -w z nastÚpujÈcymi wartoĂciami: Q Linux: kernel.shmmax=wartoĂÊ Q Mac OS: kern.sysv.shmmax=wartoĂÊ Q FreeBSD: kern.ipc.shmmax=wartoĂÊ 87 PostgreSQL. Receptury dla administratora WiÚcej informacji na temat tych wartoĂci moĝna znaleěÊ na stronie http://www.postgresql.org/ docs/8.4/static/kernel-resources.html#SYSVIPC. Na przykïad w systemie Linux naleĝaïoby dodaÊ do pliku /etc/sysctl.conf nastÚpujÈcy wiersz: kernel.shmmax=wartoĂÊ WartoĂÊ parametru effective_cache_size nie jest taka waĝna. Wbrew pozorom ma duĝo mniejsze znaczenie niĝ parametr shared_buffers, zatem wybór wïaĂciwej wartoĂci nie powi- nien nam zajÈÊ zbyt wiele czasu. JeĂli w naszym systemie planujemy wykonywanie wielu operacji zapisu, powinniĂmy rozwa- ĝyÊ znaczne zwiÚkszenie wartoĂci parametru wal_buffers wzglÚdem wartoĂci domyĂlnej. JeĂli planujemy duĝÈ liczbÚ operacji zapisu i (lub) operowanie na wielkich iloĂciach danych, byÊ moĝe powinniĂmy zwiÚkszyÊ wartoĂÊ parametru checkpoint_segments wzglÚdem usta- wieñ domyĂlnych. JeĂli na bazie danych sÈ wykonywane wielkie zapytania, powinniĂmy rozwaĝyÊ zmianÚ do- myĂlnej wartoĂci parametru work_mem na wiÚkszÈ. Warto upewniÊ siÚ, ĝe parametr autovacuum jest wïÈczony, chyba ĝe z jakiegoĂ powodu Ăwia- domie podjÚliĂmy decyzjÚ o jego wyïÈczeniu. W zdecydowanej wiÚkszoĂci przypadków wspo- mniany parametr powinien jednak byÊ wïÈczony (wiÚcej informacji na ten temat moĝna zna- leěÊ w dalszej czÚĂci tej ksiÈĝki). Sporym uproszczeniem jest uĝycie narzÚdzia dostÚpnego pod nastÚpujÈcym adresem URL: http://pgfoundry.org/projects/pgtune/. Na tym moĝemy zakoñczyÊ proces wstÚpnego ustawiania parametrów. Nie powinniĂmy po- ĂwiÚcaÊ zbyt duĝo czasu na poszukiwanie optymalnych ustawieñ. WiÚkszoĂÊ tych parametrów moĝna zmieniÊ w przyszïoĂci, zatem warto zastosowaÊ model przyrostowego doskonalenia poszczególnych wartoĂci. PoczÈtkowo naleĝy koncentrowaÊ uwagÚ przede wszystkim na najwaĝniejszych parametrach i zadbaÊ o ich prawidïowe ustawienia. Po opanowaniu podstaw warto zaopatrzyÊ siÚ w ksiÈĝkÚ Grega Smitha poĂwiÚconÈ wydajnoĂci systemu PostgreSQL. W szczególnoĂci nie naleĝy zmieniaÊ parametru fsync, który zapewnia bezpieczeñstwo na- szemu systemowi. 88 Rozdziaá 3. • Konfiguracja Dodawanie moduïu zewnÚtrznego do systemu PostgreSQL JednÈ z zalet systemu PostgreSQL jest jego rozszerzalnoĂÊ. WïaĂnie rozszerzalnoĂÊ byïa jed- nym z oryginalnych celów projektowych stawianych sobie przez twórców tego systemu juĝ w latach osiemdziesiÈtych ubiegïego wieku. Dla wspóïczesnej wersji PostgreSQL 9.0 istnieje wiele dodatkowych moduïów, które moĝna ïatwo doïÈczaÊ do podstawowego serwera PostgreSQL. Dodatkowe moduïy mogÈ wprowadzaÊ do rozszerzanego systemu udoskonalenia róĝnych typów: Q dodatkowe funkcje, Q dodatkowe typy danych, Q dodatkowe operatory, Q dodatkowe indeksy. Co ciekawe, wiele narzÚdzi i interfejsów klienckich wspóïpracuje z systemem PostgreSQL bez koniecznoĂci jakiejkolwiek specjalnej instalacji. W tym podrozdziale omówimy moduïy rozszerzajÈce lub zmieniajÈce zachowanie serwera, w tym standardowÈ skïadniÚ, funkcje i za- chowania wyraĝeñ jÚzyka SQL. Przygotowania Musimy najpierw wybraÊ wïaĂciwy moduï do zainstalowania. Poniewaĝ do tej pory nie powstaï system zarzÈdzania pakietami dla projektu PostgreSQL, do- stÚpne moduïy znajdujÈ siÚ w wielu róĝnych miejscach, w tym na nastÚpujÈcych witrynach internetowych: Q Contrib — tzw. jÈdro systemu PostgreSQL — zawiera wiele przydatnych funkcji. Okazuje siÚ jednak, ĝe istnieje teĝ oficjalna sekcja moduïów dodatkowych, okreĂlanych mianem moduïów contrib. Ich dokumentacjÚ moĝna znaleěÊ pod nastÚpujÈcym adresem URL: Q http://www.postgresql.org/docs/9.0/static/contrib-dblink-connect.html Q pgFoundry — witryna internetowa tego projektu open source ma na celu przede wszystkim udostÚpnianie moduïów i narzÚdzi dla systemu PostgreSQL. Witryna PgFoundry korzysta z tego samego oprogramowania co popularny serwis SourceForge.net. Warto wiÚc zajrzeÊ pod nastÚpujÈcy adres URL: Q http://pgFoundry.org/ Q OdrÚbne projekty — wielkie projekty zewnÚtrzne, na przykïad PostGIS, oferujÈ rozbudowane, zïoĝone moduïy dodatkowe dla systemu PostgreSQL. ZachÚcam do odwiedzenia nastÚpujÈcego adresu URL: Q http://www.postgis.org/ 89 PostgreSQL. Receptury dla administratora Jak to zrobiÊ… W pewnych przypadkach moduïy moĝna dodawaÊ juĝ na etapie instalacji, jeĂli korzystamy z autonomicznej aplikacji instalacyjnej, na przykïad z programu instalatora OneClick. W pozostaïych przypadkach istnieje moĝliwoĂÊ instalacji moduïu z pakietu, na przykïad moduïu zapewniajÈcego zgodnoĂÊ z systemem Oracle (http://www.postgres.cz/index.php/Oracle_ functionality). W pierwszym kroku naleĝy pobraÊ interesujÈcy nas pakiet, na przykïad: http://pgfoundry. org/frs/download.php/2420/orafce-3.0.1-1.pg82.rhel5.i386.rpm. Pobrany pakiet naleĝy zainstalowaÊ, stosujÈc nastÚpujÈce polecenia: rpm -ivh orafce-3.0.1-1.pg90.rhel5.i386.rpm sudo apt-get install postgresql-8.4-orafce W wielu przypadkach przydatne moduïy nie sÈ udostÚpniane w formie gotowych pakietów. Takie moduïy naleĝy instalowaÊ rÚcznie. Instalacja nie jest trudna i moĝe byÊ ciekawym Êwi- czeniem uïatwiajÈcym zrozumienie odpowiednich procedur. Kaĝdy moduï wymaga nieco innej instalacji. Ogólnie naleĝy zwracaÊ szczególnÈ uwagÚ na na- stÚpujÈce dwa aspekty instalacji moduïu: Q instalacjÚ obiektów jÚzyka SQL dla danego moduïu; Q instalacje wymaganych przez ten moduï bibliotek ïadowanych dynamicznie (DLL). Instalacja wiÚkszoĂci przydatnych moduïów wymaga od uĝytkownika zadbania o oba wymie- nione powyĝej aspekty. IstniejÈ teĝ moduïy, na przykïad AutoExplain, które korzystajÈ wy- ïÈcznie z bibliotek ïadowanych dynamicznie. Q Naleĝy skompilowaÊ odpowiednie biblioteki. Naleĝy postÚpowaÊ wedïug instrukcji dla danego moduïu: Q Naleĝy zainstalowaÊ bibliotekÚ w miejscu, w którym bÚdzie dostÚpna dla serwera: shared_preload_libraries = $libdir/modlib Naleĝy utworzyÊ obiekty bazy danych: psql -d dbname -f SHAREDIR/contrib/module.sql Jak to dziaïa… System PostgreSQL moĝe dynamicznie ïadowaÊ biblioteki na trzy sposoby: Q wskutek wydania przez uĝytkownika bezpoĂredniego polecenia LOAD w ramach sesji; 90 Rozdziaá 3. • Konfiguracja Q na podstawie parametru shared_preload_libraries zapisanego w pliku postgresql.conf i uĝywanego podczas uruchamiania serwera; Q na poczÈtku sesji na podstawie parametru local_preload_libraries ustawionego dla konkretnego uĝytkownika (zdefiniowanego przy uĝyciu polecenia ALTER ROLE). Funkcje i obiekty systemu PostgreSQL mogÈ odwoïywaÊ siÚ do kodu zawartego w tych bi- bliotekach — takie rozwiÈzanie umoĝliwia Ăcisïe wiÈzanie rozszerzeñ z dziaïajÈcym procesem serwera. Tak Ăcisïe zwiÈzki powodujÈ, ĝe opisana metoda sprawdza siÚ nawet w aplikacjach, które muszÈ speïniaÊ najwyĝsze wymagania w zakresie wydajnoĂci. Dodatkowe opcje i funkcje nie odbiegajÈ wydajnoĂciÈ od rdzennych elementów systemu. Uruchamianie serwera w trybie oszczÚdzania energii Zuĝycie energii elektrycznej jest obecnie jednym z najczÚĂciej dyskutowanych tematów. DziĂ kaĝdy szuka sposobów, by choÊ w minimalnym stopniu przyczyniÊ siÚ do ochrony Ărodowiska naturalnego. Nie inaczej jest w przypadku uĝytkowników systemu PostgreSQL. Przygotowania JeĂli serwer PostgreSQL ma byÊ uĝywany sporadycznie lub pozostaje nieaktywny przez dïuĝ- sze okresy, warto rozwaĝyÊ zastosowanie przynajmniej czÚĂci z poniĝszych sugestii. Taki serwer moĝe dziaïaÊ na laptopie lub mieÊ postaÊ nieaktywnego serwera wirtualnego. Jak to zrobiÊ… System PostgreSQL to przykïad bazy danych dziaïajÈcej po stronie serwera, zatem w czasie, gdy nie ma aktywnych klientów, serwer w praktyce pozostaje bezczynny. Aby zminimalizowaÊ aktywnoĂÊ serwera, wystarczy ustawiÊ nastÚpujÈce parametry w pliku postgresql.conf: Q autovacuum = off Q wal_writer_delay = 10000 Q bgwriter_delay = 10000 Przytoczone ustawienia w wielu zastosowaniach sÈ dalece nieoptymalne i jako takie powinny byÊ stosowane tylko dla serwera, o którym wiadomo, ĝe przez znacznÈ czÚĂÊ czasu bÚdzie nieaktywny. Kiedy obciÈĝenie serwera ponownie wzroĂnie, naleĝy przywróciÊ w powyĝszych parametrach poprzednie wartoĂci. 91 PostgreSQL. Receptury dla administratora Jak to dziaïa… Istnieje kilka procesów, które stale pozostajÈ aktywne w oczekiwaniu na aktywnych klientów, których ĝÈdania bÚdÈ wymagaïy efektywnej obsïugi. W systemie PostgreSQL istnieje piÚÊ ta- kich procesów: Q proces zapisujÈcy (znany teĝ jako proces zapisujÈcy w tle); Q proces zapisujÈcy dziennik WAL; Q archiwizator (aktywny tylko wtedy, gdy archiwizacja dziennika WAL jest wïÈczona); Q proces odbiorcy dziennika WAL (aktywny tylko wtedy, gdy jest stosowany mechanizm replikacji strumieniowej); Q proces automatycznego czyszczenia (ang. autovacuum). Proces zapisujÈcy w tle domyĂlnie jest aktywowany co 200 ms. WartoĂÊ maksymalna dzielÈca kolejne próby wybudzania tego procesu wynosi 10 s, co nie wydaje siÚ szczególnie dïugim czasem bezczynnoĂci. Okazuje siÚ jednak, ĝe moĝna ten proces caïkowicie wyïÈczyÊ, przypi- sujÈc parametrowi bgwriter_lru_maxpages wartoĂÊ 0. Proces zapisujÈcy w dzienniku WAL domyĂlnie jest aktywowany co 200 ms. Takĝe w tym przypadku maksymalna wartoĂÊ odpowiedniego parametru to 10 s. Tego procesu nie moĝna jednak wyïÈczyÊ. W przypadku braku operacji zapisu proces nie podejmuje ĝadnych dziaïañ — jego dziaïanie sprowadza siÚ do wybudzania i sprawdzania, czy istniejÈ ewentualne opera- cje oczekujÈce. Proces archiwizatora (ang. archiver) jest aktywowany co 15 sekund i sprawdza, czy zapisano jakieĂ nowe pliki dziennika WAL. Kaĝda aktywacja powoduje wykonanie operacji na katalogu systemu plików. Okresu dzielÈcego kolejne wybudzanie tego procesu nie moĝna zmieniÊ za poĂrednictwem ĝadnego parametru. Proces odbiorcy dziennika WAL jest aktywowany co 100 ms w celu sprawdzenia, czy do ser- wera nie dotarïy nowe dane replikacji. W razie braku takich danych proces ponownie prze- chodzi w stan uĂpienia. Okresu dzielÈcego kolejne wybudzenia tego procesu nie moĝna zmieniÊ za poĂrednictwem ĝadnego parametru. Proces automatycznego czyszczenia domyĂlnie jest aktywowany co minutÚ. CzÚstotliwoĂÊ wybudzania tego procesu moĝna zmieniÊ, przypisujÈc nowÈ wartoĂÊ parametrowi autovacuum_ naptime. Proces automatycznego czyszczenia moĝna caïkowicie wyïÈczyÊ, stosujÈc parametr autovacuum = off. JeĂli stosujemy mechanizm replikacji strumieniowej, nasz serwer bÚdzie aktywowany co 200 ms. JeĂli nie korzystamy z tego mechanizmu, moĝemy wydïuĝyÊ czas pomiÚdzy kolejnymi wybudzeniami do 10 sekund (zamiast domyĂlnych 200 ms). 92 Skorowidz $BACKUPNAME, 322, 323, 326 $OTHERNODE, 325, 326 $PGARCHIVE, 357 $PGDATA, 322, 326 $STANDBYNODE, 357 .pgpass, 41 ::, 140 2PC, 235, 262 A AccessExclusiveLock, 68, 193, 207, 271 ADD COLUMN, 193 administracja bazÈ danych, 181 aktualizacja perspektyw, 214 dodawanie kolumn tabeli, 192 dodawanie przestrzeni tabel, 201 dodawanie schematów, 198 dostÚp do obiektów naleĝÈcych do innych baz danych PostgreSQL, 208 dynamiczne generowanie skryptów, 190 operacje na wielu tabelach, 187 pg_batch, 192 przenoszenie obiektów miÚdzy przestrzeniami tabel, 205 przenoszenie obiektów miÚdzy schematami, 200 reguïy, 218 równolegïe wykonywanie zadañ, 190 skrypty, 183 usuwanie kolumn tabeli, 192 usuwanie przestrzeni tabel, 201 usuwanie schematów, 198 zmiana typu danych kolumny, 195 administratorzy, 152 adres IP serwera, 27, 133 aktualizacja HOT, 301 aktualizacja perspektyw, 214 aktualizacja pliku parametrów, 84 aktualizacje, 301, 389 aktualizacje do wersji gïównych w sieci przy uĝyciu narzÚdzi do replikacji, 393 aktualizacje dziaïajÈcego serwera do wersji gïównych, 390 aktualizacje online, 393 pg_upgrade, 390 proces, 389 algorytm MD5, 162 ALTER DATABASE, 86, 207 ALTER DATABASE CONNECTION LIMIT, 101 ALTER DATABASE SET TABLESPACE, 207 ALTER DEFAULT PRIVILEGES, 110, 200 ALTER INDEX RENAME, 119 ALTER INDEX SET TABLESPACE, 206 ALTER ROLE, 86, 91, 159 ALTER ROLE CONNECTION LIMIT, 103 ALTER SCHEMA RENAME TO, 200 ALTER TABLE, 68, 132, 191, 193, 266, 372 ALTER TABLE ADD COLUMN, 193 ALTER TABLE ADD EXCLUDE, 132 ALTER TABLE ADD FOREIGN KEY, 72 ALTER TABLE CASCADE, 194 ALTER TABLE DROP COLUMN, 193 ALTER TABLE SET OWNER, 168 ALTER TABLE SET TABLESPACE, 206 ALTER TABLESPACE OWNER, 204 ALTER TABLESPACE SET, 205 ALTER USER PASSWORD, 40 analityka biznesowa, 351 analiza bazy danych, 246 analiza danych historycznych, 223 analiza dat modyfikacji plików, 238 analiza pliku dziennika serwera, 279 analiza transakcji, 77 analiza wydajnoĂci, 279 ANALYZE, 135, 137, 252, 254, 279 anulowanie zapytania, 233 apply delay, 352 architektura bez dzielenia, 354 architektura OFA, 52 archive_cleanup_command, 359, 360 archive_command, 323, 326, 327, 358, 365, 366 archive_mode, 323, 324, 326, 365 Skorowidz archive_timeout, 327, 358 archiving_active, 324 archiwizacja ciÈgïa, 325 arkusz kalkulacyjny, 143 ataki, 279 DoS, 102 automatyczna konserwacja bazy danych, 252 automatyczne czyszczenie, 252 tabele TOAST, 255 automatyzacja zadañ, 182 autonomiczna, fizyczna kopia zapasowa bazy danych tworzona w czasie rzeczywistym, 322 autovacuum, 88, 91, 92, 253, 257 autovacuum.conf.day, 257 autovacuum.conf.night, 257 autovacuum_analyze_scale_factor, 253, 254 autovacuum_analyze_threshold, 253, 254 autovacuum_enabled, 253 autovacuum_freeze_max_age, 253, 257, 259 autovacuum_freeze_min_age, 253 autovacuum_freeze_table_age, 253 autovacuum_max_workers, 253, 254, 257 autovacuum_naptime, 92, 253, 254 autovacuum_vacuum_cost_delay, 253, 254 autovacuum_vacuum_cost_limit, 253, 254 autovacuum_vacuum_scale_factor, 253, 254 autovacuum_vacuum_threshold, 253, 254 av_threshold, 268 awarie, 310 awaryjne zatrzymywanie serwera, 96 B backup_label, 327, 331 BACKUPNAME, 322 badanie bïÚdów, 246 base, 52 batches, 352 baza danych, 19, 20, 25 planowanie bazy danych, 77 rozmiar, 63 sekwencja ukïadania, 60 tabele, 60 tworzenie, 59 BEGIN, 129, 183, 185, 290 bezpieczeñstwo, 151 hasïa, 162 szyfrowanie danych, 175 bezpieczne zatrzymywanie serwera, 95 bgwriter_delay, 91 bgwriter_lru_maxpages, 92 BI, 351 bieĝÈca baza danych, 27 bieĝÈce ustawienia konfiguracyjne, 81 blokady, 129, 193, 290 AccessExclusiveLock, 68 396 bloki, 69 bloki brudne, 100 blokowanie aktualizacji perspektyw, 214 blokowanie optymistyczne, 305 bïÚdy, 246 Business Intelligence, 351 C CA, 174 Cacti, 222, 224, 243 camel case, 118 CASCADE, 153, 194, 199 catch up period, 353 cel odzyskiwania, 333 CentOS, 51 Certificate Authority, 174 certyfikaty SSL, 174 check_postgres, 224, 270 check_postgres_bloat, 270 checkpoint_segments, 88, 311 checkpoint_timeout, 311, 358 checkpoints, 311 CIDR-ADDRESS, 28 clean switchover, 394 cluster, 351 CLUSTER, 300, 351 clusterware, 352 clustname_londiste.ini, 376 collation sequence, 60 COMMIT, 129, 183, 185 COMMIT PREPARED, 263 CONNECT, 26 CONNECTION LIMIT, 101, 103 connection service file, 42 connection_timeout, 364 consume_balance(), 307 Continuent Tungsten, 370 contrib, 89, 209 COPY, 145, 217 copy_from(), 165 count(*), 66 CREATE, 184 CREATE DATABASE, 58, 110, 111 CREATE FOREIGN DATA WRAPPER, 209 CREATE FUNCTION, 213 CREATE GROUP, 158 CREATE INDEX, 184, 202 CREATE INDEX CONCURRENTLY, 272, 274, 277 CREATE LANGUAGE, 164, 238 CREATE MATERIALIZED VIEW AS, 298 CREATE OR REPLACE, 184 CREATE OR REPLACE SCHEMA, 199 CREATE ROLE, 110, 157, 158 CREATE SCHEMA, 108, 198, 199 CREATE SCHEMA AUTHORIZATION, 198 Skorowidz CREATE TABLE, 132 CREATE TABLE AS SELECT, 132 CREATE TABLESPACE, 202 CREATE TEMPORARY TABLE, 297 CREATE TYPE, 238 CREATE UNIQUE INDEX, 131, 273 CREATE USER, 158 CREATE VIEW, 214, 215 createdb, 58 CREATEROLE, 157, 158, 160 CREATEUSER, 157 cross-tab query, 294 CSV, 145 current_database(), 27 current_setting(), 240 current_user, 27 czas dziaïania serwera, 50 czyste przeïÈczanie, 394 czyszczenie bazy, 252 sesje autonomiczne, 261 czyszczenie tabeli TOAST, 255 D dane CSV, 145 dane testowe, 137 dane tymczasowe, 240, 242 Data Definition Language, 166, 183 database replication, 351 daty modyfikacji plików, 238 dblink, 170, 209, 210, 211 dblink_connect(), 209 dblink_disconnect(), 209 dblink_get_connections(), 212 dblink_get_result(), 213 dblink_is_busy(), 213 dblink_send_query(), 213 DDL, 166, 183 Debian, 51 debugging_info_on(), 165 debugging_info_reset(), 166 decrypt_using_my_secret_key(), 177 DEFAULT CURRENT_TIMESTAMP, 168 default_statistics_target, 299, 300 default_tablespaces, 205 DEFERRABLE, 132 DELETE, 128, 276 denial of service, 102 diagnostyka funkcjonowania bazy danych, 221 diff_table_definition(), 125 dïugie zapytania, 283 dïugoterminowa analiza wydajnoĂci, 279 do_emp_audit(), 171 dodawanie kolumn tabeli, 192 dodawanie moduïu zewnÚtrznego, 89 dodawanie przestrzeni tabel, 201 dodawanie schematów, 198 domyĂlna Ăcieĝka wyszukiwania, 154 DoS, 102 dostÚp do bazy danych PostgreSQL, 24 dostÚp do obiektów naleĝÈcych do innych baz danych PostgreSQL, 208 dostÚp do schematu, 156 DROP, 184 DROP COLUMN, 193, 372 DROP IF EXISTS, 184 DROP INDEX, 276 DROP SCHEMA, 199 DROP SCHEMA IF EXISTS, 199 DROP SCHEMA IF EXISTS CASCADE, 199 DROP TABLE, 72, 73 DROP TABLESPACE, 202 dynamiczne generowanie skryptów, 190 dynamiczne ïadowanie bibliotek, 90 dyskowe operacje wejĂcia-wyjĂcia, 291 dziennik komunikatów, 53 dziennik serwera bazy danych, 53 dziennik systemowy, 54 dziennik WAL, 310, 358 E EAI, 351 effective_cache_size, 88 eliminacja zbyt dïugo oczekujÈcych zapytañ, 233 EMS SQLManager, 34 enable_seqscan, 304 encrypt_using_my_public_key(), 177, 178 END_DATE, 134 EPS, 142, 143 equal probability of selection, 142 estimated_row_count(), 69 ETL, 351 eventual consistency, 372, 379 excl, 119 EXCLUDE, 132 EXECUTE, 285 EXPLAIN, 294 EXPLAIN ANALYSE, 287, 299 F failover, 352, 368 fan-in, 381 fan-out, 381 Fedora, 51 FHS, 52 Filesystem Hierarchy Standard, 52 fillfactor, 269, 301 fizyczna kopia zapasowa, 313, 322, 324 odzyskiwanie, 329 odzyskiwanie bazy danych, 341 397 Skorowidz fizyczna kopia zapasowa odzyskiwanie przestrzeni tabel, 339 odzyskiwanie tabeli, 337 tworzenie, 325 fizyczne odzyskiwanie bazy danych, 331 FOREIGN DATA WRAPPER, 209 FreeSpaceMap, 64 freezing, 258 FROM, 293 funkcje, 213 copy_from(), 165 current_setting(), 240 dblink_get_connections(), 212 dblink_get_result(), 213 dblink_is_busy(), 213 dblink_send_query(), 213 funkcje zwracajÈce zbiory, 298 generate_series(), 140 pg_cancel_backend(), 233 pg_ls_dir(), 239 pg_stat_file(), 239 pg_stat_reset(), 236 pg_stop_backup(), 324 pg_terminate_backend(), 159, 232, 233 pgstatindex(), 270 pgstattuple(), 270 quote_ident(), 121 random(), 141, 142 repeat(), 138 substr(), 139 table_file_info(), 239 timeofday(), 133 G generate_series(), 138, 140 generowanie codzienne podsumowania bïÚdów zarejestrowanych w pliku dziennika, 248 dane testowe, 137 GEQO, 297 get_my_public_key(), 177 global, 52 gorÈca gotowoĂÊ, 332, 370 graficzne narzÚdzia administracyjne, 29 GRANT, 111, 153, 156, 200 GRANT USAGE ON SCHEMA, 156 grep, 249 gromadzenie danych o zmianach zapisanych w dzienniku serwera, 169 gromadzenie statystyk, 237, 285 gromadzenie zmian przy uĝyciu wyzwalaczy, 169 zapisywanie danych w innej bazie danych, 170 grupy uprawnieñ, 156 GSSAPI, 40 gzip, 344 398 H harmonogram zadañ, 33 hasïa, 39, 162 plik haseï, 41 trwale zakodowane hasïa, 40 HBA, 102 HEADER, 145 heap_blks_hit, 284 heap_blks_read, 289 help, 37 host, 25, 26 hostaddr, 26 host-based authentication, 102 hostname, 26 HOT, 267, 269, 301 hot standby, 332, 370 hot_standby, 44, 371 HOT_update_ratio, 269 hstore, 21 I IANA, 26, 94 identyfikacja dïugie zapytania, 283 powtarzajÈce siÚ wiersze, 126 przyczyny wolnego dziaïania wyraĝeñ SQL, 287 identyfikator systemu bazy danych, 56 identyfikator transakcji, 261, 333 identyfikator uĝytkownika, 27 idx, 119 idx_blks_read, 284, 289 IF EXISTS, 184 iloĂÊ przetwarzanych danych, 287 immediate stop, 97 include, 256 incremental forever backup, 346 indeksy, 300, 302 CLUSTER, 300 indeksy TOAST, 204 indeksy warunkowe, 300 konserwacja, 271, 279 nazwy, 119 nieuĝywane indeksy, 275 powtarzajÈce siÚ indeksy, 133 przebudowa, 271 UNIQUE INDEX, 130 usuwanie niepotrzebnych indeksów, 276 wymuszanie unikatowoĂci, 132 wymuszanie uĝycia, 303 inet_server_addr(), 27 inet_server_port(), 27 informacje o aktualnie wykonywanym zapytaniu, 226 informacje o ostatnim uĝyciu, 240 informacje o poïÈczeniu, 27 informacje o systemie, 223 Skorowidz informacje o tabeli, 72 Information Schema, 62 information_schema, 65 information_schema.tables, 61 initdb, 113 INSERT, 276 instalacja moduïów, 90 instalator OneClick, 90 INSTEAD OF, 219 instead-of trigger, 216 integracja z serwerem LDAP, 171 integralnoĂÊ odwoïañ, 72 Internet Assigned Numbers Authority, 26 ip4r, 134 izolacja migawki, 21 J Java Transaction API, 262 jÈdro systemu PostgreSQL, 89 jÚzyk DDL, 166, 183 jÚzyk PL/Proxy, 170 jÚzyk PL/PythonU, 238 jÚzyk SQL, 13 JTA, 262 K katalog danych, 51, 94, 112 kernel.shmmax, 88 key, 119 kill, 99, 233, 234 klaster, 26, 94, 351 klient-serwer, 26 klucz SSL, 174 kodowanie hasïa, 40 kolumny, 122 komentarze, 37 kompresja kopii zapasowych, 344 kompresja plików WAL, 344 konfiguracja klienta pod kÈtem stosowania protokoïu SSL, 174 konfiguracja puli poïÈczeñ, 113 konfiguracja serwera, 87 konfiguracja sprzÚtowa, 78 konflikty miÚkkie, 372 konflikty twarde, 372 konserwacja bazy danych, 251 ANALYZE, 254 automatyczna konserwacja, 252 autovacuum, 253 autovacuum.conf.day, 257 autovacuum.conf.night, 257 cykl czynnoĂci, 278 HOT, 267, 269 indeksy, 271, 279 kopie zapasowe, 279 kontrola automatycznej konserwacji bazy danych, 252 kontrola serwera, 93 konwersja typu danych, 196 kopie zapasowe, 279, 310 archiwizacja ciÈgïa, 325 autonomiczna, fizyczna kopia zapasowa bazy danych tworzona w czasie rzeczywistym, 322 backup_label, 327 dziennik WAL, 310, 311 fizyczna kopia zapasowa, 313, 322, 324, 325, 329 kompresja, 344 kopia zapasowa definicji obiektów bazy danych, 321 logiczna kopia zapasowa, 313, 316, 328 logiczna kopia zapasowa jednej bazy danych tworzona w czasie rzeczywistym, 316 logiczna kopia zapasowa wszystkich baz danych tworzona w czasie rzeczywistym, 318 logiczna kopia zapasowa wszystkich tabel w pojedynczej przestrzeni tabel tworzona w czasie rzeczywistym, 319 nieuĝywane indeksy, 275 parametry przechowywania, 253 planowanie konserwacji, 278 planowanie pojemnoĂci, 278 przekrÚcenie licznika transakcji, 260 przeroĂniÚte indeksy, 266 przeroĂniÚte tabele, 266 tabele TOAST, 254, 255 tabele tymczasowe, 265 track_counts, 253 unikanie automatycznego mroĝenia, 258 usuwanie niepotrzebnych indeksów, 276 usuwanie przygotowanych transakcji, 262 VACUUM, 254 zmiana reguï, 278 odzyskiwanie bazy danych, 340 odzyskiwanie do punktu w czasie, 332 odzyskiwanie przestrzeni tabel, 338 odzyskiwanie usuniÚtej lub uszkodzonej tabeli, 335 odzyskiwanie wszystkich baz danych, 328 pg_dump, 313, 317 pg_dumpall, 313, 315, 318 pg_restore, 315, 328 pg_rman, 346 pg_stop_backup(), 324 planowanie tworzenia, 312 przyrostowa kopia zapasowa, 345 punkty kontrolne, 311 róĝnicowa kopia zapasowa, 345 strategia zawsze przyrostowej kopii zapasowej, 346 tworzenie, 316 wydajnoĂÊ, 341 zrzut definicji obiektów, 321 zrzut definicji przestrzeni tabel, 321 zrzut definicji ról, 321 krotki, 69, 189 399 Skorowidz L latency, 352 LDAP, 40, 171 libpq, 25 licencja BSD, 22 licencja systemu PostgreSQL, 22 licencja TPL, 22 liczba poïÈczeñ, 26, 101 liczba tabel w bazie danych, 60 liczba wierszy w tabeli, 65, 67 liczba zwracanych wierszy, 291 liczby losowe, 138 licznik transakcji, 260 Lightning Admin, 34 Lightweight Directory Access Protocol, 171 LIMIT, 244, 292 limit czasowy wyraĝeñ, 233 limit poïÈczeñ, 103 lista baz danych na danym serwerze, 57 listen_addresses, 28, 29, 44 local_preload_libraries, 91 localhost, 26 LOCK, 129, 290 Log Sequence Number, 346 log_autovacuum_min_duration, 253, 254 log_connections, 44 log_disconnections, 44 log_duration, 283 log_emp_audit(), 170, 171 log_error_verbosity, 55 log_filename, 167 log_line_prefix, 55, 168, 285 log_min_duration_statement, 283, 284 log_min_messages, 55 log_rotation_age, 167, 248 log_rotation_size, 167 log_statement, 166, 169 logiczna kopia zapasowa, 313, 316 logiczna kopia zapasowa wszystkich baz danych , 318 logiczna kopia zapasowa wszystkich tabel w pojedynczej przestrzeni tabel, 319 odzyskiwanie, 328 odzyskiwanie bazy danych, 340 odzyskiwanie przestrzeni tabel, 338 odzyskiwanie tabeli, 335 tworzenie, 316 logiczne odzyskiwanie bazy danych, 331 lokalizacja dziennika komunikatów, 53 lokalizacja identyfikatora systemu bazy danych, 56 lokalizacja plików serwera bazy danych, 51 Londiste, 375 awaryjne zatrzymanie, 379 konfiguracja replikacji, 376 monitorowanie opóěnienia replikacji, 380 400 ostateczna spójnoĂÊ, 379 przerywanie pracy, 379 schemat, 378 lookup tables, 118 losowe dane liczbowe, 138 losowe próbkowanie danych, 141 losowy dobór próby, 142 LSN, 346 ’ ïadowanie bibliotek, 90 ïadowanie danych z arkusza kalkulacyjnego, 143 ïadowanie danych z plików, 146 M maintenance_work_mem, 342, 343 Man-In-The-Middle, 175 mapa widocznoĂci, 64 mapa wolnej przestrzeni, 64 max_prepared_transactions, 263 max_stack_depth, 84 max_Standby, 373 max_Standby_archive_delay, 371, 372, 373 max_Standby_streaming_delay, 371, 372, 373 max_wal_senders, 362, 363, 364 md5, 28 MD5, 162 mechanizm HOT, 269 mechanizm MVCC, 66, 266, 267 mechanizm odzyskiwania bazy danych po awarii, 310, 311 mechanizm optymalizacji, 299 mechanizm optymalizacji genetycznej, 297 mechanizm przesyïania dzienników w formie plików, 357 mechanizm TOAST, 255 mechanizm udostÚpniania informacji o ostatnim uĝyciu, 240 menedĝer transakcji, 262 metapolecenia, 37 metoda losowego doboru próby, 142 MITM, 175 moduïy zewnÚtrzne, 89 modyfikacja parametrów systemu, 87 monitorowanie, 221, 222 analiza danych historycznych, 223 blokowanie zapytañ, 231 czas ostatniego uĝycia tabeli, 237 dostarczanie informacji o systemie PostgreSQL do narzÚdzi monitorujÈcych, 223 gromadzenie danych historycznych, 222 gromadzenie dziennych statystyk uĝycia, 237 informacje o aktualnie wykonywanym zapytaniu, 226 monitorowanie w czasie rzeczywistym, 224 narzÚdzia, 222, 224 pgAdmin3, 224 Skorowidz polecenia oczekujÈce na blokady, 230 przesyïanie dzienników, 367 przesyïanie dzienników w formie plików, 359 sprawdzanie, czy tabela jest uĝywana, 235 statystyki uĝycia tabeli, 236 szybkoĂÊ wykonywania zapytañ, 242 monitorowanie replikacji, 360, 367 Munin, 367 mroĝenie, 258, 279 mtime, 346 multi-tenancy, 106 Multi-Version Concurrency Control, 21, 66, 266 Munin, 222, 224, 243, 367 MVCC, 21, 66, 245, 266 MySQL, 21 N n_dead_tup, 268 nadawanie nazw, 118 nadawanie uprawnieñ, 152 ograniczone uprawnienia superuĝytkownika, 163 uprawnienia dostÚpu do tabeli, 155, 156 uprawnienia dostÚpu do wszystkich obiektów w schemacie, 156 Nagios, 223, 224, 270 naprawa przeroĂniÚtych indeksów, 266 narzÚdzia monitorujÈce, 224 Navicat, 34 nawiÈzywanie poïÈczenia z systemem PostgreSQL, 25, 43 poïÈczenia SSL, 172 nazwy obiektów bazy danych, 118 indeksy, 119 tabele, 118 wyzwalacze, 119 nazwy otoczone cudzysïowami, 120 nazwy systemów, 355 nextval(), 133 nieuĝywane indeksy, 275 nodes, 351 NOLOGIN, 159 NOT NULL, 130, 196 notacja wielbïÈdzia, 118 NTP, 355 numer wersji serwera, 48 O obiekty TOAST, 202, 206 Object Relational Mapp
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

PostgreSQL. Receptury dla administratora
Autor:
,

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: