From 5a1d35ce5c25f3879be6b8176cab0dba36e77ba0 Mon Sep 17 00:00:00 2001
From: Magnus Hagander Ostatnia aktualizacja: Sobota Luty 7 22:16:21 EST 2004 Ostatnia aktualizacja tłumaczenia: Pi±tek Marzec 5 19:31:12 EST 2004 Ostatnia aktualizacja tĹ‚umaczenia: PiÄ…tek Marzec 5 19:31:12 EST 2004 Obecny maintainer: Bruce Momjian (pgman@candle.pha.pa.us) Tłumaczenie: Marcin Mazurek (TĹ‚umaczenie: Marcin Mazurek (m.mazurek@netsync.pl) Najbardziej aktualn± wersję tego dokumentu można znaleĽć pod
+ Najbardziej aktualną wersję tego dokumentu można znaleźć pod
adresem:
http://www.PostgreSQL.org/docs/faqs/FAQ.html. Odpowiedzi na pytania dotycz±ce konkretnych systemów operacyjnych
- można znaleĽć pod adresem:
+ Odpowiedzi na pytania dotyczÄ…ce konkretnych systemĂłw operacyjnych
+ można znaleźć pod adresem:
http://www.PostgreSQL.org/docs/index.html. PostgreSQL wymawia się Post-Gres-kju-el. Często podczas
- rozmów używany jest termin "Postgres" PostgreSQL wymawia siÄ™ Post-Gres-kju-el. CzÄ™sto podczas
+ rozmĂłw uĹĽywany jest termin "Postgres" PostgreSQL jest rozszerzeniem systemu zarz±dzania bazami danych -
- POSTGRES, kolejn± generacj± rozwojowego prototypu DBMS.
- Mimo, że PostgreSQL zachował bardzo dobrze zbudowany model danych
- (data model) i bogaty zestaw typów danych POSTGRES'a, zast±pił
- PostQuel'owy język zapytań z rozbudowanym podzbiorem języka
+ PostgreSQL jest rozszerzeniem systemu zarzÄ…dzania bazami danych -
+ POSTGRES, kolejnÄ… generacjÄ… rozwojowego prototypu DBMS.
+ Mimo, że PostgreSQL zachował bardzo dobrze zbudowany model danych
+ (data model) i bogaty zestaw typów danych POSTGRES'a, zastąpił
+ PostQuel'owy język zapytań z rozbudowanym podzbiorem języka
SQL. PostgreSQL jest oprogramowaniem darmowym
- z dostępnymi całymi Ľródłami.
+ z dostępnymi całymi źródłami.
Rozwój PostgreSQL jest prowadzony przez grupę ludzi z Internetu,
- komunikuj±cych się poprzez mailowe listy dyskusyjne PostgreSQL.
+ RozwĂłj PostgreSQL jest prowadzony przez grupÄ™ ludzi z Internetu,
+ komunikujÄ…cych siÄ™ poprzez mailowe listy dyskusyjne PostgreSQL.
Obecnym koordynatorem jest Marc G. Fournier (scrappy@PostgreSQL.org). (Zobacz
- pytanie 1.6 jak się przył±czyć). Ta grupa ludzi jest
- odpowiedzialna za cały rozwój PostgreSQL. PostgreSQL jest projektem
- nie kontrolowanym przez żadn± firmę, aby wzi±ć udział w jego rozwoju
- sprawdĽ,
+ pytanie 1.6 jak się przyłączyć). Ta grupa ludzi jest
+ odpowiedzialna za cały rozwój PostgreSQL. PostgreSQL jest projektem
+ nie kontrolowanym przez żadną firmę, aby wziąć udział w jego rozwoju
+ sprawdĹş,
http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html Autorami PostgreSQL 1.01 byli Andrew Yu and Jolly Chen.
- Wiele innych osób pomogło przy portowaniu, testowaniu, debugowaniu i
- rozwijaniu kodu. Oryginalny kod Postgresa, na którym został oparty
- PostgreSQL, był wysiłkiem studentów oraz pracowników pracuj±cych pod
+ Wiele innych osób pomogło przy portowaniu, testowaniu, debugowaniu i
+ rozwijaniu kodu. Oryginalny kod Postgresa, na którym został oparty
+ PostgreSQL, był wysiłkiem studentów oraz pracowników pracujących pod
kierownictwem profesora Michael'a Stonebraker'a z University of
California w Berkeley. Oryginaln± nazw± oprogramowania w Berkeley był Postgres. Po
- dodaniu obsługi SQL w 1995, nazwa została zmieniona
- na Postgres95. Pod koniec roku 1996 nazwa została zmieniona na
+ Oryginalną nazwą oprogramowania w Berkeley był Postgres. Po
+ dodaniu obsługi SQL w 1995, nazwa została zmieniona
+ na Postgres95. Pod koniec roku 1996 nazwa została zmieniona na
PostgreSQL. PostgreSQL objęty jest następuj±c± licencj±: PostgreSQL objÄ™ty jest nastÄ™pujÄ…cÄ… licencjÄ…: PostgreSQL Data Base Management System
- Pytania ogólne
- 1.1) Co to jest PostgreSQL? Jak to wymawiać?
- 1.2) Jak± licencj± chroniony jest PostgreSQL?
- 1.3) Na jakich systemach Unixowych działa
+ Pytania ogĂłlne
+ 1.1) Co to jest PostgreSQL? Jak to wymawiać?
+ 1.2) JakÄ… licencjÄ… chroniony jest PostgreSQL?
+ 1.3) Na jakich systemach Unixowych działa
PostreSQL?
- 1.4) Na jakich nie-Unixowych systemach działa
+ 1.4) Na jakich nie-Unixowych systemach działa
PostgreSQL?
- 1.5) Sk±d mogę ¶ci±gn±ć PostgreSQL?
- 1.6) Gdzie można szukać wsparcia technicznego?
- 1.7) Jaka jest ostatnia dostępna wersja?
- 1.8) Jaka dokumentacja jest dostępna?
- 1.9) Gdzie mogę znaleĽć informację o znanych
- błędach czy brakuj±cych rozwi±zanich?
- 1.10) Jak mogę się nauczyć SQL?
- 1.11) Czy PostgreSQL ma rozwi±zany problem Y2K?
- 1.12) Jak mogę się przył±czyć do grupy osób
- bezpo¶rednio pracuj±cych nad rozwojem PostgreSQL?
- 1.13) Jak mogę zgłaszać błędy?
- 1.14) Jak można porównać PostgreSQL w stosunku
+ 1.5) Skąd mogę ściągnąć PostgreSQL?
+ 1.6) Gdzie można szukać wsparcia technicznego?
+ 1.7) Jaka jest ostatnia dostępna wersja?
+ 1.8) Jaka dokumentacja jest dostępna?
+ 1.9) Gdzie mogę znaleźć informację o znanych
+ błędach czy brakujących rozwiązanich?
+ 1.10) Jak mogę się nauczyć SQL?
+ 1.11) Czy PostgreSQL ma rozwiÄ…zany problem Y2K?
+ 1.12) Jak mogę się przyłączyć do grupy osób
+ bezpośrednio pracujących nad rozwojem PostgreSQL?
+ 1.13) Jak mogę zgłaszać błędy?
+ 1.14) Jak można porównać PostgreSQL w stosunku
do innych DBMS?
- 1.15) W jaki sposób mogę wesprzeć finansowo
+ 1.15) W jaki sposób mogę wesprzeć finansowo
PostgreSQL?
- Pytania użytkowników
- 2.1) Czy s± jakie¶ driwery ODBC dla
+ Pytania uĹĽytkownikĂłw
+ 2.1) Czy sÄ… jakieĹ› driwery ODBC dla
PostgreSQL?
- 2.2) Jakie istniej± narzędzia pozwalaj±ce na dostęp do
+ 2.2) Jakie istnieją narzędzia pozwalające na dostęp do
PostgreSQL przez www?
- 2.3) Czy istnieje jakie¶ GUI dla PostgreSQL?
- 2.4) Za pomoc± jakich języków programowania można
- się komunikować z PostgreSQL?
+ 2.3) Czy istnieje jakieĹ› GUI dla PostgreSQL?
+ 2.4) Za pomocą jakich języków programowania można
+ się komunikować z PostgreSQL?
- Pytania dotycz±ce administracji
- 3.1) Jak mogę zainstalować PostgreSQL w innej
- lokalizacji niż /usr/local/pgsql?
+ Pytania dotyczÄ…ce administracji
+ 3.1) Jak mogę zainstalować PostgreSQL w innej
+ lokalizacji niĹĽ /usr/local/pgsql?
3.2) Podczas startu postmaster'a,
- otrzymuję komunikat:
+ otrzymujÄ™ komunikat:
Bad System Call lub "core dumped". Dlaczego?
3.3) Podczas startu postmaster'a,
- otrzymuję komunikat o błędzie: IpcMemoryCreate. Dlaczego?
+ otrzymuję komunikat o błędzie: IpcMemoryCreate. Dlaczego?
3.4) Podczas startu postmaster'a,
- otrzymuję komunikat o błędzie: IpcSemaphoreCreate. Dlaczego?
- 3.5) W jaki sposób mogę kontrolować poł±czenia z
- innych hostów?
- 3.6) Jak powinienem skonfigurować system baz
- danych aby uzyskać lepsz± wydajno¶ć?
- 3.7) Jakie s± możliwo¶ci wyszukiwania błędów?
- 3.8) Sk±d się bierze komunikat: "Sorry, too many
- clients" podczas próby poł±czenia się z baz± danych?
- 3.9) Jakie pliki znajduj± się w pg_temp?
+ otrzymuję komunikat o błędzie: IpcSemaphoreCreate. Dlaczego?
+ 3.5) W jaki sposób mogę kontrolować połączenia z
+ innych hostĂłw?
+ 3.6) Jak powinienem skonfigurować system baz
+ danych aby uzyskać lepszą wydajność?
+ 3.7) Jakie są możliwości wyszukiwania błędów?
+ 3.8) SkÄ…d siÄ™ bierze komunikat: "Sorry, too many
+ clients" podczas próby połączenia się z bazą danych?
+ 3.9) Jakie pliki znajdujÄ… siÄ™ w pg_temp?
3.10) Dlaczego konieczne jest przy upgradzie
- PostgreSQL korzystanie ze skryptów dump i restore?
-
- Pytania dotycz±ce użytkowania
- 4.1) Jaka jest różnica pomiędzy kursorami
- binarnymi (binary cursors) i zwykłymi kursorami (normal cursors)?
- 4.2) Jak mogę pobrać za pomoc± SELECT
- jedynie kilka pierwszych wyników zapytania?
- 4.3) Jak mogę uzyskać listę wszystkich tabel czy
+ PostgreSQL korzystanie ze skryptĂłw dump i restore?
+
+ Pytania dotyczÄ…ce uĹĽytkowania
+ 4.1) Jaka jest różnica pomiędzy kursorami
+ binarnymi (binary cursors) i zwykłymi kursorami (normal cursors)?
+ 4.2) Jak mogę pobrać za pomocą SELECT
+ jedynie kilka pierwszych wynikĂłw zapytania?
+ 4.3) Jak mogę uzyskać listę wszystkich tabel czy
innych rzeczy pod psql?
- 4.4) Jak usun±ć kolumnę z tabeli lub zmienić jej
+ 4.4) Jak usunąć kolumnę z tabeli lub zmienić jej
typ?
- 4.5) Jaki jest maksymalny rozmiar dla rzędu,
+ 4.5) Jaki jest maksymalny rozmiar dla rzędu,
tabeli i bazy danych?
- 4.6) Jak dużo miejsca w bazie danych jest
- potrzebne aby przechować dane ze zwyczajnego pliku tekstowego?
- 4.7) Jak mogę sprawdzić jakie tabele, klucze,
- bazy danych i użytkownicy s± utworzeni?
- 4.8) Moje zapytania s± wolne lub nie używaj±
+ 4.6) Jak duĹĽo miejsca w bazie danych jest
+ potrzebne aby przechować dane ze zwyczajnego pliku tekstowego?
+ 4.7) Jak mogę sprawdzić jakie tabele, klucze,
+ bazy danych i uĹĽytkownicy sÄ… utworzeni?
+ 4.8) Moje zapytania sÄ… wolne lub nie uĹĽywajÄ…
kluczy. Dlaczego?
- 4.9) Jak mogę sprawdzić w jakis sposób "query
+ 4.9) Jak mogę sprawdzić w jakis sposób "query
optimizer" wykonuje moje zapytanie?
4.10) Co to jest "R-tree index"?
4.11) Co to jest "Genetic Query Optimizer"?
- 4.12) Jak mogę używać wyrażeń regularnych w
- zapytaniach i zapytań case-insensitive w wyrażeniach regularnych?
- Jak korzystać z indeksów dla zapytań case-insensitive?
- 4.13) Jak sprawdzić w zapytaniu czy pole ma
- warto¶ć NULL?
- 4.14) Jaka jest różnica pomiędzy różnymi typami
+ 4.12) Jak mogę używać wyrażeń regularnych w
+ zapytaniach i zapytań case-insensitive w wyrażeniach regularnych?
+ Jak korzystać z indeksów dla zapytań case-insensitive?
+ 4.13) Jak sprawdzić w zapytaniu czy pole ma
+ wartość NULL?
+ 4.14) Jaka jest różnica pomiędzy różnymi typami
tekstowymi (character types)?
- 4.15.1) Jak mogę utworzyć pole typu int, które samo
- zwiększa swoj± warto¶ć?
- 4.15.2) Jak pobrać warto¶ć pola typu
+ 4.15.1) Jak mogę utworzyć pole typu int, które samo
+ zwiększa swoją wartość?
+ 4.15.2) Jak pobrać wartość pola typu
SERIAL po wykonaniu insert'u?
- 4.15.3) Czy użycie currval() i
+ 4.15.3) Czy uĹĽycie currval() i
nextval() nie doprowadzi do "race condition" z innymi
- użytkownikami?
- 4.15.4) Dlaczego numery sekwencji nie s±
- ponownie używane przy przerwaniu transakcji?
- Sk±d się bior± luki w numerowaniu kolumny tabeli sekwencjami/SERIALem?
+ uĹĽytkownikami?
+ 4.15.4) Dlaczego numery sekwencji nie sÄ…
+ ponownie uĹĽywane przy przerwaniu transakcji?
+ SkÄ…d siÄ™ biorÄ… luki w numerowaniu kolumny tabeli sekwencjami/SERIALem?
4.16) Co to jest OID? Co to jest
TID?
- 4.17) Jakie jest znaczenie niektórych terminów w
+ 4.17) Jakie jest znaczenie niektĂłrych terminĂłw w
PostgreSQL?
- 4.18) Sk±d bierze się ten bł±d: "ERROR: Memory
+ 4.18) Skąd bierze się ten błąd: "ERROR: Memory
exhausted in AllocSetAlloc()"?
- 4.19) Jak sprawdzić jakiej wersji PostgreSQL
- używam?
- 4.20) Dlaczego operacje, które wykonuję na
- dużych obiektach "large-object" zwracaj± komunikat:
+ 4.19) Jak sprawdzić jakiej wersji PostgreSQL
+ uĹĽywam?
+ 4.20) Dlaczego operacje, ktĂłre wykonujÄ™ na
+ duĹĽych obiektach "large-object" zwracajÄ… komunikat:
"invalid large obj descriptor"?
- 4.21) Jak stworzyć kolumnę której domy¶ln±
- warto¶ci± będzie bież±cy czas?
- 4.22) Dlaczego zapytania używaj±ce
- IN
s± takie wolne?
- 4.23) Jak wykonać "outer join"?
- 4.24) Jak wykonywać zapytanie używaj±ce kilku
- baz danych jednocze¶nie?
- 4.25) Jak zwrócić w funkcji wiele rzędów lub
+ 4.21) Jak stworzyć kolumnę której domyślną
+ wartością będzie bieżący czas?
+ 4.22) Dlaczego zapytania uĹĽywajÄ…ce
+ IN
sÄ… takie wolne?
+ 4.23) Jak wykonać "outer join"?
+ 4.24) Jak wykonywać zapytanie używające kilku
+ baz danych jednocześnie?
+ 4.25) Jak zwrócić w funkcji wiele rzędów lub
kolumn?
- 4.26) Dlaczego nie mogę w sposób pewny
- tworzyć/usuwać tabel tymczasowych w funkcjach PL/PgSQL?
- 4.27) Jakie s± możliwo¶ci replikacji w
+ 4.26) Dlaczego nie mogÄ™ w sposĂłb pewny
+ tworzyć/usuwać tabel tymczasowych w funkcjach PL/PgSQL?
+ 4.27) Jakie są możliwości replikacji w
PostgreSQL?
- 4.28) Jakie możliwo¶ci szyfrowania oferuje
+ 4.28) Jakie możliwości szyfrowania oferuje
PostgreSQL?
Rozwijanie PostgreSQL
- 5.1) Napisałem własn± funkcję. Kiedy użyję jej w
- psql, program zrzuca pamięć (dump core)?
- 5.2) Jak mogę dodać/zgłosić nowe typy czy funkcje
+ 5.1) Napisałem własną funkcję. Kiedy użyję jej w
+ psql, program zrzuca pamięć (dump core)?
+ 5.2) Jak mogę dodać/zgłosić nowe typy czy funkcje
do PostgreSQL?
- 5.3) Jak napisać funkcję C zwracaj±c± krotkę
+ 5.3) Jak napisać funkcję C zwracającą krotkę
(tuple)?
- 5.4) Zmieniłem plik Ľródłowy. Dlaczego po
- rekompilacji nie widać zmiany?
+ 5.4) Zmieniłem plik źródłowy. Dlaczego po
+ rekompilacji nie widać zmiany?
- Pytania ogólne
+ Pytania ogĂłlne
- 1.1) Co to jest PostgreSQL? Jak to wymawiać?
+ 1.1) Co to jest PostgreSQL? Jak to wymawiać?
- 1.2) Jak± licencj± chroniony jest
+
1.2) JakÄ… licencjÄ… chroniony jest
PostgreSQL?
-
Tekst powyżej, jest klasyczn± licencj± BSD. - Nie posiada ona żadnych restrykcji co do używania kodu Ľródłowego. - Podoba nam się i nie zamierzamy jej zmieniać.
+Tekst powyżej, jest klasyczną licencją BSD. + Nie posiada ona żadnych restrykcji co do używania kodu źródłowego. + Podoba nam się i nie zamierzamy jej zmieniać.
-PostgreSQL powinien działać na wszystkich nowych Unix-podobnych - systemach. Platformy, które zostały szczegółowo przetestowane podczas - publikowania PostgreSQL s± wymienione w dokumentacji opisuj±cej - instalację.
+PostgreSQL powinien działać na wszystkich nowych Unix-podobnych + systemach. Platformy, które zostały szczegółowo przetestowane podczas + publikowania PostgreSQL są wymienione w dokumentacji opisującej + instalację.
-Klient
-Możliwa jest kompilacja bibliteki C libpq, psql oraz - innych interfejsów i uruchamianie ich na platformie MS Windows. W tym - wypadku klient jest uruchamiany na MS Windows a z serwerem komunikuje się - poprzez TCP/IP. Serwer może działać na dowolnej wspieranej platformie - Unixowej. Plik win32.mak jest doł±czony - do Ľródeł, aby można było stworzyć bibliotekę libpq oraz - program psql działaj±ce w ¶rodowisku Win32. PostgreSQL może się - także komunikować z klientami ODBC.
+Możliwa jest kompilacja bibliteki C libpq, psql oraz + innych interfejsów i uruchamianie ich na platformie MS Windows. W tym + wypadku klient jest uruchamiany na MS Windows a z serwerem komunikuje się + poprzez TCP/IP. Serwer może działać na dowolnej wspieranej platformie + Unixowej. Plik win32.mak jest dołączony + do źródeł, aby można było stworzyć bibliotekę libpq oraz + program psql działające w środowisku Win32. PostgreSQL może się + także komunikować z klientami ODBC.
Serwer
-Serwer może być uruchamiany na Windows NT i Win2k używaj±c +
Serwer moĹĽe być uruchamiany na Windows NT i Win2k uĹĽywajÄ…c bibliotek Cygwin, Cygnus Unix/NT. W pliku pgsql/doc/FAQ_MSWIN - znajduj±cym się w Ľródłach lub pod adresem: http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN na naszych stronach.
- Obecnie prowadzone s± prace nad stworzeniem wersji dla MS Win - NT/200/XP. Je¶li chcesz się dowiedzieć o obecnym statusie tych prac + Obecnie prowadzone sÄ… prace nad stworzeniem wersji dla MS Win + NT/200/XP. JeĹ›li chcesz siÄ™ dowiedzieć o obecnym statusie tych prac zobacz http://techdocs.postgresql.org/guides/Windows and http://momjian.postgresql.org/main/writings/pgsql/win32.html.
- Istnieje także port pod Novell Netware 6 dostępny pod adresem http://forge.novell.com.
-Główny serwer ftp z dostępem "anonymous" dla PostgreSQL znajduje - się ftp://ftp.PostgreSQL.org/pub. - je¶li szukasz mirrorów sprawdĽ nasz± główn± stronę www.
+Główny serwer ftp z dostępem "anonymous" dla PostgreSQL znajduje + się ftp://ftp.PostgreSQL.org/pub. + jeśli szukasz mirrorów sprawdź naszą główną stronę www.
-Adres głównej listy mailowej: Adres głównej listy mailowej: pgsql-general@PostgreSQL.org. - Jest ona przeznaczona dyskusjom dotycz±cym spraw zwi±zanych z PostgreSQL. - Żeby zapisac się na listę, wy¶lij email z następuj±cymi liniami w - tre¶ci maila (nie w temacie):
+ Jest ona przeznaczona dyskusjom dotyczącym spraw związanych z PostgreSQL. + Żeby zapisac się na listę, wyślij email z następującymi liniami w + treści maila (nie w temacie):subscribe end @@ -300,100 +300,100 @@na adres: pgsql-general-request@PostgreSQL.org.
-Dostępna jest także lista wysyłaj±ca digesty. Aby zapisać się na - ni±, wy¶lij email na adres: +
DostÄ™pna jest takĹĽe lista wysyĹ‚ajÄ…ca digesty. Aby zapisać siÄ™ na + niÄ…, wyĹ›lij email na adres: pgsql-general-digest-request@PostgreSQL.org - z tre¶ci± maila zawieraj±c±:
+ z treĹ›ciÄ… maila zawierajÄ…cÄ…:subscribe end- Digesty s± wysyłane do członków listy, kiedy na główn± listę dotrze ok - 30k wiadomo¶ci. + Digesty sÄ… wysyĹ‚ane do czĹ‚onkĂłw listy, kiedy na głównÄ… listÄ™ dotrze ok + 30k wiadomoĹ›ci. -Dostępna jest także lista po¶więcona błędom znalezionym w - PostgreSQL. Aby zapisać się na ni± wy¶lij email na adres: +
DostÄ™pna jest takĹĽe lista poĹ›wiÄ™cona błędom znalezionym w + PostgreSQL. Aby zapisać siÄ™ na niÄ… wyĹ›lij email na adres: pgsql-bugs-request@PostgreSQL.org - z tre¶ci± maila zawieraj±c±:
+ z treĹ›ciÄ… maila zawierajÄ…cÄ…:subscribe end- Lista po¶więcona dyskusjom developerów jest dostępna pod adresem: + Lista poĹ›wiÄ™cona dyskusjom developerĂłw jest dostÄ™pna pod adresem: pgsql-hackers-request@PostgreSQL.org - Aby się na ni± zapisać wy¶lij na jej adres mail z tre¶ci±: + Aby siÄ™ na niÄ… zapisać wyĹ›lij na jej adres mail z treĹ›ciÄ…:subscribe end-Dodatkowe informacje o listach mailowych dotycz±cych PostgreSQL - można znaleĽć na stronach WWW PostgreSQL pod adresem:
+Dodatkowe informacje o listach mailowych dotyczących PostgreSQL + można znaleźć na stronach WWW PostgreSQL pod adresem:
-W sieci EFNet istnieje kanał IRC #PostgreSQL. Ja, do - poł±czenia się z kanałem używam Unixowego polecenia
-irc -c +
W sieci EFNet istnieje kanał IRC #PostgreSQL. Ja, do + połączenia się z kanałem używam Unixowego polecenia
-irc -c '#PostgreSQL' "$USER" irc.phoenix.net.
Lista firm oferuj±cych wsparcie na zasadach komercyjnych znajduje - się pod adresem: http://techdocs.postgresql.org/companies.php.
+Lista firm oferujÄ…cych wsparcie na zasadach komercyjnych znajduje + siÄ™ pod adresem: http://techdocs.postgresql.org/companies.php.
-1.7) Jaka jest ostatnia dostępna wersja?
+1.7) Jaka jest ostatnia dostępna wersja?
-Ostatnia dostępna wersja PostgreSQL to 7.4.1.
+Ostatnia dostępna wersja PostgreSQL to 7.4.1.
-Planujemy publikowanie kolejnych wersji co sze¶ć do o¶miu miesięcy.
+Planujemy publikowanie kolejnych wersji co sześć do ośmiu miesięcy.
-1.8) Jaka dokumentacja jest dostępna?
+1.8) Jaka dokumentacja jest dostępna?
-Kilka manuali, stron podęcznika man, oraz kilka przykładów do - testowania s± zał±czone w samej dystrybucji. Znajduj± się one w - katalogu /doc. Manual może być także przegl±dany poprzez +
Kilka manuali, stron podęcznika man, oraz kilka przykładów do + testowania są załączone w samej dystrybucji. Znajdują się one w + katalogu /doc. Manual może być także przeglądany poprzez strony www pod adresem http://www.PostgreSQL.org/docs.
-Istniej± także dwie ksi±żki dostępne online pod adresami +
IstniejÄ… takĹĽe dwie ksiÄ…ĹĽki dostÄ™pne online pod adresami http://www.PostgreSQL.org/docs/awbook.html i http://www.commandprompt.com/ppbook/. - Lista ksi±żek o PostgreSQL, które można kupić znajduje się pod adresem + Lista ksiÄ…ĹĽek o PostgreSQL, ktĂłre moĹĽna kupić znajduje siÄ™ pod adresem http://techdocs.PostgreSQL.org/techdocs/bookreviews.php. - Zbiór technicznych artykułów o PostgreSQL znajduje się pod adresem http://techdocs.postgresql.org/.
-psql posiada kilka wbudowanych poleceń \d, za pomoca których - można sprawdzić informacje dotycz±ce typów, operatorów, funkcji, - agregatów itd.
+psql posiada kilka wbudowanych poleceń \d, za pomoca których + można sprawdzić informacje dotyczące typów, operatorów, funkcji, + agregatów itd.
-Na naszej stronie można znaleĽć dużo więcej dokumentacji.
+Na naszej stronie można znaleźć dużo więcej dokumentacji.
-1.9) Gdzie można znaleĽć informację o znanych - błędach czy brakuj±cych rozwi±zanich?
+1.9) Gdzie można znaleźć informację o znanych + błędach czy brakujących rozwiązanich?
-PostgreSQL wspiera rozszerzony podzbiór standardu SQL-92. - SprawdĽ nasz± listę TODO - aby znaleĽć informację o znanych problemach, brakuj±cych - rozwi±zaniach czy przyszłych planach.
+PostgreSQL wspiera rozszerzony podzbiór standardu SQL-92. + Sprawdź naszą listę TODO + aby znaleźć informację o znanych problemach, brakujących + rozwiązaniach czy przyszłych planach.
-1.10) Jak mogę się nauczyć +
1.10) Jak mogę się nauczyć SQL?
-Ksi±żka o PostgreSQL KsiÄ…ĹĽka o PostgreSQL http://www.PostgreSQL.org/docs/awbook.html - uczy SQL. Jest jeszcze inna ksi±zka o PostgreSQL - dostępna pod adresem: SQL. Jest jeszcze inna ksiÄ…zka o PostgreSQL + dostÄ™pna pod adresem: http://www.commandprompt.com/ppbook. - Dobry tutorial możesz znaleĽć pod adresem: http://www.intermedia.net/support/sql/sqltut.shtm, oraz @@ -405,211 +405,211 @@ pod adresem: http://members.tripod.com/er4ebus/sql/index.htm
-Wielu z naszych użytkowników poleca The Practical SQL Handbook, - Bowman, Judith S., et al., Addison-Wesley. Inni polecaj± The +
Wielu z naszych uĹĽytkownikĂłw poleca The Practical SQL Handbook, + Bowman, Judith S., et al., Addison-Wesley. Inni polecajÄ… The Complete Reference SQL, Groff et al., McGraw-Hill.
-1.11) Czy PostgreSQL ma rozwi±zany problem Y2K?
+1.11) Czy PostgreSQL ma rozwiÄ…zany problem Y2K?
Tak, bez problemu radzimy sobie z datami po roku 2000 AD, oraz przed rokiem 2000 BC.
-1.12) Jak mogę się przył±czyć do grupy osób - bezpo¶rednio pracuj±cych nad rozwojem PostgreSQL?
+1.12) Jak mogę się przyłączyć do grupy osób + bezpośrednio pracujących nad rozwojem PostgreSQL?
-Przede wszystkim ¶ci±gnij ostatnie dostępne Ľródła i przeczytaj - dokumentację przeznaczon± dla developerów na naszej stronie www lub - dostępn± także w Ľródłach PostgreSQL. Następnie zapisz się na listy +
Przede wszystkim Ĺ›ciÄ…gnij ostatnie dostÄ™pne ĹşrĂłdĹ‚a i przeczytaj + dokumentacjÄ™ przeznaczonÄ… dla developerĂłw na naszej stronie www lub + dostÄ™pnÄ… takĹĽe w ĹşrĂłdĹ‚ach PostgreSQL. NastÄ™pnie zapisz siÄ™ na listy mailowe pgsql-hackers i - pgsql-patches. I na koniec, wysyłaj nam wysokiej jako¶ci - patch'e na listę pgsql-patches.
+ pgsql-patches. I na koniec, wysyĹ‚aj nam wysokiej jakoĹ›ci + patch'e na listÄ™ pgsql-patches.Jest około 12 osób, które maj± uprawnienia do commit'owania w - CVS PostgreSQL'a. Każdy z nich submitował tak wiele - wysokiej jako¶ci patchy, że stało się niemożliwe dla obecnych - commiterów być z nimi na bież±co, więc musieli¶my im ufać i mieć - pewno¶ć, że ich poprawki s± wysokiej jako¶ci.
+Jest około 12 osób, które mają uprawnienia do commit'owania w + CVS PostgreSQL'a. Każdy z nich submitował tak wiele + wysokiej jakości patchy, że stało się niemożliwe dla obecnych + commiterów być z nimi na bieżąco, więc musieliśmy im ufać i mieć + pewność, że ich poprawki są wysokiej jakości.
-1.13) Jak mogę zgłaszać błędy?
+1.13) Jak mogę zgłaszać błędy?
-Zajrzyj na stronę Zajrzyj na stronÄ™ PostgreSQL BugTool, na - której opisane s± wskazówki jak zgłaszać informacje o błędach.
+ ktĂłrej opisane sÄ… wskazĂłwki jak zgĹ‚aszać informacje o błędach. -Zajrzyj także na nasz ftp Zajrzyj takĹĽe na nasz ftp ftp://ftp.PostgreSQL.org/pub, aby - sprawdzić czy nie ma nowszych wersji PostgreSQL czy patchy.
+ sprawdzić czy nie ma nowszych wersji PostgreSQL czy patchy. -1.14) Jak można porównać PostgreSQL w stosunku +
1.14) Jak można porównać PostgreSQL w stosunku do innych DBMS?
-Jest kilka sposobów oceny softwaru: możliwo¶ci, - wydajno¶ć, stabilno¶ć, wsparcie i cena.
+Jest kilka sposobów oceny softwaru: możliwości, + wydajność, stabilność, wsparcie i cena.
PostgreSQL korzysta z najlepszej infrastruktury od samego pocz±tku - istnienia projektu, czyli roku 1996 kiedy rozpoczeli¶my pracę. Wszystko - to zawdzięczamy Marc'owi Fournier'owi, który stworzył t± infrastrukturę - i zarz±dza ni± od lat.
+PostgreSQL korzysta z najlepszej infrastruktury od samego początku + istnienia projektu, czyli roku 1996 kiedy rozpoczeliśmy pracę. Wszystko + to zawdzięczamy Marc'owi Fournier'owi, który stworzył tą infrastrukturę + i zarządza nią od lat.
-Wysokiej jako¶ci infrastruktura jest bardzo ważna dla każdego +
Wysokiej jakości infrastruktura jest bardzo ważna dla każdego projektu open-source. Zapobiega przerwom w rozwoju projektu i jakimkolwiek przestojom.
-Oczywi¶cie korzystanie z wysokiej jako¶ci infrastruktury nie jest - tanie. Istnieje wiele różnych miesięcznych, czy jednorazowych - wydatków, które trzeba ponosić aby wszystko działało jak należy. - Je¶li Ty, b±dĽ Twoja firma może wspomóc finansowo rozwój PostgreSQL - odwiedĽ adres: OczywiĹ›cie korzystanie z wysokiej jakoĹ›ci infrastruktury nie jest + tanie. Istnieje wiele różnych miesiÄ™cznych, czy jednorazowych + wydatkĂłw, ktĂłre trzeba ponosić aby wszystko dziaĹ‚aĹ‚o jak naleĹĽy. + JeĹ›li Ty, bÄ…dĹş Twoja firma moĹĽe wspomĂłc finansowo rozwĂłj PostgreSQL + odwiedĹş adres: http://store.pgsql.com/shopping/ - gdzie opisane jest jak to zrobić.
+ gdzie opisane jest jak to zrobić. -Chociaż na stronie wspomniana jest nazwa PostgreSQL Inc, "datki" - s± przeznaczone jedynie na rozwój projektu PostgreSQL i nie s± - przeznaczane na finansowanie jakiejkolwiek firmy. Je¶li wolisz, - możesz wysłać czek na adres kontaktowy.
+Chociaż na stronie wspomniana jest nazwa PostgreSQL Inc, "datki" + są przeznaczone jedynie na rozwój projektu PostgreSQL i nie są + przeznaczane na finansowanie jakiejkolwiek firmy. Jeśli wolisz, + możesz wysłać czek na adres kontaktowy.
Dostępne s± dwa driwery ODBC: PsqlODBC +
Dostępne są dwa driwery ODBC: PsqlODBC i OpenLink ODBC.
-Możesz pobrać PsqlODBC z adresu MoĹĽesz pobrać PsqlODBC z adresu http://gborg.postgresql.org/project/psqlodbc/projdisplay.php
-OpenLink ODBC może być pobrany z adresu: OpenLink ODBC moĹĽe być pobrany z adresu: http://www.openlinksw.com. - Współpracuje ze standardowym oprogramowaniem klienckim ODBC - więc w ten sposób możesz korzystać z PostgreSQL ODBC - dostępnego na każdej pltaformie któr± wspiera (Win, Mac, Unix, VMS).
+ Współpracuje ze standardowym oprogramowaniem klienckim ODBC + wiÄ™c w ten sposĂłb moĹĽesz korzystać z PostgreSQL ODBC + dostÄ™pnego na kaĹĽdej pltaformie ktĂłrÄ… wspiera (Win, Mac, Unix, VMS). -Autorzy będ± prawdopodobnie sprzedawać ten produkt osobom które - wymagaj± komercyjnego wsparcia, ale wersja darmowa będzie zawsze - dostępna. Wszystkie pytania możesz wysyłać na adres: Autorzy bÄ™dÄ… prawdopodobnie sprzedawać ten produkt osobom ktĂłre + wymagajÄ… komercyjnego wsparcia, ale wersja darmowa bÄ™dzie zawsze + dostÄ™pna. Wszystkie pytania moĹĽesz wysyĹ‚ać na adres: postgres95@openlink.co.uk.
-Dobry podręcznik dla pocz±tkuj±cych o dostępie do bazy danych - przez www możesz znaleĽć pod adresem: +
Dobry podręcznik dla początkujących o dostępie do bazy danych + przez www możesz znaleźć pod adresem: http://www.webreview.com
-Do integracji z www, ¶wietnym rozwi±zaniem jest PHP. Możesz - znaleĽć więcej informacji na ten temat pod adresem +
Do integracji z www, świetnym rozwiązaniem jest PHP. Możesz + znaleźć więcej informacji na ten temat pod adresem http://www.php.net.
-Wiele osób w przypadku skomplikowanych rozwi±zań uzywa Perl'a i - modułu CGI.pl lub mod_perl.
+Wiele osób w przypadku skomplikowanych rozwiązań uzywa Perl'a i + modułu CGI.pl lub mod_perl.
-Tak, istnieje kilka interfejsów graficznych dla PostgreSQL.
- W¶ród nich PgAccess (
+ Tak, istnieje kilka interfejsĂłw graficznych dla PostgreSQL.
+ Wśród nich PgAccess (
http://www.pgaccess.org), PgAdmin III (http://www.pgadmin.org),
RHDB Admin (http://sources.redhat.com/rhdb/ ) oraz Rekall (
http://www.thekompany.com/products/rekall/, komercyjny). Istnieje
- także PHPPgAdmin ( http://phppgadmin.sourceforge.net/ ), webowy
+ takĹĽe PHPPgAdmin ( http://phppgadmin.sourceforge.net/ ), webowy
interfejs dla PostgreSQL.
- Więcej informacji na ten temat znajduje się pod adresem See
+ Więcej informacji na ten temat znajduje się pod adresem See
http://techdocs.postgresql.org/guides/GUITools. Najbardziej popularne języki posiiadaj± własny interfejs dla
- PostgreSQL. SprawdĽ listę rozszerzeń dla intersuj±cego Ciebie języka
+ Najbardziej popularne języki posiiadają własny interfejs dla
+ PostgreSQL. Sprawdź listę rozszerzeń dla intersującego Ciebie języka
programowania. Ze Ľródłami PostreSQL dystrubuowane s± interfejsy dla
- następuj±cych języków programowania: Ze ĹşrĂłdĹ‚ami PostreSQL dystrubuowane sÄ… interfejsy dla
+ nastÄ™pujÄ…cych jÄ™zykĂłw programowania:2.4) Za pomoc± jakich języków programowania
- można się komunikować z PostgreSQL?
+ 2.4) Za pomocą jakich języków programowania
+ można się komunikować z PostgreSQL?
-
@@ -623,266 +623,266 @@
- Inne interfejsy s± dostępne pod adresem:
+ Inne interfejsy są dostępne pod adresem:
http://gborg.postgresql.org w
sekcji Drivers/Interfaces.
Użyj opcji --prefix podczas uruchamiania skryptu +
UĹĽyj opcji --prefix podczas uruchamiania skryptu configure.
Ten bł±d może być wynikiem wielu problemów, ale na pocz±tek - sprawdĽ czy masz zainstalowane rozszerzenia systemu V w j±drze - systemu. PostgreSQL wymaga do pracy zainstalowanej obsługi pamięci - dzielonej i semaforów.
+Ten błąd może być wynikiem wielu problemów, ale na początek + sprawdź czy masz zainstalowane rozszerzenia systemu V w jądrze + systemu. PostgreSQL wymaga do pracy zainstalowanej obsługi pamięci + dzielonej i semaforów.
Albo nie masz poprawnie skonfigurowanej obsługi pamięci dzielonej - w j±drze systemu, albo musisz zwiększyć jej dostępny rozmiar. - Dokładna ilo¶ć jak± potrzebujesz jest zależna od architektury systemu - na jakim pracujesz, jak dużo buforów oraz jak dużo procesów backendu - skonfigurowałe¶ dla postmaster'a. Dla większo¶ci systemów, z - domy¶ln± liczb± buforów i procesów potrzebujesz minimum w - przybliżeniu 1MB. Zobacz Albo nie masz poprawnie skonfigurowanej obsĹ‚ugi pamiÄ™ci dzielonej + w jÄ…drze systemu, albo musisz zwiÄ™kszyć jej dostÄ™pny rozmiar. + DokĹ‚adna ilość jakÄ… potrzebujesz jest zaleĹĽna od architektury systemu + na jakim pracujesz, jak duĹĽo buforĂłw oraz jak duĹĽo procesĂłw backendu + skonfigurowaĹ‚eĹ› dla postmaster'a. Dla wiÄ™kszoĹ›ci systemĂłw, z + domyĹ›lnÄ… liczbÄ… buforĂłw i procesĂłw potrzebujesz minimum w + przybliĹĽeniu 1MB. Zobacz PostgreSQL - Administrator's Guide gdzie szczegółowo zostało opisane - wykorzystanie pamięci dzielonej i semaforów.
+ Administrator's Guide gdzie szczegółowo zostaĹ‚o opisane + wykorzystanie pamiÄ™ci dzielonej i semaforĂłw.Je¶li tre¶ć błędu brzmi: IpcSemaphoreCreate: semget failed - (No space left on device) oznacza to, że j±dro systemu nie jest - skonfigurowane do obsługi wystarczaj±cej liczby semaforów. +
JeĹ›li treść błędu brzmi: IpcSemaphoreCreate: semget failed + (No space left on device) oznacza to, ĹĽe jÄ…dro systemu nie jest + skonfigurowane do obsĹ‚ugi wystarczajÄ…cej liczby semaforĂłw. Postgres wymaga jednego semafor'a na potencjalny jeden proces backend. - Tymczasowym rozwi±zaniem jest uruchomienie programu postmaster - z mniejsz± maksymaln± liczb± procesów backend. - Użyj opcji -N z parameterem mniejszym od domy¶lnego - 32. - Bardziej trwałym rozwi±zaniem jest zwiększenie parametrów - SEMMNS i SEMMNI j±dra twojego systemu.
+ Tymczasowym rozwiÄ…zaniem jest uruchomienie programu postmaster + z mniejszÄ… maksymalnÄ… liczbÄ… procesĂłw backend. + UĹĽyj opcji -N z parameterem mniejszym od domyĹ›lnego - 32. + Bardziej trwaĹ‚ym rozwiÄ…zaniem jest zwiÄ™kszenie parametrĂłw + SEMMNS i SEMMNI jÄ…dra twojego systemu. -Niedziałaj±ce semafory mog± spowodować niepoprawne zamknięcie +
Niedziałające semafory mogą spowodować niepoprawne zamknięcie systemu w czasie intensywnego korzystania z bazy.
-Je¶li tre¶ć błędu jest inna, może to oznaczać, że obsługa semaforów - nie została wł±czona do j±dra wcale. Zobacz PostgreSQL - Administrator's Guide po bardziej szczegółowe informacje o pamięci +
Jeśli treść błędu jest inna, może to oznaczać, że obsługa semaforów + nie została włączona do jądra wcale. Zobacz PostgreSQL + Administrator's Guide po bardziej szczegółowe informacje o pamięci dzielonej i semaforach.
-Domy¶lnie PostgreSQL pozwala jedynie na poł±czenia za pomoc± - socketów Unixowych z lokalnego hosta. Inne hosty nie będ± mogły się - poł±czyć z serwerem dopóki nie zostanie dodana opcja -i do +
DomyĹ›lnie PostgreSQL pozwala jedynie na połączenia za pomocÄ… + socketĂłw Unixowych z lokalnego hosta. Inne hosty nie bÄ™dÄ… mogĹ‚y siÄ™ + połączyć z serwerem dopĂłki nie zostanie dodana opcja -i do postmaster'a, - oraz nie umożliwi się autoryzacji na podstawie adresu hostów - modyfikuj±c odpowiednio plik - $PGDATA/pg_hba.conf. To zmiany pozwol± na poł±czenia TCP/IP.
+ oraz nie umoĹĽliwi siÄ™ autoryzacji na podstawie adresu hostĂłw + modyfikujÄ…c odpowiednio plik + $PGDATA/pg_hba.conf. To zmiany pozwolÄ… na połączenia TCP/IP. -Indeksy bez w±tpienia mog± przyspieszyć wykonywanie zapytań. - Polecenie EXPLAIN pozwala zobaczyć jak PostgreSQL - interpretuje Twoje zapytanie i które indeksy s± używane.
+Indeksy bez wątpienia mogą przyspieszyć wykonywanie zapytań. + Polecenie EXPLAIN pozwala zobaczyć jak PostgreSQL + interpretuje Twoje zapytanie i które indeksy są używane.
-Je¶li wykonujesz bardzo dużo INSERTów, może warto - je wykonać za pomoc± jednego dużego pliku używaj±c polecenia - COPY. Jest to dużo szybsze niż pojedyncze +
JeĹ›li wykonujesz bardzo duĹĽo INSERTĂłw, moĹĽe warto + je wykonać za pomocÄ… jednego duĹĽego pliku uĹĽywajÄ…c polecenia + COPY. Jest to duĹĽo szybsze niĹĽ pojedyncze INSERTy. Po drugie polecenia SQL nie zawarte w bloku - okre¶laj±cym transakcję - BEGIN WORK/COMMIT, s± - traktowane jako pojedyncza transakcja. Rozważ wykonanie kilku - poleceń/zdań SQL w jednym bloku transakcji. To redukuje narzut - nakładany przez transakcję. Przy dużych zmianach w danych, warto - usun±ć i stworzyć na nowo indeksy.
- -Jest kilka opcji pozwalaj±cych na poprawienie wydajno¶ci. - Możesz wył±czyć fsync() poprzez uruchomienie postmaster'a - z opcjami -o -F. To spowoduje, że - fsync() nie będzie zrzucał danych na dysk po każdej + okreĹ›lajÄ…cym transakcjÄ™ - BEGIN WORK/COMMIT, sÄ… + traktowane jako pojedyncza transakcja. RozwaĹĽ wykonanie kilku + poleceĹ„/zdaĹ„ SQL w jednym bloku transakcji. To redukuje narzut + nakĹ‚adany przez transakcjÄ™. Przy duĹĽych zmianach w danych, warto + usunąć i stworzyć na nowo indeksy.
+ +Jest kilka opcji pozwalających na poprawienie wydajności. + Możesz wyłączyć fsync() poprzez uruchomienie postmaster'a + z opcjami -o -F. To spowoduje, że + fsync() nie będzie zrzucał danych na dysk po każdej transakcji.
-Możesz także uruchomić postmaster'a z opcj± -B - aby zwiększyć wielko¶ć pamięci dzielonej używanej przez procesy - backendów. Je¶li ustawisz t± warto¶ć zbyt wysoko i przekroczysz limity - ustawione przez kernel na pamięć dzielon±, postmaster może się - nie uruchomić. Każdy bufor zajmuje 8K a domy¶lna ilo¶ć buforów to 64.
+Możesz także uruchomić postmaster'a z opcją -B + aby zwiększyć wielkość pamięci dzielonej używanej przez procesy + backendów. Jeśli ustawisz tą wartość zbyt wysoko i przekroczysz limity + ustawione przez kernel na pamięć dzieloną, postmaster może się + nie uruchomić. Każdy bufor zajmuje 8K a domyślna ilość buforów to 64.
-Możesz także użyć opcji -S dla backendu aby zwiększyć - maksymaln± warto¶ć pamięci używan± przez proces backendu podczas - sortowania. Opcja -S jest ustawiana warto¶ci± podawan± w - kilobajtach, domy¶lna warto¶ć to 512K.
+Możesz także użyć opcji -S dla backendu aby zwiększyć + maksymalną wartość pamięci używaną przez proces backendu podczas + sortowania. Opcja -S jest ustawiana wartością podawaną w + kilobajtach, domyślna wartość to 512K.
-Możesz także użyć polecenia CLUSTER aby pogrupować +
MoĹĽesz takĹĽe uĹĽyć polecenia CLUSTER aby pogrupować dane w tabelach wg indeksu. Zobacz opis polecenia CLUSTER - w manualu żeby dowiedzieć się więcej.
+ w manualu ĹĽeby dowiedzieć siÄ™ wiÄ™cej. -PostgreSQL ma kilka możliwo¶ci na raportowanie informacji o - jego statusie, które mog± być przydatne przy debugowaniu procesu.
+PostgreSQL ma kilka możliwości na raportowanie informacji o + jego statusie, które mogą być przydatne przy debugowaniu procesu.
-Przede wszystkim uruchom skrypt configure z opcj± - --enable-cassert, wiele funkcji assert() monitoruj± postęp - procesu backend i zatrzymuj± program kiedy wydarzy się co¶ +
Przede wszystkim uruchom skrypt configure z opcją + --enable-cassert, wiele funkcji assert() monitorują postęp + procesu backend i zatrzymują program kiedy wydarzy się coś nieoczekiwanego.
-Zarówno postmaster jak i postgres maj± kilka opcji - do debugowania. Za każdym razem kiedy uruchamiasz postmaster'a, - upewnij się, że wysyłasz standardowe wyj¶cie i error do pliku z - logami, np. w ten sposób:
+Zarówno postmaster jak i postgres mają kilka opcji + do debugowania. Za każdym razem kiedy uruchamiasz postmaster'a, + upewnij się, że wysyłasz standardowe wyjście i error do pliku z + logami, np. w ten sposób:
cd /usr/local/pgsql ./bin/postmaster >server.log 2>&1 &-
To utworzy plik server.log w głównym katalogu PostgreSQL. - Ten plik zawiera pożyteczne informacje o problemach i błędach, które - wydarzyły się podczas pracy serwera. Postmaster posiada opcję - -d, która pozwala na raportowanie bardzo szczególowych - informacji. Do opcji -d podajemy liczbę, która okre¶la - szczegółowo¶ć wysyłanych informacji. Musisz mieć ¶wiadomo¶ć, że - wysoki poziom logowania będzie powodował tworzenie bardzo duzych - plików z logami.
- -Je¶li postmaster nie został uruchomiony, możesz uruchomić - postgres'owy backend z linii poleceń, i uruchomić Twoje - polecenie SQL bezpo¶rednio na nim. - Taki sposób jest polecany jedynie w przypadku debugowania. - Zwróć uwagę, że w tym wypadku zapytanie kończy znak nowej linii a nie - ¶rednik. Je¶li skompilowałe¶ z opcjami debugowania mozesz użyć - debuggera aby sprawdzić co się dzieje. Poniewż backend nie został - uruchomiony przez postmaster'a, nie działa w identycznym - ¶rodowisku, co oznacza że powtórzenie warunków w jakich wyst±piły - problemy moze być problemem.
- -Je¶li postmaster działa, uruchom psql w jednym z - okien, następnie znajdĽ PID procesu postgres - używanego przez psql. Użyj debuggera aby do - PID'u postgres'a. Możesz ustawiać pułapki - (breakpoints) w debuggerze i wykonywać zapytania z psql. - Je¶li debugujesz uruchamianie postgres'a, możesz ustawić zmienn± - PGOPTIONS="-W n", następnie uruchomić psql. - Opcja ta pozwoli spowolnić uruchomienie na - n sekund aby¶ mógł się poł±czyć z procesem za pomoc± - debugera, ustawić jakiekolwiek pułapki i kontynuować proces +
To utworzy plik server.log w głównym katalogu PostgreSQL. + Ten plik zawiera pożyteczne informacje o problemach i błędach, które + wydarzyły się podczas pracy serwera. Postmaster posiada opcję + -d, która pozwala na raportowanie bardzo szczególowych + informacji. Do opcji -d podajemy liczbę, która określa + szczegółowość wysyłanych informacji. Musisz mieć świadomość, że + wysoki poziom logowania będzie powodował tworzenie bardzo duzych + plików z logami.
+ +Jeśli postmaster nie został uruchomiony, możesz uruchomić + postgres'owy backend z linii poleceń, i uruchomić Twoje + polecenie SQL bezpośrednio na nim. + Taki sposób jest polecany jedynie w przypadku debugowania. + Zwróć uwagę, że w tym wypadku zapytanie kończy znak nowej linii a nie + średnik. Jeśli skompilowałeś z opcjami debugowania mozesz użyć + debuggera aby sprawdzić co się dzieje. Poniewż backend nie został + uruchomiony przez postmaster'a, nie działa w identycznym + środowisku, co oznacza że powtórzenie warunków w jakich wystąpiły + problemy moze być problemem.
+ +Jeśli postmaster działa, uruchom psql w jednym z + okien, następnie znajdź PID procesu postgres + używanego przez psql. Użyj debuggera aby do + PID'u postgres'a. Możesz ustawiać pułapki + (breakpoints) w debuggerze i wykonywać zapytania z psql. + Jeśli debugujesz uruchamianie postgres'a, możesz ustawić zmienną + PGOPTIONS="-W n", następnie uruchomić psql. + Opcja ta pozwoli spowolnić uruchomienie na + n sekund abyś mógł się połączyć z procesem za pomocą + debugera, ustawić jakiekolwiek pułapki i kontynuować proces uruchamiania.
-postgres może być uruchamiany z opcjami -s, -A i - -t, które mog± być bardzo przydatne przy debuggowaniu i ocenie - wydajno¶ci.
+postgres może być uruchamiany z opcjami -s, -A i + -t, które mogą być bardzo przydatne przy debuggowaniu i ocenie + wydajności.
-Możesz także skompilować z profilingiem aby zobaczyć jakie funkcje - ile czasu wykonuj± się. Pliki profilowane dla backendu zostan± +
MoĹĽesz takĹĽe skompilować z profilingiem aby zobaczyć jakie funkcje + ile czasu wykonujÄ… siÄ™. Pliki profilowane dla backendu zostanÄ… umieszczone w katalogu - pgsql/data/base/dbname. Pliki profilu klienta zostan± - umieszczone w bież±cym katalogu klienta. Linux wymaga aby kompilować - z opcj± -DLINUX_PROFILE aby profilowanie odbywało się + pgsql/data/base/dbname. Pliki profilu klienta zostanÄ… + umieszczone w bieĹĽÄ…cym katalogu klienta. Linux wymaga aby kompilować + z opcjÄ… -DLINUX_PROFILE aby profilowanie odbywaĹ‚o siÄ™ poprawnie.
-Musisz zwiększyć limit ilo¶ci jednoczesnych procesów bacekendu +
Musisz zwiększyć limit ilości jednoczesnych procesów bacekendu dla procesu postmaster'a.
-Domy¶lny limit to 32 procesy. Możesz go zwiększyć przez restart - postmaster z odpowiedni± warto¶ci± ustawian± opcję -N w +
Domyślny limit to 32 procesy. Możesz go zwiększyć przez restart + postmaster z odpowiednią wartością ustawianą opcję -N w pliku postgresql.conf.
-WeĽ pod uwagę, że je¶li zwiększysz warto¶ć podan± w opcji - -N na więcej niż 32 musisz także zwiększyć warto¶ć w opcji - -B ponad jej domy¶ln± warto¶ć 64; warto¶ć -B musi być - co najmniej dwa razy większa od warto¶ci podanej w opcji - -N, a prawdopodobnie powinna być w rzeczywisto¶ci jeszcze - większa dla optymalnej wydajno¶ci. - Dla dużej liczby procesów backendu na pewno zauważysz, że trzeba - zwiększyć różne parametry j±dra Unixa. Rzeczy, które powniene¶ - sprawdzić to maksymalna liczba bloków pamięci dzielonej, - SHMMAX; maksymalna liczba semaforów, SEMMNS +
WeĹş pod uwagÄ™, ĹĽe jeĹ›li zwiÄ™kszysz wartość podanÄ… w opcji + -N na wiÄ™cej niĹĽ 32 musisz takĹĽe zwiÄ™kszyć wartość w opcji + -B ponad jej domyĹ›lnÄ… wartość 64; wartość -B musi być + co najmniej dwa razy wiÄ™ksza od wartoĹ›ci podanej w opcji + -N, a prawdopodobnie powinna być w rzeczywistoĹ›ci jeszcze + wiÄ™ksza dla optymalnej wydajnoĹ›ci. + Dla duĹĽej liczby procesĂłw backendu na pewno zauwaĹĽysz, ĹĽe trzeba + zwiÄ™kszyć różne parametry jÄ…dra Unixa. Rzeczy, ktĂłre pownieneĹ› + sprawdzić to maksymalna liczba blokĂłw pamiÄ™ci dzielonej, + SHMMAX; maksymalna liczba semaforĂłw, SEMMNS oraz SEMMNI; - maksymalna liczba procesów, NPROC; maksymalna liczba - procesów na jednego użytkownika, MAXUPRC; i maksymalna - liczba otwartych plików, NFILE oraz - NINODE. Powód dla którego PostgreSQL ma limit na - maksymaln± liczbę procesów backendu to obawa o wyczerpanie zasobów + maksymalna liczba procesĂłw, NPROC; maksymalna liczba + procesĂłw na jednego uĹĽytkownika, MAXUPRC; i maksymalna + liczba otwartych plikĂłw, NFILE oraz + NINODE. PowĂłd dla ktĂłrego PostgreSQL ma limit na + maksymalnÄ… liczbÄ™ procesĂłw backendu to obawa o wyczerpanie zasobĂłw systemu.
-Katalog ten zawiera tymczasowe pliki utworzone przez executor. Dla - przykładu, je¶li jaka¶ operacja sortowania jest wymagana do wykonania - ORDER BY, a samo sortowanie wymaga więcej miejsca niż + przykĹ‚adu, jeĹ›li jakaĹ› operacja sortowania jest wymagana do wykonania + ORDER BY, a samo sortowanie wymaga wiÄ™cej miejsca niĹĽ parametr backendu - -S ustawił do wykorzystania, wtedy tymczasowe pliki s± używane + -S ustawiĹ‚ do wykorzystania, wtedy tymczasowe pliki sÄ… uĹĽywane do przechowywania tych danych.
-Pliki tymczasowe powinny być usunięte automatycznie, ale mogło się - to nie stać je¶li proces backendu w międzyczasie nie zakończył się - poprawnie podczas operacji sortowania. Je¶li w danym momencie nie - działaj± żadne procesy backendów mozesz spokojnie usun±ć pliki +
Pliki tymczasowe powinny być usunięte automatycznie, ale mogło się + to nie stać jeśli proces backendu w międzyczasie nie zakończył się + poprawnie podczas operacji sortowania. Jeśli w danym momencie nie + działają żadne procesy backendów mozesz spokojnie usunąć pliki pg_tempNNN.NN.
- Twórcy PostgreSQL dokonuj± jedynie małych zmian pomiędzy małymi + TwĂłrcy PostgreSQL dokonujÄ… jedynie maĹ‚ych zmian pomiÄ™dzy maĹ‚ymi upgradami wersji, np z 7.2 do 7.2.1, wtedy upgrade nie wymaga - korzystania z dump i restore. Przy większych zmianach, np. z wersji - 7.2 do 7.3, często zmianymaj± wpływ na format przechowywanych danych. - Zmiany te s± na tyle skomplikowane, że nie utrzymujemy zgodo¶ci z + korzystania z dump i restore. Przy wiÄ™kszych zmianach, np. z wersji + 7.2 do 7.3, czÄ™sto zmianymajÄ… wpĹ‚yw na format przechowywanych danych. + Zmiany te sÄ… na tyle skomplikowane, ĹĽe nie utrzymujemy zgodoĹ›ci z poprzednimi wersjami PostgreSQL. dump pozwala na wydostanie danych w - takiej postaci, w której łatwe jest ich zaimportowanie do nowszych - wersji bez kłopotu. + takiej postaci, w ktĂłrej Ĺ‚atwe jest ich zaimportowanie do nowszych + wersji bez kĹ‚opotu.
- W wydaniach gdzie zmiany nie dotycz± formatu danych na dysku, można - wykorzystać skryptu pg_upgrade, do upgradu bez użycia dump/restore. - Dokumentacja do danego wydania zawiera informację czy możliwe jest - użycie pg_upgrade. + W wydaniach gdzie zmiany nie dotyczÄ… formatu danych na dysku, moĹĽna + wykorzystać skryptu pg_upgrade, do upgradu bez uĹĽycia dump/restore. + Dokumentacja do danego wydania zawiera informacjÄ™ czy moĹĽliwe jest + uĹĽycie pg_upgrade.
Zobacz w manualu opis polecenia DECLARE.
-Zobacz w manualu opis polecenia FETCH lub użyj +
Zobacz w manualu opis polecenia FETCH lub uĹĽyj polecenia SELECT ... LIMIT....
-Nawet je¶li chesz pobrać kilka pierwszych rzędów z wyniku - zapytania, całe zapytanie musi zostać wykonane. Byc może powiniene¶ - skorzystać z polecenia ORDER BY. - Je¶li istnieje indeks który odpowiada polom okre¶lonym przez - ORDER BY, PostgreSQL może wykorzystać jedynie kilka - pierwszych rzędów, być może będzie konieczno¶ć wykonania zapytania do - momentu aż zostan± znalezione poż±dane wyniki.
+Nawet jeśli chesz pobrać kilka pierwszych rzędów z wyniku + zapytania, całe zapytanie musi zostać wykonane. Byc może powinieneś + skorzystać z polecenia ORDER BY. + Jeśli istnieje indeks który odpowiada polom określonym przez + ORDER BY, PostgreSQL może wykorzystać jedynie kilka + pierwszych rzędów, być może będzie konieczność wykonania zapytania do + momentu aż zostaną znalezione pożądane wyniki.
- Aby otrzymać losowy rz±d, użyj:
+ Aby otrzymać losowy rząd, użyj:SELECT col FROM tab @@ -890,33 +890,33 @@ LIMIT 1;-
Możesz sprawdzić zawarto¶ć Ľródeł psql, a konkretnie plik +
MoĹĽesz sprawdzić zawartość ĹşrĂłdeĹ‚ psql, a konkretnie plik pgsql/src/bin/psql/describe.c. Zawiera on polecenia - SQL które generuja wyniki komend z backslashem. - Możesz także uruchomić psql z opcj± - -E wtedy po wykonaniu polecenia z backslashem wy¶wietlane - będzie zapytanie, które w rzeczywisto¶ci jest wykonywane.
+ SQL ktĂłre generuja wyniki komend z backslashem. + MoĹĽesz takĹĽe uruchomić psql z opcjÄ… + -E wtedy po wykonaniu polecenia z backslashem wyĹ›wietlane + bÄ™dzie zapytanie, ktĂłre w rzeczywistoĹ›ci jest wykonywane. -DROP COLUMNT zostało dodane w wersji 7.3 przy poleceniu ALTER - TABLE DROP COLUMN. We wcze¶ńiejszych wersjach możesz zrobić tak: +
DROP COLUMNT zostało dodane w wersji 7.3 przy poleceniu ALTER + TABLE DROP COLUMN. We wcześńiejszych wersjach możesz zrobić tak:
BEGIN; LOCAL TABLE old_table; - SELECT ... -- wybierz wszystkie kolumny poza t± jedn± której chcesz się pozbyć + SELECT ... -- wybierz wszystkie kolumny poza tÄ… jednÄ… ktĂłrej chcesz siÄ™ pozbyć INTO TABLE new_table FROM old_table; DROP TABLE old_table; ALTER TABLE new_table RENAME TO old_table;
- Aby zmienić typ danych kolumny możesz zrobić tak: + Aby zmienić typ danych kolumny moĹĽesz zrobić tak:
BEGIN; @@ -926,117 +926,117 @@ COMMIT;-
Oto wszystkie ograniczenia:
- Maksymalny rozmiar dla bazdy danych? nieograniczony ( istniej± - bazy danych o wielko¶ci 32 TB databases ) + Maksymalny rozmiar dla bazdy danych? nieograniczony ( istniejÄ… + bazy danych o wielkoĹ›ci 32 TB databases ) Maksymalny rozmiar dla tabeli? 32 TB - Maksymalny rozmiar dla rzędu? 1.6 TB + Maksymalny rozmiar dla rzÄ™du? 1.6 TB Maksymalny rozmiar pola? 1 GB - Maksymalna liczba rzędów w tabeli? nieograniczona - Maksymalna liczba kolumn w tabeli? 250-1600 w zależono¶ci od typów kolumn - Makasymalna liczba indeksów na tabeli? nieograniczona + Maksymalna liczba rzÄ™dĂłw w tabeli? nieograniczona + Maksymalna liczba kolumn w tabeli? 250-1600 w zaleĹĽonoĹ›ci od typĂłw kolumn + Makasymalna liczba indeksĂłw na tabeli? nieograniczona- Oczywi¶cie "nieograniczony" nie jest prawd± tak do końca, istniej± - ograniczenia wynikaj±ce z dostępnego miejsca na dysku, pamięci/swapa. - Kiedy wielko¶ci te będ± bardzo duże może odbić się to na wydajno¶ci. + OczywiĹ›cie "nieograniczony" nie jest prawdÄ… tak do koĹ„ca, istniejÄ… + ograniczenia wynikajÄ…ce z dostÄ™pnego miejsca na dysku, pamiÄ™ci/swapa. + Kiedy wielkoĹ›ci te bÄ™dÄ… bardzo duĹĽe moĹĽe odbić siÄ™ to na wydajnoĹ›ci.
Maksymalny rozmiar tabeli, czyli 32 TB nie wymaga od systemu - operacyjnego wsparcia dla dużych plików. Duże tabele s± przechowywane - jako pliki o rozmiarze 1 GB, więc ograniczenia co do wielko¶ci plików - narzucone przez system plików nie s± istotne.
+ operacyjnego wsparcia dla duĹĽych plikĂłw. DuĹĽe tabele sÄ… przechowywane + jako pliki o rozmiarze 1 GB, wiÄ™c ograniczenia co do wielkoĹ›ci plikĂłw + narzucone przez system plikĂłw nie sÄ… istotne. -Masymalny rozmiar tabeli i maksymalna liczba kolumn może być - zwiększona je¶li zwiększymy domy¶lny rozmiar bloku (block size) do +
Masymalny rozmiar tabeli i maksymalna liczba kolumn może być + zwiększona jeśli zwiększymy domyślny rozmiar bloku (block size) do 32k.
-Baza danych PostgreSQL może potrzebować do pięciu razy więcej - miejsca na przechowywanie danych z plików tekstowych niż ich - objęto¶ć.
+Baza danych PostgreSQL może potrzebować do pięciu razy więcej + miejsca na przechowywanie danych z plików tekstowych niż ich + objętość.
-Jako przykład możemy rozważyć plik składaj±cy się z 100,000 linii - zbudowanych z liczby całkowitej oraz opisu tekstowego w każdej. - Załóżmy, że ¶rednio każdy łańcuch tekstu w linii zajmuje 20 - bajtów. Cały plik powinien zajmować ok. 2.8 MB. Rozmiar pliku bazy danych w - PostgreSQL zawieraj±cego te dane mozna oszacować na około 6.4MB:
+Jako przykład możemy rozważyć plik składający się z 100,000 linii + zbudowanych z liczby całkowitej oraz opisu tekstowego w każdej. + Załóżmy, że średnio każdy łańcuch tekstu w linii zajmuje 20 + bajtów. Cały plik powinien zajmować ok. 2.8 MB. Rozmiar pliku bazy danych w + PostgreSQL zawierającego te dane mozna oszacować na około 6.4MB:
- 36 bajtów: nagłówek każdego rzędu w przybliżeniu) + 36 bajtĂłw: nagłówek kaĹĽdego rzÄ™du w przybliĹĽeniu) 24 bajty: jedno pole int i jedno pole typu text - + 4 bajty: wkaĽnik na stronie do krotki + + 4 bajty: wkaĹşnik na stronie do krotki -------------------------------------------------- - 64 bajty w jednym rzędzie + 64 bajty w jednym rzÄ™dzie - Strona danych w PostgreSQL zajmuje 8192 bajtów (8 KB), więc: + Strona danych w PostgreSQL zajmuje 8192 bajtĂłw (8 KB), wiÄ™c: - 8192 bajtów na stronę - --------------------- = 128 rzędów na jedn± strone w bazie (zaokr±glone w dół) - 64 bajtów na rz±d + 8192 bajtĂłw na stronÄ™ + --------------------- = 128 rzÄ™dĂłw na jednÄ… strone w bazie (zaokrÄ…glone w dół) + 64 bajtĂłw na rzÄ…d - 100000 rzędów danych - ----------------------- = 782 stron w bazie danych (zaokr±glone w górę) - 128 rzędów na stronę + 100000 rzÄ™dĂłw danych + ----------------------- = 782 stron w bazie danych (zaokrÄ…glone w gĂłrÄ™) + 128 rzÄ™dĂłw na stronÄ™ -782 stron w bazie * 8192 bajtów na stronę = 6,406,144 bajtów (6.4 MB) +782 stron w bazie * 8192 bajtĂłw na stronÄ™ = 6,406,144 bajtĂłw (6.4 MB)-
Indeksy nie powoduj± dużego narzutu na zajmowane miejsce, - ale zawieraj± pewne dane, - więc w pewnych przypadkach moga być całkiem duże.
-NULLe s± przechowywane jako mapy bitowe, więc używaj± bardzo mało +
Indeksy nie powodują dużego narzutu na zajmowane miejsce, + ale zawierają pewne dane, + więc w pewnych przypadkach moga być całkiem duże.
+NULLe są przechowywane jako mapy bitowe, więc używają bardzo mało miejsca.
-psql ma całkiem duż± ilo¶ć poleceń z backslashem aby - wydobyć takie informacje. WprowadĽ \? aby zobaczyć ich spis. Istniej± - także tablice systemowe rozpoczynaj±ce się od pg_, zawieraj±ce - interesuj±ce Ciebie informacje. Wykonanie psql -l pokaże spis +
psql ma całkiem dużą ilość poleceń z backslashem aby + wydobyć takie informacje. Wprowadź \? aby zobaczyć ich spis. Istnieją + także tablice systemowe rozpoczynające się od pg_, zawierające + interesujące Ciebie informacje. Wykonanie psql -l pokaże spis wszystkich baz danych.
-Obejrzyj także plik pgsql/src/tutorial/syscat.source. - Zawiera on wiele z zapytań typu SELECT, które s± - potrzebne aby wydobyć informacje z tablic systemowych.
+Obejrzyj także plik pgsql/src/tutorial/syscat.source. + Zawiera on wiele z zapytań typu SELECT, które są + potrzebne aby wydobyć informacje z tablic systemowych.
-Żeby zdecydować czy indeks powinien byc używany, PostgreSQL musi - mieć statystyki dotycz±ce danej tabeli. S± one gromadzone przez - użycie polecenia VACUUM ANALYZE, lub poprostu - ANALYZE. używaj±c statystyk, optymalizator wie ile - rzędów jest w tabeli i może lepiej okre¶lić czy indeksy powinny być - użyte. Statystyki mog± być także pomocne w okre¶leniu najlepszej - kolejno¶ci wykonania zł±czenia (join) i jego sposobu. Gromadzenie - statystyk powinno się odbywać w okre¶lonych interwałach czasu - ponieważ dane w tabelach zmieniaj± się.
- -Indeksy nie s± zazwyczaj używane przez ORDER BY lub - przy wykonywaniu zł±czeń (join). Sekwencyjne przeszukiwanie po którym - następuje sortowanie jest zazwyczaj szybsze nię wyszukiwanie za - pomoc± indeksu na dużej tabeli.
-Jakkolwiek LIMIT w poł±czeniu z ORDER BY - często będzie wykorzystywał indeksy ponieważ jedynie mała czę¶ć z - tabeli jest zwracana. W rzeczywisto¶ci, chociaż MAX() i MIN() nie - używaj± indeksów, możliwe jest aby zwrócić te warto¶ci używaj±c - indeksów poprzez użycie ORDER BY i LIMIT. +
Żeby zdecydować czy indeks powinien byc używany, PostgreSQL musi + mieć statystyki dotyczące danej tabeli. Są one gromadzone przez + użycie polecenia VACUUM ANALYZE, lub poprostu + ANALYZE. używając statystyk, optymalizator wie ile + rzędów jest w tabeli i może lepiej określić czy indeksy powinny być + użyte. Statystyki mogą być także pomocne w określeniu najlepszej + kolejności wykonania złączenia (join) i jego sposobu. Gromadzenie + statystyk powinno się odbywać w określonych interwałach czasu + ponieważ dane w tabelach zmieniają się.
+ +Indeksy nie są zazwyczaj używane przez ORDER BY lub + przy wykonywaniu złączeń (join). Sekwencyjne przeszukiwanie po którym + następuje sortowanie jest zazwyczaj szybsze nię wyszukiwanie za + pomocą indeksu na dużej tabeli.
+Jakkolwiek LIMIT w połączeniu z ORDER BY + często będzie wykorzystywał indeksy ponieważ jedynie mała część z + tabeli jest zwracana. W rzeczywistości, chociaż MAX() i MIN() nie + używają indeksów, możliwe jest aby zwrócić te wartości używając + indeksów poprzez użycie ORDER BY i LIMIT.
SELECT col @@ -1045,147 +1045,147 @@ LIMIT 1;
- Je¶li uważasz, że optimizer myli się wybieraj±c sequential scan, użyj - SET enable_seqscan TO 'off' i uruchom testy aby sprawdzić czy wtym - wypadku zapytanie będzie szybciej wykonywane.
+ JeĹ›li uwaĹĽasz, ĹĽe optimizer myli siÄ™ wybierajÄ…c sequential scan, uĹĽyj + SET enable_seqscan TO 'off' i uruchom testy aby sprawdzić czy wtym + wypadku zapytanie bÄ™dzie szybciej wykonywane. -Kiedy używa się operatorów dopasuj±cych takich jak - LIKE lub ~, indeksy będ± używane jedynie w +
Kiedy używa się operatorów dopasujących takich jak + LIKE lub ~, indeksy będą używane jedynie w pewnych wypadkach:
Zobacz manual dla polecenia EXPLAIN.
Indeks R-tree jest używany do indeksowania danych przestrzennych. - Indeks hasuuj±cy nie nadaje się do wyszukiwania odległo¶ci. - Natomiast indeks typu B-tree może wyszukiwać odleglo¶ci jedynie w +
Indeks R-tree jest uĹĽywany do indeksowania danych przestrzennych. + Indeks hasuujÄ…cy nie nadaje siÄ™ do wyszukiwania odlegĹ‚oĹ›ci. + Natomiast indeks typu B-tree moĹĽe wyszukiwać odlegloĹ›ci jedynie w jednowymiarowych przestrzeniach. R-tree indeks radzi sobie z - przestrzeniami wielo-wymiarowymi. Dla przykładu, je¶li zostanie - założony indeks typu R-tree na polu typu point, system może - bardziej wydajnie odpowiadać na zapytania typu + przestrzeniami wielo-wymiarowymi. Dla przykĹ‚adu, jeĹ›li zostanie + zaĹ‚oĹĽony indeks typu R-tree na polu typu point, system moĹĽe + bardziej wydajnie odpowiadać na zapytania typu "select all points within a bounding rectangle."
-¬ródłowym dokumentem opisuj±cym oryginalnie projektowanie R-tree - indeksów jest:
+Źródłowym dokumentem opisującym oryginalnie projektowanie R-tree + indeksów jest:
Guttman, A. "R-trees: A Dynamic Index Structure for Spatial Searching." Proceedings of the 1984 ACM SIGMOD Int'l Conf on Mgmt of Data, 45-57.
-Ten dokument możesz znaleĽć także w pracy Stonebraker'a "Readings in +
Ten dokument możesz znaleźć także w pracy Stonebraker'a "Readings in Database Systems".
-Wbudowane indeksy R-trees radz± sobie w wielobokami i boxes. - Teoretycznie, indeksy R-tree mog± być rozszerzone o możliwo¶ci - indeksowania w więcej wymiarowych przestrzeniach. W praktyce, - rozbudowa indeksów R-tree wymaga trochę pracy, a w tej chwili nie - dysponujemy jak±kolwiek dokumentacj± jak to zrobić.
+Wbudowane indeksy R-trees radzą sobie w wielobokami i boxes. + Teoretycznie, indeksy R-tree mogą być rozszerzone o możliwości + indeksowania w więcej wymiarowych przestrzeniach. W praktyce, + rozbudowa indeksów R-tree wymaga trochę pracy, a w tej chwili nie + dysponujemy jakąkolwiek dokumentacją jak to zrobić.
Moduł GEQO ma za zadanie przyspieszenie - optymalizacji zapytań ł±cz±c wiele tabel za pomoc± algorytmów - genetycznych (Genetic Algorithm (GA)). Pozwala na używanie dużych - zapytań ł±cz±cych tabele (join queries) bez wykorzystywania - zasobożernego wyszukiwania.
+Moduł GEQO ma za zadanie przyspieszenie + optymalizacji zapytań łącząc wiele tabel za pomocą algorytmów + genetycznych (Genetic Algorithm (GA)). Pozwala na używanie dużych + zapytań łączących tabele (join queries) bez wykorzystywania + zasobożernego wyszukiwania.
-Operator ~ moze być wykorzystywany do wyszukiwania za - pomoc± wyrażeń regularnych, a - ~* do wyszukiwania case-insensitive z wyrażeniami +
Operator ~ moze być wykorzystywany do wyszukiwania za + pomocÄ… wyraĹĽeĹ„ regularnych, a + ~* do wyszukiwania case-insensitive z wyraĹĽeniami regularnymi. - Wariant case-insensitive dla LIKE został nazwany + Wariant case-insensitive dla LIKE zostaĹ‚ nazwany ILIKE.
-Porównania case-insensitive s± zazwyczaj wykonywane w następuj±cy - sposób:
+Porównania case-insensitive są zazwyczaj wykonywane w następujący + sposób:
SELECT * FROM tab WHERE lower(col) = 'abc'- W tym wypadku standardowe indeksy nie będ± używane. Możesz utworzyć + W tym wypadku standardowe indeksy nie bÄ™dÄ… uĹĽywane. MoĹĽesz utworzyć indeks funkcyjny, poprzez:
CREATE INDEX tabindex on tab (lower(col));-
Możesz to sprawdzić, testuj±c warto¶ć kolumny warunkiem +
Możesz to sprawdzić, testując wartość kolumny warunkiem IS NULL albo IS NOT NULL.
--Type Nazwa wewnętrzna Uwagi +Type Nazwa wewnÄ™trzna Uwagi -------------------------------------------------- -VARCHAR(n) varchar rozmiar okre¶la maksymaln± długo¶ć, nie ma tutaj wypełniania -CHAR(n) bpchar wypełniane pustymi znakami do podanej długo¶ci -TEXT text bez limitu na długo¶ć łańcucha -BYTEA bytea zmiennej długo¶ci tablica bajtów (null-byte safe) +VARCHAR(n) varchar rozmiar okreĹ›la maksymalnÄ… dĹ‚ugość, nie ma tutaj wypeĹ‚niania +CHAR(n) bpchar wypeĹ‚niane pustymi znakami do podanej dĹ‚ugoĹ›ci +TEXT text bez limitu na dĹ‚ugość Ĺ‚aĹ„cucha +BYTEA bytea zmiennej dĹ‚ugoĹ›ci tablica bajtĂłw (null-byte safe) "char" char 1 znak-
Je¶li będziesz przegl±dać katalogi systemowe lub komunikaty o - błędach często spotkasz się z podanymi powyżej nazwami - wewnętrznymi.
+Jeśli będziesz przeglądać katalogi systemowe lub komunikaty o + błędach często spotkasz się z podanymi powyżej nazwami + wewnętrznymi.
-Pierwsze cztery typy powyżej to tzw typy "varlena" (np. pierwsze - cztery bajty na dysku to długo¶ć, po których jest data). Dlatego - faktyczna długo¶c takiego łańcucha jest trochę większa niż - zadeklarowany rozmiar. Te typy także podlegaj± kompresji lub mog± być - przechowywane out-of-line jako TOAST, więc faktyczne - zużycie miejsca na dysku może być mniejsze niż oczekiwane.
+Pierwsze cztery typy powyżej to tzw typy "varlena" (np. pierwsze + cztery bajty na dysku to długość, po których jest data). Dlatego + faktyczna długośc takiego łańcucha jest trochę większa niż + zadeklarowany rozmiar. Te typy także podlegają kompresji lub mogą być + przechowywane out-of-line jako TOAST, więc faktyczne + zużycie miejsca na dysku może być mniejsze niż oczekiwane.
VARCHAR(n) jest - najodpowiedniejszy do przechowywania łańcuchów o różnej długo¶ci - ale okre¶la on maksymaln± jego długo¶ć. + najodpowiedniejszy do przechowywania Ĺ‚aĹ„cuchĂłw o różnej dĹ‚ugoĹ›ci + ale okreĹ›la on maksymalnÄ… jego dĹ‚ugość. - TEXT jest najlepszy dla łańcuchów o dowolnej długo¶ci, - nie przekraczaj±cej 1GB.
+ TEXT jest najlepszy dla Ĺ‚aĹ„cuchĂłw o dowolnej dĹ‚ugoĹ›ci, + nie przekraczajÄ…cej 1GB.CHAR(n) jast najlepszym typem do przechowywania - łańcuchów o tej samej długo¶ci. CHAR(n) wypełnia dane do żadanej - długo¶ci, podczas gdy VARCHAR(n) przechowuje jedynie dane + Ĺ‚aĹ„cuchĂłw o tej samej dĹ‚ugoĹ›ci. CHAR(n) wypeĹ‚nia dane do ĹĽadanej + dĹ‚ugoĹ›ci, podczas gdy VARCHAR(n) przechowuje jedynie dane dostarczone. - BYTEA służy do przechowywania danych binarnych, - w szczególno¶ci dla danych zawieraj±cych NULL bajty. - Wszystkie typy opisane tutaj maja podobne charakterystyki je¶li - chodzi o wydajno¶ć.
+ BYTEA sĹ‚uĹĽy do przechowywania danych binarnych, + w szczegĂłlnoĹ›ci dla danych zawierajÄ…cych NULL bajty. + Wszystkie typy opisane tutaj maja podobne charakterystyki jeĹ›li + chodzi o wydajność. -PostgreSQL ma zaimplementowany typ SERIAL. - Automatycznie tworzy sekwencję i indeks na tej kolumnie. Dla + Automatycznie tworzy sekwencjÄ™ i indeks na tej kolumnie. Dla przykladu:
CREATE TABLE person ( @@ -1193,7 +1193,7 @@ BYTEA bytea zmiennej d name TEXT );- zostanie automatycznie prztłumaczone na: + zostanie automatycznie prztĹ‚umaczone na:
CREATE SEQUENCE person_id_seq; CREATE TABLE person ( @@ -1202,95 +1202,95 @@ BYTEA bytea zmiennej d ); CREATE UNIQUE INDEX person_id_key ON person ( id );- Więcej informacji o sekwencjach znajdziesz w manualu o - create_sequence. Możesz także użyć pola OID jako - unikalnej warto¶ci dla każdego rzędu danych. Je¶li będziesz - potrzebował z backupować dane robi±c dump bazy i odtworzyć j±, musisz - użyc pg_dump z opcj± -o lub polecenia COPY - WITH OIDS aby zachować OIDy. + WiÄ™cej informacji o sekwencjach znajdziesz w manualu o + create_sequence. MoĹĽesz takĹĽe uĹĽyć pola OID jako + unikalnej wartoĹ›ci dla kaĹĽdego rzÄ™du danych. JeĹ›li bÄ™dziesz + potrzebowaĹ‚ z backupować dane robiÄ…c dump bazy i odtworzyć jÄ…, musisz + uĹĽyc pg_dump z opcjÄ… -o lub polecenia COPY + WITH OIDS aby zachować OIDy. -
Jednym z podej¶ć jest pobranie kolejnej warto¶ci typu - SERIAL z sekwencji za pomoc± funkcji nextval() - zanim zostanie wstawiona, a póĽniej należy jej użyć. Używaj±c - przykładu z tabeli z punktu 4.15.1, może to - wygl±dać w Perlu na przykład w ten sposób:
+Jednym z podejść jest pobranie kolejnej wartości typu + SERIAL z sekwencji za pomocą funkcji nextval() + zanim zostanie wstawiona, a później należy jej użyć. Używając + przykładu z tabeli z punktu 4.15.1, może to + wyglądać w Perlu na przykład w ten sposób:
new_id = output of "SELECT nextval('person_id_seq')" INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal');- Będziesz miał wtedy t± warto¶ć przechowan± w zmiennej -
new_id
do użytku w innych zapytaniach (np. jako klucz
- obcy do tabeli person
). Warto zwrócić uwagę, że nazwa
+ Będziesz miał wtedy tą wartość przechowaną w zmiennej
+ new_id
do uĹĽytku w innych zapytaniach (np. jako klucz
+ obcy do tabeli person
). Warto zwrócić uwagę, że nazwa
automatycznie utworzonej sekwencji
- SEQUENCE będzie następuj±ca:
+ SEQUENCE będzie następująca:
<tabela>_<kolumnatypuserial>_seq,
gdzie
- tabela i kolumnatypuserial s± nazwami Twojej tabeli i
+ tabela i kolumnatypuserial sÄ… nazwami Twojej tabeli i
Twojej kolumny typu SERIAL.
- Inne rozwi±zanie to użycie funkcji currval() na pola typu - SERIAL po dodaniu nowej warto¶ci do rzędu zawieraj±cego - kolumnę typu SERIAL z wstawion± domy¶lnie warto¶ci±, +
Inne rozwiązanie to użycie funkcji currval() na pola typu + SERIAL po dodaniu nowej wartości do rzędu zawierającego + kolumnę typu SERIAL z wstawioną domyślnie wartością, np.
INSERT INTO person (name) VALUES ('Blaise Pascal'); new_id = output of "SELECT currval('person_id_seq')";- Ostatecznie możesz użyć OID - zwracanej po wykonaniu INSERT, chociaż to jest najmniej - przeno¶ne rozwi±zanie. - W Perlu, wykorzystuj±c bibliotekę DBI z modułem Edmunda Mergla - DBD::Pg, oid jest dostępny poprzez $sth->{pg_oid_status} po + Ostatecznie moĹĽesz uĹĽyć OID + zwracanej po wykonaniu INSERT, chociaĹĽ to jest najmniej + przenoĹ›ne rozwiÄ…zanie. + W Perlu, wykorzystujÄ…c bibliotekÄ™ DBI z moduĹ‚em Edmunda Mergla + DBD::Pg, oid jest dostÄ™pny poprzez $sth->{pg_oid_status} po wykonaniu $sth->execute(). -
Nie. currval() zwraca bież±c± warto¶ć przypisan± przez Twój - backend, a nie przez wszystkich użytkowników.
+Nie. currval() zwraca bieżącą wartość przypisaną przez Twój + backend, a nie przez wszystkich użytkowników.
-Aby poprawić zbieżno¶ć (concurrency), warto¶ci sekwencji s± - podawane działaj±cym transakcjom kiedy tego potrzebuj± i nie s± - blokowane dopóki transakcja się nie zakończy. To spowoduje przerwy w +
Aby poprawić zbieżność (concurrency), wartości sekwencji są + podawane działającym transakcjom kiedy tego potrzebują i nie są + blokowane dopóki transakcja się nie zakończy. To spowoduje przerwy w numerowaniu z przerwanych transakcji.
OID s± PostgreSQL'owym rozwi±zaniem problemu - unikalnych numerów rzędów. Każdy rz±d tworzony przez PostgreSQL +
OID sÄ… PostgreSQL'owym rozwiÄ…zaniem problemu + unikalnych numerĂłw rzÄ™dĂłw. KaĹĽdy rzÄ…d tworzony przez PostgreSQL otrzymuje unikalny OID. Wszystkie OIDy generowane podczas procesu uruchamianego przez skrypt - initdb maj± mniejsz± warto¶ć niż 16384 (na podstawie pliku + initdb majÄ… mniejszÄ… wartość niĹĽ 16384 (na podstawie pliku backend/access/transam.h). Wszystkie - OIDy tworzone przez użytkownika sa równe lub większe - podanej wcze¶niej warto¶ci. Domy¶lnie - wszystkie OIDy s± unikalne nie tylko w pojedyńczej - tabeli czy bazie danych ale w całej instalacji PostgreSQL.
- -PostgreSQL używa OIDów w swoim wewnętrznym systemie - tabel, aby można było je ł±czyć. - Te OIDy mog± byc używane aby identyfikowac rzędy w - tabelach i wykorzystywać je w zł±czeniach tych tabel. Zaleca się aby¶ - używał typu OID aby przechowywać warto¶ci - OID. Możesz utworzyć indeks na polu - OID aby dostęp do niego był szybszy.
- -OID s± przypisane do wszystkich rzędów z jednego - głównego miejsca i używane sa przez wszystkie bazy danych. Je¶li - chciałby¶ zmienić OID na co¶ innego, lub je¶li - chciałby¶ zrobić kopię tabeli, z orginalnymi OIDami - nie ma żadnego przeciwwskazania aby¶ to zrobił:
+ OIDy tworzone przez użytkownika sa równe lub większe + podanej wcześniej wartości. Domyślnie + wszystkie OIDy są unikalne nie tylko w pojedyńczej + tabeli czy bazie danych ale w całej instalacji PostgreSQL. + +PostgreSQL używa OIDów w swoim wewnętrznym systemie + tabel, aby można było je łączyć. + Te OIDy mogą byc używane aby identyfikowac rzędy w + tabelach i wykorzystywać je w złączeniach tych tabel. Zaleca się abyś + używał typu OID aby przechowywać wartości + OID. Możesz utworzyć indeks na polu + OID aby dostęp do niego był szybszy.
+ +OID są przypisane do wszystkich rzędów z jednego + głównego miejsca i używane sa przez wszystkie bazy danych. Jeśli + chciałbyś zmienić OID na coś innego, lub jeśli + chciałbyś zrobić kopię tabeli, z orginalnymi OIDami + nie ma żadnego przeciwwskazania abyś to zrobił:
CREATE TABLE new_table(old_oid oid, mycol int); @@ -1304,21 +1304,21 @@ BYTEA bytea zmiennej d -->-
OIDy s± przechowywane jako cztero-bajtowe liczby - całkowite i skończ± się po osi±gnięciu czterech miliardów. Nikt jak - dot±d nie zgłosił aby co¶ takiego się stalo, ale mamy zamiar pozbyć - się tego ograniczenia zanim kto¶ to zgłosi.
+OIDy są przechowywane jako cztero-bajtowe liczby + całkowite i skończą się po osiągnięciu czterech miliardów. Nikt jak + dotąd nie zgłosił aby coś takiego się stalo, ale mamy zamiar pozbyć + się tego ograniczenia zanim ktoś to zgłosi.
-TID s± używane aby zidentyfikować konkretne rzędy z - blokami i warto¶ci± ofsetów. TIDy zmieniaj± się wraz - ze zmianami rzędów. Sa używane przez indeksy, aby wskazywać do - fizycznych rzędów.
+TID są używane aby zidentyfikować konkretne rzędy z + blokami i wartością ofsetów. TIDy zmieniają się wraz + ze zmianami rzędów. Sa używane przez indeksy, aby wskazywać do + fizycznych rzędów.
-W czę¶ci kodu Ľródłowego i starszej dokumentacji używamy terminów, - które maj± bardziej ogólne znaczenie. Oto niektóre z nich:
+W części kodu źródłowego i starszej dokumentacji używamy terminów, + które mają bardziej ogólne znaczenie. Oto niektóre z nich:
Listę terminów zwi±zanych z bazami danych możesz znaleĽć pod tym +
Listę terminów związanych z bazami danych możesz znaleźć pod tym adresem:http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html.
-- Prawdopodobnie wyczerpała Ci się pamięć wirtualna (virtual memory) - w systemie lub Twój kernel ma zbyt nisko - ustawione limity dla pewnych zasobów. Spróbuj wykonać następuj±ce + Prawdopodobnie wyczerpaĹ‚a Ci siÄ™ pamięć wirtualna (virtual memory) + w systemie lub TwĂłj kernel ma zbyt nisko + ustawione limity dla pewnych zasobĂłw. SprĂłbuj wykonać nastÄ™pujÄ…ce polecenia zanim uruchomisz postmaster'a:
ulimit -d 262144 limit datasize 256m- W zależno¶ci od shell'a jakiego używasz jedno z tych poleceń może nie - zadziałać, ale to ustawienie pozwoli ustawić segment danych dla - procesu znacznie większy i być może pozwoli wykonać zapytanie. - To polecenie zadziała dla bież±cego procesu oraz wszytkich podprocesów - utworzonych po wykonaniu polecenia. Je¶li ten problem występuje z - klientem SQL, ponieważ backend zwraca zbyt dużo danych, - spróbuj wykonać to polecenie przed uruchomieniem klienta. + W zaleĹĽnoĹ›ci od shell'a jakiego uĹĽywasz jedno z tych poleceĹ„ moĹĽe nie + zadziaĹ‚ać, ale to ustawienie pozwoli ustawić segment danych dla + procesu znacznie wiÄ™kszy i być moĹĽe pozwoli wykonać zapytanie. + To polecenie zadziaĹ‚a dla bieĹĽÄ…cego procesu oraz wszytkich podprocesĂłw + utworzonych po wykonaniu polecenia. JeĹ›li ten problem wystÄ™puje z + klientem SQL, poniewaĹĽ backend zwraca zbyt duĹĽo danych, + sprĂłbuj wykonać to polecenie przed uruchomieniem klienta. -
W psql, wpisz select version();
Musisz użyć BEGIN WORK
i COMMIT
- przed i po użyciu uchwytu do dużego obiektu, tzn. musisz nimi otoczyć
+
Musisz użyć BEGIN WORK
i COMMIT
+ przed i po użyciu uchwytu do dużego obiektu, tzn. musisz nimi otoczyć
funkcje lo_open
... lo_close.
Obecnie PostgreSQL używj±c "rule" zamyka uchwyt do dużego obiektu - przy każdym wywołaniu "commit". Więc pierwsze próba zrobienia +
Obecnie PostgreSQL uĹĽywjÄ…c "rule" zamyka uchwyt do duĹĽego obiektu + przy kaĹĽdym wywoĹ‚aniu "commit". WiÄ™c pierwsze prĂłba zrobienia czegokolwiek z uchwytem spowoduje wypisanie: invalid large obj - descriptor. Kod, który do tej pory działał (przynajmniej - większo¶ć razy) będzie teraz generował informację o błędzie je¶li nie - będziesz korzystał z transakcji.
+ descriptor. Kod, ktĂłry do tej pory dziaĹ‚aĹ‚ (przynajmniej + wiÄ™kszość razy) bÄ™dzie teraz generowaĹ‚ informacjÄ™ o błędzie jeĹ›li nie + bÄ™dziesz korzystaĹ‚ z transakcji. -Je¶li używasz interfejsu klienta jak ODBC być może
- będziesz musiał ustawić auto-commit off.
Jeśli używasz interfejsu klienta jak ODBC być może
+ będziesz musiał ustawić auto-commit off.
Użyj CURRENT_TIMESTAMP:
+UĹĽyj CURRENT_TIMESTAMP:
CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
- IN
sa takie wolne?W wersjach wcze¶niejszych niż 7.4 ł±czymy podzapytania w outer queries
- poprzez sekwencyjne przeszukiwanie wyników podzapytania dla każdego rzędu
- z outer query. Je¶li podzapytanie zwraca jedynie kilka rzędów a
- zewnętrzne zapytanie zwraca ich wiele, IN jest najszybsze.
- Aby przyspieszyć inne zapytania można zast±pić IN
przez
+
W wersjach wcześniejszych niż 7.4 łączymy podzapytania w outer queries
+ poprzez sekwencyjne przeszukiwanie wyników podzapytania dla każdego rzędu
+ z outer query. Jeśli podzapytanie zwraca jedynie kilka rzędów a
+ zewnętrzne zapytanie zwraca ich wiele, IN jest najszybsze.
+ Aby przyspieszyć inne zapytania można zastąpić IN
przez
EXISTS
:
SELECT *
@@ -1419,18 +1419,18 @@ BYTEA bytea zmiennej d
- Aby to rozwi±zanie było szybkie, subcol powinna być kolumn± - indeksowan±. + Aby to rozwiÄ…zanie byĹ‚o szybkie, subcol powinna być kolumnÄ… + indeksowanÄ….
- W wersji 7.4 i póĽniejszych, IN w rzeczywisto¶ci używa tej samej - wyrafinowanej techniki ł±czenia jak normalne zapytania i jest - preferowane nad używaniem EXISTS. + W wersji 7.4 i późniejszych, IN w rzeczywistoĹ›ci uĹĽywa tej samej + wyrafinowanej techniki łączenia jak normalne zapytania i jest + preferowane nad uĹĽywaniem EXISTS.
-PostgreSQL ma zaimplementowane outer join - wykorzystuj±c standardow± składnię SQL. Poniżej dwa przykłady:
+ wykorzystując standardową składnię SQL. Poniżej dwa przykłady:SELECT * @@ -1442,19 +1442,19 @@ BYTEA bytea zmiennej d FROM t1 LEFT OUTER JOIN t2 USING (col);-
Te dwa identyczne zapytania ł±cz± kolumnę t1.col z kolumn± t2.col, - ale także zwróc± niepoł±czone rzędy w t1 (te, które nie pasuj± w t2). - RIGHT join dodałby niepoł±czone rzędy z tabeli t2. - FULL join zwróciłby rzędy plus dodatkowo wszystkie - rzędy z tabel t1 i t2. Słowo OUTER jest opcjonalne i - jest dodawane domy¶lnie przy +
Te dwa identyczne zapytania łączÄ… kolumnÄ™ t1.col z kolumnÄ… t2.col, + ale takĹĽe zwrĂłcÄ… niepołączone rzÄ™dy w t1 (te, ktĂłre nie pasujÄ… w t2). + RIGHT join dodaĹ‚by niepołączone rzÄ™dy z tabeli t2. + FULL join zwrĂłciĹ‚by rzÄ™dy plus dodatkowo wszystkie + rzÄ™dy z tabel t1 i t2. SĹ‚owo OUTER jest opcjonalne i + jest dodawane domyĹ›lnie przy LEFT, RIGHT, i FULL - join'ach. Zwykłe join'y s± nazywane INNER joins.
+ join'ach. ZwykĹ‚e join'y sÄ… nazywane INNER joins. -W poprzednich wersjach "outer joins" mog± być zasymulowane poprzez - użycie slowa kluczowego - UNION i NOT IN. Dla przykładu, ł±cz±c - tabele tab1 i tab2, następuj±ce zapytanie wykonuje +
W poprzednich wersjach "outer joins" mogą być zasymulowane poprzez
+ uĹĽycie slowa kluczowego
+ UNION i NOT IN. Dla przykładu, łącząc
+ tabele tab1 i tab2, następujące zapytanie wykonuje
outer join:
Nie ma takiej możliwo¶ci aby w zapytaniu odpytawać inn± baze danych - poza bież±c±. Ponieważ PostgreSQL ładuje specyficzne dla bazy danych - katalogi systemowe, nie jest do końca jasne jak zapytanie pomiędzy - różnymi bazami danych powinno się zachowywać.
+Nie ma takiej możliwości aby w zapytaniu odpytawać inną baze danych + poza bieżącą. Ponieważ PostgreSQL ładuje specyficzne dla bazy danych + katalogi systemowe, nie jest do końca jasne jak zapytanie pomiędzy + różnymi bazami danych powinno się zachowywać.
-contrib/dblink pozwala na wykonywanie zapytań poprzez różne - bazy danych wywołuj±c odpowiednie funkcje. Oczywi¶cie klient może ł±czyć - się z różnymi bazami danych i ł±czyć informację w ten sposób uzyskan± +
contrib/dblink pozwala na wykonywanie zapytań poprzez różne + bazy danych wywołując odpowiednie funkcje. Oczywiście klient może łączyć + się z różnymi bazami danych i łączyć informację w ten sposób uzyskaną po stronie klienta.
-Możesz w łatwy sposób zwracać wiele rzędów lub kolumn używaj±c +
Możesz w łatwy sposób zwracać wiele rzędów lub kolumn używając funkcji z: http://techdocs.postgresql.org/guides/SetReturningFunctions.
-- PL/PgSQL przechowuje w cache zawarto¶ć funkcji, niepoż±danym efektem tego - jest to, że gdy taka funkcja korzysta z tabel tymczasowych, które s± - póĽniej kasowane i odtwarzane, a funkcja wywoływana jest ponownie,jej - wywołanie nie powiedzie się ponieważ cachowana funkcja wci±ż będzie - wskazywać na stara tablicę tymczasow±. Rozwi±zaniem tego problemu jest - używanie EXECUTE aby korzystać z tabel tymczasowych w PL/PgSQL. To - spowoduje, że zapytanie będzie parsowane przy każdym wywołaniu + PL/PgSQL przechowuje w cache zawartość funkcji, niepoĹĽÄ…danym efektem tego + jest to, ĹĽe gdy taka funkcja korzysta z tabel tymczasowych, ktĂłre sÄ… + później kasowane i odtwarzane, a funkcja wywoĹ‚ywana jest ponownie,jej + wywoĹ‚anie nie powiedzie siÄ™ poniewaĹĽ cachowana funkcja wciÄ…ĹĽ bÄ™dzie + wskazywać na stara tablicÄ™ tymczasowÄ…. RozwiÄ…zaniem tego problemu jest + uĹĽywanie EXECUTE aby korzystać z tabel tymczasowych w PL/PgSQL. To + spowoduje, ĹĽe zapytanie bÄ™dzie parsowane przy kaĹĽdym wywoĹ‚aniu funkcji.
-- Jest kilka opcji aby stosować replikację typu master/slave. Ten typ + Jest kilka opcji aby stosować replikacjÄ™ typu master/slave. Ten typ pozwala jedynie masterowi na dokonywanie zmian w bazie danych, a - slave może jedynie te zmiany odczytywać. Na stronie + slave moĹĽe jedynie te zmiany odczytywać. Na stronie http://gborg.PostgreSQL.org/genpage?replication_research - znajduje się ich lista. Replikacja typu multi-master jest w trakcie - prac, opis projektu znajduje się pod adresem: http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.
-Problem może być spowodowany przez bardzo wiele rzeczy. Spróbuj - najpierw przetestować Twoj± funkcję w samodzielnie działaj±cym programie. +
Problem może być spowodowany przez bardzo wiele rzeczy. Spróbuj + najpierw przetestować Twoją funkcję w samodzielnie działającym programie.
-Wy¶lij Twoje propozycje na listę mailow± pgsql-hackers, - wtedy prawdopodobnie Twój kod znajdzie się w katalogu contrib/.
+Wyślij Twoje propozycje na listę mailową pgsql-hackers, + wtedy prawdopodobnie Twój kod znajdzie się w katalogu contrib/.
-- W wersjach PostgreSQL od numeru 7.3, funckje zwracaj±ce tabele s± w - pęlni wspierane w C, PL/PgSQL i SQL. SprawdĽ w Programmer's Guide aby - uzyskać więcej informacji. Przykład funkcji napisanej w C zwracaj±cej - tabelę został umieszczony w contrib/tablefunc. + W wersjach PostgreSQL od numeru 7.3, funckje zwracajÄ…ce tabele sÄ… w + pÄ™lni wspierane w C, PL/PgSQL i SQL. SprawdĹş w Programmer's Guide aby + uzyskać wiÄ™cej informacji. PrzykĹ‚ad funkcji napisanej w C zwracajÄ…cej + tabelÄ™ zostaĹ‚ umieszczony w contrib/tablefunc.
-Pliki Makefiles nie maj± dorzuconych odpowiednich - zależno¶ci dla plików nagłówkowych (include files). Wykonaj najpierw - make clean, a następnie ponownie make. - Je¶li używasz GCC możesz użyć opcji +
Pliki Makefiles nie majÄ… dorzuconych odpowiednich + zaleĹĽnoĹ›ci dla plikĂłw nagłówkowych (include files). Wykonaj najpierw + make clean, a nastÄ™pnie ponownie make. + JeĹ›li uĹĽywasz GCC moĹĽesz uĹĽyć opcji --enable-depend przy wykonywaniu configure aby - kompilator mógł okre¶lić zależno¶ci samodzielnie. + kompilator mĂłgĹ‚ okreĹ›lić zaleĹĽnoĹ›ci samodzielnie.