1
0
mirror of https://github.com/postgres/postgres.git synced 2025-06-22 02:52:08 +03:00

Update Polish FAQ, from Marcin Mazurek.

This commit is contained in:
Bruce Momjian
2004-03-05 19:29:23 +00:00
parent 3783ed3420
commit aef037723f
2 changed files with 591 additions and 358 deletions

View File

@ -15,7 +15,9 @@
<H1>Frequently Asked Questions (FAQ) o PostgreSQL</H1>
<P>Ostatnia aktualizacja: Thu Apr 18 00:44:51 EDT 2002</P>
<P>Ostatnia aktualizacja: Sobota Luty 7 22:16:21 EST 2004</P>
<P>Ostatnia aktualizacja t<>umaczenia: Pi<50>tek Marzec 5 19:31:12 EST 2004</P>
<P>Obecny maintainer: Bruce Momjian (<A href=
"mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR>
@ -24,16 +26,15 @@
"mailto:m.mazurek@netsync.pl">m.mazurek@netsync.pl</A>)<BR>
</P>
<P>Najbardziej aktualn<6C> wersj<73> tego dokumentu mo<6D>na znale<6C><65> pod
adresem:
<A href=
"http://www.Postgresql.org/docs/faq-english.html">http://www.PostgreSQL.org/docs/faq-english.html</A>.</P>
"http://www.Postgresql.org/docs/faqs/FAQ.html">http://www.PostgreSQL.org/docs/faqs/FAQ.html</A>.</P>
<P>Odpowiedzi na pytania dotycz<63>ce konkretnych system<65>w operacyjnych
mo<6D>na znale<6C><65> pod adresem:
<A href=
"http://www.PostgreSQL.org/users-lounge/docs/faq.html">http://www.PostgreSQL.org/users-lounge/docs/faq.html</A>.</P>
"http://www.PostgreSQL.org/docs/index.html">http://www.PostgreSQL.org/docs/index.html</A>.</P>
<HR>
<H2 align="center">Pytania og<6F>lne</H2>
@ -64,20 +65,19 @@
PostgreSQL?<BR>
<A href="#2.2">2.2</A>) Jakie istniej<65> narz<72>dzia pozwalaj<61>ce na dost<73>p do
PostgreSQL przez www?<BR>
<A href="#2.3">2.3</A>) Czy istnieje jakie<69> GUI dla PostgreSQL?
Narz<72>dzie do raportowania? Interfejs dla "embedded query language"?<BR>
<A href="#2.3">2.3</A>) Czy istnieje jakie<69> GUI dla PostgreSQL?<BR>
<A href="#2.4">2.4</A>) Za pomoc<6F> jakich j<>zyk<79>w programowania mo<6D>na
si<73> komunikowa<77> z PostgreSQL?<BR>
<H2 align="center">Pytania administratora</H2>
<H2 align="center">Pytania dotycz<EFBFBD>ce administracji</H2>
<A href="#3.1">3.1</A>) Jak mog<6F> zainstalowa<77> PostgreSQL w innej
lokalizacji ni<6E> <I>/usr/local/pgsql</I>?<BR>
<A href="#3.2">3.2</A>) Podczas startu <I>postmaster'a</I>,
otrzymuj<75> komunikat:
<I>Bad System Call</I> lub "core dumped". Dlaczego?<BR>
<A href="#3.3">3.3</A>) Podczas startu <I>postmaster'a</I>,
otrzymuj<75> komunikato b<><62>dzie: <I>IpcMemoryCreate</I>. Dlaczego?<BR>
otrzymuj<75> komunikat o b<><62>dzie: <I>IpcMemoryCreate</I>. Dlaczego?<BR>
<A href="#3.4">3.4</A>) Podczas startu <I>postmaster'a</I>,
otrzymuj<75> komunikat o b<><62>dzie: <I>IpcSemaphoreCreate</I>. Dlaczego?<BR>
<A href="#3.5">3.5</A>) W jaki spos<6F>b mog<6F> kontrolowa<77> po<70><6F>czenia z
@ -87,9 +87,9 @@
<A href="#3.7">3.7</A>) Jakie s<> mo<6D>liwo<77>ci wyszukiwania b<><62>d<EFBFBD>w?<BR>
<A href="#3.8">3.8</A>) Sk<53>d si<73> bierze komunikat: <I>"Sorry, too many
clients"</I> podczas pr<70>by po<70><6F>czenia si<73> z baz<61> danych?<BR>
<A href="#3.9">3.9</A>) Co to za pliki typu <I>pg_sorttempNNN.NN</I>
, kt<6B>re znajduj<75> si<73> w katalogu z plikami bazy danych?<BR>
<A href="#3.9">3.9</A>) Jakie pliki znajduj<75> si<73> w <I>pg_temp</I>?<BR>
<A href="#3.10">3.10</A>) Dlaczego konieczne jest przy upgradzie
PostgreSQL korzystanie ze skrypt<70>w dump i restore?<BR>
<H2 align="center">Pytania dotycz<63>ce u<>ytkowania</H2>
<A href="#4.1">4.1</A>) Jaka jest r<><72>nica pomi<6D>dzy kursorami
@ -98,7 +98,8 @@
jedynie kilka pierwszych wynik<69>w zapytania?<BR>
<A href="#4.3">4.3</A>) Jak mog<6F> uzyska<6B> list<73> wszystkich tabel czy
innych rzeczy pod <I>psql</I>?<BR>
<A href="#4.4">4.4</A>) Jak usun<75><6E> kolumn<6D> z tabeli?<BR>
<A href="#4.4">4.4</A>) Jak usun<75><6E> kolumn<6D> z tabeli lub zmieni<6E> jej
typ?<BR>
<A href="#4.5">4.5</A>) Jaki jest maksymalny rozmiar dla rz<72>du,
tabeli i bazy danych?<BR>
<A href="#4.6">4.6</A>) Jak du<64>o miejsca w bazie danych jest
@ -148,8 +149,13 @@
baz danych jednocze<7A>nie?<BR>
<A href="#4.25">4.25</A>) Jak zwr<77>ci<63> w funkcji wiele rz<72>d<EFBFBD>w lub
kolumn?<BR>
<A href="#4.26">4.26</A>) Dlaczego nie mog<6F> w spos<6F>b pewny
tworzy<7A>/usuwa<77> tabel tymczasowych w funkcjach PL/PgSQL?<BR>
<A href="#4.27">4.27</A>) Jakie s<> mo<6D>liwo<77>ci replikacji w
PostgreSQL?<BR>
<A href="#4.28">4.28</A>) Jakie mo<6D>liwo<77>ci szyfrowania oferuje
PostgreSQL?<BR>
<H2 align="center">Rozwijanie PostgreSQL</H2>
<A href="#5.1">5.1</A>) Napisa<73>em w<>asn<73> funkcj<63>. Kiedy u<>yj<79> jej w
<I>psql</I>, program zrzuca pami<6D><69> (dump core)?<BR>
@ -166,7 +172,8 @@
<H4><A name="1.1">1.1</A>) Co to jest PostgreSQL? Jak to wymawia<69>?</H4>
<P>PostgreSQL wymawia si<73> <I>Post-Gres-kju-el</I>.</P>
<P>PostgreSQL wymawia si<73> <I>Post-Gres-kju-el</I>. Cz<43>sto podczas
rozm<7A>w u<>ywany jest termin "Postgres"</P>
<P>PostgreSQL jest rozszerzeniem systemu zarz<72>dzania bazami danych -
POSTGRES, kolejn<6A> generacj<63> rozwojowego prototypu <SMALL>DBMS</SMALL>.
@ -181,11 +188,14 @@
komunikuj<75>cych si<73> poprzez mailowe listy dyskusyjne PostgreSQL.
Obecnym koordynatorem jest Marc G. Fournier (<A href=
"mailto:scrappy@PostgreSQL.org">scrappy@PostgreSQL.org</A>). (Zobacz
poni<EFBFBD>ej jak si<73> przy<7A><79>czy<7A>). Ta grupa ludzi jest odpowiedzialna za
ca<63>y rozw<7A>j PostgreSQL.</P>
pytanie <A href="#1.6">1.6</A> jak si<73> przy<7A><79>czy<7A>). Ta grupa ludzi jest
odpowiedzialna za ca<EFBFBD>y rozw<7A>j PostgreSQL. PostgreSQL jest projektem
nie kontrolowanym przez <20>adn<64> firm<72>, aby wzi<7A><69> udzia<69> w jego rozwoju
sprawd<77>, <A href="http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html">
http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html</a></P>
<P>Autorami PostgreSQL 1.01 byli Andrew Yu and Jolly Chen.
Wiele innych os<6F>b pomog<6F>o przy portowaniu, testowaniu, debugowaniu, i
Wiele innych os<6F>b pomog<6F>o przy portowaniu, testowaniu, debugowaniu i
rozwijaniu kodu. Oryginalny kod Postgresa, na kt<6B>rym zosta<74> oparty
PostgreSQL, by<62> wysi<73>kiem student<6E>w oraz pracownik<69>w pracuj<75>cych pod
kierownictwem profesora Michael'a Stonebraker'a z University of
@ -243,11 +253,11 @@
<P><STRONG>Klient</STRONG></P>
<P>Mo<EFBFBD>liwa jest kompilacja bibliteki C <I>libpq</I> C, psql oraz
<P>Mo<EFBFBD>liwa jest kompilacja bibliteki C <I>libpq</I>, psql oraz
innych interfejs<6A>w i uruchamianie ich na platformie MS Windows. W tym
wypadku klient jest uruchamiany na MS Windows a z serwerem komunikuje si<73>
poprzez TCP/IP. Serwer mo<6D>e dzia<69>a<EFBFBD> na dowolnej wspieranej platformie
Unixowej. Plik <I>win31.mak</I> jest do<64><6F>czony
Unixowej. Plik <I>win32.mak</I> jest do<64><6F>czony
do <20>r<EFBFBD>de<64>, aby mo<6D>na by<62>o stworzy<7A> bibliotek<65> <I>libpq</I> oraz
program <I>psql</I> dzia<69>aj<61>ce w <20>rodowisku Win32. PostgreSQL mo<6D>e si<73>
tak<61>e komunikowa<77> z klientami <SMALL>ODBC</SMALL>.</P>
@ -257,9 +267,18 @@
<P>Serwer mo<6D>e by<62> uruchamiany na Windows NT i Win2k u<>ywaj<61>c
bibliotek Cygwin, Cygnus Unix/NT. W pliku <I>pgsql/doc/FAQ_MSWIN</I>
znajduj<75>cym si<73> w <20>r<EFBFBD>d<EFBFBD>ach lub pod adresem: <A href=
"http://www.postgresql.org/docs/faq-mswin.html">MS Windows FAQ</A>
na naszych stronach. Nie planujemy tworzy<7A> portu przeznaczonego
docelowo dla platformy Microsoft.</P>
"http://www.postgresql.org/docs/faqs/text/FAQ_MSWIN">http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN</A> na naszych stronach.<P>
Obecnie prowadzone s<> prace nad stworzeniem wersji dla MS Win
NT/200/XP. Je<4A>li chcesz si<73> dowiedzie<69> o obecnym statusie tych prac
zobacz <A
href="http://techdocs.postgresql.org/guides/Windows">http://techdocs.postgresql.org/guides/Windows</A> and
<A
href="http://momjian.postgresql.org/main/writings/pgsql/win32.html">http://momjian.postgresql.org/main/writings/pgsql/win32.html</A>.
</P>
<P>
Istnieje tak<61>e port pod Novell Netware 6 dost<73>pny pod adresem <A
href="http://forge.novell.com">http://forge.novell.com</A>.
</P>
<H4><A name="1.5">1.5</A>) Sk<53>d mo<6D>na <20>ci<63>gn<67><6E> PostgreSQL?</H4>
@ -324,14 +343,13 @@
'#PostgreSQL' "$USER" irc.phoenix.net.</CODE></P>
<P>Lista firm oferuj<75>cych wsparcie na zasadach komercyjnych znajduje
si<73> pod adresem: <A href=
"http://www.postgresql.org/users-lounge/commercial-support.html">http://www.postgresql.org/users-lounge/commercial-support.html</A>.</P>
si<73> pod adresem: <A href= "http://techdocs.postgresql.org/companies.php">http://techdocs.postgresql.org/companies.php</A>.</P>
<H4><A name="1.7">1.7</A>) Jaka jest ostatnia dost<73>pna wersja?</H4>
<P>Ostatnia dost<73>pna wersja PostgreSQL to 7.2.1.</P>
<P>Ostatnia dost<73>pna wersja PostgreSQL to 7.4.1.</P>
<P>Planujemy publikowanie kolejnych wersji co cztery miesi<73>ce.</P>
<P>Planujemy publikowanie kolejnych wersji co sze<EFBFBD><EFBFBD> do o<>miu miesi<73>cy.</P>
<H4><A name="1.8">1.8</A>) Jaka dokumentacja jest dost<73>pna?</H4>
@ -339,8 +357,8 @@
testowania s<> za<7A><61>czone w samej dystrybucji. Znajduj<75> si<73> one w
katalogu <I>/doc</I>. Manual mo<6D>e by<62> tak<61>e przegl<67>dany poprzez
strony www pod adresem <A href=
"http://www.PostgreSQL.org/users-lounge/docs/">http://www.PostgreSQL.org/users-lounge/docs/</A>.</P>
"http://www.PostgreSQL.org/docs">http://www.PostgreSQL.org/docs</A>.</P>
<P>Istniej<EFBFBD> tak<61>e dwie ksi<73><69>ki dost<73>pne online pod adresami
<A href=
"http://www.PostgreSQL.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html</A>
@ -348,14 +366,15 @@
"http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook/</A>.
Lista ksi<73><69>ek o PostgreSQL, kt<6B>re mo<6D>na kupi<70> znajduje si<73> pod adresem
<A href=
"http://www.postgresql.org/books/">http://www.postgresql.org/books/</A>.
"http://techdocs.PostgreSQL.org/techdocs/bookreviews.php">
http://techdocs.PostgreSQL.org/techdocs/bookreviews.php</A>.
Zbi<62>r technicznych artyku<6B><75>w o PostgreSQL znajduje si<73> pod adresem <A
href=
"http://techdocs.postgresql.org/">http://techdocs.postgresql.org/</A>.</P>
"http://techdocs.PostgreSQL.org">http://techdocs.postgresql.org/</A>.</P>
<P><I>psql</I> posiada kilka wbudowanych polece<63> \d, za pomoca kt<6B>rych
mo<6D>na sprawdzi<7A> informacje dotycz<63>ce typ<79>w, operator<6F>w, funkcji,
aggregat<EFBFBD>w itd.</P>
agregat<61>w itd.</P>
<P>Na naszej stronie mo<6D>na znale<6C><65> du<64>o wi<77>cej dokumentacji.</P>
@ -409,8 +428,8 @@
<P>Jest oko<6B>o 12 os<6F>b, kt<6B>re maj<61> uprawnienia do commit'owania w
<SMALL>CVS</SMALL> PostgreSQL'a. Ka<4B>dy z nich submitowa<77> tak wiele
wysokiej jako<6B>ci patchy, <20>e sta<74>o si<73> niemo<6D>liwe dla obecnych
commiter<65>w by<62> z nimi na bie<69><65>co, maj<EFBFBD>c pewno<6E><6F> <20>e s<> to poprawki
wysokiej jako<6B>ci.</P>
commiter<65>w by<62> z nimi na bie<69><65>co, wi<EFBFBD>c musieli<6C>my im ufa<66> i mie<69>
pewno<6E><6F>, <20>e ich poprawki s<> wysokiej jako<6B>ci.</P>
<H4><A name="1.13">1.13</A>) Jak mog<6F> zg<7A>asza<7A> b<><62>dy?</H4>
@ -437,52 +456,37 @@
oraz wyrafinowany system blokowania. Mamy tak<61>e w<>a<EFBFBD>ciow<6F>ci kt<6B>rych
inni nie posiadaj<61>, jak typy definiowane przez u<>ytkownika,
dziedziczenie, rules, multi-version concurrency control, kt<6B>ra
redukuje problemy z blokowaiem (lock contention).<BR>
redukuje problemy z blokowaniem (lock contention).<BR>
<BR>
</DD>
<DT><B>Wydajno<EFBFBD><EFBFBD></B></DT>
<DD>PostgreSQL dzia<EFBFBD>a w dw<64>ch trybach. Standardowy tryb <I>fsync</I>
zrzuca ka<6B>d<EFBFBD> zako<6B>czon<6F> transakcj<63> na dysk, gwarantuj<75>c w ten
spos<EFBFBD>b to, <20>e je<6A>li system operacyjny si<73> zawiesi lub straci
zasilanie wci<63>gu kilku nastepnych sekund, wszystkie Twoje dane
zostan<EFBFBD> bezpiecznie zapisane na dysku. W tym trybie, jeste<74>my
wolniejsi ni<6E> wi<77>kszo<7A><6F> komercyjnych baz danych, cz<63><7A>ciowo dlatego
<EFBFBD>e niewiele z nich wykonuje taki spos<6F>b zapisywania danych jako
domy<EFBFBD>lne ustawienie.
W trybie <I>no-fsync</I> z regu<67>y jeste<74>my szybsi ni<6E> komercyjne
bazy danych, chocia<69> w tym wypadku zawieszenie si<73> systemu mo<6D>e
spowodowa<EFBFBD> uszkodzenie danych. Pracujemy nad tym, aby stworzy<7A>
po<EFBFBD>redni tryb, kt<6B>ry powoduje mniejsz<73> redukcj<63> wydajno<6E>ci ni<6E> tryb
fsync i pozwoli na integralno<6E><6F> danych w przeci<63>gu 30 sekund do
za<EFBFBD>amania si<73> systemu operacyjnego.<BR>
<BR>
Por<6F>wnuj<75>c do MySQL czy innych prostych baz danych, jeste<74>my
wolniejsi przy wykonywaniu insert<72>w/updat<61>w przez narzut
spowodowany przez transakcje. Oczywi<77>cie MySQL nie posiada <20>adnej z
wymienionych wy<77>ej <I>mo<EFBFBD>liwo<EFBFBD>ci</I>. PostgreSQL zosta<74> zbudowany
aby by<62> DBMS elastycznym i bogatym z r<><72>norakie mo<6D>liwo<77>ci,
aczkolwiek dbamy, aby poprawia<69> jego wydajno<6E><6F> poprzez analiz<69>
kodu <20>r<EFBFBD>d<EFBFBD>owego i profilowanie. Ciekawe por<6F>wnanie PostgreSQL i MySQL
mo<6D>na znale<6C><65> pod adresem <A href=
"http://openacs.org/why-not-mysql.html">http://openacs.org/why-not-mysql.html</A><BR>
<BR>
Ka<4B>de po<70><6F>czenie klienta jest obs<62>ugiwane przez nas poprzez
stworzenie nowego procesu Unixowego. Procesy backendu dziel<65>
bufory danych oraz informacj<63> o blokadach. U<>ywaj<61>c wielu
procesor<6F>w, r<><72>ne backendy mog<6F> bez problemu dzia<69>a<EFBFBD> na r<><72>nych
procesorach.<BR>
<DD>Wydajno<EFBFBD><EFBFBD> PostgreSQL jest podobna do innych komercyjnych i open
source baz danych. W niekt<6B>rych sytuacjach jest szybszy w
niekt<EFBFBD>rych wolniejszy. W por<6F>wnianiu do MySQL lub mniejszych baz
danych jeste<74>my szybsi przy wielu u<>ytkownikach, skomplikowaych
zapytaniach i du<64>ym obci<63><69>eniu podczas. MySQL jest szybszy dla
prostych SELECT<43>w wykonywanych przez niewielu u<>ytkownik<69>w.
Spowodowane jest to narzutem, kt<6B>ry si<73> pojawia przy transakcjach.
Oczywi<EFBFBD>cie MySQL nie ma wi<77>kszo<7A>ci z rozwi<77>za<7A> opisanych powy<77>ej
w sekcji <I> Mo<4D>liwo<77>ci </I>. PostgreSQL zosta<74> stworzony z my<6D>l<EFBFBD> o
stabilno<EFBFBD>ci, oraz szerokiej gamie mo<6D>liwo<77>ci, ale mimo to staramy
si<EFBFBD> w ka<6B>dej wersji poprawia<69> jego wydajno<6E><6F>.
Ciekawe por<6F>wnanie PostgreSQL i MySQL mo<6D>na znale<6C><65> pod adresem <A href=
"http://openacs.org/philosophy/why-not-mysql.html">http://openacs.org/philosophy/why-not-mysql.html</A>
Dodatkowo, MySQL jest firm<72>, kt<6B>ra dystrybuuje jej produkty poprzez
zasad<61> Open Source i wymaga wykupienia licencji w przypadku
tworzenia close-source software, co ie ma miejsca w przypadku
PostgreSQL.<BR>
<BR>
</DD>
<DT><B>Stabilno<EFBFBD><EFBFBD></B></DT>
<DD>Zdajemy sobie spraw<61>, <20>e <SMALL>DBMS</SMALL> musi by<62> stabilny,
w przeciwnym wypadku jest bez warto<74>ci. Staramy si<73> publikowa<77> kod
stabilny, dobrze przetestowany, z minimum mo<6D>liwych b<><62>d<EFBFBD>w. Ka<4B>de
wydanie poprzedza conajmniej miesi<73>c test<73>w wersji beta. Patrz<72>c na
wydanie poprzedza co najmniej miesi<73>c test<73>w wersji beta. Patrz<72>c na
histori<72> wyda<64> PostgreSQL wida<64>, <20>e dostarczamy stabilne, dobrze
sprawdzone wersje, kt<6B>re s<> gotowe do u<>ycia w <20>rodowisku
produkcyjnym. My<4D>limy, <20>e proces publikowania kolejnych wersji
@ -521,20 +525,20 @@
PostgreSQL?</H4>
<P>PostgreSQL korzysta z najlepszej infrastruktury od samego pocz<63>tku
istnienia projektu, tzn. sze<7A>ciu lat. Wszystko to zawdzi<7A>czamy Marc'owi
Fournier'owi, kt<6B>ry stworzy<7A> t<> infrastruktur<75> i zarz<72>dza ni<6E> od
lat.</P>
istnienia projektu, czyli roku 1996 kiedy rozpoczeli<6C>my prac<61>. Wszystko
to zawdzi<7A>czamy Marc'owi Fournier'owi, kt<6B>ry stworzy<7A> t<> infrastruktur<75>
i zarz<72>dza ni<6E> od lat.</P>
<P>Wysokiej jako<6B>ci infrastruktura jest bardzo wa<77>na dla ka<6B>dego
projektu open-source. Zapobiega przerwom w rozwoju projektu i
jakimkolwiek przestojom.</P>
<P>Oczywi<EFBFBD>cie korzystanie z wysokiej jako<6B>ci infrastruktury nie jest
tanie. Istnieje wiele r<>znych miesi<73>cznych, czy jednorazowych
tanie. Istnieje wiele r<><EFBFBD>nych miesi<73>cznych, czy jednorazowych
wydatk<74>w, kt<6B>re trzeba ponosi<73> aby wszystko dzia<69>a<EFBFBD>o jak nale<6C>y.
Je<4A>li Ty, b<>d<EFBFBD> Twoja firma mo<6D>e wspom<6F>c finansowo rozw<7A>j PostgreSQL
odwied<65> adres: <A href=
"http://www.pgsql.com/pg_goodies">http://www.pgsql.com/pg_goodies</A>
"http://store.pgsql.com/shopping/">http://store.pgsql.com/shopping/</A>
gdzie opisane jest jak to zrobi<62>.</P>
<P>Chocia<EFBFBD> na stronie wspomniana jest nazwa PostgreSQL Inc, "datki"
@ -542,6 +546,9 @@
przeznaczane na finansowanie jakiejkolwiek firmy. Je<4A>li wolisz,
mo<6D>esz wys<79>a<EFBFBD> czek na adres kontaktowy.</P>
<HR>
Je<4A>li mo<6D>esz si<73> pochwali<6C> udanymi wdro<72>eniami PostgreSQL, prosimy
aby<62> zg<7A>osi<73> nam to na stronie: <A
href="http://advocacy.postgresql.org/">http://advocacy.postgresql.org</a>.
<H2 align="center">User Client Questions</H2>
@ -551,25 +558,21 @@
<P>Dost<EFBFBD>pne s<> dwa driwery <SMALL>ODBC</SMALL>: PsqlODBC
i OpenLink <SMALL>ODBC</SMALL>.</P>
<P>PsqlODBC jest do<64><6F>czony do <20>r<EFBFBD>de<64>. Wi<57>cej informacji na jego temat
mo<EFBFBD>esz znale<6C><65> pod adresem: <A href=
"ftp://ftp.PostgreSQL.org/pub/odbc/">ftp://ftp.PostgreSQL.org/pub/odbc/</A>.</P>
<P>Mo<EFBFBD>esz pobra<72> PsqlODBC z adresu <A
href="http://gborg.postgresql.org/project/psqlodbc/projdisplay.php">http://gborg.postgresql.org/project/psqlodbc/projdisplay.php</A>
</P>
<P>OpenLink <SMALL>ODBC</SMALL> mo<6D>e by<62> pobrany z adresu: <A href=
"http://www.openlinksw.com/">http://www.openlinksw.com</A>.
Wsp<73><70>pracuje ze standardowym oprogramowaniem klienckim <SMALL>ODBC</SMALL>
wi<77>c w ten spos<6F>b mo<6D>esz korzysta<74> z PostgreSQL <SMALL>ODBC</SMALL>
dost<73>pnego na ka<6B>dej plaformie kt<6B>r<EFBFBD> wspiera (Win, Mac, Unix, VMS).</P>
dost<73>pnego na ka<6B>dej pltaformie kt<6B>r<EFBFBD> wspiera (Win, Mac, Unix, VMS).</P>
<P>Autorzy b<>d<EFBFBD> prawdopodobnie sprzedawa<77> ten produkt osobom kt<6B>re
wymagaj<61> komercyjnego wsparcia, ale wersja darmowa b<>dzie zawsze
dost<73>pna. Wszystkie pytania mo<6D>esz wysy<73>a<EFBFBD> na adres: <A href=
"mailto:postgres95@openlink.co.uk">postgres95@openlink.co.uk</A>.</P>
<P>Sprawd<EFBFBD> tak<61>e rozdzia<69> o <A href=
"http://www.postgresql.org/devel-corner/docs/programmer/odbc.html">ODBC
w "Programmer's Guide"</A>.</P>
<H4><A name="2.2">2.2</A>) Jakie istniej<65> narz<72>dzia pozwalaj<61>ce na dost<73>p do
PostgreSQL przez www?</H4>
@ -577,59 +580,56 @@
przez www mo<6D>esz znale<6C><65> pod adresem:
<A href="http://www.webreview.com">http://www.webreview.com</A></P>
<P>Inny znajduje si<73> pod adresem: <A href=
"http://www.phone.net/home/mwm/hotlist/">http://www.phone.net/home/mwm/hotlist/.</A></P>
<P>Do integracji z www, <20>wietnym rozwi<77>zaniem jest PHP. Mo<4D>esz
znale<6C><65> wi<77>cej informacji na ten temat pod adresem
<A href="http://www.php.net">http://www.php.net</A>.</P>
<P>Wiele os<6F>b w przypadku skomplikowanych rozwi<77>za<7A> uzywa Perl'a i
modu<64>u CGI.pl.</P>
modu<64>u CGI.pl lub mod_perl.</P>
<H4><A name="2.3">2.3</A>) Czy istnieje jakie<69> GUI dla PostgreSQL?
Narz<72>dzie do raportowania? Interfejs dla "embedded query
language"?</H4>
<H4><A name="2.3">2.3</A>) Czy istnieje jakie<69> GUI dla PostgreSQL?</H4>
<P>Mamy ca<63>kiem mi<6D>y interfejs graficzny, kt<6B>ry zosta<74> nazwany
<I>pgaccess</I> i jest on dostarczany jako cz<63><7A><EFBFBD> <20>r<EFBFBD>de<64>.
<I>pgaccess</I> posiada tak<61>e generator raport<72>w. Mo<4D>na go znale<6C><65>
pod adresem <A href=
"http://www.flex.ro/pgaccess">http://www.flex.ro/pgaccess</A></P>
<P>Udost<EFBFBD>pnili<EFBFBD>my tak<61>e <I>ecpg</I>, kt<6B>ry jest "embedded SQL query
language interface" dla j<EFBFBD>zyka C.</P>
<H4><A name="2.4">2.4</A>) Za pomoc<6F> jakich j<>zyk<79>w programowania
<P>Tak, istnieje kilka interfejs<EFBFBD>w graficznych dla PostgreSQL.
W<EFBFBD>r<EFBFBD>d nich PgAccess (<A href="http://www.pgaccess.org">
http://www.pgaccess.org</A>), PgAdmin III (<A
href="http://www.pgadmin.org">http://www.pgadmin.org</A>),
RHDB Admin (http://sources.redhat.com/rhdb/ ) oraz Rekall (
http://www.thekompany.com/products/rekall/, komercyjny). Istnieje
tak<61>e PHPPgAdmin ( http://phppgadmin.sourceforge.net/ ), webowy
interfejs dla PostgreSQL.
</P>
<P>
Wi<57>cej informacji na ten temat znajduje si<73> pod adresem See
<A href="http://techdocs.postgresql.org/guides/GUITools">http://techdocs.postgresql.org/guides/GUITools</A>.
<H4><A name="2.4">2.4</A>) Za pomoc<6F> jakich j<>zyk<79>w programowania
mo<6D>na si<73> komunikowa<77> z PostgreSQL?</H4>
<P>Mamy wsparcie dla:</P>
<P>Najbardziej popularne j<>zyki posiiadaj<61> w<>asny interfejs dla
PostgreSQL. Sprawd<77> list<73> rozszerze<7A> dla intersuj<75>cego Ciebie j<>zyka
programowania.</P>
<P>Ze <20>r<EFBFBD>d<EFBFBD>ami PostreSQL dystrubuowane s<> interfejsy dla
nast<73>puj<75>cych j<>zyk<79>w programowania:</P>
<UL>
<LI>C (libpq)</LI>
<LI>C++ (libpq++)</LI>
<LI>Embedded C (ecpg)</LI>
<LI>Java (jdbc)</LI>
<LI>Perl (perl5)</LI>
<LI>ODBC (odbc)</LI>
<LI>Python (PyGreSQL)</LI>
<LI>TCL (libpgtcl)</LI>
<LI>C Easy API (libpgeasy)</LI>
<LI>Embedded <SMALL>HTML</SMALL> (<A href=
"http://www.php.net">PHP z http://www.php.net</A>)</LI>
</UL>
Inne interfejsy s<> dost<73>pne pod adresem:
<A href="http://gborg.postgresql.org"> http://gborg.postgresql.org</A> w
sekcji Drivers/Interfaces.
<HR>
<H2 align="center">Pytania administratora</H2>
<H2 align="center">Pytania dotycz<EFBFBD>ce administracji</H2>
<H4><A name="3.1">3.1</A>) Jak mog<6F> zainstalowa<77> PostgreSQL w innej
lokalizacji ni<6E> <I>/usr/local/pgsql</I>?</H4>
@ -677,7 +677,8 @@
<SMALL>SEMMNS</SMALL> i <SMALL>SEMMNI</SMALL> j<>dra twojego systemu.</P>
<P>Niedzia<EFBFBD>aj<EFBFBD>ce semafory mog<6F> spowodowa<77> niepoprawne zamkni<6E>cie
systemu w czasie intensywnego korzystania z bazy.</P>
systemu w czasie intensywnego korzystania z bazy.</P>
<P>Je<EFBFBD>li tre<72><65> b<><62>du jest inna, mo<6D>e to oznacza<7A>, <20>e obs<62>uga semafor<6F>w
nie zosta<74>a w<><77>czona do j<>dra wcale. Zobacz PostgreSQL
Administrator's Guide po bardziej szczeg<65><67>owe informacje o pami<6D>ci
@ -692,8 +693,7 @@
<I>postmaster'a</I>,
<B>oraz</B> nie umo<6D>liwi si<73> autoryzacji na podstawie adresu host<73>w
modyfikuj<75>c odpowiednio plik
<I>$PGDATA/pg_hba.conf</I>. To zmiany pozwol<6F> na
po<70><6F>czenia TCP/IP.</P>
<I>$PGDATA/pg_hba.conf</I>. To zmiany pozwol<6F> na po<70><6F>czenia TCP/IP.</P>
<H4><A name="3.6">3.6</A>) Jak powinienem skonfigurowa<77> system baz
danych aby uzyska<6B> lepsz<73> wydajno<6E><6F>?</H4>
@ -709,7 +709,7 @@
okre<72>laj<61>cym transakcj<63> - <SMALL>BEGIN WORK/COMMIT</SMALL>, s<>
traktowane jako pojedyncza transakcja. Rozwa<77> wykonanie kilku
polece<63>/zda<64> SQL w jednym bloku transakcji. To redukuje narzut
powodowany przez transakcj<63>. Przy du<64>ych zmianach w danych, warto
nak<EFBFBD>adany przez transakcj<63>. Przy du<64>ych zmianach w danych, warto
usun<75><6E> i stworzy<7A> na nowo indeksy.</P>
<P>Jest kilka opcji pozwalaj<61>cych na poprawienie wydajno<6E>ci.
@ -825,19 +825,12 @@
maksymaln<6C> liczb<7A> proces<65>w backendu to obawa o wyczerpanie zasob<6F>w
systemu.</P>
<P>W wersjach PostgreSQL wcze<7A>niejszych ni<6E> 6.5, maksymalna liczba
backend<6E>w by<62>a ustawiona na 64, a zmiana tej warto<74>ci wymaga
rekompliacji po zmianie sta<74>ej MaxBackendId w pliku
<I>include/storage/sinvaladt.h</I>.</P>
<H4><A name="3.9">3.9</A>) Jakie pliki znajduj<75> si<73> w <I>pg_temp</I>?</H4>
<H4><A name="3.9">3.9</A>) Co to s<> za pliki typu:
<I>pg_sorttempNNN.NN</I>,
kt<6B>re znajduj<75> si<73> w katalogu z plikami bazy danych?</H4>
<P>S<EFBFBD> to tymczasowe pliki utworzone przez executor. Dla przyk<79>adu,
je<6A>li jaka<6B> operacja sortowania jest wymagana do wykonania
<P>Katalog ten zawiera tymczasowe pliki utworzone przez executor. Dla
przyk<EFBFBD>adu, je<6A>li jaka<6B> operacja sortowania jest wymagana do wykonania
<SMALL>ORDER BY,</SMALL> a samo sortowanie wymaga wi<77>cej miejsca ni<6E>
paratmetr backendu
parametr backendu
<I>-S</I> ustawi<77> do wykorzystania, wtedy tymczasowe pliki s<> u<>ywane
do przechowywania tych danych.</P>
@ -846,6 +839,25 @@
poprawnie podczas operacji sortowania. Je<4A>li w danym momencie nie
dzia<69>aj<61> <20>adne procesy backend<6E>w mozesz spokojnie usun<75><6E> pliki
pg_tempNNN.NN.</P>
<H4><A name="3.9">3.9</A>) Dlaczego konieczne jest przy upgradzie
PostgreSQL korzystanie ze skrypt<70>w dump i restore?</H4>
<P>
Tw<54>rcy PostgreSQL dokonuj<75> jedynie ma<6D>ych zmian pomi<6D>dzy ma<6D>ymi
upgradami wersji, np z 7.2 do 7.2.1, wtedy upgrade nie wymaga
korzystania z dump i restore. Przy wi<77>kszych zmianach, np. z wersji
7.2 do 7.3, cz<63>sto zmianymaj<61> wp<77>yw na format przechowywanych danych.
Zmiany te s<> na tyle skomplikowane, <20>e nie utrzymujemy zgodo<64>ci z
poprzednimi wersjami PostgreSQL. dump pozwala na wydostanie danych w
takiej postaci, w kt<6B>rej <20>atwe jest ich zaimportowanie do nowszych
wersji bez k<>opotu.
</P>
<P>
W wydaniach gdzie zmiany nie dotycz<63> formatu danych na dysku, mo<6D>na
wykorzysta<74> skryptu pg_upgrade, do upgradu bez u<>ycia dump/restore.
Dokumentacja do danego wydania zawiera informacj<63> czy mo<6D>liwe jest
u<>ycie pg_upgrade.
</P>
<HR>
<H2 align="center">Pytania dotycz<63>ce u<>ywania</H2>
@ -870,6 +882,15 @@
<SMALL>ORDER BY</SMALL>, PostgreSQL mo<6D>e wykorzysta<74> jedynie kilka
pierwszych rz<72>d<EFBFBD>w, by<62> mo<6D>e b<>dzie konieczno<6E><6F> wykonania zapytania do
momentu a<> zostan<61> znalezione po<70><6F>dane wyniki.</P>
<P>
Aby otrzyma<6D> losowy rz<72>d, u<>yj:
<PRE>
SELECT col
FROM tab
ORDER BY random()
LIMIT 1;
</PRE>
</P>
<H4><A name="4.3">4.3</A>) Jak mog<6F> uzyska<6B> list<73> wszystkich tabel
czy innych rzeczy pod <I>psql</I>?</H4>
@ -881,37 +902,53 @@
<I>-E</I> wtedy po wykonaniu polecenia z backslashem wy<77>wietlane
b<>dzie zapytanie, kt<6B>re w rzeczywisto<74>ci jest wykonywane.</P>
<H4><A name="4.4">4.4</A>) Jak usun<75><6E> kolumn<6D> z tabeli?</H4>
<P>Nie mamy zaimplementowanego <SMALL>ALTER TABLE DROP
COLUMN,</SMALL> ale mo<6D>esz zrobi<62> tak:</P>
<H4><A name="4.4">4.4</A>) Jak usun<75><6E> kolumn<6D> z tabeli lub zmieni<6E>
jej typ?</H4>
<P>DROP COLUMNT zosta<74>o dodane w wersji 7.3 przy poleceniu ALTER
TABLE DROP COLUMN. We wcze<7A><65>iejszych wersjach mo<6D>esz zrobi<62> tak:
</P>
<PRE>
SELECT ... -- wybierz zawarto<74><6F> wszystkich kolumn poza t<> jedn<64> kt<6B>rej chcesz si<73> pozby<62>
BEGIN;
LOCAL TABLE old_table;
SELECT ... -- wybierz wszystkie kolumny poza t<> jedn<64> kt<6B>rej chcesz si<73> pozby<62>
INTO TABLE new_table
FROM old_table;
DROP TABLE old_table;
ALTER TABLE new_table RENAME TO old_table;
</PRE>
<P>
Aby zmieni<6E> typ danych kolumny mo<6D>esz zrobi<62> tak:
</P>
<PRE>
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;
</PRE>
</P>
<H4><A name="4.5">4.5</A>) Jaki jest maksymalny rozmiar dla rz<72>du,
tabeli i bazy danych?</H4>
<P>Oto wszystkie ograniczenia:</P>
<PRE>
Maksymalny rozmiar dla bazdy danych? nieograniczony ( istniej<65> bazy danych o wielko<6B>ci 500 GB databases )
Maksymalny rozmiar dla tabeli? 16 TB
Maksymalny rozmiar dla rz<EFBFBD>du? nieograniczony w 7.1 i p<><70>niejszych
Maksymalny rozmiar pola? 1 GB w 7.1 and later
Maksymalny rozmiar dla bazdy danych? nieograniczony ( istniej<65>
bazy danych o wielko<6B>ci 32 TB databases )
Maksymalny rozmiar dla tabeli? 32 TB
Maksymalny rozmiar dla rz<72>du? 1.6 TB
Maksymalny rozmiar pola? 1 GB
Maksymalna liczba rz<72>d<EFBFBD>w w tabeli? nieograniczona
Maksymalna liczba kolumn w tabeli? 250-1600 w zale<6C>ono<6E>ci od typ<79>w kolumn
Makasymalna liczba indeks<6B>w na tabeli? nieograniczona
Maksymalna liczba kolumn w tabeli? 250-1600 w zale<6C>ono<6E>ci od typ<79>w kolumn
Makasymalna liczba indeks<6B>w na tabeli? nieograniczona
</PRE>
Oczywi<77>cie "nieograniczony" nie jest prawd<77> tak do ko<6B>ca, istniej<65>
ograniczenia wynikaj<61>ce z dost<73>pnego miejsca na dysku, pami<6D>ci/swapa.
Kiedy wielko<6B>ci te b<>d<EFBFBD> bardzo du<64>e mo<6D>e odbi<62> si<73> to na wydajno<6E>ci.
<P>Maksymalny rozmiar tabeli, czyli 16 TB nie wymaga od systemu
<P>Maksymalny rozmiar tabeli, czyli 32 TB nie wymaga od systemu
operacyjnego wsparcia dla du<64>ych plik<69>w. Du<44>e tabele s<> przechowywane
jako pliki o rozmiarze 1 GB, wi<77>c ograniczenia co do wielko<6B>ci plik<69>w
narzucone przez system plik<69>w nie s<> istotne.</P>
@ -957,6 +994,9 @@
<P>Indeksy nie powoduj<75> du<64>ego narzutu na zajmowane miejsce,
ale zawieraj<61> pewne dane,
wi<77>c w pewnych przypadkach moga by<62> ca<63>kiem du<64>e.</P>
<P> NULLe s<> przechowywane jako mapy bitowe, wi<77>c u<>ywaj<61> bardzo ma<6D>o
miejsca.
</P>
<H4><A name="4.7">4.7</A>) Jak mog<6F> sprawdzi<7A> jakie tabele, klucze,
bazy danych i u<>ytkownicy s<> utworzeni?</H4>
@ -996,17 +1036,39 @@
nast<73>puje sortowanie jest zazwyczaj szybsze ni<6E> wyszukiwanie za
pomoc<6F> indeksu na du<64>ej tabeli.</P>
Jakkolwiek <SMALL>LIMIT</SMALL> w po<70><6F>czeniu z <SMALL>ORDER BY</SMALL>
cz<63>sto b<>dzie wykorzystywa<77> indeks<EFBFBD>w poniew<65>z jedynie ma<6D>a cz<63><7A>c z
tabeli jest zwracana.
cz<63>sto b<>dzie wykorzystywa<77> indeksy poniewa<EFBFBD> jedynie ma<6D>a cz<63><7A><EFBFBD> z
tabeli jest zwracana. W rzeczywisto<74>ci, chocia<69> MAX() i MIN() nie
u<>ywaj<61> indeks<6B>w, mo<6D>liwe jest aby zwr<77>ci<63> te warto<74>ci u<>ywaj<61>c
indeks<6B>w poprzez u<>ycie ORDER BY i LIMIT.
</P>
<PRE>
SELECT col
FROM tab
ORDER BY col [ DESC ]
LIMIT 1;
</PRE>
<P>
Je<4A>li uwa<77>asz, <20>e optimizer myli si<73> wybieraj<61>c sequential scan, u<>yj
SET enable_seqscan TO 'off' i uruchom testy aby sprawdzi<7A> czy wtym
wypadku zapytanie b<>dzie szybciej wykonywane.
<P>Kiedy u<>ywa si<73> operator<6F>w dopasuj<75>cych takich jak
<SMALL>LIKE</SMALL> lub <I>~</I>, indeksy b<>d<EFBFBD> u<>ywane jedynie je<EFBFBD>li
pocz<EFBFBD>tek wyszukiwania jest oparty na pocz<63>tku <20>a<EFBFBD>cucha tekstu.
Dlatego, aby u<>ywac indeks<6B>w,
dopasowania operatorem <SMALL>LIKE</SMALL> nie mog<6F> si<73> zaczyna<6E>
<I>%</I>, a dopasowania operatorem <I>~</I> (dopasowania regularne)
musz<EFBFBD> si<73> zaczyna<6E> znakiem specjalnym <I>^</I>.</P>
<SMALL>LIKE</SMALL> lub <I>~</I>, indeksy b<>d<EFBFBD> u<>ywane jedynie w
pewnych wypadkach:</P>
<UL>
<LI>Pocz<EFBFBD>tek wyszukiwania jest oparty na pocz<63>tku <20>a<EFBFBD>cucha tekstu.
<UL>
<LI>wzorce <SMALL>LIKE</SMALL> nie mog<6F> si<73> zaczyna<6E> <I>%</I>
<LI>dopasowania operatorem <I>~</I> (dopasowania regularne)
musz<73> si<73> zaczyna<6E> znakiem specjalnym <I>^</I>.</P>
</UL>
<LI>Pocz<EFBFBD>tek wyszukiwania nie mo<6D>e si<73> zaczyna<6E> od klas znak<61>w, np.
[a-e].
<LI>Case-insensitive searches such as ILIKE and ~* do not utilise
indexes. Instead, use functional indexes, which are described in
section 4.12.
<LI>Standardowe locale C musi by<62> uzyte przy wykonywaniu initdb
</UL>
<H4><A name="4.9">4.9</A>) Jak mog<6F> sprawdzi<7A> w jakis spos<6F>b "query
optimizer" wykonuje moje zapytanie?</H4>
@ -1051,15 +1113,14 @@
<H4><A name="4.12">4.12</A>) Jak mog<6F> u<>ywa<77> wyra<72>e<EFBFBD> regularnych w
zapytaniach i zapyta<74> case-insensitive w wyra<72>eniach
regularnych?
jak korzysta<74> z indeks<6B>w dla zapyta<74> case-insensitive?</H4>
Jak korzysta<74> z indeks<6B>w dla zapyta<74> case-insensitive?</H4>
<P>Operator <I>~</I> moze by<62> wykorzystywany do wyszukiwania za
pomoc<6F> wyra<72>e<EFBFBD> regularnych, a
<I>~*</I> do wyszukiwania case-insensitive z wyra<72>eniami
regularnymi.
Wariant case-insensitive dla <SMALL>LIKE</SMALL> zosta<74> nazwany
<SMALL>ILIKE</SMALL> i jest dost<73>pny w PostgreSQL 7.1 i p<><70>niejszych
wersjach.</P>
<SMALL>ILIKE</SMALL>.</P>
<P>Por<EFBFBD>wnania case-insensitive s<> zazwyczaj wykonywane w nast<73>puj<75>cy
spos<6F>b:</P>
@ -1087,31 +1148,41 @@
<PRE>
Type Nazwa wewn<77>trzna Uwagi
--------------------------------------------------
"char" char 1 znak
CHAR(#) bpchar wype<70>niane pustymi znakami do podanej d<>ugo<67>ci
VARCHAR(#) varchar rozmiar okre<72>la maksymaln<6C> d<>ugo<67><6F>, nie ma tutaj wype<70>niania
VARCHAR(n) varchar rozmiar okre<72>la maksymaln<6C> d<>ugo<67><6F>, nie ma tutaj wype<70>niania
CHAR(n) bpchar wype<70>niane pustymi znakami do podanej d<>ugo<67>ci
TEXT text bez limitu na d<>ugo<67><6F> <20>a<EFBFBD>cucha
BYTEA bytea zmiennej d<>ugo<67>ci tablica bajt<6A>w (null-byte safe)
"char" char 1 znak
</PRE>
<P>Je<EFBFBD>li b<>dziesz przegl<67>da<64> katalogi systemowe lub komunikaty o
b<><62>dach cz<63>sto spotkasz si<73> z podanymi powy<77>ej nazwami
wewn<77>trznymi.</P>
<P>Ostatnie cztery typy powy<77>ej to tzw typy "varlena" (np. pierwsze
<P>Pierwsze cztery typy powy<77>ej to tzw typy "varlena" (np. pierwsze
cztery bajty na dysku to d<>ugo<67><6F>, po kt<6B>rych jest data). Dlatego
faktyczna d<>ugo<67>c takiego <20>a<EFBFBD>cucha jest troch<63> wi<77>ksza ni<6E>
zadeklarowany rozmiar. Te typy tak<61>e podlegaj<61> kompresji lub mog<6F> by<62>
przechowywane out-of-line jako <SMALL>TOAST</SMALL>, wi<77>c faktyczne
zu<7A>ycie miejsca na dysku mo<6D>e by<62> mniejsze ni<6E> oczekiwane.</P>
<P><SMALL>CHAR()</SMALL> jast najlepszym typem do przechowywania
<20>a<EFBFBD>cuch<63>w o tej samej d<>ugo<67>ci. <SMALL>VARCHAR()</SMALL> jest
<SMALL>VARCHAR(n)</SMALL> jest
najodpowiedniejszy do przechowywania <20>a<EFBFBD>cuch<63>w o r<><72>nej d<>ugo<67>ci
ale okre<72>la on maksymaln<6C> jego d<>ugo<67><6F>. <SMALL>TEXT</SMALL> jest
najlepszy dla <20>a<EFBFBD>cuch<63>w o dowolnej d<>ugo<67>ci, nie przekraczaj<61>cej 1GB.
<SMALL>BYTEA</SMALL> s<EFBFBD>u<EFBFBD>y do przechowywania danych binarnych,
w szczeg<65>lno<6E>ci dla danych zawieraj<61>cych <SMALL>NULL</SMALL> bajty.</P>
ale okre<72>la on maksymaln<6C> jego d<>ugo<67><6F>.
<SMALL>TEXT</SMALL> jest najlepszy dla <20>a<EFBFBD>cuch<63>w o dowolnej d<>ugo<67>ci,
nie przekraczaj<61>cej 1GB.</P>
<P>
<SMALL>CHAR(n)</SMALL> jast najlepszym typem do przechowywania
<20>a<EFBFBD>cuch<63>w o tej samej d<>ugo<67>ci. CHAR(n) wype<70>nia dane do <20>adanej
d<>ugo<67>ci, podczas gdy VARCHAR(n) przechowuje jedynie dane
dostarczone.
<SMALL>BYTEA</SMALL> s<>u<EFBFBD>y do przechowywania danych binarnych,
w szczeg<65>lno<6E>ci dla danych zawieraj<61>cych <SMALL>NULL</SMALL> bajty.
Wszystkie typy opisane tutaj maja podobne charakterystyki je<6A>li
chodzi o wydajno<6E><6F>.</P>
<H4><A name="4.15.1">4.15.1</A>) Jak mog<6F> utworzy<7A> pole kt<6B>re samo
zwi<77>ksza swoj<6F> warto<74><6F>?</H4>
@ -1188,7 +1259,7 @@ BYTEA bytea zmiennej d
<H4><A name="4.15.4">4.15.4</A>) Dlaczego numery sekwencji nie s<>
ponownie u<>ywane przy przerwaniu transakcji?
Sk<53>d si<73> bior<6F> luki w numerowaniu kolumny tabeli
Sk<53>d si<73> bior<6F> luki w numerowaniu kolumny tabeli
sekwancjami/SERIALem?</H4>
<P>Aby poprawi<77> zbie<69>no<6E><6F> (concurrency), warto<74>ci sekwencji s<>
@ -1197,8 +1268,7 @@ BYTEA bytea zmiennej d
numerowaniu z przerwanych transakcji.</P>
<H4><A name="4.16">4.16</A>) Co to jest <SMALL>OID</SMALL>? Co to
jest
<SMALL>TID</SMALL>?</H4>
jest <SMALL>TID</SMALL>?</H4>
<P><SMALL>OID</SMALL> s<> PostgreSQL'owym rozwi<77>zaniem problemu
unikalnych numer<65>w rz<72>d<EFBFBD>w. Ka<4B>dy rz<72>d tworzony przez PostgreSQL
@ -1274,15 +1344,15 @@ BYTEA bytea zmiennej d
</UL>
<P>List<EFBFBD> termin<69>w zwi<77>zanych z bazami danych mo<6D>esz znale<6C><65> pod tym
adresem:<A href=
"http://www.comptechnews.com/~reaster/dbdesign.html">http://www.comptechnews.com/~reaster/dbdesign.html</A></P>
adresem:<A
href="http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html">http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html</A>.
<H4><A name="4.18">4.18</A>) Sk<53>d bierze si<73> ten b<><62>d <I>"ERROR:
Memory exhausted in AllocSetAlloc()"</I>?</H4>
<P>Je<EFBFBD>li u<>ywasz wersji starszej ni<6E> 7.1, upgrade mo<6D>e rozwi<77>za<7A> ten
problem. Jest tak<61>e mozliwe, <20>e po prostu wyczerpa<70>a Ci si<73> pami<6D><69>
wirtualna (virtual memory) w systemie lub Tw<54>j kernel ma zbyt nisko
<P>
Prawdopodobnie wyczerpa<70>a Ci si<73> pami<6D><69> wirtualna (virtual memory)
w systemie lub Tw<54>j kernel ma zbyt nisko
ustawione limity dla pewnych zasob<6F>w. Spr<70>buj wykona<6E> nast<73>puj<75>ce
polecenia zanim uruchomisz <I>postmaster'a</I>:</P>
<PRE>
@ -1332,29 +1402,38 @@ BYTEA bytea zmiennej d
<H4><A name="4.22">4.22</A>) Dlaczego zapytania u<>ywaj<61>ce
<CODE><SMALL>IN</SMALL></CODE> sa takie wolne?</H4>
<P>Obecnie <20><>czymy podzapytania w outer queries poprzez sekwencyjne
przeszukiwanie wynik<69>w podzapytania dla ka<6B>dego rz<72>du z outer query.
Mo<EFBFBD>na to omin<69><6E> zast<73>puj<75>c <CODE>IN</CODE> przez
<P>W wersjach wcze<7A>niejszych ni<6E> 7.4 <20><>czymy podzapytania w outer queries
poprzez sekwencyjne przeszukiwanie wynik<69>w podzapytania dla ka<6B>dego rz<72>du
z outer query. Je<4A>li podzapytanie zwraca jedynie kilka rz<72>d<EFBFBD>w a
zewn<77>trzne zapytanie zwraca ich wiele, IN jest najszybsze.
Aby przyspieszy<7A> inne zapytania mo<6D>na zast<73>pi<70> <CODE>IN</CODE> przez
<CODE>EXISTS</CODE>:</P>
<PRE>
<CODE>SELECT *
FROM tab
WHERE col1 IN (SELECT col2 FROM TAB2)
WHERE col IN (SELECT subcol FROM subtab)
</CODE>
</PRE>
na:
<PRE>
<CODE>SELECT *
FROM tab
WHERE EXISTS (SELECT col2 FROM TAB2 WHERE col1 = col2)
WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col)
</CODE>
</PRE>
Mamy zamiar poprawi<77> to ograniczenie w przysz<73>ych wydaniach.
<P>
Aby to rozwi<77>zanie by<62>o szybkie, subcol powinna by<62> kolumn<6D>
indeksowan<61>.
</P>
<P>
W wersji 7.4 i p<><70>niejszych, IN w rzeczywisto<74>ci u<>ywa tej samej
wyrafinowanej techniki <20><>czenia jak normalne zapytania i jest
preferowane nad u<>ywaniem EXISTS.
</P>
<H4><A name="4.23">4.23</A>) Jak wykona<6E> "outer join"?</H4>
<P>PostgreSQL 7.1 i p<><70>niejsze wersje maj<61> zaimplementowane outer join
wykorzystuj<75>c standardow<6F> sk<73>adnie SQL. Poni<6E>ej dwa przyk<79>ady:</P>
<P>PostgreSQL ma zaimplementowane outer join
wykorzystuj<75>c standardow<6F> sk<73>adni<EFBFBD> SQL. Poni<6E>ej dwa przyk<79>ady:</P>
<PRE>
SELECT *
@ -1367,7 +1446,7 @@ BYTEA bytea zmiennej d
</PRE>
<P>Te dwa identyczne zapytania <20><>cz<63> kolumn<6D> t1.col z kolumn<6D> t2.col,
ale tak<61>e zwr<77>c<EFBFBD> niepo<70><6F>czone rz<72>dy w t1 (te kt<6B>re nie pasuj<75> w t2).
ale tak<61>e zwr<77>c<EFBFBD> niepo<70><6F>czone rz<72>dy w t1 (te, kt<6B>re nie pasuj<75> w t2).
<SMALL>RIGHT</SMALL> join doda<64>by niepo<70><6F>czone rz<72>dy z tabeli t2.
<SMALL>FULL</SMALL> join zwr<77>ci<63>by rz<72>dy plus dodatkowo wszystkie
rz<72>dy z tabel t1 i t2. S<>owo <SMALL>OUTER</SMALL> jest opcjonalne i
@ -1401,19 +1480,63 @@ BYTEA bytea zmiennej d
katalogi systemowe, nie jest do ko<6B>ca jasne jak zapytanie pomi<6D>dzy
r<><72>nymi bazami danych powinno si<73> zachowywa<77>.</P>
<P>Oczywi<EFBFBD>cie klient mo<6D>e <20><>czy<7A> si<73> z r<><72>nymi bazami danych i <20><>czy<7A>
informacj<EFBFBD> w ten spos<6F>b uzyskan<61>.</P>
<P><I>contrib/dblink</I> pozwala na wykonywanie zapyta<74> poprzez r<><72>ne
bazy danych wywo<77>uj<75>c odpowiednie funkcje. Oczywi<77>cie klient mo<6D>e <20><>czy<7A>
si<73> z r<><72>nymi bazami danych i <20><>czy<7A> informacj<63> w ten spos<6F>b uzyskan<61>
po stronie klienta.</P>
<H4><A name="4.25">4.25</A>) Jak zwr<77>ci<63> w funkcji wiele rz<72>d<EFBFBD>w lub
kolumn?</H4>
<P>Mo<EFBFBD>esz zwraca<EFBFBD> zbiory z funkcji PL/pgSQL u<>ywaj<61>c
<i>refcursors</i>. Zobacz <a
href="http://developer.postgresql.org/docs/postgres/plpgsql-cursors.html">
http://developer.postgresql.org/docs/postgres/plpgsql-cursors.html,</a>
sekcj<63> 23.7.3.3.</P>
<P>Mo<EFBFBD>esz w <20>atwy spos<6F>b zwraca<63> wiele rz<72>d<EFBFBD>w lub kolumn u<>ywaj<61>c
funkcji z: <A HREF="http://techdocs.postgresql.org/guides/SetReturningFunctions">http://techdocs.postgresql.org/guides/SetReturningFunctions</A>.
<H4><A name="4.26">4.26</A>) Dlaczego nie mog<6F> w spos<6F>b pewny
tworzy<7A>/usuwa<77> tabel tymczasowych w funkcjach PL/PgSQL?</H4>
<P>
PL/PgSQL przechowuje w cache zawarto<74><6F> funkcji, niepo<70><6F>danym efektem tego
jest to, <20>e gdy taka funkcja korzysta z tabel tymczasowych, kt<6B>re s<>
p<><70>niej kasowane i odtwarzane, a funkcja wywo<77>ywana jest ponownie,jej
wywo<77>anie nie powiedzie si<73> poniewa<77> cachowana funkcja wci<63><69> b<>dzie
wskazywa<77> na stara tablic<69> tymczasow<6F>. Rozwi<77>zaniem tego problemu jest
u<>ywanie EXECUTE aby korzysta<74> z tabel tymczasowych w PL/PgSQL. To
spowoduje, <20>e zapytanie b<>dzie parsowane przy ka<6B>dym wywo<77>aniu
funkcji.
</P>
<H4><A name="4.27">4.27) Jakie s<> mo<6D>liwo<77>ci replikacji w PostgreSQL?</H4>
<P>
Jest kilka opcji aby stosowa<77> replikacj<63> typu master/slave. Ten typ
pozwala jedynie masterowi na dokonywanie zmian w bazie danych, a
slave mo<6D>e jedynie te zmiany odczytywa<77>. Na stronie
<A
HREF="http://gborg.PostgreSQL.org/genpage?replication_research">http://gborg.PostgreSQL.org/genpage?replication_research</A>
znajduje si<73> ich lista. Replikacja typu multi-master jest w trakcie
prac, opis projektu znajduje si<73> pod adresem: <A
HREF="http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php">
http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php</A>.
</P>
<H4><A name="4.28">4.28) Jakie mo<6D>liwo<77>ci szyfrowania oferuje
PostgreSQL?</H4>
<P>
<UL>
<LI>contrib/pgcrypto zawiera wiele funkcji za pomoc<6F>, kt<6B>rych mo<6D>emy u<>ywa<77>
kryptografii w zapytaniach SQL.
<LI>Aby szyfrowa<77> transmisj<73> od klienta do serwera, ten musi mie<69>
ustawion<6F> opcj<63> ssl na true w pliku postgresql.conf, odpowiedni
wpis host lub hostssl musi wyst<73>powa<77> w pliku pg_hba.conf, oraz
sslmode nie mo<6D>e by<62> wy<77><79>czone w kliencie. (Warto zwr<77>ci<63> uwag<61>, <20>e
mo<6D>liwe jest tak<61>e u<>ywanie transport<72>w szyfruj<75>c<EFBFBD>w przez strony
trzecie, takie jak stunnel lub ssh, poza natywnym wsparciem dla SSL
przez PostgreSQL).
<LI>Has<EFBFBD>a u<>ytkownik<69>w bazy danych s<> automatycznie szyfrowane od
wersji 7.3. W poprzednich wersjach, nale<6C>y t<> funkcjonalno<6E><6F> poprzez
w<><77>czenie opcji PASSWORD_ENCRYPTION w postgresql.conf.
<LI>Serwer mo<6D>e dzia<69>a<EFBFBD> u<>ywaj<61>c szyfrowanego systemu plik<69>w.
</UL>
</P>
<H2 align="center">Rozwijanie PostgreSQL</H2>
<H4><A name="5.1">5.1</A>) Napisa<73>em w<>asn<73> funkcj<63>. Kiedy u<>yj<79> jej
@ -1432,8 +1555,12 @@ BYTEA bytea zmiennej d
<H4><A name="5.3">5.3</A>) Jak napisa<73> funkcj<63> C zwracaj<61>c<EFBFBD> krotk<74>
(tuple)?</H4>
<P>To wymaga wysi<73>ku tak olbrzymiego, <20>e nawet autorzy nigdy tego nie
prubowali, chocia<69> z zalo<6C>e<EFBFBD> wynika, <20>e jest to mo<6D>liwe.</P>
<P>
W wersjach PostgreSQL od numeru 7.3, funckje zwracaj<61>ce tabele s<> w
p<>lni wspierane w C, PL/PgSQL i SQL. Sprawd<77> w Programmer's Guide aby
uzyska<6B> wi<77>cej informacji. Przyk<79>ad funkcji napisanej w C zwracaj<61>cej
tabel<65> zosta<74> umieszczony w <I>contrib/tablefunc</I>.
</P>
<H4><A name="5.4">5.4</A>) Zmieni<6E>em plik <20>r<EFBFBD>d<EFBFBD>owy. Dlaczego po
rekompilacji nie wida<64> zmiany?</H4>
@ -1443,6 +1570,8 @@ BYTEA bytea zmiennej d
<I>make clean</I>, a nast<73>pnie ponownie <I>make</I>.
Je<4A>li u<>ywasz <SMALL>GCC</SMALL> mo<6D>esz u<>y<EFBFBD> opcji
<I>--enable-depend</I> przy wykonywaniu <I>configure</I> aby
kompilator m<>g<EFBFBD> okre<72>li<6C> zale<6C>no<6E>ci samodzielnie.
</P>
</BODY>
</HTML>