From: Bruce Momjian
Date: Fri, 5 Mar 2004 19:29:23 +0000 (+0000)
Subject: Update Polish FAQ, from Marcin Mazurek.
X-Git-Tag: REL8_0_0BETA1~1062
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=aef037723f8176008a69bff9496551c9f99a4f91;p=postgresql
Update Polish FAQ, from Marcin Mazurek.
---
diff --git a/doc/FAQ_polish b/doc/FAQ_polish
index d89b8ea7ab..f98902093c 100644
--- a/doc/FAQ_polish
+++ b/doc/FAQ_polish
@@ -1,18 +1,19 @@
Frequently Asked Questions (FAQ) o PostgreSQL
- Ostatnia aktualizacja: Thu Apr 18 00:44:51 EDT 2002
+ Ostatnia aktualizacja: Sobota Luty 7 22:16:21 EST 2004
+
+ Ostatnia aktualizacja tl/umaczenia: Piatek Marzec 5 19:31:12 EST 2004
Obecny maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
Tl/umaczenie: Marcin Mazurek (m.mazurek@netsync.pl)
Najbardziej aktualna wersje tego dokumentu mozna znalezc pod adresem:
- http://www.PostgreSQL.org/docs/faq-english.html.
+ http://www.PostgreSQL.org/docs/faqs/FAQ.html.
Odpowiedzi na pytania dotyczace konkretnych systemów operacyjnych
- mozna znalezc pod adresem:
- http://www.PostgreSQL.org/users-lounge/docs/faq.html.
+ mozna znalezc pod adresem: http://www.PostgreSQL.org/docs/index.html.
_________________________________________________________________
Pytania ogólne
@@ -40,18 +41,17 @@
2.1) Czy sa jakies driwery ODBC dla PostgreSQL?
2.2) Jakie istnieja narzedzia pozwalajace na dostep do PostgreSQL
przez www?
- 2.3) Czy istnieje jakies GUI dla PostgreSQL? Narzedzie do
- raportowania? Interfejs dla "embedded query language"?
+ 2.3) Czy istnieje jakies GUI dla PostgreSQL?
2.4) Za pomoca jakich jezyków programowania mozna sie komunikowac z
PostgreSQL?
- Pytania administratora
+ Pytania dotyczace administracji
3.1) Jak moge zainstalowac PostgreSQL w innej lokalizacji niz
/usr/local/pgsql?
3.2) Podczas startu postmaster'a, otrzymuje komunikat: Bad System Call
lub "core dumped". Dlaczego?
- 3.3) Podczas startu postmaster'a, otrzymuje komunikato bl/edzie:
+ 3.3) Podczas startu postmaster'a, otrzymuje komunikat o bl/edzie:
IpcMemoryCreate. Dlaczego?
3.4) Podczas startu postmaster'a, otrzymuje komunikat o bl/edzie:
IpcSemaphoreCreate. Dlaczego?
@@ -61,8 +61,9 @@
3.7) Jakie sa mozliwosci wyszukiwania bl/edów?
3.8) Skad sie bierze komunikat: "Sorry, too many clients" podczas
próby pol/aczenia sie z baza danych?
- 3.9) Co to za pliki typu pg_sorttempNNN.NN , które znajduja sie w
- katalogu z plikami bazy danych?
+ 3.9) Jakie pliki znajduja sie w pg_temp?
+ 3.10) Dlaczego konieczne jest przy upgradzie PostgreSQL korzystanie ze
+ skryptów dump i restore?
Pytania dotyczace uzytkowania
@@ -72,7 +73,7 @@
zapytania?
4.3) Jak moge uzyskac liste wszystkich tabel czy innych rzeczy pod
psql?
- 4.4) Jak usunac kolumne z tabeli?
+ 4.4) Jak usunac kolumne z tabeli lub zmienic jej typ?
4.5) Jaki jest maksymalny rozmiar dla rzedu, tabeli i bazy danych?
4.6) Jak duzo miejsca w bazie danych jest potrzebne aby przechowac
dane ze zwyczajnego pliku tekstowego?
@@ -110,6 +111,10 @@
4.23) Jak wykonac "outer join"?
4.24) Jak wykonywac zapytanie uzywajace kilku baz danych jednoczesnie?
4.25) Jak zwrócic w funkcji wiele rzedów lub kolumn?
+ 4.26) Dlaczego nie moge w sposób pewny tworzyc/usuwac tabel
+ tymczasowych w funkcjach PL/PgSQL?
+ 4.27) Jakie sa mozliwosci replikacji w PostgreSQL?
+ 4.28) Jakie mozliwosci szyfrowania oferuje PostgreSQL?
Rozwijanie PostgreSQL
@@ -125,7 +130,8 @@
1.1) Co to jest PostgreSQL? Jak to wymawiac?
- PostgreSQL wymawia sie Post-Gres-kju-el.
+ PostgreSQL wymawia sie Post-Gres-kju-el. Czesto podczas rozmów uzywany
+ jest termin "Postgres"
PostgreSQL jest rozszerzeniem systemu zarzadzania bazami danych -
POSTGRES, kolejna generacja rozwojowego prototypu DBMS. Mimo, ze
@@ -137,11 +143,13 @@
Rozwój PostgreSQL jest prowadzony przez grupe ludzi z Internetu,
komunikujacych sie poprzez mailowe listy dyskusyjne PostgreSQL.
Obecnym koordynatorem jest Marc G. Fournier (scrappy@PostgreSQL.org).
- (Zobacz ponizej jak sie przyl/aczyc). Ta grupa ludzi jest
- odpowiedzialna za cal/y rozwój PostgreSQL.
+ (Zobacz pytanie 1.6 jak sie przyl/aczyc). Ta grupa ludzi jest
+ odpowiedzialna za cal/y rozwój PostgreSQL. PostgreSQL jest projektem
+ nie kontrolowanym przez zadna firme, aby wziac udzial/ w jego rozwoju
+ sprawdz, http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html
Autorami PostgreSQL 1.01 byli Andrew Yu and Jolly Chen. Wiele innych
- osób pomogl/o przy portowaniu, testowaniu, debugowaniu, i rozwijaniu
+ osób pomogl/o przy portowaniu, testowaniu, debugowaniu i rozwijaniu
kodu. Oryginalny kod Postgresa, na którym zostal/ oparty PostgreSQL,
byl/ wysil/kiem studentów oraz pracowników pracujacych pod
kierownictwem profesora Michael'a Stonebraker'a z University of
@@ -194,11 +202,11 @@
Klient
- Mozliwa jest kompilacja bibliteki C libpq C, psql oraz innych
+ Mozliwa 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 sie
poprzez TCP/IP. Serwer moze dzial/ac na dowolnej wspieranej platformie
- Unixowej. Plik win31.mak jest dol/aczony do zródel/, aby mozna byl/o
+ Unixowej. Plik win32.mak jest dol/aczony do zródel/, aby mozna byl/o
stworzyc biblioteke libpq oraz program psql dzial/ajace w srodowisku
Win32. PostgreSQL moze sie takze komunikowac z klientami ODBC.
@@ -206,9 +214,17 @@
Serwer moze byc uruchamiany na Windows NT i Win2k uzywajac bibliotek
Cygwin, Cygnus Unix/NT. W pliku pgsql/doc/FAQ_MSWIN znajdujacym sie w
- zródl/ach lub pod adresem: MS Windows FAQ na naszych stronach. Nie
- planujemy tworzyc portu przeznaczonego docelowo dla platformy
- Microsoft.
+ zródl/ach lub pod adresem:
+ http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN na naszych
+ stronach.
+
+ Obecnie prowadzone sa prace nad stworzeniem wersji dla MS Win
+ NT/200/XP. Jesli chcesz sie dowiedziec o obecnym statusie tych prac
+ zobacz http://techdocs.postgresql.org/guides/Windows and
+ http://momjian.postgresql.org/main/writings/pgsql/win32.html.
+
+ Istnieje takze port pod Novell Netware 6 dostepny pod adresem
+ http://forge.novell.com.
1.5) Skad mozna sciagnac PostgreSQL?
@@ -258,31 +274,31 @@
irc.phoenix.net.
Lista firm oferujacych wsparcie na zasadach komercyjnych znajduje sie
- pod adresem:
- http://www.postgresql.org/users-lounge/commercial-support.html.
+ pod adresem: http://techdocs.postgresql.org/companies.php.
1.7) Jaka jest ostatnia dostepna wersja?
- Ostatnia dostepna wersja PostgreSQL to 7.2.1.
+ Ostatnia dostepna wersja PostgreSQL to 7.4.1.
- Planujemy publikowanie kolejnych wersji co cztery miesiace.
+ Planujemy publikowanie kolejnych wersji co szesc do osmiu miesiecy.
1.8) Jaka dokumentacja jest dostepna?
Kilka manuali, stron podecznika man, oraz kilka przykl/adów do
testowania sa zal/aczone w samej dystrybucji. Znajduja sie one w
katalogu /doc. Manual moze byc takze przegladany poprzez strony www
- pod adresem http://www.PostgreSQL.org/users-lounge/docs/.
+ pod adresem http://www.PostgreSQL.org/docs.
Istnieja takze dwie ksiazki dostepne online pod adresami
http://www.PostgreSQL.org/docs/awbook.html i
http://www.commandprompt.com/ppbook/. Lista ksiazek o PostgreSQL,
które mozna kupic znajduje sie pod adresem
- http://www.postgresql.org/books/. Zbiór technicznych artykul/ów o
- PostgreSQL znajduje sie pod adresem http://techdocs.postgresql.org/.
+ http://techdocs.PostgreSQL.org/techdocs/bookreviews.php. Zbiór
+ technicznych artykul/ów o PostgreSQL znajduje sie pod adresem
+ http://techdocs.postgresql.org/.
psql posiada kilka wbudowanych polecen \d, za pomoca których mozna
- sprawdzic informacje dotyczace typów, operatorów, funkcji, aggregatów
+ sprawdzic informacje dotyczace typów, operatorów, funkcji, agregatów
itd.
Na naszej stronie mozna znalezc duzo wiecej dokumentacji.
@@ -327,7 +343,8 @@
Jest okol/o 12 osób, które maja uprawnienia do commit'owania w CVS
PostgreSQL'a. Kazdy z nich submitowal/ tak wiele wysokiej jakosci
patchy, ze stal/o sie niemozliwe dla obecnych commiterów byc z nimi na
- biezaco, majac pewnosc ze sa to poprawki wysokiej jakosci.
+ biezaco, wiec musielismy im ufac i miec pewnosc, ze ich poprawki sa
+ wysokiej jakosci.
1.13) Jak moge zgl/aszac bl/edy?
@@ -349,44 +366,33 @@
integrity, oraz wyrafinowany system blokowania. Mamy takze
wl/asciowsci których inni nie posiadaja, jak typy definiowane
przez uzytkownika, dziedziczenie, rules, multi-version
- concurrency control, która redukuje problemy z blokowaiem (lock
- contention).
+ concurrency control, która redukuje problemy z blokowaniem
+ (lock contention).
Wydajnosc
- PostgreSQL dzial/a w dwóch trybach. Standardowy tryb fsync
- zrzuca kazda zakonczona transakcje na dysk, gwarantujac w ten
- sposób to, ze jesli system operacyjny sie zawiesi lub straci
- zasilanie wciagu kilku nastepnych sekund, wszystkie Twoje dane
- zostana bezpiecznie zapisane na dysku. W tym trybie, jestesmy
- wolniejsi niz wiekszosc komercyjnych baz danych, czesciowo
- dlatego ze niewiele z nich wykonuje taki sposób zapisywania
- danych jako domyslne ustawienie. W trybie no-fsync z regul/y
- jestesmy szybsi niz komercyjne bazy danych, chociaz w tym
- wypadku zawieszenie sie systemu moze spowodowac uszkodzenie
- danych. Pracujemy nad tym, aby stworzyc posredni tryb, który
- powoduje mniejsza redukcje wydajnosci niz tryb fsync i pozwoli
- na integralnosc danych w przeciagu 30 sekund do zal/amania sie
- systemu operacyjnego.
- Porównujac do MySQL czy innych prostych baz danych, jestesmy
- wolniejsi przy wykonywaniu insertów/updatów przez narzut
- spowodowany przez transakcje. Oczywiscie MySQL nie posiada
- zadnej z wymienionych wyzej mozliwosci. PostgreSQL zostal/
- zbudowany aby byc DBMS elastycznym i bogatym z róznorakie
- mozliwosci, aczkolwiek dbamy, aby poprawiac jego wydajnosc
- poprzez analize kodu zródl/owego i profilowanie. Ciekawe
- porównanie PostgreSQL i MySQL mozna znalezc pod adresem
- http://openacs.org/why-not-mysql.html
- Kazde pol/aczenie klienta jest obsl/ugiwane przez nas poprzez
- stworzenie nowego procesu Unixowego. Procesy backendu dziela
- bufory danych oraz informacje o blokadach. Uzywajac wielu
- procesorów, rózne backendy moga bez problemu dzial/ac na
- róznych procesorach.
+ Wydajnosc PostgreSQL jest podobna do innych komercyjnych i open
+ source baz danych. W niektórych sytuacjach jest szybszy w
+ niektórych wolniejszy. W porównianiu do MySQL lub mniejszych
+ baz danych jestesmy szybsi przy wielu uzytkownikach,
+ skomplikowaych zapytaniach i duzym obciazeniu podczas. MySQL
+ jest szybszy dla prostych SELECTów wykonywanych przez niewielu
+ uzytkowników. Spowodowane jest to narzutem, który sie pojawia
+ przy transakcjach. Oczywiscie MySQL nie ma wiekszosci z
+ rozwiazan opisanych powyzej w sekcji Mozliwosci . PostgreSQL
+ zostal/ stworzony z mysla o stabilnosci, oraz szerokiej gamie
+ mozliwosci, ale mimo to staramy sie w kazdej wersji poprawiac
+ jego wydajnosc. Ciekawe porównanie PostgreSQL i MySQL mozna
+ znalezc pod adresem
+ http://openacs.org/philosophy/why-not-mysql.html Dodatkowo,
+ MySQL jest firma, która dystrybuuje jej produkty poprzez zasade
+ Open Source i wymaga wykupienia licencji w przypadku tworzenia
+ close-source software, co ie ma miejsca w przypadku PostgreSQL.
Stabilnosc
Zdajemy sobie sprawe, ze DBMS musi byc stabilny, w przeciwnym
wypadku jest bez wartosci. Staramy sie publikowac kod stabilny,
dobrze przetestowany, z minimum mozliwych bl/edów. Kazde
- wydanie poprzedza conajmniej miesiac testów wersji beta.
+ wydanie poprzedza co najmniej miesiac testów wersji beta.
Patrzac na historie wydan PostgreSQL widac, ze dostarczamy
stabilne, dobrze sprawdzone wersje, które sa gotowe do uzycia w
srodowisku produkcyjnym. Myslimy, ze proces publikowania
@@ -415,9 +421,9 @@
1.15) W jaki sposób moge wesprzec finansowo PostgreSQL?
PostgreSQL korzysta z najlepszej infrastruktury od samego poczatku
- istnienia projektu, tzn. szesciu lat. Wszystko to zawdzieczamy
- Marc'owi Fournier'owi, który stworzyl/ ta infrastrukture i zarzadza
- nia od lat.
+ istnienia projektu, czyli roku 1996 kiedy rozpoczelismy prace.
+ Wszystko to zawdzieczamy Marc'owi Fournier'owi, który stworzyl/ ta
+ infrastrukture i zarzadza nia od lat.
Wysokiej jakosci infrastruktura jest bardzo wazna dla kazdego projektu
open-source. Zapobiega przerwom w rozwoju projektu i jakimkolwiek
@@ -427,7 +433,7 @@
tanie. Istnieje wiele róznych miesiecznych, czy jednorazowych
wydatków, które trzeba ponosic aby wszystko dzial/al/o jak nalezy.
Jesli Ty, badz Twoja firma moze wspomóc finansowo rozwój PostgreSQL
- odwiedz adres: http://www.pgsql.com/pg_goodies gdzie opisane jest jak
+ odwiedz adres: http://store.pgsql.com/shopping/ gdzie opisane jest jak
to zrobic.
Chociaz na stronie wspomniana jest nazwa PostgreSQL Inc, "datki" sa
@@ -436,69 +442,72 @@
wysl/ac czek na adres kontaktowy.
_________________________________________________________________
+ Jesli mozesz sie pochwalic udanymi wdrozeniami PostgreSQL, prosimy
+ abys zgl/osil/ nam to na stronie: http://advocacy.postgresql.org.
+
User Client Questions
2.1) Czy sa jakies driwery ODBC dla PostgreSQL?
Dostepne sa dwa driwery ODBC: PsqlODBC i OpenLink ODBC.
- PsqlODBC jest dol/aczony do zródel/. Wiecej informacji na jego temat
- mozesz znalezc pod adresem: ftp://ftp.PostgreSQL.org/pub/odbc/.
+ Mozesz pobrac PsqlODBC z adresu
+ http://gborg.postgresql.org/project/psqlodbc/projdisplay.php
OpenLink ODBC moze byc pobrany z adresu: http://www.openlinksw.com.
Wspól/pracuje ze standardowym oprogramowaniem klienckim ODBC wiec w
ten sposób mozesz korzystac z PostgreSQL ODBC dostepnego na kazdej
- plaformie która wspiera (Win, Mac, Unix, VMS).
+ pltaformie która wspiera (Win, Mac, Unix, VMS).
Autorzy beda prawdopodobnie sprzedawac ten produkt osobom które
wymagaja komercyjnego wsparcia, ale wersja darmowa bedzie zawsze
dostepna. Wszystkie pytania mozesz wysyl/ac na adres:
postgres95@openlink.co.uk.
- Sprawdz takze rozdzial/ o ODBC w "Programmer's Guide".
-
2.2) Jakie istnieja narzedzia pozwalajace na dostep do PostgreSQL przez
www?
Dobry podrecznik dla poczatkujacych o dostepie do bazy danych przez
www mozesz znalezc pod adresem: http://www.webreview.com
- Inny znajduje sie pod adresem: http://www.phone.net/home/mwm/hotlist/.
-
Do integracji z www, swietnym rozwiazaniem jest PHP. Mozesz znalezc
wiecej informacji na ten temat pod adresem http://www.php.net.
Wiele osób w przypadku skomplikowanych rozwiazan uzywa Perl'a i
- modul/u CGI.pl.
+ modul/u CGI.pl lub mod_perl.
- 2.3) Czy istnieje jakies GUI dla PostgreSQL? Narzedzie do raportowania?
- Interfejs dla "embedded query language"?
+ 2.3) Czy istnieje jakies GUI dla PostgreSQL?
- Mamy cal/kiem mil/y interfejs graficzny, który zostal/ nazwany
- pgaccess i jest on dostarczany jako czesc zródel/. pgaccess posiada
- takze generator raportów. Mozna go znalezc pod adresem
- http://www.flex.ro/pgaccess
+ Tak, istnieje kilka interfejsów graficznych dla PostgreSQL. Wsró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 takze PHPPgAdmin (
+ http://phppgadmin.sourceforge.net/ ), webowy interfejs dla PostgreSQL.
- Udostepnilismy takze ecpg, który jest "embedded SQL query language
- interface" dla jezyka C.
+ Wiecej informacji na ten temat znajduje sie pod adresem See
+ http://techdocs.postgresql.org/guides/GUITools.
2.4) Za pomoca jakich jezyków programowania mozna sie komunikowac z
PostgreSQL?
- Mamy wsparcie dla:
+ Najbardziej popularne jezyki posiiadaja wl/asny interfejs dla
+ PostgreSQL. Sprawdz liste rozszerzen dla intersujacego Ciebie jezyka
+ programowania.
+
+ Ze zródl/ami PostreSQL dystrubuowane sa interfejsy dla nastepujacych
+ jezyków programowania:
* C (libpq)
- * C++ (libpq++)
* Embedded C (ecpg)
* Java (jdbc)
- * Perl (perl5)
- * ODBC (odbc)
* Python (PyGreSQL)
* TCL (libpgtcl)
- * C Easy API (libpgeasy)
- * Embedded HTML (PHP z http://www.php.net)
+
+ Inne interfejsy sa dostepne pod adresem: http://gborg.postgresql.org w
+ sekcji Drivers/Interfaces.
_________________________________________________________________
- Pytania administratora
+ Pytania dotyczace administracji
3.1) Jak moge zainstalowac PostgreSQL w innej lokalizacji niz
/usr/local/pgsql?
@@ -566,7 +575,7 @@
pojedyncze INSERTy. Po drugie polecenia SQL nie zawarte w bloku
okreslajacym transakcje - BEGIN WORK/COMMIT, sa traktowane jako
pojedyncza transakcja. Rozwaz wykonanie kilku polecen/zdan SQL w
- jednym bloku transakcji. To redukuje narzut powodowany przez
+ jednym bloku transakcji. To redukuje narzut nakl/adany przez
transakcje. Przy duzych zmianach w danych, warto usunac i stworzyc na
nowo indeksy.
@@ -665,25 +674,36 @@
limit na maksymalna liczbe procesów backendu to obawa o wyczerpanie
zasobów systemu.
- W wersjach PostgreSQL wczesniejszych niz 6.5, maksymalna liczba
- backendów byl/a ustawiona na 64, a zmiana tej wartosci wymaga
- rekompliacji po zmianie stal/ej MaxBackendId w pliku
- include/storage/sinvaladt.h.
-
- 3.9) Co to sa za pliki typu: pg_sorttempNNN.NN, które znajduja sie w
- katalogu z plikami bazy danych?
+ 3.9) Jakie pliki znajduja sie w pg_temp?
- Sa to tymczasowe pliki utworzone przez executor. Dla przykl/adu, jesli
- jakas operacja sortowania jest wymagana do wykonania ORDER BY, a samo
- sortowanie wymaga wiecej miejsca niz paratmetr backendu -S ustawil/ do
- wykorzystania, wtedy tymczasowe pliki sa uzywane do przechowywania
- tych danych.
+ Katalog ten zawiera tymczasowe pliki utworzone przez executor. Dla
+ przykl/adu, jesli jakas operacja sortowania jest wymagana do wykonania
+ ORDER BY, a samo sortowanie wymaga wiecej miejsca niz parametr
+ backendu -S ustawil/ do wykorzystania, wtedy tymczasowe pliki sa
+ uzywane do przechowywania tych danych.
Pliki tymczasowe powinny byc usuniete automatycznie, ale mogl/o sie to
nie stac jesli proces backendu w miedzyczasie nie zakonczyl/ sie
poprawnie podczas operacji sortowania. Jesli w danym momencie nie
dzial/aja zadne procesy backendów mozesz spokojnie usunac pliki
pg_tempNNN.NN.
+
+ 3.9) Dlaczego konieczne jest przy upgradzie PostgreSQL korzystanie ze
+ skryptów dump i restore?
+
+ Twórcy PostgreSQL dokonuja jedynie mal/ych zmian pomiedzy mal/ymi
+ upgradami wersji, np z 7.2 do 7.2.1, wtedy upgrade nie wymaga
+ korzystania z dump i restore. Przy wiekszych zmianach, np. z wersji
+ 7.2 do 7.3, czesto zmianymaja wpl/yw na format przechowywanych danych.
+ Zmiany te sa na tyle skomplikowane, ze nie utrzymujemy zgodosci z
+ poprzednimi wersjami PostgreSQL. dump pozwala na wydostanie danych w
+ takiej postaci, w której l/atwe jest ich zaimportowanie do nowszych
+ wersji bez kl/opotu.
+
+ W wydaniach gdzie zmiany nie dotycza formatu danych na dysku, mozna
+ wykorzystac skryptu pg_upgrade, do upgradu bez uzycia dump/restore.
+ Dokumentacja do danego wydania zawiera informacje czy mozliwe jest
+ uzycie pg_upgrade.
_________________________________________________________________
Pytania dotyczace uzywania
@@ -706,6 +726,13 @@
pierwszych rzedów, byc moze bedzie koniecznosc wykonania zapytania do
momentu az zostana znalezione pozadane wyniki.
+ Aby otrzymac losowy rzad, uzyj:
+ SELECT col
+ FROM tab
+ ORDER BY random()
+ LIMIT 1;
+
+
4.3) Jak moge uzyskac liste wszystkich tabel czy innych rzeczy pod psql?
Mozesz sprawdzic zawartosc zródel/ psql, a konkretnie plik
@@ -714,36 +741,44 @@
wtedy po wykonaniu polecenia z backslashem wyswietlane bedzie
zapytanie, które w rzeczywistosci jest wykonywane.
- 4.4) Jak usunac kolumne z tabeli?
+ 4.4) Jak usunac kolumne z tabeli lub zmienic jej typ?
- Nie mamy zaimplementowanego ALTER TABLE DROP COLUMN, ale mozesz zrobic
- tak:
- SELECT ... -- wybierz zawartosc wszystkich kolumn poza ta jedna której chc
-esz sie pozbyc
+ DROP COLUMNT zostal/o dodane w wersji 7.3 przy poleceniu ALTER TABLE
+ DROP COLUMN. We wczesniejszych wersjach mozesz zrobic tak:
+ BEGIN;
+ LOCAL TABLE old_table;
+ SELECT ... -- wybierz wszystkie kolumny poza ta jedna której chcesz sie po
+zbyc
INTO TABLE new_table
FROM old_table;
DROP TABLE old_table;
ALTER TABLE new_table RENAME TO old_table;
+ Aby zmienic typ danych kolumny mozesz zrobic tak:
+ BEGIN;
+ ALTER TABLE tab ADD COLUMN new_col new_data_type;
+ UPDATE tab SET new_col = CAST(old_col AS new_data_type);
+ ALTER TABLE tab DROP COLUMN old_col;
+ COMMIT;
+
4.5) Jaki jest maksymalny rozmiar dla rzedu, tabeli i bazy danych?
Oto wszystkie ograniczenia:
- Maksymalny rozmiar dla bazdy danych? nieograniczony ( istnieja bazy dan
-ych o wielkosci 500 GB databases )
- Maksymalny rozmiar dla tabeli? 16 TB
- Maksymalny rozmiar dla rzedu? nieograniczony w 7.1 i pózniejszyc
-h
- Maksymalny rozmiar pola? 1 GB w 7.1 and later
+ Maksymalny rozmiar dla bazdy danych? nieograniczony ( istnieja
+ bazy danych o wielkosci 32 TB databases )
+ Maksymalny rozmiar dla tabeli? 32 TB
+ Maksymalny rozmiar dla rzedu? 1.6 TB
+ Maksymalny rozmiar pola? 1 GB
Maksymalna liczba rzedów w tabeli? nieograniczona
- Maksymalna liczba kolumn w tabeli? 250-1600 w zalezonosci od typów kolum
-n
- Makasymalna liczba indeksów na tabeli? nieograniczona
+ Maksymalna liczba kolumn w tabeli? 250-1600 w zalezonosci od typów ko
+lumn
+ Makasymalna liczba indeksów na tabeli? nieograniczona
Oczywiscie "nieograniczony" nie jest prawda tak do konca, istnieja
ograniczenia wynikajace z dostepnego miejsca na dysku, pamieci/swapa.
Kiedy wielkosci te beda bardzo duze moze odbic sie to na wydajnosci.
- Maksymalny rozmiar tabeli, czyli 16 TB nie wymaga od systemu
+ Maksymalny rozmiar tabeli, czyli 32 TB nie wymaga od systemu
operacyjnego wsparcia dla duzych plików. Duze tabele sa przechowywane
jako pliki o rozmiarze 1 GB, wiec ograniczenia co do wielkosci plików
narzucone przez system plików nie sa istotne.
@@ -786,6 +821,9 @@ n
zawieraja pewne dane, wiec w pewnych przypadkach moga byc cal/kiem
duze.
+ NULLe sa przechowywane jako mapy bitowe, wiec uzywaja bardzo mal/o
+ miejsca.
+
4.7) Jak moge sprawdzic jakie tabele, klucze, bazy danych i uzytkownicy sa
utworzeni?
@@ -821,14 +859,32 @@ n
sortowanie jest zazwyczaj szybsze nie wyszukiwanie za pomoca indeksu
na duzej tabeli.
Jakkolwiek LIMIT w pol/aczeniu z ORDER BY czesto bedzie wykorzystywal/
- indeksów poniewaz jedynie mal/a czesc z tabeli jest zwracana.
+ indeksy poniewaz jedynie mal/a czesc z tabeli jest zwracana. W
+ rzeczywistosci, chociaz MAX() i MIN() nie uzywaja indeksów, mozliwe
+ jest aby zwrócic te wartosci uzywajac indeksów poprzez uzycie ORDER BY
+ i LIMIT.
+ SELECT col
+ FROM tab
+ ORDER BY col [ DESC ]
+ LIMIT 1;
+
+ Jesli uwazasz, ze optimizer myli sie wybierajac sequential scan, uzyj
+ SET enable_seqscan TO 'off' i uruchom testy aby sprawdzic czy wtym
+ wypadku zapytanie bedzie szybciej wykonywane.
Kiedy uzywa sie operatorów dopasujacych takich jak LIKE lub ~, indeksy
- beda uzywane jedynie jesli poczatek wyszukiwania jest oparty na
- poczatku l/ancucha tekstu. Dlatego, aby uzywac indeksów, dopasowania
- operatorem LIKE nie moga sie zaczynac %, a dopasowania operatorem ~
- (dopasowania regularne) musza sie zaczynac znakiem specjalnym ^.
-
+ beda uzywane jedynie w pewnych wypadkach:
+ * Poczatek wyszukiwania jest oparty na poczatku l/ancucha tekstu.
+ + wzorce LIKE nie moga sie zaczynac %
+ + dopasowania operatorem ~ (dopasowania regularne) musza sie
+ zaczynac znakiem specjalnym ^.
+ * Poczatek wyszukiwania nie moze sie zaczynac od klas znaków, np.
+ [a-e].
+ * Case-insensitive searches such as ILIKE and ~* do not utilise
+ indexes. Instead, use functional indexes, which are described in
+ section 4.12.
+ * Standardowe locale C musi byc uzyte przy wykonywaniu initdb
+
4.9) Jak moge sprawdzic w jakis sposób "query optimizer" wykonuje moje
zapytanie?
@@ -869,13 +925,12 @@ n
queries) bez wykorzystywania zasobozernego wyszukiwania.
4.12) Jak moge uzywac wyrazen regularnych w zapytaniach i zapytan
- case-insensitive w wyrazeniach regularnych? jak korzystac z indeksów dla
+ case-insensitive w wyrazeniach regularnych? Jak korzystac z indeksów dla
zapytan case-insensitive?
Operator ~ moze byc wykorzystywany do wyszukiwania za pomoca wyrazen
regularnych, a ~* do wyszukiwania case-insensitive z wyrazeniami
- regularnymi. Wariant case-insensitive dla LIKE zostal/ nazwany ILIKE i
- jest dostepny w PostgreSQL 7.1 i pózniejszych wersjach.
+ regularnymi. Wariant case-insensitive dla LIKE zostal/ nazwany ILIKE.
Porównania case-insensitive sa zazwyczaj wykonywane w nastepujacy
sposób:
@@ -897,31 +952,35 @@ n
Type Nazwa wewnetrzna Uwagi
--------------------------------------------------
-"char" char 1 znak
-CHAR(#) bpchar wypel/niane pustymi znakami do podanej dl/ug
-osci
-VARCHAR(#) varchar rozmiar okresla maksymalna dl/ugosc, nie ma
+VARCHAR(n) varchar rozmiar okresla maksymalna dl/ugosc, nie ma
tutaj wypel/niania
+CHAR(n) bpchar wypel/niane pustymi znakami do podanej dl/ug
+osci
TEXT text bez limitu na dl/ugosc l/ancucha
BYTEA bytea zmiennej dl/ugosci tablica bajtów (null-byte
safe)
+"char" char 1 znak
Jesli bedziesz przegladac katalogi systemowe lub komunikaty o bl/edach
czesto spotkasz sie z podanymi powyzej nazwami wewnetrznymi.
- Ostatnie cztery typy powyzej to tzw typy "varlena" (np. pierwsze
+ Pierwsze cztery typy powyzej to tzw typy "varlena" (np. pierwsze
cztery bajty na dysku to dl/ugosc, po których jest data). Dlatego
faktyczna dl/ugosc takiego l/ancucha jest troche wieksza niz
zadeklarowany rozmiar. Te typy takze podlegaja kompresji lub moga byc
przechowywane out-of-line jako TOAST, wiec faktyczne zuzycie miejsca
na dysku moze byc mniejsze niz oczekiwane.
-
- CHAR() jast najlepszym typem do przechowywania l/ancuchów o tej samej
- dl/ugosci. VARCHAR() jest najodpowiedniejszy do przechowywania
- l/ancuchów o róznej dl/ugosci ale okresla on maksymalna jego dl/ugosc.
- TEXT jest najlepszy dla l/ancuchów o dowolnej dl/ugosci, nie
- przekraczajacej 1GB. BYTEA sl/uzy do przechowywania danych binarnych,
- w szczególnosci dla danych zawierajacych NULL bajty.
+ VARCHAR(n) jest najodpowiedniejszy do przechowywania l/ancuchów o
+ róznej dl/ugosci ale okresla on maksymalna jego dl/ugosc. TEXT jest
+ najlepszy dla l/ancuchów o dowolnej dl/ugosci, nie przekraczajacej
+ 1GB.
+
+ CHAR(n) jast najlepszym typem do przechowywania l/ancuchów o tej samej
+ dl/ugosci. CHAR(n) wypel/nia dane do zadanej dl/ugosci, podczas gdy
+ VARCHAR(n) przechowuje jedynie dane dostarczone. BYTEA sl/uzy do
+ przechowywania danych binarnych, w szczególnosci dla danych
+ zawierajacych NULL bajty. Wszystkie typy opisane tutaj maja podobne
+ charakterystyki jesli chodzi o wydajnosc.
4.15.1) Jak moge utworzyc pole które samo zwieksza swoja wartosc?
@@ -1039,16 +1098,16 @@ BYTEA bytea zmiennej dl/ugosci tablica bajt
* range variable, table name, table alias
Liste terminów zwiazanych z bazami danych mozesz znalezc pod tym
- adresem:http://www.comptechnews.com/~reaster/dbdesign.html
+ adresem:http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/
+ glossary/glossary.html.
4.18) Skad bierze sie ten bl/ad "ERROR: Memory exhausted in
AllocSetAlloc()"?
- Jesli uzywasz wersji starszej niz 7.1, upgrade moze rozwiazac ten
- problem. Jest takze mozliwe, ze po prostu wyczerpal/a Ci sie pamiec
- wirtualna (virtual memory) w systemie lub Twój kernel ma zbyt nisko
- ustawione limity dla pewnych zasobów. Spróbuj wykonac nastepujace
- polecenia zanim uruchomisz postmaster'a:
+ Prawdopodobnie wyczerpal/a Ci sie pamiec wirtualna (virtual memory) w
+ systemie lub Twój kernel ma zbyt nisko ustawione limity dla pewnych
+ zasobów. Spróbuj wykonac nastepujace polecenia zanim uruchomisz
+ postmaster'a:
ulimit -d 262144
limit datasize 256m
@@ -1087,24 +1146,31 @@ CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
4.22) Dlaczego zapytania uzywajace IN sa takie wolne?
- Obecnie l/aczymy podzapytania w outer queries poprzez sekwencyjne
- przeszukiwanie wyników podzapytania dla kazdego rzedu z outer query.
- Mozna to ominac zastepujac IN przez EXISTS:
+ W wersjach wczesniejszych niz 7.4 l/aczymy podzapytania w outer
+ queries poprzez sekwencyjne przeszukiwanie wyników podzapytania dla
+ kazdego rzedu z outer query. Jesli podzapytanie zwraca jedynie kilka
+ rzedów a zewnetrzne zapytanie zwraca ich wiele, IN jest najszybsze.
+ Aby przyspieszyc inne zapytania mozna zastapic IN przez EXISTS:
SELECT *
FROM tab
- WHERE col1 IN (SELECT col2 FROM TAB2)
+ WHERE col IN (SELECT subcol FROM subtab)
na:
SELECT *
FROM tab
- WHERE EXISTS (SELECT col2 FROM TAB2 WHERE col1 = col2)
+ WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col)
- Mamy zamiar poprawic to ograniczenie w przyszl/ych wydaniach.
+ Aby to rozwiazanie byl/o szybkie, subcol powinna byc kolumna
+ indeksowana.
+
+ W wersji 7.4 i pózniejszych, IN w rzeczywistosci uzywa tej samej
+ wyrafinowanej techniki l/aczenia jak normalne zapytania i jest
+ preferowane nad uzywaniem EXISTS.
4.23) Jak wykonac "outer join"?
- PostgreSQL 7.1 i pózniejsze wersje maja zaimplementowane outer join
- wykorzystujac standardowa skl/adnie SQL. Ponizej dwa przykl/ady:
+ PostgreSQL ma zaimplementowane outer join wykorzystujac standardowa
+ skl/adnie SQL. Ponizej dwa przykl/ady:
SELECT *
FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
@@ -1113,7 +1179,7 @@ SELECT *
FROM t1 LEFT OUTER JOIN t2 USING (col);
Te dwa identyczne zapytania l/acza kolumne t1.col z kolumna t2.col,
- ale takze zwróca niepol/aczone rzedy w t1 (te które nie pasuja w t2).
+ ale takze zwróca niepol/aczone rzedy w t1 (te, które nie pasuja w t2).
RIGHT join dodal/by niepol/aczone rzedy z tabeli t2. FULL join
zwrócil/by rzedy plus dodatkowo wszystkie rzedy z tabel t1 i t2.
Sl/owo OUTER jest opcjonalne i jest dodawane domyslnie przy LEFT,
@@ -1138,37 +1204,75 @@ SELECT *
katalogi systemowe, nie jest do konca jasne jak zapytanie pomiedzy
róznymi bazami danych powinno sie zachowywac.
- Oczywiscie klient moze l/aczyc sie z róznymi bazami danych i l/aczyc
- informacje w ten sposób uzyskana.
+ contrib/dblink pozwala na wykonywanie zapytan poprzez rózne bazy
+ danych wywol/ujac odpowiednie funkcje. Oczywiscie klient moze l/aczyc
+ sie z róznymi bazami danych i l/aczyc informacje w ten sposób uzyskana
+ po stronie klienta.
4.25) Jak zwrócic w funkcji wiele rzedów lub kolumn?
- Mozesz zwracac zbiory z funkcji PL/pgSQL uzywajac refcursors. Zobacz
- http://developer.postgresql.org/docs/postgres/plpgsql-cursors.html,
- sekcje 23.7.3.3.
+ Mozesz w l/atwy sposób zwracac wiele rzedów lub kolumn uzywajac
+ funkcji z:
+ http://techdocs.postgresql.org/guides/SetReturningFunctions.
+ 4.26) Dlaczego nie moge w sposób pewny tworzyc/usuwac tabel tymczasowych w
+ funkcjach PL/PgSQL?
+
+ PL/PgSQL przechowuje w cache zawartosc funkcji, niepozadanym efektem
+ tego jest to, ze gdy taka funkcja korzysta z tabel tymczasowych, które
+ sa pózniej kasowane i odtwarzane, a funkcja wywol/ywana jest
+ ponownie,jej wywol/anie nie powiedzie sie poniewaz cachowana funkcja
+ wciaz bedzie wskazywac na stara tablice tymczasowa. Rozwiazaniem tego
+ problemu jest uzywanie EXECUTE aby korzystac z tabel tymczasowych w
+ PL/PgSQL. To spowoduje, ze zapytanie bedzie parsowane przy kazdym
+ wywol/aniu funkcji.
+
+ 4.27) Jakie sa mozliwosci replikacji w PostgreSQL?
+
+ Jest kilka opcji aby stosowac replikacje typu master/slave. Ten typ pozwala
+ jedynie masterowi na dokonywanie zmian w bazie danych, a slave moze jedynie
+ te zmiany odczytywac. Na stronie
+ http://gborg.PostgreSQL.org/genpage?replication_research znajduje sie ich
+ lista. Replikacja typu multi-master jest w trakcie prac, opis projektu
+ znajduje sie pod adresem:
+ http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.
+ 4.28) Jakie mozliwosci szyfrowania oferuje PostgreSQL?
+
+ * contrib/pgcrypto zawiera wiele funkcji za pomoca, których mozemy
+ uzywac kryptografii w zapytaniach SQL.
+ * Aby szyfrowac transmisje od klienta do serwera, ten musi miec
+ ustawiona opcje ssl na true w pliku postgresql.conf, odpowiedni
+ wpis host lub hostssl musi wystepowac w pliku pg_hba.conf, oraz
+ sslmode nie moze byc wyl/aczone w kliencie. (Warto zwrócic uwage,
+ ze mozliwe jest takze uzywanie transportów szyfrujaców przez
+ strony trzecie, takie jak stunnel lub ssh, poza natywnym wsparciem
+ dla SSL przez PostgreSQL).
+ * Hasl/a uzytkowników bazy danych sa automatycznie szyfrowane od
+ wersji 7.3. W poprzednich wersjach, nalezy ta funkcjonalnosc
+ poprzez wl/aczenie opcji PASSWORD_ENCRYPTION w postgresql.conf.
+ * Serwer moze dzial/ac uzywajac szyfrowanego systemu plików.
+
Rozwijanie PostgreSQL
5.1) Napisal/em wl/asna funkcje. Kiedy uzyje jej w psql, program zrzuca
pamiec (dump core)?
- Problem moze byc spowodowany przez bardzo wiele rzeczy. Spróbuj
- najpierw przetestowac Twoja funkcje w samodzielnie dzial/ajacym
- programie.
-
+ Problem moze byc spowodowany przez bardzo wiele rzeczy. Spróbuj najpierw
+ przetestowac Twoja funkcje w samodzielnie dzial/ajacym programie.
5.2) Jak moge dodac/zgl/osic nowe typy czy funkcje do PostgreSQL?
- Wyslij Twoje propozycje na liste mailowa pgsql-hackers, wtedy
- prawdopodobnie Twój kod znajdzie sie w katalogu contrib/.
-
+ Wyslij Twoje propozycje na liste mailowa pgsql-hackers, wtedy
+ prawdopodobnie Twój kod znajdzie sie w katalogu contrib/.
5.3) Jak napisac funkcje C zwracajaca krotke (tuple)?
- To wymaga wysil/ku tak olbrzymiego, ze nawet autorzy nigdy tego nie
- prubowali, chociaz z zalozen wynika, ze jest to mozliwe.
-
+ W wersjach PostgreSQL od numeru 7.3, funckje zwracajace tabele sa w pelni
+ wspierane w C, PL/PgSQL i SQL. Sprawdz w Programmer's Guide aby uzyskac
+ wiecej informacji. Przykl/ad funkcji napisanej w C zwracajacej tabele
+ zostal/ umieszczony w contrib/tablefunc.
5.4) Zmienil/em plik zródl/owy. Dlaczego po rekompilacji nie widac zmiany?
- Pliki Makefiles nie maja dorzuconych odpowiednich zaleznosci dla
- plików nagl/ówkowych (include files). Wykonaj najpierw make clean, a
- nastepnie ponownie make. Jesli uzywasz GCC mozesz uzyc opcji
- --enable-depend przy wykonywaniu configure aby
+ Pliki Makefiles nie maja dorzuconych odpowiednich zaleznosci dla plików
+ nagl/ówkowych (include files). Wykonaj najpierw make clean, a nastepnie
+ ponownie make. Jesli uzywasz GCC mozesz uzyc opcji --enable-depend przy
+ wykonywaniu configure aby kompilator mógl/ okreslic zaleznosci
+ samodzielnie.
diff --git a/doc/src/FAQ/FAQ_polish.html b/doc/src/FAQ/FAQ_polish.html
index 56a052cf66..85e04fbaf7 100644
--- a/doc/src/FAQ/FAQ_polish.html
+++ b/doc/src/FAQ/FAQ_polish.html
@@ -15,7 +15,9 @@
Frequently Asked Questions (FAQ) o PostgreSQL
- Ostatnia aktualizacja: Thu Apr 18 00:44:51 EDT 2002
+ Ostatnia aktualizacja: Sobota Luty 7 22:16:21 EST 2004
+
+ Ostatnia aktualizacja t³umaczenia: Pi±tek Marzec 5 19:31:12 EST 2004
Obecny maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
@@ -24,16 +26,15 @@
"mailto:m.mazurek@netsync.pl">m.mazurek@netsync.pl)
-
Najbardziej aktualn± wersjê tego dokumentu mo¿na znale¼æ pod
adresem:
http://www.PostgreSQL.org/docs/faq-english.html.
+ "http://www.Postgresql.org/docs/faqs/FAQ.html">http://www.PostgreSQL.org/docs/faqs/FAQ.html.
Odpowiedzi na pytania dotycz±ce konkretnych systemów operacyjnych
mo¿na znale¼æ pod adresem:
http://www.PostgreSQL.org/users-lounge/docs/faq.html.
+ "http://www.PostgreSQL.org/docs/index.html">http://www.PostgreSQL.org/docs/index.html.
Pytania ogólne
@@ -64,20 +65,19 @@
PostgreSQL?
2.2) Jakie istniej± narzêdzia pozwalaj±ce na dostêp do
PostgreSQL przez www?
- 2.3) Czy istnieje jakie¶ GUI dla PostgreSQL?
- Narzêdzie do raportowania? Interfejs dla "embedded query language"?
+ 2.3) Czy istnieje jakie¶ GUI dla PostgreSQL?
2.4) Za pomoc± jakich jêzyków programowania mo¿na
siê komunikowaæ z PostgreSQL?
- Pytania administratora
+ 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:
Bad System Call lub "core dumped". Dlaczego?
3.3) Podczas startu postmaster'a,
- otrzymujê komunikato 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
@@ -87,9 +87,9 @@
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) Co to za pliki typu pg_sorttempNNN.NN
- , które znajduj± siê w katalogu z plikami bazy 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
@@ -98,7 +98,8 @@
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?
+ 4.4) Jak usun±æ kolumnê z tabeli lub zmieniæ jej
+ typ?
4.5) Jaki jest maksymalny rozmiar dla rzêdu,
tabeli i bazy danych?
4.6) Jak du¿o miejsca w bazie danych jest
@@ -148,8 +149,13 @@
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
+ PostgreSQL?
+ 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)?
@@ -166,7 +172,8 @@
1.1) Co to jest PostgreSQL? Jak to wymawiaæ?
- PostgreSQL wymawia siê Post-Gres-kju-el.
+ 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.
@@ -181,11 +188,14 @@
komunikuj±cych siê poprzez mailowe listy dyskusyjne PostgreSQL.
Obecnym koordynatorem jest Marc G. Fournier (scrappy@PostgreSQL.org). (Zobacz
- poni¿ej jak siê przy³±czyæ). Ta grupa ludzi jest odpowiedzialna za
- ca³y rozwój PostgreSQL.
+ 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
+ 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
@@ -243,11 +253,11 @@
Klient
- Mo¿liwa jest kompilacja bibliteki C libpq C, psql oraz
+
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 win31.mak jest do³±czony
+ 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.
@@ -257,9 +267,18 @@
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: MS Windows FAQ
- na naszych stronach. Nie planujemy tworzyæ portu przeznaczonego
- docelowo dla platformy Microsoft.
+ "http://www.postgresql.org/docs/faqs/text/FAQ_MSWIN">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
+ 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.
+
1.5) Sk±d mo¿na ¶ci±gn±æ PostgreSQL?
@@ -324,14 +343,13 @@
'#PostgreSQL' "$USER" irc.phoenix.net.
Lista firm oferuj±cych wsparcie na zasadach komercyjnych znajduje
- siê pod adresem: http://www.postgresql.org/users-lounge/commercial-support.html.
+ siê pod adresem: http://techdocs.postgresql.org/companies.php.
1.7) Jaka jest ostatnia dostêpna wersja?
- Ostatnia dostêpna wersja PostgreSQL to 7.2.1.
+ Ostatnia dostêpna wersja PostgreSQL to 7.4.1.
- Planujemy publikowanie kolejnych wersji co cztery miesi±ce.
+ Planujemy publikowanie kolejnych wersji co sze¶æ do o¶miu miesiêcy.
1.8) Jaka dokumentacja jest dostêpna?
@@ -339,8 +357,8 @@
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/users-lounge/docs/.
-
+ "http://www.PostgreSQL.org/docs">http://www.PostgreSQL.org/docs.
+
Istniej± tak¿e dwie ksi±¿ki dostêpne online pod adresami
http://www.PostgreSQL.org/docs/awbook.html
@@ -348,14 +366,15 @@
"http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook/.
Lista ksi±¿ek o PostgreSQL, które mo¿na kupiæ znajduje siê pod adresem
http://www.postgresql.org/books/.
+ "http://techdocs.PostgreSQL.org/techdocs/bookreviews.php">
+ http://techdocs.PostgreSQL.org/techdocs/bookreviews.php.
Zbiór technicznych artyku³ów o PostgreSQL znajduje siê pod adresem http://techdocs.postgresql.org/.
+ "http://techdocs.PostgreSQL.org">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,
- aggregatów itd.
+ agregatów itd.
Na naszej stronie mo¿na znale¼æ du¿o wiêcej dokumentacji.
@@ -409,8 +428,8 @@
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, maj±c pewno¶æ ¿e s± to poprawki
- wysokiej jako¶ci.
+ 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?
@@ -437,52 +456,37 @@
oraz wyrafinowany system blokowania. Mamy tak¿e w³a¶ciow¶ci których
inni nie posiadaj±, jak typy definiowane przez u¿ytkownika,
dziedziczenie, rules, multi-version concurrency control, która
- redukuje problemy z blokowaiem (lock contention).
+ redukuje problemy z blokowaniem (lock contention).
Wydajno¶æ
- PostgreSQL dzia³a w dwóch trybach. Standardowy tryb fsync
- zrzuca ka¿d± zakoñczon± transakcjê na dysk, gwarantuj±c w ten
- sposób to, ¿e je¶li system operacyjny siê zawiesi lub straci
- zasilanie wci±gu kilku nastepnych sekund, wszystkie Twoje dane
- zostan± bezpiecznie zapisane na dysku. W tym trybie, jeste¶my
- wolniejsi ni¿ wiêkszo¶æ komercyjnych baz danych, czê¶ciowo dlatego
- ¿e niewiele z nich wykonuje taki sposób zapisywania danych jako
- domy¶lne ustawienie.
- W trybie no-fsync z regu³y jeste¶my szybsi ni¿ komercyjne
- bazy danych, chocia¿ w tym wypadku zawieszenie siê systemu mo¿e
- spowodowaæ uszkodzenie danych. Pracujemy nad tym, aby stworzyæ
- po¶redni tryb, który powoduje mniejsz± redukcjê wydajno¶ci ni¿ tryb
- fsync i pozwoli na integralno¶æ danych w przeci±gu 30 sekund do
- za³amania siê systemu operacyjnego.
-
- Porównuj±c do MySQL czy innych prostych baz danych, jeste¶my
- wolniejsi przy wykonywaniu insertów/updatów przez narzut
- spowodowany przez transakcje. Oczywi¶cie MySQL nie posiada ¿adnej z
- wymienionych wy¿ej mo¿liwo¶ci. PostgreSQL zosta³ zbudowany
- aby byæ DBMS elastycznym i bogatym z ró¿norakie mo¿liwo¶ci,
- aczkolwiek dbamy, aby poprawiaæ jego wydajno¶æ poprzez analizê
- kodu ¼ród³owego i profilowanie. Ciekawe porównanie PostgreSQL i MySQL
- mo¿na znale¼æ pod adresem http://openacs.org/why-not-mysql.html
-
-
- Ka¿de po³±czenie klienta jest obs³ugiwane przez nas poprzez
- stworzenie nowego procesu Unixowego. Procesy backendu dziel±
- bufory danych oraz informacjê o blokadach. U¿ywaj±c wielu
- procesorów, ró¿ne backendy mog± bez problemu dzia³aæ na ró¿nych
- procesorach.
+ Wydajno¶æ PostgreSQL jest podobna do innych komercyjnych i open
+ source baz danych. W niektórych sytuacjach jest szybszy w
+ niektórych wolniejszy. W porównianiu do MySQL lub mniejszych baz
+ danych jeste¶my szybsi przy wielu u¿ytkownikach, skomplikowaych
+ zapytaniach i du¿ym obci±¿eniu podczas. MySQL jest szybszy dla
+ prostych SELECTów wykonywanych przez niewielu u¿ytkowników.
+ Spowodowane jest to narzutem, który siê pojawia przy transakcjach.
+ Oczywi¶cie MySQL nie ma wiêkszo¶ci z rozwi±zañ opisanych powy¿ej
+ w sekcji Mo¿liwo¶ci . PostgreSQL zosta³ stworzony z my¶l± o
+ stabilno¶ci, oraz szerokiej gamie mo¿liwo¶ci, ale mimo to staramy
+ siê w ka¿dej wersji poprawiaæ jego wydajno¶æ.
+ Ciekawe porównanie PostgreSQL i MySQL mo¿na znale¼æ pod adresem http://openacs.org/philosophy/why-not-mysql.html
+ Dodatkowo, MySQL jest firm±, która dystrybuuje jej produkty poprzez
+ zasadê Open Source i wymaga wykupienia licencji w przypadku
+ tworzenia close-source software, co ie ma miejsca w przypadku
+ PostgreSQL.
-
Stabilno¶æ
Zdajemy sobie sprawê, ¿e DBMS musi byæ stabilny,
w przeciwnym wypadku jest bez warto¶ci. Staramy siê publikowaæ kod
stabilny, dobrze przetestowany, z minimum mo¿liwych b³êdów. Ka¿de
- wydanie poprzedza conajmniej miesi±c testów wersji beta. Patrz±c na
+ wydanie poprzedza co najmniej miesi±c testów wersji beta. Patrz±c na
historiê wydañ PostgreSQL widaæ, ¿e dostarczamy stabilne, dobrze
sprawdzone wersje, które s± gotowe do u¿ycia w ¶rodowisku
produkcyjnym. My¶limy, ¿e proces publikowania kolejnych wersji
@@ -521,20 +525,20 @@
PostgreSQL?
PostgreSQL korzysta z najlepszej infrastruktury od samego pocz±tku
- istnienia projektu, tzn. sze¶ciu lat. Wszystko to zawdziêczamy Marc'owi
- Fournier'owi, który stworzy³ t± infrastrukturê i zarz±dza ni± od
- lat.
+ 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
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óznych miesiêcznych, czy jednorazowych
+ 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://www.pgsql.com/pg_goodies
+ "http://store.pgsql.com/shopping/">http://store.pgsql.com/shopping/
gdzie opisane jest jak to zrobiæ.
Chocia¿ na stronie wspomniana jest nazwa PostgreSQL Inc, "datki"
@@ -542,6 +546,9 @@
przeznaczane na finansowanie jakiejkolwiek firmy. Je¶li wolisz,
mo¿esz wys³aæ czek na adres kontaktowy.
+ Je¶li mo¿esz siê pochwaliæ udanymi wdro¿eniami PostgreSQL, prosimy
+ aby¶ zg³osi³ nam to na stronie: http://advocacy.postgresql.org.
User Client Questions
@@ -551,25 +558,21 @@
Dostêpne s± dwa driwery ODBC: PsqlODBC
i OpenLink ODBC.
- PsqlODBC jest do³±czony do ¼róde³. Wiêcej informacji na jego temat
- mo¿esz znale¼æ pod adresem: ftp://ftp.PostgreSQL.org/pub/odbc/.
-
+ Mo¿esz pobraæ PsqlODBC z adresu http://gborg.postgresql.org/project/psqlodbc/projdisplay.php
+
+
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 plaformie któr± wspiera (Win, Mac, Unix, VMS).
+ 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: postgres95@openlink.co.uk.
- Sprawd¼ tak¿e rozdzia³ o ODBC
- w "Programmer's Guide".
-
2.2) Jakie istniej± narzêdzia pozwalaj±ce na dostêp do
PostgreSQL przez www?
@@ -577,59 +580,56 @@
przez www mo¿esz znale¼æ pod adresem:
http://www.webreview.com
- Inny znajduje siê pod adresem: http://www.phone.net/home/mwm/hotlist/.
-
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.
-
- 2.3) Czy istnieje jakie¶ GUI dla PostgreSQL?
- Narzêdzie do raportowania? Interfejs dla "embedded query
- language"?
-
- Mamy ca³kiem mi³y interfejs graficzny, który zosta³ nazwany
- pgaccess i jest on dostarczany jako czê¶æ ¼róde³.
- pgaccess posiada tak¿e generator raportów. Mo¿na go znale¼æ
- pod adresem http://www.flex.ro/pgaccess
-
- Udostêpnili¶my tak¿e ecpg, który jest "embedded SQL query
- language interface" dla jêzyka C.
-
- 2.4) Za pomoc± jakich jêzyków programowania
+ modu³u CGI.pl lub mod_perl.
+
+ 2.3) Czy istnieje jakie¶ GUI dla PostgreSQL?
+
+
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
+ interfejs dla PostgreSQL.
+
+
+ Wiêcej informacji na ten temat znajduje siê pod adresem See
+ http://techdocs.postgresql.org/guides/GUITools.
+
+
2.4) Za pomoc± jakich jêzyków programowania
mo¿na siê komunikowaæ z PostgreSQL?
- Mamy wsparcie dla:
+ 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:
+
- C (libpq)
- - C++ (libpq++)
-
- Embedded C (ecpg)
- Java (jdbc)
- - Perl (perl5)
-
- - ODBC (odbc)
-
- Python (PyGreSQL)
- TCL (libpgtcl)
-
- - C Easy API (libpgeasy)
-
- - Embedded HTML (PHP z http://www.php.net)
+ Inne interfejsy s± dostêpne pod adresem:
+ http://gborg.postgresql.org w
+ sekcji Drivers/Interfaces.
- Pytania administratora
+ Pytania dotycz±ce administracji
3.1) Jak mogê zainstalowaæ PostgreSQL w innej
lokalizacji ni¿ /usr/local/pgsql?
@@ -677,7 +677,8 @@
SEMMNS i SEMMNI j±dra twojego systemu.
Niedzia³aj±ce semafory mog± spowodowaæ niepoprawne zamkniêcie
- systemu w czasie intensywnego korzystania z bazy.
+ 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
@@ -692,8 +693,7 @@
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.
+ $PGDATA/pg_hba.conf. To zmiany pozwol± na po³±czenia TCP/IP.
3.6) Jak powinienem skonfigurowaæ system baz
danych aby uzyskaæ lepsz± wydajno¶æ?
@@ -709,7 +709,7 @@
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
- powodowany przez transakcjê. Przy du¿ych zmianach w danych, warto
+ 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.
@@ -825,19 +825,12 @@
maksymaln± liczbê procesów backendu to obawa o wyczerpanie zasobów
systemu.
- W wersjach PostgreSQL wcze¶niejszych ni¿ 6.5, maksymalna liczba
- backendów by³a ustawiona na 64, a zmiana tej warto¶ci wymaga
- rekompliacji po zmianie sta³ej MaxBackendId w pliku
- include/storage/sinvaladt.h.
+ 3.9) Jakie pliki znajduj± siê w pg_temp?
- 3.9) Co to s± za pliki typu:
- pg_sorttempNNN.NN,
- które znajduj± siê w katalogu z plikami bazy danych?
-
- S± to tymczasowe pliki utworzone przez executor. Dla przyk³adu,
- je¶li jaka¶ operacja sortowania jest wymagana do wykonania
+
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¿
- paratmetr backendu
+ parametr backendu
-S ustawi³ do wykorzystania, wtedy tymczasowe pliki s± u¿ywane
do przechowywania tych danych.
@@ -846,6 +839,25 @@
poprawnie podczas operacji sortowania. Je¶li w danym momencie nie
dzia³aj± ¿adne procesy backendów mozesz spokojnie usun±æ pliki
pg_tempNNN.NN.
+
+ 3.9) Dlaczego konieczne jest przy upgradzie
+ PostgreSQL korzystanie ze skryptów dump i restore?
+
+ 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
+ poprzednimi wersjami PostgreSQL. dump pozwala na wydostanie danych w
+ 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.
+
Pytania dotycz±ce u¿ywania
@@ -870,6 +882,15 @@
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:
+
+ SELECT col
+ FROM tab
+ ORDER BY random()
+ LIMIT 1;
+
+
4.3) Jak mogê uzyskaæ listê wszystkich tabel
czy innych rzeczy pod psql?
@@ -881,37 +902,53 @@
-E wtedy po wykonaniu polecenia z backslashem wy¶wietlane
bêdzie zapytanie, które w rzeczywisto¶ci jest wykonywane.
- 4.4) Jak usun±æ kolumnê z tabeli?
-
- Nie mamy zaimplementowanego ALTER TABLE DROP
- COLUMN, ale mo¿esz zrobiæ tak:
+ 4.4) Jak usun±æ kolumnê z tabeli lub zmieniæ
+ jej typ?
+
+ DROP COLUMNT zosta³o dodane w wersji 7.3 przy poleceniu ALTER
+ TABLE DROP COLUMN. We wcze¶ñiejszych wersjach mo¿esz zrobiæ tak:
+
- SELECT ... -- wybierz zawarto¶æ wszystkich kolumn poza t± jedn± której chcesz siê pozbyæ
+ BEGIN;
+ LOCAL TABLE old_table;
+ 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:
+
+
+ BEGIN;
+ ALTER TABLE tab ADD COLUMN new_col new_data_type;
+ UPDATE tab SET new_col = CAST(old_col AS new_data_type);
+ ALTER TABLE tab DROP COLUMN old_col;
+ COMMIT;
+
+
4.5) Jaki jest maksymalny rozmiar dla rzêdu,
tabeli i bazy danych?
Oto wszystkie ograniczenia:
- Maksymalny rozmiar dla bazdy danych? nieograniczony ( istniej± bazy danych o wielko¶ci 500 GB databases )
- Maksymalny rozmiar dla tabeli? 16 TB
- Maksymalny rozmiar dla rzêdu? nieograniczony w 7.1 i pó¼niejszych
- Maksymalny rozmiar pola? 1 GB w 7.1 and later
+ 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 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 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.
- Maksymalny rozmiar tabeli, czyli 16 TB nie wymaga od systemu
+
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.
@@ -957,6 +994,9 @@
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.
+
4.7) Jak mogê sprawdziæ jakie tabele, klucze,
bazy danych i u¿ytkownicy s± utworzeni?
@@ -996,17 +1036,39 @@
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³ indeksów poniew±z jedynie ma³a czê¶c z
- tabeli jest zwracana.
+ 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
+ FROM tab
+ ORDER BY col [ DESC ]
+ 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.
Kiedy u¿ywa siê operatorów dopasuj±cych takich jak
- LIKE lub ~, indeksy bêd± u¿ywane jedynie je¶li
- pocz±tek wyszukiwania jest oparty na pocz±tku ³añcucha tekstu.
- Dlatego, aby u¿ywac indeksów,
- dopasowania operatorem LIKE nie mog± siê zaczynaæ
- %, a dopasowania operatorem ~ (dopasowania regularne)
- musz± siê zaczynaæ znakiem specjalnym ^.
-
+ LIKE lub ~, indeksy bêd± u¿ywane jedynie w
+ pewnych wypadkach:
+
+ - Pocz±tek wyszukiwania jest oparty na pocz±tku ³añcucha tekstu.
+
+ - wzorce LIKE nie mog± siê zaczynaæ %
+
- dopasowania operatorem ~ (dopasowania regularne)
+ musz± siê zaczynaæ znakiem specjalnym ^.
+
+ - Pocz±tek wyszukiwania nie mo¿e siê zaczynaæ od klas znaków, np.
+ [a-e].
+
- Case-insensitive searches such as ILIKE and ~* do not utilise
+ indexes. Instead, use functional indexes, which are described in
+ section 4.12.
+
- Standardowe locale C musi byæ uzyte przy wykonywaniu initdb
+
4.9) Jak mogê sprawdziæ w jakis sposób "query
optimizer" wykonuje moje zapytanie?
@@ -1051,15 +1113,14 @@
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?
+ Jak korzystaæ z indeksów dla zapytañ case-insensitive?
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
- ILIKE i jest dostêpny w PostgreSQL 7.1 i pó¼niejszych
- wersjach.
+ ILIKE.
Porównania case-insensitive s± zazwyczaj wykonywane w nastêpuj±cy
sposób:
@@ -1087,31 +1148,41 @@
Type Nazwa wewnêtrzna Uwagi
--------------------------------------------------
-"char" char 1 znak
-CHAR(#) bpchar wype³niane pustymi znakami do podanej d³ugo¶ci
-VARCHAR(#) varchar rozmiar okre¶la maksymaln± d³ugo¶æ, nie ma tutaj wype³niania
+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.
- Ostatnie cztery typy powy¿ej to tzw typy "varlena" (np. pierwsze
+
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.
- CHAR() jast najlepszym typem do przechowywania
- ³añcuchów o tej samej d³ugo¶ci. VARCHAR() jest
+ VARCHAR(n) jest
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.
- BYTEA s³u¿y do przechowywania danych binarnych,
- w szczególno¶ci dla danych zawieraj±cych NULL bajty.
+ ale okre¶la on maksymaln± jego d³ugo¶æ.
+
+ 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
+ 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¶æ.
4.15.1) Jak mogê utworzyæ pole które samo
zwiêksza swoj± warto¶æ?
@@ -1188,7 +1259,7 @@ BYTEA bytea zmiennej d
4.15.4) Dlaczego numery sekwencji nie s±
ponownie u¿ywane przy przerwaniu transakcji?
- Sk±d siê bior± luki w numerowaniu kolumny tabeli
+ Sk±d siê bior± luki w numerowaniu kolumny tabeli
sekwancjami/SERIALem?
Aby poprawiæ zbie¿no¶æ (concurrency), warto¶ci sekwencji s±
@@ -1197,8 +1268,7 @@ BYTEA bytea zmiennej d
numerowaniu z przerwanych transakcji.
4.16) Co to jest OID? Co to
- jest
- TID?
+ jest TID?
OID s± PostgreSQL'owym rozwi±zaniem problemu
unikalnych numerów rzêdów. Ka¿dy rz±d tworzony przez PostgreSQL
@@ -1274,15 +1344,15 @@ BYTEA bytea zmiennej d
Listê terminów zwi±zanych z bazami danych mo¿esz znale¼æ pod tym
- adresem:http://www.comptechnews.com/~reaster/dbdesign.html
+ adresem:http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html.
4.18) Sk±d bierze siê ten b³±d "ERROR:
Memory exhausted in AllocSetAlloc()"?
- Je¶li u¿ywasz wersji starszej ni¿ 7.1, upgrade mo¿e rozwi±zaæ ten
- problem. Jest tak¿e mozliwe, ¿e po prostu wyczerpa³a Ci siê pamiêæ
- wirtualna (virtual memory) w systemie lub Twój kernel ma zbyt nisko
+
+ 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:
@@ -1332,29 +1402,38 @@ BYTEA bytea zmiennej d
4.22) Dlaczego zapytania u¿ywaj±ce
IN
sa takie wolne?
- Obecnie ³±czymy podzapytania w outer queries poprzez sekwencyjne
- przeszukiwanie wyników podzapytania dla ka¿dego rzêdu z outer query.
- Mo¿na to omin±æ zastêpuj±c 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 *
FROM tab
- WHERE col1 IN (SELECT col2 FROM TAB2)
+ WHERE col IN (SELECT subcol FROM subtab)
na:
SELECT *
FROM tab
- WHERE EXISTS (SELECT col2 FROM TAB2 WHERE col1 = col2)
+ WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col)
- Mamy zamiar poprawiæ to ograniczenie w przysz³ych wydaniach.
-
+
+ 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.
+
4.23) Jak wykonaæ "outer join"?
- PostgreSQL 7.1 i pó¼niejsze wersje maj± zaimplementowane outer join
- wykorzystuj±c standardow± sk³adnie SQL. Poni¿ej dwa przyk³ady:
+ PostgreSQL ma zaimplementowane outer join
+ wykorzystuj±c standardow± sk³adniê SQL. Poni¿ej dwa przyk³ady:
SELECT *
@@ -1367,7 +1446,7 @@ BYTEA bytea zmiennej d
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).
+ 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
@@ -1401,19 +1480,63 @@ BYTEA bytea zmiennej d
katalogi systemowe, nie jest do koñca jasne jak zapytanie pomiêdzy
ró¿nymi bazami danych powinno siê zachowywaæ.
- 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.
4.25) Jak zwróciæ w funkcji wiele rzêdów lub
kolumn?
- Mo¿esz zwracaæ zbiory z funkcji PL/pgSQL u¿ywaj±c
- refcursors. Zobacz
- http://developer.postgresql.org/docs/postgres/plpgsql-cursors.html,
- sekcjê 23.7.3.3.
-
+ Mo¿esz w ³atwy sposób zwracaæ wiele rzêdów lub kolumn u¿ywaj±c
+ funkcji z: http://techdocs.postgresql.org/guides/SetReturningFunctions.
+
4.26) Dlaczego nie mogê w sposób pewny
+ tworzyæ/usuwaæ tabel tymczasowych w funkcjach PL/PgSQL?
+
+ 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
+ pozwala jedynie masterowi na dokonywanie zmian w bazie danych, a
+ 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.
+
+
+
+
+
+ - contrib/pgcrypto zawiera wiele funkcji za pomoc±, których mo¿emy u¿ywaæ
+ kryptografii w zapytaniach SQL.
+
- Aby szyfrowaæ transmisjê od klienta do serwera, ten musi mieæ
+ ustawion± opcjê ssl na true w pliku postgresql.conf, odpowiedni
+ wpis host lub hostssl musi wystêpowaæ w pliku pg_hba.conf, oraz
+ sslmode nie mo¿e byæ wy³±czone w kliencie. (Warto zwróciæ uwagê, ¿e
+ mo¿liwe jest tak¿e u¿ywanie transportów szyfruj±ców przez strony
+ trzecie, takie jak stunnel lub ssh, poza natywnym wsparciem dla SSL
+ przez PostgreSQL).
+
- Has³a u¿ytkowników bazy danych s± automatycznie szyfrowane od
+ wersji 7.3. W poprzednich wersjach, nale¿y t± funkcjonalno¶æ poprzez
+ w³±czenie opcji PASSWORD_ENCRYPTION w postgresql.conf.
+
- Serwer mo¿e dzia³aæ u¿ywaj±c szyfrowanego systemu plików.
+
+
+
Rozwijanie PostgreSQL
5.1) Napisa³em w³asn± funkcjê. Kiedy u¿yjê jej
@@ -1432,8 +1555,12 @@ BYTEA bytea zmiennej d
5.3) Jak napisaæ funkcjê C zwracaj±c± krotkê
(tuple)?
-
To wymaga wysi³ku tak olbrzymiego, ¿e nawet autorzy nigdy tego nie
- prubowali, chocia¿ z zalo¿eñ wynika, ¿e jest to mo¿liwe.
+
+ 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.
+
5.4) Zmieni³em plik ¼ród³owy. Dlaczego po
rekompilacji nie widaæ zmiany?
@@ -1443,6 +1570,8 @@ BYTEA bytea zmiennej d
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.
+