2002-04-29 02:57:18 +00:00
|
|
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD html 4.01 transitional//EN">
|
|
|
|
|
|
|
|
|
|
<HTML>
|
|
|
|
|
<!-- DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN" -->
|
|
|
|
|
<!-- HTML -->
|
|
|
|
|
|
|
|
|
|
<HEAD>
|
|
|
|
|
<META name="generator" content="HTML Tidy, see www.w3.org">
|
|
|
|
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
|
|
|
|
|
<TITLE>PostgreSQL FAQ</TITLE>
|
|
|
|
|
</HEAD>
|
|
|
|
|
|
|
|
|
|
<BODY bgcolor="#ffffff" text="#000000" link="#ff0000" vlink="#a00000"
|
|
|
|
|
alink="#0000ff">
|
|
|
|
|
|
|
|
|
|
<H1>Frequently Asked Questions (FAQ) o PostgreSQL</H1>
|
|
|
|
|
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<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>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
|
|
|
|
|
<P>Obecny maintainer: Bruce Momjian (<A href=
|
|
|
|
|
"mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR>
|
|
|
|
|
</P>
|
|
|
|
|
<P>T<EFBFBD>umaczenie: Marcin Mazurek (<A href=
|
|
|
|
|
"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=
|
2004-03-05 19:29:23 +00:00
|
|
|
|
"http://www.Postgresql.org/docs/faqs/FAQ.html">http://www.PostgreSQL.org/docs/faqs/FAQ.html</A>.</P>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
|
|
|
|
|
<P>Odpowiedzi na pytania dotycz<63>ce konkretnych system<65>w operacyjnych
|
|
|
|
|
mo<6D>na znale<6C><65> pod adresem:
|
|
|
|
|
<A href=
|
2004-03-05 19:29:23 +00:00
|
|
|
|
"http://www.PostgreSQL.org/docs/index.html">http://www.PostgreSQL.org/docs/index.html</A>.</P>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
<HR>
|
|
|
|
|
|
|
|
|
|
<H2 align="center">Pytania og<6F>lne</H2>
|
|
|
|
|
<A href="#1.1">1.1</A>) Co to jest PostgreSQL? Jak to wymawia<69>?<BR>
|
|
|
|
|
<A href="#1.2">1.2</A>) Jak<61> licencj<63> chroniony jest PostgreSQL?<BR>
|
|
|
|
|
<A href="#1.3">1.3</A>) Na jakich systemach Unixowych dzia<69>a
|
|
|
|
|
PostreSQL?<BR>
|
|
|
|
|
<A href="#1.4">1.4</A>) Na jakich nie-Unixowych systemach dzia<69>a
|
|
|
|
|
PostgreSQL?<BR>
|
|
|
|
|
<A href="#1.5">1.5</A>) Sk<53>d mog<6F> <20>ci<63>gn<67><6E> PostgreSQL?<BR>
|
|
|
|
|
<A href="#1.6">1.6</A>) Gdzie mo<6D>na szuka<6B> wsparcia technicznego?<BR>
|
|
|
|
|
<A href="#1.7">1.7</A>) Jaka jest ostatnia dost<73>pna wersja?<BR>
|
|
|
|
|
<A href="#1.8">1.8</A>) Jaka dokumentacja jest dost<73>pna?<BR>
|
|
|
|
|
<A href="#1.9">1.9</A>) Gdzie mog<6F> znale<6C><65> informacj<63> o znanych
|
|
|
|
|
b<><62>dach czy brakuj<75>cych rozwi<77>zanich?<BR>
|
|
|
|
|
<A href="#1.10">1.10</A>) Jak mog<6F> si<73> nauczy<7A> <SMALL>SQL</SMALL>?<BR>
|
|
|
|
|
<A href="#1.11">1.11</A>) Czy PostgreSQL ma rozwi<77>zany problem Y2K?<BR>
|
|
|
|
|
<A href="#1.12">1.12</A>) Jak mog<6F> si<73> przy<7A><79>czy<7A> do grupy os<6F>b
|
|
|
|
|
bezpo<70>rednio pracuj<75>cych nad rozwojem PostgreSQL?<BR>
|
|
|
|
|
<A href="#1.13">1.13</A>) Jak mog<6F> zg<7A>asza<7A> b<><62>dy?<BR>
|
|
|
|
|
<A href="#1.14">1.14</A>) Jak mo<6D>na por<6F>wna<6E> PostgreSQL w stosunku
|
|
|
|
|
do innych <SMALL>DBMS</SMALL>?<BR>
|
|
|
|
|
<A href="#1.15">1.15</A>) W jaki spos<6F>b mog<6F> wesprze<7A> finansowo
|
|
|
|
|
PostgreSQL?<BR>
|
|
|
|
|
|
|
|
|
|
<H2 align="center">Pytania u<>ytkownik<69>w</H2>
|
|
|
|
|
<A href="#2.1">2.1</A>) Czy s<> jakie<69> driwery <SMALL>ODBC</SMALL> dla
|
|
|
|
|
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>
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<A href="#2.3">2.3</A>) Czy istnieje jakie<69> GUI dla PostgreSQL?<BR>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
<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>
|
|
|
|
|
|
|
|
|
|
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<H2 align="center">Pytania dotycz<63>ce administracji</H2>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
<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>,
|
2004-03-05 19:29:23 +00:00
|
|
|
|
otrzymuj<75> komunikat o b<><62>dzie: <I>IpcMemoryCreate</I>. Dlaczego?<BR>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
<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
|
|
|
|
|
innych host<73>w?<BR>
|
|
|
|
|
<A href="#3.6">3.6</A>) Jak powinienem skonfigurowa<77> system baz
|
|
|
|
|
danych aby uzyska<6B> lepsz<73> wydajno<6E><6F>?<BR>
|
|
|
|
|
<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>
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<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>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
|
|
|
|
|
<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
|
|
|
|
|
binarnymi (binary cursors) i zwyk<79>ymi kursorami (normal cursors)?<BR>
|
|
|
|
|
<A href="#4.2">4.2</A>) Jak mog<6F> pobra<72> za pomoc<6F> <SMALL>SELECT</SMALL>
|
|
|
|
|
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>
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<A href="#4.4">4.4</A>) Jak usun<75><6E> kolumn<6D> z tabeli lub zmieni<6E> jej
|
|
|
|
|
typ?<BR>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
<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
|
|
|
|
|
potrzebne aby przechowa<77> dane ze zwyczajnego pliku tekstowego?<BR>
|
|
|
|
|
<A href="#4.7">4.7</A>) Jak mog<6F> sprawdzi<7A> jakie tabele, klucze,
|
|
|
|
|
bazy danych i u<>ytkownicy s<> utworzeni?<BR>
|
|
|
|
|
<A href="#4.8">4.8</A>) Moje zapytania s<> wolne lub nie u<>ywaj<61>
|
|
|
|
|
kluczy. Dlaczego?<BR>
|
|
|
|
|
<A href="#4.9">4.9</A>) Jak mog<6F> sprawdzi<7A> w jakis spos<6F>b "query
|
|
|
|
|
optimizer" wykonuje moje zapytanie?<BR>
|
|
|
|
|
<A href="#4.10">4.10</A>) Co to jest "R-tree index"?<BR>
|
|
|
|
|
<A href="#4.11">4.11</A>) Co to jest "Genetic Query Optimizer"?<BR>
|
|
|
|
|
<A href="#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?<BR>
|
|
|
|
|
<A href="#4.13">4.13</A>) Jak sprawdzi<7A> w zapytaniu czy pole ma
|
|
|
|
|
warto<74><6F> <SMALL>NULL</SMALL>?<BR>
|
|
|
|
|
<A href="#4.14">4.14</A>) Jaka jest r<><72>nica pomi<6D>dzy r<><72>nymi typami
|
|
|
|
|
tekstowymi (character types)?<BR>
|
|
|
|
|
<A href="#4.15.1">4.15.1</A>) Jak mog<6F> utworzy<7A> pole typu int, kt<6B>re samo
|
|
|
|
|
zwi<77>ksza swoj<6F> warto<74><6F>?<BR>
|
|
|
|
|
<A href="#4.15.2">4.15.2</A>) Jak pobra<72> warto<74><6F> pola typu
|
|
|
|
|
<SMALL>SERIAL</SMALL> po wykonaniu insert'u?<BR>
|
|
|
|
|
<A href="#4.15.3">4.15.3</A>) Czy u<>ycie <I>currval()</I> i
|
|
|
|
|
<I>nextval()</I> nie doprowadzi do "race condition" z innymi
|
|
|
|
|
u<>ytkownikami?<BR>
|
|
|
|
|
<A href="#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 sekwencjami/SERIALem?<BR>
|
|
|
|
|
<A href="#4.16">4.16</A>) Co to jest <SMALL>OID</SMALL>? Co to jest
|
|
|
|
|
<SMALL>TID</SMALL>?<BR>
|
|
|
|
|
<A href="#4.17">4.17</A>) Jakie jest znaczenie niekt<6B>rych termin<69>w w
|
|
|
|
|
PostgreSQL?<BR>
|
|
|
|
|
<A href="#4.18">4.18</A>) Sk<53>d bierze si<73> ten b<><62>d: <I>"ERROR: Memory
|
|
|
|
|
exhausted in AllocSetAlloc()"</I>?<BR>
|
|
|
|
|
<A href="#4.19">4.19</A>) Jak sprawdzi<7A> jakiej wersji PostgreSQL
|
|
|
|
|
u<>ywam?<BR>
|
|
|
|
|
<A href="#4.20">4.20</A>) Dlaczego operacje, kt<6B>re wykonuj<75> na
|
|
|
|
|
du<64>ych obiektach "large-object" zwracaj<61> komunikat:
|
|
|
|
|
<I>"invalid large obj descriptor"</I>?<BR>
|
|
|
|
|
<A href="#4.21">4.21</A>) Jak stworzy<7A> kolumn<6D> kt<6B>rej domy<6D>ln<6C>
|
|
|
|
|
warto<74>ci<63> b<>dzie bie<69><65>cy czas?<BR>
|
|
|
|
|
<A href="#4.22">4.22</A>) Dlaczego zapytania u<>ywaj<61>ce
|
|
|
|
|
<CODE><SMALL>IN</SMALL></CODE> s<> takie wolne?<BR>
|
|
|
|
|
<A href="#4.23">4.23</A>) Jak wykona<6E> "outer join"?<BR>
|
|
|
|
|
<A href="#4.24">4.24</A>) Jak wykonywa<77> zapytanie u<>ywaj<61>ce kilku
|
|
|
|
|
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>
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<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>
|
|
|
|
|
|
2002-04-29 02:57:18 +00:00
|
|
|
|
<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>
|
|
|
|
|
<A href="#5.2">5.2</A>) Jak mog<6F> doda<64>/zg<7A>osi<73> nowe typy czy funkcje
|
|
|
|
|
do PostgreSQL?<BR>
|
|
|
|
|
<A href="#5.3">5.3</A>) Jak napisa<73> funkcj<63> C zwracaj<61>c<EFBFBD> krotk<74>
|
|
|
|
|
(tuple)?<BR>
|
|
|
|
|
<A href="#5.4">5.4</A>) Zmieni<6E>em plik <20>r<EFBFBD>d<EFBFBD>owy. Dlaczego po
|
|
|
|
|
rekompilacji nie wida<64> zmiany?<BR>
|
|
|
|
|
|
|
|
|
|
<HR>
|
|
|
|
|
|
|
|
|
|
<H2 align="center">Pytania og<6F>lne</H2>
|
|
|
|
|
|
|
|
|
|
<H4><A name="1.1">1.1</A>) Co to jest PostgreSQL? Jak to wymawia<69>?</H4>
|
|
|
|
|
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<P>PostgreSQL wymawia si<73> <I>Post-Gres-kju-el</I>. Cz<43>sto podczas
|
|
|
|
|
rozm<7A>w u<>ywany jest termin "Postgres"</P>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
|
|
|
|
|
<P>PostgreSQL jest rozszerzeniem systemu zarz<72>dzania bazami danych -
|
|
|
|
|
POSTGRES, kolejn<6A> generacj<63> rozwojowego prototypu <SMALL>DBMS</SMALL>.
|
|
|
|
|
Mimo, <20>e PostgreSQL zachowa<77> bardzo dobrze zbudowany model danych
|
|
|
|
|
(data model) i bogaty zestaw typ<79>w danych POSTGRES'a, zast<73>pi<70>
|
|
|
|
|
PostQuel'owy j<>zyk zapyta<74> z rozbudowanym podzbiorem j<>zyka
|
|
|
|
|
<SMALL>SQL</SMALL>. PostgreSQL jest oprogramowaniem darmowym
|
|
|
|
|
z dost<73>pnymi ca<63>ymi <20>r<EFBFBD>d<EFBFBD>ami.
|
|
|
|
|
</P>
|
|
|
|
|
|
|
|
|
|
<P>Rozw<EFBFBD>j PostgreSQL jest prowadzony przez grup<75> ludzi z Internetu,
|
|
|
|
|
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
|
2004-03-05 19:29:23 +00:00
|
|
|
|
pytanie <A href="#1.6">1.6</A> jak si<73> przy<7A><79>czy<7A>). Ta grupa ludzi jest
|
|
|
|
|
odpowiedzialna za ca<63>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>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
|
|
|
|
|
<P>Autorami PostgreSQL 1.01 byli Andrew Yu and Jolly Chen.
|
2004-03-05 19:29:23 +00:00
|
|
|
|
Wiele innych os<6F>b pomog<6F>o przy portowaniu, testowaniu, debugowaniu i
|
2002-04-29 02:57:18 +00:00
|
|
|
|
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
|
|
|
|
|
California w Berkeley.</P>
|
|
|
|
|
|
|
|
|
|
<P>Oryginaln<EFBFBD> nazw<7A> oprogramowania w Berkeley by<62> Postgres. Po
|
|
|
|
|
dodaniu obs<62>ugi <SMALL>SQL</SMALL> w 1995, nazwa zosta<74>a zmieniona
|
|
|
|
|
na Postgres95. Pod koniec roku 1996 nazwa zosta<74>a zmieniona na
|
|
|
|
|
PostgreSQL.</P>
|
|
|
|
|
|
|
|
|
|
<H4><A name="1.2">1.2</A>) Jak<61> licencj<63> chroniony jest
|
|
|
|
|
PostgreSQL?</H4>
|
|
|
|
|
|
|
|
|
|
<P>PostgreSQL obj<62>ty jest nast<73>puj<75>c<EFBFBD> licencj<63>:</P>
|
|
|
|
|
|
|
|
|
|
<P>PostgreSQL Data Base Management System</P>
|
|
|
|
|
|
2005-01-01 22:14:33 +00:00
|
|
|
|
<P>Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
|
|
|
|
Portions Copyright (c) 1994-6 Regents of the University of California</P>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
|
|
|
|
|
<P>Permission to use, copy, modify, and distribute this software
|
|
|
|
|
and its documentation for any purpose, without fee, and without a
|
|
|
|
|
written agreement is hereby granted, provided that the above
|
|
|
|
|
copyright notice and this paragraph and the following two
|
|
|
|
|
paragraphs appear in all copies.</P>
|
|
|
|
|
|
|
|
|
|
<P>IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY
|
|
|
|
|
PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
|
|
|
|
|
DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS
|
|
|
|
|
SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF
|
|
|
|
|
CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</P>
|
|
|
|
|
|
|
|
|
|
<P>THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY
|
|
|
|
|
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
|
|
|
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
|
|
|
|
|
SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE
|
|
|
|
|
UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE,
|
|
|
|
|
SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.</P>
|
|
|
|
|
|
|
|
|
|
<P>Tekst powy<77>ej, jest klasyczn<7A> licencj<63> BSD.
|
|
|
|
|
Nie posiada ona <20>adnych restrykcji co do u<>ywania kodu <20>r<EFBFBD>d<EFBFBD>owego.
|
2005-03-11 21:46:54 +00:00
|
|
|
|
Podoba nam si<73> i nie zamierzamy jej zmienia<69>.</P>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
|
|
|
|
|
<H4><A name="1.3">1.3</A>) Na jakich systemach Unixowych dzia<69>a
|
|
|
|
|
PostreSQL?</H4>
|
|
|
|
|
|
|
|
|
|
<P>PostgreSQL powinien dzia<69>a<EFBFBD> na wszystkich nowych Unix-podobnych
|
|
|
|
|
systemach. Platformy, kt<6B>re zosta<74>y szczeg<65><67>owo przetestowane podczas
|
|
|
|
|
publikowania PostgreSQL s<> wymienione w dokumentacji opisuj<75>cej
|
|
|
|
|
instalacj<63>.</P>
|
|
|
|
|
|
|
|
|
|
<H4><A name="1.4">1.4</A>) Na jakich nie-Unixowych systemach dzia<69>a
|
|
|
|
|
PostgreSQL?</H4>
|
|
|
|
|
|
|
|
|
|
<P><STRONG>Klient</STRONG></P>
|
|
|
|
|
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<P>Mo<EFBFBD>liwa jest kompilacja bibliteki C <I>libpq</I>, psql oraz
|
2002-04-29 02:57:18 +00:00
|
|
|
|
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
|
2004-03-05 19:29:23 +00:00
|
|
|
|
Unixowej. Plik <I>win32.mak</I> jest do<64><6F>czony
|
2002-04-29 02:57:18 +00:00
|
|
|
|
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>
|
|
|
|
|
|
|
|
|
|
<P><STRONG>Serwer</STRONG></P>
|
|
|
|
|
|
|
|
|
|
<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=
|
2005-03-11 21:46:54 +00:00
|
|
|
|
"http://www.postgresql.org/docs/faqs/text/FAQ_MSWIN">http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN</A> na naszych stronach.</P><P>
|
2004-03-05 19:29:23 +00:00
|
|
|
|
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>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
|
|
|
|
|
<H4><A name="1.5">1.5</A>) Sk<53>d mo<6D>na <20>ci<63>gn<67><6E> PostgreSQL?</H4>
|
|
|
|
|
|
|
|
|
|
<P>G<EFBFBD><EFBFBD>wny serwer ftp z dost<73>pem "anonymous" dla PostgreSQL znajduje
|
|
|
|
|
si<73> <A href="ftp://ftp.PostgreSQL.org/pub">ftp://ftp.PostgreSQL.org/pub</A>.
|
2005-03-11 21:46:54 +00:00
|
|
|
|
je<6A>li szukasz mirror<6F>w sprawd<77> nasz<73> g<><67>wn<77> stron<6F> www.</P>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
|
|
|
|
|
<H4><A name="1.6">1.6</A>) Gdzie mo<6D>na szuka<6B> wsparcia technicznego?</H4>
|
|
|
|
|
|
|
|
|
|
<P>Adres g<><67>wnej listy mailowej: <A href=
|
|
|
|
|
"mailto:pgsql-general@PostgreSQL.org">pgsql-general@PostgreSQL.org</A>.
|
|
|
|
|
Jest ona przeznaczona dyskusjom dotycz<63>cym spraw zwi<77>zanych z PostgreSQL.
|
|
|
|
|
<20>eby zapisac si<73> na list<73>, wy<77>lij email z nast<73>puj<75>cymi liniami w
|
|
|
|
|
tre<72>ci maila (nie w temacie):</P>
|
|
|
|
|
<PRE>
|
|
|
|
|
subscribe
|
|
|
|
|
end
|
|
|
|
|
</PRE>
|
|
|
|
|
|
|
|
|
|
<P>na adres: <A href=
|
|
|
|
|
"mailto:pgsql-general-request@PostgreSQL.org">pgsql-general-request@PostgreSQL.org</A>.</P>
|
|
|
|
|
|
|
|
|
|
<P>Dost<EFBFBD>pna jest tak<61>e lista wysy<73>aj<61>ca digesty. Aby zapisa<73> si<73> na
|
|
|
|
|
ni<6E>, wy<77>lij email na adres:
|
|
|
|
|
<A href=
|
|
|
|
|
"mailto:pgsql-general-digest-request@PostgreSQL.org">pgsql-general-digest-request@PostgreSQL.org</A>
|
|
|
|
|
z tre<72>ci<63> maila zawieraj<61>c<EFBFBD>:</P>
|
|
|
|
|
<PRE>
|
|
|
|
|
subscribe
|
|
|
|
|
end
|
|
|
|
|
</PRE>
|
|
|
|
|
Digesty s<> wysy<73>ane do cz<63>onk<6E>w listy, kiedy na g<><67>wn<77> list<73> dotrze ok
|
|
|
|
|
30k wiadomo<6D>ci.
|
|
|
|
|
|
|
|
|
|
<P>Dost<EFBFBD>pna jest tak<61>e lista po<70>wi<77>cona b<><62>dom znalezionym w
|
|
|
|
|
PostgreSQL. Aby zapisa<73> si<73> na ni<6E> wy<77>lij email na adres:
|
|
|
|
|
<A href=
|
|
|
|
|
"mailto:pgsql-bugs-request@PostgreSQL.org">pgsql-bugs-request@PostgreSQL.org</A>
|
|
|
|
|
z tre<72>ci<63> maila zawieraj<61>c<EFBFBD>:</P>
|
|
|
|
|
<PRE>
|
|
|
|
|
subscribe
|
|
|
|
|
end
|
|
|
|
|
</PRE>
|
|
|
|
|
Lista po<70>wi<77>cona dyskusjom developer<65>w jest dost<73>pna pod adresem:
|
|
|
|
|
<A href=
|
|
|
|
|
"mailto:pgsql-hackers-request@PostgreSQL.org">pgsql-hackers-request@PostgreSQL.org</A>
|
|
|
|
|
Aby si<73> na ni<6E> zapisa<73> wy<77>lij na jej adres mail z tre<72>ci<63>:
|
|
|
|
|
<PRE>
|
|
|
|
|
subscribe
|
|
|
|
|
end
|
|
|
|
|
</PRE>
|
|
|
|
|
|
|
|
|
|
<P>Dodatkowe informacje o listach mailowych dotycz<63>cych PostgreSQL
|
|
|
|
|
mo<6D>na znale<6C><65> na stronach WWW PostgreSQL pod adresem:</P>
|
|
|
|
|
|
|
|
|
|
<BLOCKQUOTE>
|
2005-03-11 21:46:54 +00:00
|
|
|
|
<P><A href="http://www.PostgreSQL.org">http://www.PostgreSQL.org</A></P>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
</BLOCKQUOTE>
|
|
|
|
|
|
|
|
|
|
<P>W sieci EFNet istnieje kana<6E> IRC <I>#PostgreSQL</I>. Ja, do
|
|
|
|
|
po<70><6F>czenia si<73> z kana<6E>em u<>ywam Unixowego polecenia <CODE>irc -c
|
|
|
|
|
'#PostgreSQL' "$USER" irc.phoenix.net.</CODE></P>
|
|
|
|
|
|
|
|
|
|
<P>Lista firm oferuj<75>cych wsparcie na zasadach komercyjnych znajduje
|
2004-03-05 19:29:23 +00:00
|
|
|
|
si<73> pod adresem: <A href= "http://techdocs.postgresql.org/companies.php">http://techdocs.postgresql.org/companies.php</A>.</P>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
|
|
|
|
|
<H4><A name="1.7">1.7</A>) Jaka jest ostatnia dost<73>pna wersja?</H4>
|
|
|
|
|
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<P>Ostatnia dost<73>pna wersja PostgreSQL to 7.4.1.</P>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<P>Planujemy publikowanie kolejnych wersji co sze<7A><65> do o<>miu miesi<73>cy.</P>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
|
|
|
|
|
<H4><A name="1.8">1.8</A>) Jaka dokumentacja jest dost<73>pna?</H4>
|
|
|
|
|
|
|
|
|
|
<P>Kilka manuali, stron pod<6F>cznika man, oraz kilka przyk<79>ad<61>w do
|
|
|
|
|
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=
|
2004-03-05 19:29:23 +00:00
|
|
|
|
"http://www.PostgreSQL.org/docs">http://www.PostgreSQL.org/docs</A>.</P>
|
|
|
|
|
|
2002-04-29 02:57:18 +00:00
|
|
|
|
<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>
|
|
|
|
|
i <A href=
|
|
|
|
|
"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=
|
2004-03-05 19:29:23 +00:00
|
|
|
|
"http://techdocs.PostgreSQL.org/techdocs/bookreviews.php">
|
|
|
|
|
http://techdocs.PostgreSQL.org/techdocs/bookreviews.php</A>.
|
2002-04-29 02:57:18 +00:00
|
|
|
|
Zbi<62>r technicznych artyku<6B><75>w o PostgreSQL znajduje si<73> pod adresem <A
|
|
|
|
|
href=
|
2004-03-05 19:29:23 +00:00
|
|
|
|
"http://techdocs.PostgreSQL.org">http://techdocs.postgresql.org/</A>.</P>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
|
|
|
|
|
<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,
|
2004-03-05 19:29:23 +00:00
|
|
|
|
agregat<61>w itd.</P>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
|
|
|
|
|
<P>Na naszej stronie mo<6D>na znale<6C><65> du<64>o wi<77>cej dokumentacji.</P>
|
|
|
|
|
|
|
|
|
|
<H4><A name="1.9">1.9</A>) Gdzie mo<6D>na znale<6C><65> informacj<63> o znanych
|
|
|
|
|
b<><62>dach czy brakuj<75>cych rozwi<77>zanich?</H4>
|
|
|
|
|
|
|
|
|
|
<P>PostgreSQL wspiera rozszerzony podzbi<62>r standardu <SMALL>SQL</SMALL>-92.
|
2005-05-11 16:13:20 +00:00
|
|
|
|
Sprawd<77> nasz<73> list<73> <A href="http://www.postgresql.org/docs/faqs.TODO.html">TODO</A>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
aby znale<6C><65> informacj<63> o znanych problemach, brakuj<75>cych
|
|
|
|
|
rozwi<77>zaniach czy przysz<73>ych planach.</P>
|
|
|
|
|
|
|
|
|
|
<H4><A name="1.10">1.10</A>) Jak mog<6F> si<73> nauczy<7A>
|
|
|
|
|
<SMALL>SQL</SMALL>?</H4>
|
|
|
|
|
|
|
|
|
|
<P>Ksi<EFBFBD><EFBFBD>ka o PostgreSQL <A href=
|
|
|
|
|
"http://www.PostgreSQL.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html</A>
|
|
|
|
|
uczy <SMALL>SQL</SMALL>. Jest jeszcze inna ksi<73>zka o PostgreSQL
|
|
|
|
|
dost<73>pna pod adresem: <A href=
|
|
|
|
|
"http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook.</A>
|
|
|
|
|
Dobry tutorial mo<6D>esz znale<6C><65> pod adresem: <A href=
|
|
|
|
|
"http://www.intermedia.net/support/sql/sqltut.shtm">http://www.intermedia.net/support/sql/sqltut.shtm,</A>
|
|
|
|
|
oraz <A href=
|
|
|
|
|
"http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM">
|
|
|
|
|
http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM,</A>
|
|
|
|
|
i <A href=
|
|
|
|
|
"http://sqlcourse.com/">http://sqlcourse.com.</A></P>
|
|
|
|
|
|
|
|
|
|
<P>Jeszcze inny to "Teach Yourself SQL in 21 Days, Second Edition"
|
|
|
|
|
pod adresem: <A href=
|
|
|
|
|
"http://members.tripod.com/er4ebus/sql/index.htm">http://members.tripod.com/er4ebus/sql/index.htm</A></P>
|
|
|
|
|
|
|
|
|
|
<P>Wielu z naszych u<>ytkownik<69>w poleca <I>The Practical SQL Handbook</I>,
|
|
|
|
|
Bowman, Judith S., et al., Addison-Wesley. Inni polecaj<61> <I>The
|
|
|
|
|
Complete Reference SQL</I>, Groff et al., McGraw-Hill.</P>
|
|
|
|
|
|
|
|
|
|
<H4><A name="1.11">1.11</A>) Czy PostgreSQL ma rozwi<77>zany problem Y2K?</H4>
|
|
|
|
|
|
|
|
|
|
<P>Tak, bez problemu radzimy sobie z datami po roku 2000 AD, oraz
|
|
|
|
|
przed rokiem 2000 BC.</P>
|
|
|
|
|
|
|
|
|
|
<H4><A name="1.12">1.12</A>) Jak mog<6F> si<73> przy<7A><79>czy<7A> do grupy os<6F>b
|
|
|
|
|
bezpo<70>rednio pracuj<75>cych nad rozwojem PostgreSQL?</H4>
|
|
|
|
|
|
|
|
|
|
<P>Przede wszystkim <20>ci<63>gnij ostatnie dost<73>pne <20>r<EFBFBD>d<EFBFBD>a i przeczytaj
|
|
|
|
|
dokumentacj<63> przeznaczon<6F> dla developer<65>w na naszej stronie www lub
|
|
|
|
|
dost<73>pn<70> tak<61>e w <20>r<EFBFBD>d<EFBFBD>ach PostgreSQL. Nast<73>pnie zapisz si<73> na listy
|
|
|
|
|
mailowe <I>pgsql-hackers</I> i
|
|
|
|
|
<I>pgsql-patches</I>. I na koniec, wysy<73>aj nam wysokiej jako<6B>ci
|
|
|
|
|
patch'e na list<73> pgsql-patches.</P>
|
|
|
|
|
|
|
|
|
|
<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
|
2004-03-05 19:29:23 +00:00
|
|
|
|
commiter<65>w by<62> z nimi na bie<69><65>co, wi<77>c musieli<6C>my im ufa<66> i mie<69>
|
|
|
|
|
pewno<6E><6F>, <20>e ich poprawki s<> wysokiej jako<6B>ci.</P>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
|
|
|
|
|
<H4><A name="1.13">1.13</A>) Jak mog<6F> zg<7A>asza<7A> b<><62>dy?</H4>
|
|
|
|
|
|
|
|
|
|
<P>Zajrzyj na stron<6F> <A href=
|
|
|
|
|
"http://www.postgresql.org/bugs/bugs.php">PostgreSQL BugTool</A>, na
|
|
|
|
|
kt<6B>rej opisane s<> wskaz<61>wki jak zg<7A>asza<7A> informacje o b<><62>dach.</P>
|
|
|
|
|
|
|
|
|
|
<P>Zajrzyj tak<61>e na nasz ftp <A href=
|
|
|
|
|
"ftp://ftp.PostgreSQL.org/pub">ftp://ftp.PostgreSQL.org/pub</A>, aby
|
|
|
|
|
sprawdzi<7A> czy nie ma nowszych wersji PostgreSQL czy patchy.</P>
|
|
|
|
|
|
|
|
|
|
<H4><A name="1.14">1.14</A>) Jak mo<6D>na por<6F>wna<6E> PostgreSQL w stosunku
|
|
|
|
|
do innych <SMALL>DBMS</SMALL>?</H4>
|
|
|
|
|
|
|
|
|
|
<P>Jest kilka sposob<6F>w oceny softwaru: mo<6D>liwo<77>ci,
|
|
|
|
|
wydajno<6E><6F>, stabilno<6E><6F>, wsparcie i cena.</P>
|
|
|
|
|
|
|
|
|
|
<DL>
|
|
|
|
|
<DT><B>Mo<EFBFBD>liwo<EFBFBD>ci</B></DT>
|
|
|
|
|
|
|
|
|
|
<DD>PostgreSQL posiada mo<6D>liwo<77>ci dost<73>pne w du<64>ych, komercyjnych
|
|
|
|
|
systemach <SMALL>DBMS</SMALL>, takie jak transakcje, podzapytania
|
|
|
|
|
(subselects), triggery, widoki, klucze obce, referential integrity,
|
|
|
|
|
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
|
2004-03-05 19:29:23 +00:00
|
|
|
|
redukuje problemy z blokowaniem (lock contention).<BR>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
<BR>
|
|
|
|
|
</DD>
|
|
|
|
|
|
|
|
|
|
<DT><B>Wydajno<EFBFBD><EFBFBD></B></DT>
|
|
|
|
|
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<DD>Wydajno<EFBFBD><EFBFBD> PostgreSQL jest podobna do innych komercyjnych i open
|
|
|
|
|
source baz danych. W niekt<6B>rych sytuacjach jest szybszy w
|
|
|
|
|
niekt<6B>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<77>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<6E>ci, oraz szerokiej gamie mo<6D>liwo<77>ci, ale mimo to staramy
|
|
|
|
|
si<73> 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>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
<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
|
2004-03-05 19:29:23 +00:00
|
|
|
|
wydanie poprzedza co najmniej miesi<73>c test<73>w wersji beta. Patrz<72>c na
|
2002-04-29 02:57:18 +00:00
|
|
|
|
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
|
|
|
|
|
opracowany przez nas jest jednym z lepszych w<>r<EFBFBD>d innych tw<74>rc<72>w
|
|
|
|
|
oprogramowania bazodanowego.<BR>
|
|
|
|
|
<BR>
|
|
|
|
|
</DD>
|
|
|
|
|
|
|
|
|
|
<DT><B>Wsparcie</B></DT>
|
|
|
|
|
|
|
|
|
|
<DD>Dzi<EFBFBD>ki naszym listom mailowym masz dost<73>p do du<64>ej liczby
|
|
|
|
|
programist<73>w i u<>ytkownik<69>w, kt<6B>rzy pomagaj<61> rozwi<77>za<7A> ka<6B>dy
|
|
|
|
|
napotkany problem. Chocia<69> nie mo<6D>emy gwarantowa<77> znalezienia
|
|
|
|
|
rozwi<77>zania danego problemu, nie r<><72>nimy si<73> w tym od innych
|
|
|
|
|
komercyjnych system<65>w <SMALL>DBMS</SMALL>. Bezpo<70>redni kontakt z
|
|
|
|
|
programistami, u<>ytkownikami, dokumentacj<63> i kodem <20>r<EFBFBD>d<EFBFBD>owym
|
|
|
|
|
sprawiaj<61>, <20>e wsparcie oferowane PostgreSQL niejednokrotnie jest
|
|
|
|
|
lepsze ni<6E> w innych systemach <SMALL>DBMS</SMALL>. Istnieje tak<61>e
|
|
|
|
|
mo<6D>liwo<77><6F> skorzystania z komercyjnego wsparcia dla tych, kt<6B>rych
|
|
|
|
|
takiego rozwi<77>zania potrzebuj<75>.
|
|
|
|
|
(Sprawd<77> <A href="#1.6">ten punkt FAQ</A>.)<BR>
|
|
|
|
|
<BR>
|
|
|
|
|
</DD>
|
|
|
|
|
|
|
|
|
|
<DT><B>Cena</B></DT>
|
|
|
|
|
|
|
|
|
|
<DD>Korzystanie z PostgreSQL jest darmowe, zar<61>wno w przypadku
|
|
|
|
|
komercyjnym jak i niekomercyjnym. Mo<4D>esz korzysta<74> z naszego kodu
|
|
|
|
|
<09>r<EFBFBD>d<EFBFBD>owego w Twoim produkcie bez <20>adnych ogranicze<7A>, poza tymi
|
|
|
|
|
wymienionymi w licencji BSD przytoczonej powy<77>ej.<BR>
|
|
|
|
|
<BR>
|
|
|
|
|
</DD>
|
|
|
|
|
</DL>
|
|
|
|
|
|
|
|
|
|
<H4><A name="1.15">1.15</A>) W jaki spos<6F>b mog<6F> wesprze<7A> finansowo
|
|
|
|
|
PostgreSQL?</H4>
|
|
|
|
|
|
|
|
|
|
<P>PostgreSQL korzysta z najlepszej infrastruktury od samego pocz<63>tku
|
2004-03-05 19:29:23 +00:00
|
|
|
|
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>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
|
|
|
|
|
<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
|
2004-03-05 19:29:23 +00:00
|
|
|
|
tanie. Istnieje wiele r<><72>nych miesi<73>cznych, czy jednorazowych
|
2002-04-29 02:57:18 +00:00
|
|
|
|
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=
|
2004-03-05 19:29:23 +00:00
|
|
|
|
"http://store.pgsql.com/shopping/">http://store.pgsql.com/shopping/</A>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
gdzie opisane jest jak to zrobi<62>.</P>
|
|
|
|
|
|
|
|
|
|
<P>Chocia<EFBFBD> na stronie wspomniana jest nazwa PostgreSQL Inc, "datki"
|
|
|
|
|
s<> przeznaczone jedynie na rozw<7A>j projektu PostgreSQL i nie s<>
|
|
|
|
|
przeznaczane na finansowanie jakiejkolwiek firmy. Je<4A>li wolisz,
|
|
|
|
|
mo<6D>esz wys<79>a<EFBFBD> czek na adres kontaktowy.</P>
|
|
|
|
|
<HR>
|
2004-03-05 19:29:23 +00:00
|
|
|
|
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>.
|
2002-04-29 02:57:18 +00:00
|
|
|
|
|
|
|
|
|
<H2 align="center">User Client Questions</H2>
|
|
|
|
|
|
|
|
|
|
<H4><A name="2.1">2.1</A>) Czy s<> jakie<69> driwery <SMALL>ODBC</SMALL> dla
|
|
|
|
|
PostgreSQL?</H4>
|
|
|
|
|
|
|
|
|
|
<P>Dost<EFBFBD>pne s<> dwa driwery <SMALL>ODBC</SMALL>: PsqlODBC
|
|
|
|
|
i OpenLink <SMALL>ODBC</SMALL>.</P>
|
|
|
|
|
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<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>
|
|
|
|
|
|
2002-04-29 02:57:18 +00:00
|
|
|
|
<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>
|
2004-03-05 19:29:23 +00:00
|
|
|
|
dost<73>pnego na ka<6B>dej pltaformie kt<6B>r<EFBFBD> wspiera (Win, Mac, Unix, VMS).</P>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
|
|
|
|
|
<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>
|
|
|
|
|
|
|
|
|
|
<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>
|
|
|
|
|
|
|
|
|
|
<P>Dobry podr<64>cznik dla pocz<63>tkuj<75>cych o dost<73>pie do bazy danych
|
|
|
|
|
przez www mo<6D>esz znale<6C><65> pod adresem:
|
|
|
|
|
<A href="http://www.webreview.com">http://www.webreview.com</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
|
2004-03-05 19:29:23 +00:00
|
|
|
|
modu<64>u CGI.pl lub mod_perl.</P>
|
|
|
|
|
|
|
|
|
|
<H4><A name="2.3">2.3</A>) Czy istnieje jakie<69> GUI dla PostgreSQL?</H4>
|
|
|
|
|
|
|
|
|
|
<P>Tak, istnieje kilka interfejs<6A>w graficznych dla PostgreSQL.
|
|
|
|
|
W<>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
|
2005-03-11 21:46:54 +00:00
|
|
|
|
<A href="http://techdocs.postgresql.org/guides/GUITools">http://techdocs.postgresql.org/guides/GUITools</A>.</P>
|
2004-03-05 19:29:23 +00:00
|
|
|
|
|
|
|
|
|
<H4><A name="2.4">2.4</A>) Za pomoc<6F> jakich j<>zyk<79>w programowania
|
2002-04-29 02:57:18 +00:00
|
|
|
|
mo<6D>na si<73> komunikowa<77> z PostgreSQL?</H4>
|
|
|
|
|
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<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>
|
|
|
|
|
|
2002-04-29 02:57:18 +00:00
|
|
|
|
|
|
|
|
|
<UL>
|
|
|
|
|
<LI>C (libpq)</LI>
|
|
|
|
|
|
|
|
|
|
<LI>Embedded C (ecpg)</LI>
|
|
|
|
|
|
|
|
|
|
<LI>Java (jdbc)</LI>
|
|
|
|
|
|
|
|
|
|
<LI>Python (PyGreSQL)</LI>
|
|
|
|
|
|
|
|
|
|
<LI>TCL (libpgtcl)</LI>
|
|
|
|
|
</UL>
|
2004-03-05 19:29:23 +00:00
|
|
|
|
Inne interfejsy s<> dost<73>pne pod adresem:
|
|
|
|
|
<A href="http://gborg.postgresql.org"> http://gborg.postgresql.org</A> w
|
|
|
|
|
sekcji Drivers/Interfaces.
|
2002-04-29 02:57:18 +00:00
|
|
|
|
<HR>
|
|
|
|
|
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<H2 align="center">Pytania dotycz<63>ce administracji</H2>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
|
|
|
|
|
<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>
|
|
|
|
|
|
|
|
|
|
<P>U<EFBFBD>yj opcji <I>--prefix</I> podczas uruchamiania skryptu
|
|
|
|
|
<I>configure</I>.</P>
|
|
|
|
|
|
|
|
|
|
<H4><A name="3.2">3.2</A>) Podczas startu <I>postmaster'a</I>,
|
|
|
|
|
otrzymuj<75> komunikat o b<><62>dzie: <I>Bad System Call</I> lub "core dumped".
|
|
|
|
|
Dlaczego?</H4>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<P>Ten b<><62>d mo<6D>e by<62> wynikiem wielu problem<65>w, ale na pocz<63>tek
|
|
|
|
|
sprawd<77> czy masz zainstalowane rozszerzenia systemu V w j<>drze
|
|
|
|
|
systemu. PostgreSQL wymaga do pracy zainstalowanej obs<62>ugi pami<6D>ci
|
|
|
|
|
dzielonej i semafor<6F>w.</P>
|
|
|
|
|
|
|
|
|
|
<H4><A name="3.3">3.3</A>) Podczas startu <I>postmaster'a</I>,
|
|
|
|
|
otrzymuj<75> komunikat o b<><62>dzie: <I>IpcMemoryCreate</I>.
|
|
|
|
|
Dlaczego?</H4>
|
|
|
|
|
|
|
|
|
|
<P>Albo nie masz poprawnie skonfigurowanej obs<62>ugi pami<6D>ci dzielonej
|
|
|
|
|
w j<>drze systemu, albo musisz zwi<77>kszy<7A> jej dost<73>pny rozmiar.
|
|
|
|
|
Dok<6F>adna ilo<6C><6F> jak<61> potrzebujesz jest zale<6C>na od architektury systemu
|
|
|
|
|
na jakim pracujesz, jak du<64>o bufor<6F>w oraz jak du<64>o proces<65>w backendu
|
|
|
|
|
skonfigurowa<77>e<EFBFBD> dla <I>postmaster'a</I>. Dla wi<77>kszo<7A>ci system<65>w, z
|
|
|
|
|
domy<6D>ln<6C> liczb<7A> bufor<6F>w i proces<65>w potrzebujesz minimum w
|
|
|
|
|
przybli<6C>eniu 1MB. Zobacz <A href=
|
|
|
|
|
"http://www.postgresql.org/idocs/index.php?kernel-resources.html">PostgreSQL
|
|
|
|
|
Administrator's Guide</A> gdzie szczeg<65><67>owo zosta<74>o opisane
|
|
|
|
|
wykorzystanie pami<6D>ci dzielonej i semafor<6F>w.</P>
|
|
|
|
|
|
|
|
|
|
<H4><A name="3.4">3.4</A>) Podczas startu <I>postmaster'a</I>,
|
|
|
|
|
otrzymuj<75> komunikat o b<><62>dzie: <I>IpcSemaphoreCreate</I>.
|
|
|
|
|
Dlaczego?</H4>
|
|
|
|
|
|
|
|
|
|
<P>Je<EFBFBD>li tre<72><65> b<><62>du brzmi: <I>IpcSemaphoreCreate: semget failed
|
|
|
|
|
(No space left on device)</I> oznacza to, <20>e j<>dro systemu nie jest
|
|
|
|
|
skonfigurowane do obs<62>ugi wystarczaj<61>cej liczby semafor<6F>w.
|
|
|
|
|
Postgres wymaga jednego semafor'a na potencjalny jeden proces backend.
|
|
|
|
|
Tymczasowym rozwi<77>zaniem jest uruchomienie programu <I>postmaster</I>
|
|
|
|
|
z mniejsz<73> maksymaln<6C> liczb<7A> proces<65>w backend.
|
|
|
|
|
U<>yj opcji <I>-N</i> z parameterem mniejszym od domy<6D>lnego - 32.
|
|
|
|
|
Bardziej trwa<77>ym rozwi<77>zaniem jest zwi<77>kszenie parametr<74>w
|
|
|
|
|
<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
|
2004-03-05 19:29:23 +00:00
|
|
|
|
systemu w czasie intensywnego korzystania z bazy.</P>
|
|
|
|
|
|
2002-04-29 02:57:18 +00:00
|
|
|
|
<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
|
|
|
|
|
dzielonej i semaforach.</P>
|
|
|
|
|
|
|
|
|
|
<H4><A name="3.5">3.5</A>) W jaki spos<6F>b mog<6F> kontrolowa<77> po<70><6F>czenia
|
|
|
|
|
z innych host<73>w?</H4>
|
|
|
|
|
|
|
|
|
|
<P>Domy<EFBFBD>lnie PostgreSQL pozwala jedynie na po<70><6F>czenia za pomoc<6F>
|
|
|
|
|
socket<65>w Unixowych z lokalnego hosta. Inne hosty nie b<>d<EFBFBD> mog<6F>y si<73>
|
|
|
|
|
po<70><6F>czy<7A> z serwerem dop<6F>ki nie zostanie dodana opcja <I>-i</I> do
|
|
|
|
|
<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
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<I>$PGDATA/pg_hba.conf</I>. To zmiany pozwol<6F> na po<70><6F>czenia TCP/IP.</P>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
|
|
|
|
|
<H4><A name="3.6">3.6</A>) Jak powinienem skonfigurowa<77> system baz
|
|
|
|
|
danych aby uzyska<6B> lepsz<73> wydajno<6E><6F>?</H4>
|
|
|
|
|
|
|
|
|
|
<P>Indeksy bez w<>tpienia mog<6F> przyspieszy<7A> wykonywanie zapyta<74>.
|
|
|
|
|
Polecenie <SMALL>EXPLAIN</SMALL> pozwala zobaczy<7A> jak PostgreSQL
|
|
|
|
|
interpretuje Twoje zapytanie i kt<6B>re indeksy s<> u<>ywane.</P>
|
|
|
|
|
|
|
|
|
|
<P>Je<EFBFBD>li wykonujesz bardzo du<64>o <SMALL>INSERT<EFBFBD>w</SMALL>, mo<6D>e warto
|
|
|
|
|
je wykona<6E> za pomoc<6F> jednego du<64>ego pliku u<>ywaj<61>c polecenia
|
|
|
|
|
<SMALL>COPY</SMALL>. Jest to du<64>o szybsze ni<6E> pojedyncze
|
|
|
|
|
<SMALL>INSERTy.</SMALL> Po drugie polecenia SQL nie zawarte w bloku
|
|
|
|
|
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
|
2004-03-05 19:29:23 +00:00
|
|
|
|
nak<61>adany przez transakcj<63>. Przy du<64>ych zmianach w danych, warto
|
2002-04-29 02:57:18 +00:00
|
|
|
|
usun<75><6E> i stworzy<7A> na nowo indeksy.</P>
|
|
|
|
|
|
|
|
|
|
<P>Jest kilka opcji pozwalaj<61>cych na poprawienie wydajno<6E>ci.
|
|
|
|
|
Mo<4D>esz wy<77><79>czy<7A> <I>fsync()</I> poprzez uruchomienie <I>postmaster'a</I>
|
|
|
|
|
z opcjami <I>-o -F</I>. To spowoduje, <20>e
|
|
|
|
|
<I>fsync()</I> nie b<>dzie zrzuca<63> danych na dysk po ka<6B>dej
|
|
|
|
|
transakcji.</P>
|
|
|
|
|
|
|
|
|
|
<P>Mo<EFBFBD>esz tak<61>e uruchomi<6D> <I>postmaster'a</I> z opcj<63> <I>-B</I>
|
|
|
|
|
aby zwi<77>kszy<7A> wielko<6B><6F> pami<6D>ci dzielonej u<>ywanej przez procesy
|
|
|
|
|
backend<6E>w. Je<4A>li ustawisz t<> warto<74><6F> zbyt wysoko i przekroczysz limity
|
|
|
|
|
ustawione przez kernel na pami<6D><69> dzielon<6F>, <I>postmaster</I> mo<6D>e si<73>
|
|
|
|
|
nie uruchomi<6D>. Ka<4B>dy bufor zajmuje 8K a domy<6D>lna ilo<6C><6F> bufor<6F>w to 64.</P>
|
|
|
|
|
|
|
|
|
|
<P>Mo<EFBFBD>esz tak<61>e u<>y<EFBFBD> opcji <I>-S</I> dla backendu aby zwi<77>kszy<7A>
|
|
|
|
|
maksymaln<6C> warto<74><6F> pami<6D>ci u<>ywan<61> przez proces backendu podczas
|
|
|
|
|
sortowania. Opcja <I>-S</I> jest ustawiana warto<74>ci<63> podawan<61> w
|
|
|
|
|
kilobajtach, domy<6D>lna warto<74><6F> to 512K.</P>
|
|
|
|
|
|
|
|
|
|
<P>Mo<EFBFBD>esz tak<61>e u<>y<EFBFBD> polecenia <SMALL>CLUSTER</SMALL> aby pogrupowa<77>
|
|
|
|
|
dane w tabelach wg indeksu. Zobacz opis polecenia <SMALL>CLUSTER</SMALL>
|
|
|
|
|
w manualu <20>eby dowiedzie<69> si<73> wi<77>cej.</P>
|
|
|
|
|
|
|
|
|
|
<H4><A name="3.7">3.7</A>) Jakie s<> mo<6D>liwo<77>ci wyszukiwania
|
|
|
|
|
b<><62>d<EFBFBD>w?</H4>
|
|
|
|
|
|
|
|
|
|
<P>PostgreSQL ma kilka mo<6D>liwo<77>ci na raportowanie informacji o
|
|
|
|
|
jego statusie, kt<6B>re mog<6F> by<62> przydatne przy debugowaniu procesu.</P>
|
|
|
|
|
|
|
|
|
|
<P>Przede wszystkim uruchom skrypt <I>configure</I> z opcj<63>
|
|
|
|
|
--enable-cassert, wiele funkcji <I>assert()</I> monitoruj<75> post<73>p
|
|
|
|
|
procesu backend i zatrzymuj<75> program kiedy wydarzy si<73> co<63>
|
|
|
|
|
nieoczekiwanego.</P>
|
|
|
|
|
|
|
|
|
|
<P>Zar<EFBFBD>wno <I>postmaster</I> jak i <I>postgres</I> maj<61> kilka opcji
|
|
|
|
|
do debugowania. Za ka<6B>dym razem kiedy uruchamiasz <I>postmaster'a</I>,
|
|
|
|
|
upewnij si<73>, <20>e wysy<73>asz standardowe wyj<79>cie i error do pliku z
|
|
|
|
|
logami, np. w ten spos<6F>b:</P>
|
|
|
|
|
<PRE>
|
|
|
|
|
cd /usr/local/pgsql
|
|
|
|
|
./bin/postmaster >server.log 2>&1 &
|
|
|
|
|
</PRE>
|
|
|
|
|
|
|
|
|
|
<P>To utworzy plik server.log w g<><67>wnym katalogu PostgreSQL.
|
|
|
|
|
Ten plik zawiera po<70>yteczne informacje o problemach i b<><62>dach, kt<6B>re
|
|
|
|
|
wydarzy<7A>y si<73> podczas pracy serwera. <I>Postmaster</I> posiada opcj<63>
|
|
|
|
|
<I>-d</I>, kt<6B>ra pozwala na raportowanie bardzo szczeg<65>lowych
|
|
|
|
|
informacji. Do opcji <I>-d</I> podajemy liczb<7A>, kt<6B>ra okre<72>la
|
|
|
|
|
szczeg<65><67>owo<77><6F> wysy<73>anych informacji. Musisz mie<69> <20>wiadomo<6D><6F>, <20>e
|
|
|
|
|
wysoki poziom logowania b<>dzie powodowa<77> tworzenie bardzo duzych
|
|
|
|
|
plik<69>w z logami.</P>
|
|
|
|
|
|
|
|
|
|
<P>Je<EFBFBD>li <I>postmaster</I> nie zosta<74> uruchomiony, mo<6D>esz uruchomi<6D>
|
|
|
|
|
<I>postgres'owy</I> backend z linii polece<63>, i uruchomi<6D> Twoje
|
|
|
|
|
polecenie <SMALL>SQL</SMALL> bezpo<70>rednio na nim.
|
|
|
|
|
Taki spos<6F>b jest polecany <B>jedynie</B> w przypadku debugowania.
|
|
|
|
|
Zwr<77><72> uwag<61>, <20>e w tym wypadku zapytanie ko<6B>czy znak nowej linii a nie
|
|
|
|
|
<20>rednik. Je<4A>li skompilowa<77>e<EFBFBD> z opcjami debugowania mozesz u<>y<EFBFBD>
|
|
|
|
|
debuggera aby sprawdzi<7A> co si<73> dzieje. Poniew<65> backend nie zosta<74>
|
|
|
|
|
uruchomiony przez <I>postmaster'a</I>, nie dzia<69>a w identycznym
|
|
|
|
|
<20>rodowisku, co oznacza <20>e powt<77>rzenie warunk<6E>w w jakich wyst<73>pi<70>y
|
|
|
|
|
problemy moze by<62> problemem.</P>
|
|
|
|
|
|
|
|
|
|
<P>Je<EFBFBD>li <I>postmaster</I> dzia<69>a, uruchom <I>psql</I> w jednym z
|
|
|
|
|
okien, nast<73>pnie znajd<6A> <SMALL>PID</SMALL> procesu <I>postgres</I>
|
|
|
|
|
u<>ywanego przez <I>psql</I>. U<>yj debuggera aby do
|
|
|
|
|
<SMALL>PID'u</SMALL> <I>postgres'a</I>. Mo<4D>esz ustawia<69> pu<70>apki
|
|
|
|
|
(breakpoints) w debuggerze i wykonywa<77> zapytania z <I>psql</I>.
|
|
|
|
|
Je<4A>li debugujesz uruchamianie <I>postgres'a</I>, mo<6D>esz ustawi<77> zmienn<6E>
|
|
|
|
|
PGOPTIONS="-W n", nast<73>pnie uruchomi<6D> <I>psql</I>.
|
|
|
|
|
Opcja ta pozwoli spowolni<6E> uruchomienie na
|
|
|
|
|
<I>n</I> sekund aby<62> m<>g<EFBFBD> si<73> po<70><6F>czy<7A> z procesem za pomoc<6F>
|
|
|
|
|
debugera, ustawi<77> jakiekolwiek pu<70>apki i kontynuowa<77> proces
|
|
|
|
|
uruchamiania.</P>
|
|
|
|
|
|
|
|
|
|
<P><I>postgres</I> mo<6D>e by<62> uruchamiany z opcjami <I>-s, -A</I> i
|
|
|
|
|
<I>-t</I>, kt<6B>re mog<6F> by<62> bardzo przydatne przy debuggowaniu i ocenie
|
|
|
|
|
wydajno<6E>ci.</P>
|
|
|
|
|
|
|
|
|
|
<P>Mo<EFBFBD>esz tak<61>e skompilowa<77> z profilingiem aby zobaczy<7A> jakie funkcje
|
|
|
|
|
ile czasu wykonuj<75> si<73>. Pliki profilowane dla backendu zostan<61>
|
|
|
|
|
umieszczone w katalogu
|
|
|
|
|
<I>pgsql/data/base/dbname</I>. Pliki profilu klienta zostan<61>
|
|
|
|
|
umieszczone w bie<69><65>cym katalogu klienta. Linux wymaga aby kompilowa<77>
|
|
|
|
|
z opcj<63> <I>-DLINUX_PROFILE</I> aby profilowanie odbywa<77>o si<73>
|
|
|
|
|
poprawnie.</P>
|
|
|
|
|
|
|
|
|
|
<H4><A name="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?</H4>
|
|
|
|
|
|
|
|
|
|
<P>Musisz zwi<77>kszy<7A> limit ilo<6C>ci jednoczesnych proces<65>w bacekendu
|
|
|
|
|
dla procesu <I>postmaster'a</I>.</P>
|
|
|
|
|
|
|
|
|
|
<P>Domy<EFBFBD>lny limit to 32 procesy. Mo<4D>esz go zwi<77>kszy<7A> przez restart
|
|
|
|
|
<I>postmaster</I> z odpowiedni<6E> warto<74>ci<63> ustawian<61> opcj<63> <I>-N</I> w
|
|
|
|
|
pliku <I>postgresql.conf</I>.</P>
|
|
|
|
|
|
|
|
|
|
<P>We<EFBFBD> pod uwag<61>, <20>e je<6A>li zwi<77>kszysz warto<74><6F> podan<61> w opcji
|
|
|
|
|
<I>-N</I> na wi<77>cej ni<6E> 32 musisz tak<61>e zwi<77>kszy<7A> warto<74><6F> w opcji
|
|
|
|
|
<I>-B</I> ponad jej domy<6D>ln<6C> warto<74><6F> 64; warto<74><6F> <I>-B</I> musi by<62>
|
|
|
|
|
co najmniej dwa razy wi<77>ksza od warto<74>ci podanej w opcji
|
|
|
|
|
<I>-N</I>, a prawdopodobnie powinna by<62> w rzeczywisto<74>ci jeszcze
|
|
|
|
|
wi<77>ksza dla optymalnej wydajno<6E>ci.
|
|
|
|
|
Dla du<64>ej liczby proces<65>w backendu na pewno zauwa<77>ysz, <20>e trzeba
|
|
|
|
|
zwi<77>kszy<7A> r<><72>ne parametry j<>dra Unixa. Rzeczy, kt<6B>re powniene<6E>
|
|
|
|
|
sprawdzi<7A> to maksymalna liczba blok<6F>w pami<6D>ci dzielonej,
|
|
|
|
|
<SMALL>SHMMAX;</SMALL> maksymalna liczba semafor<6F>w, <SMALL>SEMMNS</SMALL>
|
|
|
|
|
oraz <SMALL>SEMMNI;</SMALL>
|
|
|
|
|
maksymalna liczba proces<65>w, <SMALL>NPROC;</SMALL> maksymalna liczba
|
|
|
|
|
proces<65>w na jednego u<>ytkownika, <SMALL>MAXUPRC;</SMALL> i maksymalna
|
|
|
|
|
liczba otwartych plik<69>w, <SMALL>NFILE</SMALL> oraz
|
|
|
|
|
<SMALL>NINODE.</SMALL> Pow<6F>d dla kt<6B>rego PostgreSQL ma limit na
|
|
|
|
|
maksymaln<6C> liczb<7A> proces<65>w backendu to obawa o wyczerpanie zasob<6F>w
|
|
|
|
|
systemu.</P>
|
|
|
|
|
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<H4><A name="3.9">3.9</A>) Jakie pliki znajduj<75> si<73> w <I>pg_temp</I>?</H4>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<P>Katalog ten zawiera tymczasowe pliki utworzone przez executor. Dla
|
|
|
|
|
przyk<79>adu, je<6A>li jaka<6B> operacja sortowania jest wymagana do wykonania
|
2002-04-29 02:57:18 +00:00
|
|
|
|
<SMALL>ORDER BY,</SMALL> a samo sortowanie wymaga wi<77>cej miejsca ni<6E>
|
2004-03-05 19:29:23 +00:00
|
|
|
|
parametr backendu
|
2002-04-29 02:57:18 +00:00
|
|
|
|
<I>-S</I> ustawi<77> do wykorzystania, wtedy tymczasowe pliki s<> u<>ywane
|
|
|
|
|
do przechowywania tych danych.</P>
|
|
|
|
|
|
|
|
|
|
<P>Pliki tymczasowe powinny by<62> usuni<6E>te automatycznie, ale mog<6F>o si<73>
|
|
|
|
|
to nie sta<74> je<6A>li proces backendu w mi<6D>dzyczasie nie zako<6B>czy<7A> si<73>
|
|
|
|
|
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>
|
2004-03-05 19:29:23 +00:00
|
|
|
|
|
|
|
|
|
<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>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
<HR>
|
|
|
|
|
|
|
|
|
|
<H2 align="center">Pytania dotycz<63>ce u<>ywania</H2>
|
|
|
|
|
|
|
|
|
|
<H4><A name="4.1">4.1</A>) Jaka jest r<><72>nica pomi<6D>dzy kursorami
|
|
|
|
|
binarnymi (binary cursors) i zwyk<79>ymi kursorami (normal
|
|
|
|
|
cursors)?</H4>
|
|
|
|
|
|
|
|
|
|
<P>Zobacz w manualu opis polecenia <SMALL>DECLARE</SMALL>.</P>
|
|
|
|
|
|
|
|
|
|
<H4><A name="4.2">4.2</A>) Jak mog<6F> pobra<72> za pomoc<6F>
|
|
|
|
|
<SMALL>SELECT</SMALL> jedynie kilka pierwszych wynik<69>w
|
|
|
|
|
zapytania?</H4>
|
|
|
|
|
|
|
|
|
|
<P>Zobacz w manualu opis polecenia <SMALL>FETCH</SMALL> lub u<>yj
|
|
|
|
|
polecenia <SMALL>SELECT</SMALL> ... <SMALL>LIMIT</SMALL>....</P>
|
|
|
|
|
|
|
|
|
|
<P>Nawet je<6A>li chesz pobra<72> kilka pierwszych rz<72>d<EFBFBD>w z wyniku
|
|
|
|
|
zapytania, ca<63>e zapytanie musi zosta<74> wykonane. Byc mo<6D>e powiniene<6E>
|
|
|
|
|
skorzysta<74> z polecenia <SMALL>ORDER BY.</SMALL>
|
|
|
|
|
Je<4A>li istnieje indeks kt<6B>ry odpowiada polom okre<72>lonym przez
|
|
|
|
|
<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>
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<P>
|
2005-03-11 21:46:54 +00:00
|
|
|
|
Aby otrzyma<6D> losowy rz<72>d, u<>yj:</P>
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<PRE>
|
|
|
|
|
SELECT col
|
|
|
|
|
FROM tab
|
|
|
|
|
ORDER BY random()
|
|
|
|
|
LIMIT 1;
|
|
|
|
|
</PRE>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
|
|
|
|
|
<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>
|
|
|
|
|
|
|
|
|
|
<P>Mo<EFBFBD>esz sprawdzi<7A> zawarto<74><6F> <20>r<EFBFBD>de<64> <I>psql</I>, a konkretnie plik
|
|
|
|
|
<I>pgsql/src/bin/psql/describe.c</I>. Zawiera on polecenia
|
|
|
|
|
<SMALL>SQL</SMALL> kt<6B>re generuja wyniki komend z backslashem.
|
|
|
|
|
Mo<4D>esz tak<61>e uruchomi<6D> <I>psql</I> z opcj<63>
|
|
|
|
|
<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>
|
|
|
|
|
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<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>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
<PRE>
|
2004-03-05 19:29:23 +00:00
|
|
|
|
BEGIN;
|
|
|
|
|
LOCAL TABLE old_table;
|
|
|
|
|
SELECT ... -- wybierz wszystkie kolumny poza t<> jedn<64> kt<6B>rej chcesz si<73> pozby<62>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
INTO TABLE new_table
|
|
|
|
|
FROM old_table;
|
|
|
|
|
DROP TABLE old_table;
|
|
|
|
|
ALTER TABLE new_table RENAME TO old_table;
|
|
|
|
|
</PRE>
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<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>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
|
|
|
|
|
<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>
|
2004-03-05 19:29:23 +00:00
|
|
|
|
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
|
2002-04-29 02:57:18 +00:00
|
|
|
|
Maksymalna liczba rz<72>d<EFBFBD>w w tabeli? nieograniczona
|
2004-03-05 19:29:23 +00:00
|
|
|
|
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
|
2002-04-29 02:57:18 +00:00
|
|
|
|
</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.
|
|
|
|
|
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<P>Maksymalny rozmiar tabeli, czyli 32 TB nie wymaga od systemu
|
2002-04-29 02:57:18 +00:00
|
|
|
|
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>
|
|
|
|
|
|
|
|
|
|
<P>Masymalny rozmiar tabeli i maksymalna liczba kolumn mo<6D>e by<62>
|
|
|
|
|
zwi<77>kszona je<6A>li zwi<77>kszymy domy<6D>lny rozmiar bloku (block size) do
|
|
|
|
|
32k.</P>
|
|
|
|
|
|
|
|
|
|
<H4><A name="4.6">4.6</A>) Jak du<64>o miejsca w bazie danych jest
|
|
|
|
|
konieczne aby przechowywa<77> dane ze zwyczajnego pliku
|
|
|
|
|
tekstowego?</H4>
|
|
|
|
|
|
|
|
|
|
<P>Baza danych PostgreSQL mo<6D>e potrzebowa<77> do pi<70>ciu razy wi<77>cej
|
|
|
|
|
miejsca na przechowywanie danych z plik<69>w tekstowych ni<6E> ich
|
|
|
|
|
obj<62>to<74><6F>.</P>
|
|
|
|
|
|
|
|
|
|
<P>Jako przyk<79>ad mo<6D>emy rozwa<77>y<EFBFBD> plik sk<73>adaj<61>cy si<73> z 100,000 linii
|
|
|
|
|
zbudowanych z liczby ca<63>kowitej oraz opisu tekstowego w ka<6B>dej.
|
|
|
|
|
Za<5A><61><EFBFBD>my, <20>e <20>rednio ka<6B>dy <20>a<EFBFBD>cuch tekstu w linii zajmuje 20
|
|
|
|
|
bajt<6A>w. Ca<43>y plik powinien zajmowa<77> ok. 2.8 MB. Rozmiar pliku bazy danych w
|
|
|
|
|
PostgreSQL zawieraj<61>cego te dane mozna oszacowa<77> na oko<6B>o 6.4MB:</P>
|
|
|
|
|
|
|
|
|
|
<PRE>
|
|
|
|
|
36 bajt<6A>w: nag<61><67>wek ka<6B>dego rz<72>du w przybli<6C>eniu)
|
|
|
|
|
24 bajty: jedno pole int i jedno pole typu text
|
|
|
|
|
+ 4 bajty: wka<6B>nik na stronie do krotki
|
|
|
|
|
--------------------------------------------------
|
|
|
|
|
64 bajty w jednym rz<72>dzie
|
|
|
|
|
|
|
|
|
|
Strona danych w PostgreSQL zajmuje 8192 bajt<6A>w (8 KB), wi<77>c:
|
|
|
|
|
|
|
|
|
|
8192 bajt<6A>w na stron<6F>
|
|
|
|
|
--------------------- = 128 rz<72>d<EFBFBD>w na jedn<64> strone w bazie (zaokr<6B>glone w d<><64>)
|
|
|
|
|
64 bajt<6A>w na rz<72>d
|
|
|
|
|
|
|
|
|
|
100000 rz<72>d<EFBFBD>w danych
|
|
|
|
|
----------------------- = 782 stron w bazie danych (zaokr<6B>glone w g<>r<EFBFBD>)
|
|
|
|
|
128 rz<72>d<EFBFBD>w na stron<6F>
|
|
|
|
|
|
|
|
|
|
782 stron w bazie * 8192 bajt<6A>w na stron<6F> = 6,406,144 bajt<6A>w (6.4 MB)
|
|
|
|
|
</PRE>
|
|
|
|
|
|
|
|
|
|
<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>
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<P> NULLe s<> przechowywane jako mapy bitowe, wi<77>c u<>ywaj<61> bardzo ma<6D>o
|
|
|
|
|
miejsca.
|
|
|
|
|
</P>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
|
|
|
|
|
<H4><A name="4.7">4.7</A>) Jak mog<6F> sprawdzi<7A> jakie tabele, klucze,
|
|
|
|
|
bazy danych i u<>ytkownicy s<> utworzeni?</H4>
|
|
|
|
|
|
|
|
|
|
<P><I>psql</I> ma ca<63>kiem du<64><75> ilo<6C><6F> polece<63> z backslashem aby
|
|
|
|
|
wydoby<62> takie informacje. Wprowad<61> \? aby zobaczy<7A> ich spis. Istniej<65>
|
|
|
|
|
tak<61>e tablice systemowe rozpoczynaj<61>ce si<73> od <i>pg_</i>, zawieraj<61>ce
|
|
|
|
|
interesuj<75>ce Ciebie informacje. Wykonanie <i>psql -l</i> poka<6B>e spis
|
|
|
|
|
wszystkich baz danych.</P>
|
|
|
|
|
|
|
|
|
|
<P>Obejrzyj tak<61>e plik <I>pgsql/src/tutorial/syscat.source</I>.
|
|
|
|
|
Zawiera on wiele z zapyta<74> typu <SMALL>SELECT</SMALL>, kt<6B>re s<>
|
|
|
|
|
potrzebne aby wydoby<62> informacje z tablic systemowych.</P>
|
|
|
|
|
|
|
|
|
|
<H4><A name="4.8">4.8</A>) Moje zapytania s<> wolne lub nie u<>ywaj<61>
|
|
|
|
|
kluczy. Dlaczego?</H4>
|
|
|
|
|
|
|
|
|
|
Indeksy nie s<> u<>ywane automatycznie przez k<><6B>de z zapyta<74>. Ideksy s<>
|
|
|
|
|
u<>ywane jedynie gdy tabela jest odpowiedniego rozmiaru, wi<77>kszego ni<6E>
|
|
|
|
|
wymagany minimalny, a zapytanie wybiera jedynie ma<6D>y procent
|
|
|
|
|
zawarto<74>ci tabeli. Wynika to z tego, <20>e losowy dostep do dysku
|
|
|
|
|
powodowany przez ideksowane poszukiwanie jest czasami wolniejsze ni<6E>
|
|
|
|
|
poszukiwanie sekwencyjne bez u<>ycia kluczy.
|
|
|
|
|
|
|
|
|
|
<P><EFBFBD>eby zdecydowa<77> czy indeks powinien byc u<>ywany, PostgreSQL musi
|
|
|
|
|
mie<69> statystyki dotycz<63>ce danej tabeli. S<> one gromadzone przez
|
|
|
|
|
u<>ycie polecenia <SMALL>VACUUM ANALYZE</SMALL>, lub poprostu
|
|
|
|
|
<SMALL>ANALYZE</SMALL>. u<>ywaj<61>c statystyk, optymalizator wie ile
|
|
|
|
|
rz<72>d<EFBFBD>w jest w tabeli i mo<6D>e lepiej okre<72>li<6C> czy indeksy powinny by<62>
|
|
|
|
|
u<>yte. Statystyki mog<6F> by<62> tak<61>e pomocne w okre<72>leniu najlepszej
|
|
|
|
|
kolejno<6E>ci wykonania z<><7A>czenia (join) i jego sposobu. Gromadzenie
|
|
|
|
|
statystyk powinno si<73> odbywa<77> w okre<72>lonych interwa<77>ach czasu
|
|
|
|
|
poniewa<77> dane w tabelach zmieniaj<61> si<73>.</P>
|
|
|
|
|
|
|
|
|
|
<P>Indeksy nie s<> zazwyczaj u<>ywane przez <SMALL>ORDER BY</SMALL> lub
|
|
|
|
|
przy wykonywaniu z<><7A>cze<7A> (join). Sekwencyjne przeszukiwanie po kt<6B>rym
|
|
|
|
|
nast<73>puje sortowanie jest zazwyczaj szybsze ni<6E> wyszukiwanie za
|
|
|
|
|
pomoc<6F> indeksu na du<64>ej tabeli.</P>
|
2005-03-11 21:46:54 +00:00
|
|
|
|
<P>Jakkolwiek <SMALL>LIMIT</SMALL> w po<70><6F>czeniu z <SMALL>ORDER BY</SMALL>
|
2004-03-05 19:29:23 +00:00
|
|
|
|
cz<63>sto b<>dzie wykorzystywa<77> indeksy poniewa<77> 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
|
2005-03-11 21:46:54 +00:00
|
|
|
|
wypadku zapytanie b<>dzie szybciej wykonywane.</P>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
|
|
|
|
|
<P>Kiedy u<>ywa si<73> operator<6F>w dopasuj<75>cych takich jak
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<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>
|
2005-03-11 21:46:54 +00:00
|
|
|
|
<LI>wzorce <SMALL>LIKE</SMALL> nie mog<6F> si<73> zaczyna<6E> <I>%</I></LI>
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<LI>dopasowania operatorem <I>~</I> (dopasowania regularne)
|
2005-03-11 21:46:54 +00:00
|
|
|
|
musz<73> si<73> zaczyna<6E> znakiem specjalnym <I>^</I>.</LI>
|
|
|
|
|
</UL></LI>
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<LI>Pocz<EFBFBD>tek wyszukiwania nie mo<6D>e si<73> zaczyna<6E> od klas znak<61>w, np.
|
2005-03-11 21:46:54 +00:00
|
|
|
|
[a-e].</LI>
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<LI>Case-insensitive searches such as ILIKE and ~* do not utilise
|
|
|
|
|
indexes. Instead, use functional indexes, which are described in
|
2005-03-11 21:46:54 +00:00
|
|
|
|
section 4.12.</LI>
|
|
|
|
|
<LI>Standardowe locale C musi by<62> uzyte przy wykonywaniu initdb</LI>
|
2004-03-05 19:29:23 +00:00
|
|
|
|
</UL>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
<H4><A name="4.9">4.9</A>) Jak mog<6F> sprawdzi<7A> w jakis spos<6F>b "query
|
|
|
|
|
optimizer" wykonuje moje zapytanie?</H4>
|
|
|
|
|
|
|
|
|
|
<P>Zobacz manual dla polecenia <SMALL>EXPLAIN</SMALL>.</P>
|
|
|
|
|
|
|
|
|
|
<H4><A name="4.10">4.10</A>) Co to jest "R-tree index"?</H4>
|
|
|
|
|
|
|
|
|
|
<P>Indeks R-tree jest u<>ywany do indeksowania danych przestrzennych.
|
|
|
|
|
Indeks hasuuj<75>cy nie nadaje si<73> do wyszukiwania odleg<65>o<EFBFBD>ci.
|
|
|
|
|
Natomiast indeks typu B-tree mo<6D>e wyszukiwa<77> odleglo<6C>ci jedynie w
|
|
|
|
|
jednowymiarowych przestrzeniach. R-tree indeks radzi sobie z
|
|
|
|
|
przestrzeniami wielo-wymiarowymi. Dla przyk<79>adu, je<6A>li zostanie
|
|
|
|
|
za<7A>o<EFBFBD>ony indeks typu R-tree na polu typu <I>point</I>, system mo<6D>e
|
|
|
|
|
bardziej wydajnie odpowiada<64> na zapytania typu
|
|
|
|
|
"select all points within a bounding rectangle."</P>
|
|
|
|
|
|
|
|
|
|
<P><EFBFBD>r<EFBFBD>d<EFBFBD>owym dokumentem opisuj<75>cym oryginalnie projektowanie R-tree
|
|
|
|
|
indeks<6B>w jest:</P>
|
|
|
|
|
|
|
|
|
|
<P>Guttman, A. "R-trees: A Dynamic Index Structure for Spatial
|
|
|
|
|
Searching." Proceedings of the 1984 ACM SIGMOD Int'l Conf on Mgmt
|
|
|
|
|
of Data, 45-57.</P>
|
|
|
|
|
|
|
|
|
|
<P>Ten dokument mo<6D>esz znale<6C><65> tak<61>e w pracy Stonebraker'a "Readings in
|
|
|
|
|
Database Systems".</P>
|
|
|
|
|
|
|
|
|
|
<P>Wbudowane indeksy R-trees radz<64> sobie w wielobokami i boxes.
|
|
|
|
|
Teoretycznie, indeksy R-tree mog<6F> by<62> rozszerzone o mo<6D>liwo<77>ci
|
|
|
|
|
indeksowania w wi<77>cej wymiarowych przestrzeniach. W praktyce,
|
|
|
|
|
rozbudowa indeks<6B>w R-tree wymaga troch<63> pracy, a w tej chwili nie
|
|
|
|
|
dysponujemy jak<61>kolwiek dokumentacj<63> jak to zrobi<62>.</P>
|
|
|
|
|
|
|
|
|
|
<H4><A name="4.11">4.11</A>) Co to jest "Genetic Query
|
|
|
|
|
Optimizer"?</H4>
|
|
|
|
|
|
|
|
|
|
<P>Modu<EFBFBD> <SMALL>GEQO</SMALL> ma za zadanie przyspieszenie
|
|
|
|
|
optymalizacji zapyta<74> <20><>cz<63>c wiele tabel za pomoc<6F> algorytm<74>w
|
|
|
|
|
genetycznych (Genetic Algorithm (GA)). Pozwala na u<>ywanie du<64>ych
|
|
|
|
|
zapyta<74> <20><>cz<63>cych tabele (join queries) bez wykorzystywania
|
|
|
|
|
zasobo<62>ernego wyszukiwania.</P>
|
|
|
|
|
|
|
|
|
|
<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?
|
2004-03-05 19:29:23 +00:00
|
|
|
|
Jak korzysta<74> z indeks<6B>w dla zapyta<74> case-insensitive?</H4>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
|
|
|
|
|
<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
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<SMALL>ILIKE</SMALL>.</P>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
|
|
|
|
|
<P>Por<EFBFBD>wnania case-insensitive s<> zazwyczaj wykonywane w nast<73>puj<75>cy
|
|
|
|
|
spos<6F>b:</P>
|
|
|
|
|
<PRE>
|
|
|
|
|
SELECT *
|
|
|
|
|
FROM tab
|
|
|
|
|
WHERE lower(col) = 'abc'
|
|
|
|
|
|
|
|
|
|
</PRE>
|
|
|
|
|
W tym wypadku standardowe indeksy nie b<>d<EFBFBD> u<>ywane. Mo<4D>esz utworzy<7A>
|
|
|
|
|
indeks funkcyjny, poprzez:
|
|
|
|
|
<PRE>
|
|
|
|
|
CREATE INDEX tabindex on tab (lower(col));
|
|
|
|
|
|
|
|
|
|
</PRE>
|
|
|
|
|
|
|
|
|
|
<H4><A name="4.13">4.13</A>) Jak sprawdzi<7A> w zapytaniu czy pole ma
|
|
|
|
|
warto<74><6F> <SMALL>NULL</SMALL>?</H4>
|
|
|
|
|
|
|
|
|
|
<P>Mo<EFBFBD>esz to sprawdzi<7A>, testuj<75>c warto<74><6F> kolumny warunkiem
|
|
|
|
|
<SMALL>IS NULL</SMALL> albo <SMALL>IS NOT NULL</SMALL>.</P>
|
|
|
|
|
|
|
|
|
|
<H4><A name="4.14">4.14</A>) Jaka jest r<><72>nica pomi<6D>dzy r<><72>nymi
|
|
|
|
|
typami tekstowymi (character types)?</H4>
|
|
|
|
|
<PRE>
|
|
|
|
|
Type Nazwa wewn<77>trzna Uwagi
|
|
|
|
|
--------------------------------------------------
|
2004-03-05 19:29:23 +00:00
|
|
|
|
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
|
2002-04-29 02:57:18 +00:00
|
|
|
|
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)
|
2004-03-05 19:29:23 +00:00
|
|
|
|
"char" char 1 znak
|
2002-04-29 02:57:18 +00:00
|
|
|
|
</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>
|
|
|
|
|
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<P>Pierwsze cztery typy powy<77>ej to tzw typy "varlena" (np. pierwsze
|
2002-04-29 02:57:18 +00:00
|
|
|
|
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>
|
|
|
|
|
|
2005-03-11 21:46:54 +00:00
|
|
|
|
<P> <SMALL>VARCHAR(n)</SMALL> jest
|
2002-04-29 02:57:18 +00:00
|
|
|
|
najodpowiedniejszy do przechowywania <20>a<EFBFBD>cuch<63>w o r<><72>nej d<>ugo<67>ci
|
2004-03-05 19:29:23 +00:00
|
|
|
|
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>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
|
|
|
|
|
<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>
|
|
|
|
|
|
|
|
|
|
<P>PostgreSQL ma zaimplementowany typ <SMALL>SERIAL</SMALL>.
|
|
|
|
|
Automatycznie tworzy sekwencj<63> i indeks na tej kolumnie. Dla
|
|
|
|
|
przykladu:</P>
|
|
|
|
|
<PRE>
|
|
|
|
|
CREATE TABLE person (
|
|
|
|
|
id SERIAL,
|
|
|
|
|
name TEXT
|
|
|
|
|
);
|
|
|
|
|
</PRE>
|
|
|
|
|
zostanie automatycznie przt<7A>umaczone na:
|
|
|
|
|
<PRE>
|
|
|
|
|
CREATE SEQUENCE person_id_seq;
|
|
|
|
|
CREATE TABLE person (
|
|
|
|
|
id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
|
|
|
|
|
name TEXT
|
|
|
|
|
);
|
|
|
|
|
CREATE UNIQUE INDEX person_id_key ON person ( id );
|
|
|
|
|
</PRE>
|
|
|
|
|
Wi<57>cej informacji o sekwencjach znajdziesz w manualu o
|
|
|
|
|
<I>create_sequence</I>. Mo<4D>esz tak<61>e u<>y<EFBFBD> pola <I>OID</I> jako
|
|
|
|
|
unikalnej warto<74>ci dla ka<6B>dego rz<72>du danych. Je<4A>li b<>dziesz
|
|
|
|
|
potrzebowa<77> z backupowa<77> dane robi<62>c dump bazy i odtworzy<7A> j<>, musisz
|
|
|
|
|
u<>yc <I>pg_dump</I> z opcj<63> <I>-o</I> lub polecenia <SMALL>COPY
|
|
|
|
|
WITH OIDS</SMALL> aby zachowa<77> <SMALL>OIDy</SMALL>.
|
|
|
|
|
|
|
|
|
|
<H4><A name="4.15.2">4.15.2</A>) Jak pobra<72> warto<74><6F> pola typu
|
|
|
|
|
<SMALL>SERIAL</SMALL> po wykonaniu insert'u?</H4>
|
|
|
|
|
|
|
|
|
|
<P>Jednym z podej<65><6A> jest pobranie kolejnej warto<74>ci typu
|
|
|
|
|
<SMALL>SERIAL</SMALL> z sekwencji za pomoc<6F> funkcji <I>nextval()</I>
|
|
|
|
|
<I>zanim</I> zostanie wstawiona, a p<><70>niej nale<6C>y jej u<>y<EFBFBD>. U<>ywaj<61>c
|
|
|
|
|
przyk<79>adu z tabeli z punktu <A href="#4.15.1">4.15.1</A>, mo<6D>e to
|
|
|
|
|
wygl<67>da<64> w Perlu na przyk<79>ad w ten spos<6F>b:</P>
|
|
|
|
|
|
|
|
|
|
<PRE>
|
|
|
|
|
new_id = output of "SELECT nextval('person_id_seq')"
|
|
|
|
|
INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal');
|
|
|
|
|
</PRE>
|
|
|
|
|
B<>dziesz mia<69> wtedy t<> warto<74><6F> przechowan<61> w zmiennej
|
|
|
|
|
<CODE>new_id</CODE> do u<>ytku w innych zapytaniach (np. jako klucz
|
|
|
|
|
obcy do tabeli <CODE>person</CODE>). Warto zwr<77>ci<63> uwag<61>, <20>e nazwa
|
|
|
|
|
automatycznie utworzonej sekwencji
|
|
|
|
|
<SMALL>SEQUENCE</SMALL> b<>dzie nast<73>puj<75>ca:
|
|
|
|
|
<<I>tabela</I>>_<<I>kolumnatypuserial</I>>_<I>seq</I>,
|
|
|
|
|
gdzie
|
|
|
|
|
<I>tabela</I> i <I>kolumnatypuserial</I> s<> nazwami Twojej tabeli i
|
|
|
|
|
Twojej kolumny typu <SMALL>SERIAL</SMALL>.
|
|
|
|
|
|
|
|
|
|
<P>Inne rozwi<77>zanie to u<>ycie funkcji <I>currval</I>() na pola typu
|
|
|
|
|
<SMALL>SERIAL</SMALL> po dodaniu nowej warto<74>ci do rz<72>du zawieraj<61>cego
|
|
|
|
|
kolumn<6D> typu <SMALL>SERIAL</SMALL> z wstawion<6F> domy<6D>lnie warto<74>ci<63>,
|
|
|
|
|
np.</P>
|
|
|
|
|
<PRE>
|
|
|
|
|
INSERT INTO person (name) VALUES ('Blaise Pascal');
|
|
|
|
|
new_id = output of "SELECT currval('person_id_seq')";
|
|
|
|
|
</PRE>
|
|
|
|
|
Ostatecznie mo<6D>esz u<>y<EFBFBD> <A href="#4.16"><SMALL>OID</SMALL></A>
|
|
|
|
|
zwracanej po wykonaniu <SMALL>INSERT</SMALL>, chocia<69> to jest najmniej
|
|
|
|
|
przeno<6E>ne rozwi<77>zanie.
|
|
|
|
|
W Perlu, wykorzystuj<75>c bibliotek<65> DBI z modu<64>em Edmunda Mergla
|
|
|
|
|
DBD::Pg, oid jest dost<73>pny poprzez <I>$sth->{pg_oid_status}</I> po
|
|
|
|
|
wykonaniu <I>$sth->execute()</I>.
|
|
|
|
|
|
|
|
|
|
<H4><A name="4.15.3">4.15.3</A>) Czy u<>ycie <I>currval()</I> i
|
|
|
|
|
<I>nextval()</I> nie doprowadzi do race condition z innymi
|
|
|
|
|
u<>ytkownikami?</H4>
|
|
|
|
|
|
|
|
|
|
<P>Nie. currval() zwraca bie<69><65>c<EFBFBD> warto<74><6F> przypisan<61> przez Tw<54>j
|
|
|
|
|
backend, a nie przez wszystkich u<>ytkownik<69>w.</P>
|
|
|
|
|
|
|
|
|
|
<H4><A name="4.15.4">4.15.4</A>) Dlaczego numery sekwencji nie s<>
|
|
|
|
|
ponownie u<>ywane przy przerwaniu transakcji?
|
2004-03-05 19:29:23 +00:00
|
|
|
|
Sk<53>d si<73> bior<6F> luki w numerowaniu kolumny tabeli
|
2002-04-29 02:57:18 +00:00
|
|
|
|
sekwancjami/SERIALem?</H4>
|
|
|
|
|
|
|
|
|
|
<P>Aby poprawi<77> zbie<69>no<6E><6F> (concurrency), warto<74>ci sekwencji s<>
|
|
|
|
|
podawane dzia<69>aj<61>cym transakcjom kiedy tego potrzebuj<75> i nie s<>
|
|
|
|
|
blokowane dop<6F>ki transakcja si<73> nie zako<6B>czy. To spowoduje przerwy w
|
|
|
|
|
numerowaniu z przerwanych transakcji.</P>
|
|
|
|
|
|
|
|
|
|
<H4><A name="4.16">4.16</A>) Co to jest <SMALL>OID</SMALL>? Co to
|
2004-03-05 19:29:23 +00:00
|
|
|
|
jest <SMALL>TID</SMALL>?</H4>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
|
|
|
|
|
<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
|
|
|
|
|
otrzymuje unikalny <SMALL>OID</SMALL>. Wszystkie <SMALL>OID</SMALL>y
|
|
|
|
|
generowane podczas procesu uruchamianego przez skrypt
|
|
|
|
|
<I>initdb</I> maj<61> mniejsz<73> warto<74><6F> ni<6E> 16384 (na podstawie pliku
|
|
|
|
|
<I>backend/access/transam.h</I>). Wszystkie
|
|
|
|
|
<SMALL>OID</SMALL>y tworzone przez u<>ytkownika sa r<>wne lub wi<77>ksze
|
|
|
|
|
podanej wcze<7A>niej warto<74>ci. Domy<6D>lnie
|
|
|
|
|
wszystkie <SMALL>OID</SMALL>y s<> unikalne nie tylko w pojedy<64>czej
|
|
|
|
|
tabeli czy bazie danych ale w ca<63>ej instalacji PostgreSQL.</P>
|
|
|
|
|
|
|
|
|
|
<P>PostgreSQL u<>ywa <SMALL>OID<EFBFBD>w</SMALL> w swoim wewn<77>trznym systemie
|
|
|
|
|
tabel, aby mo<6D>na by<62>o je <20><>czy<7A>.
|
|
|
|
|
Te <SMALL>OIDy</SMALL> mog<6F> byc u<>ywane aby identyfikowac rz<72>dy w
|
|
|
|
|
tabelach i wykorzystywa<77> je w z<><7A>czeniach tych tabel. Zaleca si<73> aby<62>
|
|
|
|
|
u<>ywa<77> typu <SMALL>OID</SMALL> aby przechowywa<77> warto<74>ci
|
|
|
|
|
<SMALL>OID</SMALL>. Mo<4D>esz utworzy<7A> indeks na polu
|
|
|
|
|
<SMALL>OID</SMALL> aby dost<73>p do niego by<62> szybszy.</P>
|
|
|
|
|
|
|
|
|
|
<P><SMALL>OID</SMALL> s<> przypisane do wszystkich rz<72>d<EFBFBD>w z jednego
|
|
|
|
|
g<><67>wnego miejsca i u<>ywane sa przez wszystkie bazy danych. Je<4A>li
|
|
|
|
|
chcia<69>by<62> zmieni<6E> <SMALL>OID</SMALL> na co<63> innego, lub je<6A>li
|
|
|
|
|
chcia<69>by<62> zrobi<62> kopi<70> tabeli, z orginalnymi <SMALL>OIDami</SMALL>
|
|
|
|
|
nie ma <20>adnego przeciwwskazania aby<62> to zrobi<62>:</P>
|
|
|
|
|
|
|
|
|
|
<PRE>
|
|
|
|
|
CREATE TABLE new_table(old_oid oid, mycol int);
|
|
|
|
|
SELECT old_oid, mycol INTO new FROM old;
|
|
|
|
|
COPY new TO '/tmp/pgtable';
|
|
|
|
|
DELETE FROM new;
|
|
|
|
|
COPY new WITH OIDS FROM '/tmp/pgtable';
|
|
|
|
|
<!--
|
|
|
|
|
CREATE TABLE new_table (mycol int);
|
|
|
|
|
INSERT INTO new_table (oid, mycol) SELECT oid, mycol FROM old_table;
|
|
|
|
|
-->
|
|
|
|
|
</PRE>
|
|
|
|
|
|
|
|
|
|
<P><SMALL>OIDy</SMALL> s<> przechowywane jako cztero-bajtowe liczby
|
|
|
|
|
ca<63>kowite i sko<6B>cz<63> si<73> po osi<73>gni<6E>ciu czterech miliard<72>w. Nikt jak
|
|
|
|
|
dot<6F>d nie zg<7A>osi<73> aby co<63> takiego si<73> stalo, ale mamy zamiar pozby<62>
|
|
|
|
|
si<73> tego ograniczenia zanim kto<74> to zg<7A>osi.</P>
|
|
|
|
|
|
|
|
|
|
<P><SMALL>TID</SMALL> s<> u<>ywane aby zidentyfikowa<77> konkretne rz<72>dy z
|
|
|
|
|
blokami i warto<74>ci<63> ofset<65>w. <SMALL>TIDy</SMALL> zmieniaj<61> si<73> wraz
|
|
|
|
|
ze zmianami rz<72>d<EFBFBD>w. Sa u<>ywane przez indeksy, aby wskazywa<77> do
|
|
|
|
|
fizycznych rz<72>d<EFBFBD>w.</P>
|
|
|
|
|
|
|
|
|
|
<H4><A name="4.17">4.17</A>) Jakie jest znaczenie niekt<6B>rych termin<69>w
|
|
|
|
|
w PostgreSQL?</H4>
|
|
|
|
|
|
|
|
|
|
<P>W cz<63><7A>ci kodu <20>r<EFBFBD>d<EFBFBD>owego i starszej dokumentacji u<>ywamy termin<69>w,
|
|
|
|
|
kt<6B>re maj<61> bardziej og<6F>lne znaczenie. Oto niekt<6B>re z nich:</P>
|
|
|
|
|
|
|
|
|
|
<UL>
|
|
|
|
|
<LI>table, relation, class</LI>
|
|
|
|
|
|
|
|
|
|
<LI>row, record, tuple</LI>
|
|
|
|
|
|
|
|
|
|
<LI>column, field, attribute</LI>
|
|
|
|
|
|
|
|
|
|
<LI>retrieve, select</LI>
|
|
|
|
|
|
|
|
|
|
<LI>replace, update</LI>
|
|
|
|
|
|
|
|
|
|
<LI>append, insert</LI>
|
|
|
|
|
|
|
|
|
|
<LI><SMALL>OID</SMALL>, serial value</LI>
|
|
|
|
|
|
|
|
|
|
<LI>portal, cursor</LI>
|
|
|
|
|
|
|
|
|
|
<LI>range variable, table name, table alias</LI>
|
|
|
|
|
</UL>
|
|
|
|
|
|
|
|
|
|
<P>List<EFBFBD> termin<69>w zwi<77>zanych z bazami danych mo<6D>esz znale<6C><65> pod tym
|
2004-03-05 19:29:23 +00:00
|
|
|
|
adresem:<A
|
2005-03-11 21:46:54 +00:00
|
|
|
|
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>.</P>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
|
|
|
|
|
<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>
|
|
|
|
|
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<P>
|
|
|
|
|
Prawdopodobnie wyczerpa<70>a Ci si<73> pami<6D><69> wirtualna (virtual memory)
|
|
|
|
|
w systemie lub Tw<54>j kernel ma zbyt nisko
|
2002-04-29 02:57:18 +00:00
|
|
|
|
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>
|
|
|
|
|
ulimit -d 262144
|
|
|
|
|
limit datasize 256m
|
|
|
|
|
</PRE>
|
|
|
|
|
W zale<6C>no<6E>ci od shell'a jakiego u<>ywasz jedno z tych polece<63> mo<6D>e nie
|
|
|
|
|
zadzia<69>a<EFBFBD>, ale to ustawienie pozwoli ustawi<77> segment danych dla
|
|
|
|
|
procesu znacznie wi<77>kszy i by<62> mo<6D>e pozwoli wykona<6E> zapytanie.
|
|
|
|
|
To polecenie zadzia<69>a dla bie<69><65>cego procesu oraz wszytkich podproces<65>w
|
|
|
|
|
utworzonych po wykonaniu polecenia. Je<4A>li ten problem wyst<73>puje z
|
|
|
|
|
klientem <SMALL>SQL</SMALL>, poniewa<77> backend zwraca zbyt du<64>o danych,
|
|
|
|
|
spr<70>buj wykona<6E> to polecenie przed uruchomieniem klienta.
|
|
|
|
|
|
|
|
|
|
<H4><A name="4.19">4.19</A>) Jak sprawdzi<7A> jakiej wersji PostgreSQL
|
|
|
|
|
u<>ywam?</H4>
|
|
|
|
|
|
|
|
|
|
<P>W <I>psql</I>, wpisz <CODE>select version();</CODE></P>
|
|
|
|
|
|
|
|
|
|
<H4><A name="4.20">4.20</A>) Dlaczego operacje, kt<6B>re wykonuj<75> na
|
|
|
|
|
du<64>ych obiektach "large-object" zwracaj<61> komunikat:
|
|
|
|
|
<I>"invalid large obj descriptor"</I>?</H4>
|
|
|
|
|
|
|
|
|
|
<P>Musisz u<>y<EFBFBD> <CODE>BEGIN WORK</CODE> i <CODE>COMMIT</CODE>
|
|
|
|
|
przed i po u<>yciu uchwytu do du<64>ego obiektu, tzn. musisz nimi otoczy<7A>
|
|
|
|
|
funkcje <CODE>lo_open</CODE> ... <CODE>lo_close.</CODE></P>
|
|
|
|
|
|
|
|
|
|
<P>Obecnie PostgreSQL u<>ywj<77>c "rule" zamyka uchwyt do du<64>ego obiektu
|
|
|
|
|
przy ka<6B>dym wywo<77>aniu "commit". Wi<57>c pierwsze pr<70>ba zrobienia
|
|
|
|
|
czegokolwiek z uchwytem spowoduje wypisanie: <I>invalid large obj
|
|
|
|
|
descriptor</I>. Kod, kt<6B>ry do tej pory dzia<69>a<EFBFBD> (przynajmniej
|
|
|
|
|
wi<77>kszo<7A><6F> razy) b<>dzie teraz generowa<77> informacj<63> o b<><62>dzie je<6A>li nie
|
|
|
|
|
b<>dziesz korzysta<74> z transakcji.</P>
|
|
|
|
|
|
|
|
|
|
<P>Je<EFBFBD>li u<>ywasz interfejsu klienta jak <SMALL>ODBC</SMALL> by<62> mo<6D>e
|
|
|
|
|
b<>dziesz musia<69> ustawi<77> <CODE>auto-commit off.</CODE></P>
|
|
|
|
|
|
|
|
|
|
<H4><A name="4.21">4.21</A>) Jak stworzy<7A> kolumn<6D> kt<6B>rej domy<6D>ln<6C>
|
|
|
|
|
warto<74>ci<63> b<>dzie bie<69><65>cy czas?</H4>
|
|
|
|
|
|
|
|
|
|
<P>U<EFBFBD>yj <I>CURRENT_TIMESTAMP</I>:</P>
|
|
|
|
|
<PRE>
|
|
|
|
|
<CODE>CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
|
|
|
|
|
</CODE>
|
|
|
|
|
</PRE>
|
|
|
|
|
|
|
|
|
|
<H4><A name="4.22">4.22</A>) Dlaczego zapytania u<>ywaj<61>ce
|
|
|
|
|
<CODE><SMALL>IN</SMALL></CODE> sa takie wolne?</H4>
|
|
|
|
|
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<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
|
2002-04-29 02:57:18 +00:00
|
|
|
|
<CODE>EXISTS</CODE>:</P>
|
|
|
|
|
<PRE>
|
|
|
|
|
<CODE>SELECT *
|
|
|
|
|
FROM tab
|
2004-03-05 19:29:23 +00:00
|
|
|
|
WHERE col IN (SELECT subcol FROM subtab)
|
2002-04-29 02:57:18 +00:00
|
|
|
|
</CODE>
|
|
|
|
|
</PRE>
|
|
|
|
|
na:
|
|
|
|
|
<PRE>
|
|
|
|
|
<CODE>SELECT *
|
|
|
|
|
FROM tab
|
2004-03-05 19:29:23 +00:00
|
|
|
|
WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col)
|
2002-04-29 02:57:18 +00:00
|
|
|
|
</CODE>
|
|
|
|
|
</PRE>
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<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>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
<H4><A name="4.23">4.23</A>) Jak wykona<6E> "outer join"?</H4>
|
|
|
|
|
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<P>PostgreSQL ma zaimplementowane outer join
|
|
|
|
|
wykorzystuj<75>c standardow<6F> sk<73>adni<6E> SQL. Poni<6E>ej dwa przyk<79>ady:</P>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
|
|
|
|
|
<PRE>
|
|
|
|
|
SELECT *
|
|
|
|
|
FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
|
|
|
|
|
</PRE>
|
|
|
|
|
or
|
|
|
|
|
<PRE>
|
|
|
|
|
SELECT *
|
|
|
|
|
FROM t1 LEFT OUTER JOIN t2 USING (col);
|
|
|
|
|
</PRE>
|
|
|
|
|
|
|
|
|
|
<P>Te dwa identyczne zapytania <20><>cz<63> kolumn<6D> t1.col z kolumn<6D> t2.col,
|
2004-03-05 19:29:23 +00:00
|
|
|
|
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).
|
2002-04-29 02:57:18 +00:00
|
|
|
|
<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
|
|
|
|
|
jest dodawane domy<6D>lnie przy
|
|
|
|
|
<SMALL>LEFT</SMALL>, <SMALL>RIGHT</SMALL>, i <SMALL>FULL</SMALL>
|
|
|
|
|
join'ach. Zwyk<79>e join'y s<> nazywane <SMALL>INNER</SMALL> joins.</P>
|
|
|
|
|
|
|
|
|
|
<P>W poprzednich wersjach "outer joins" mog<6F> by<62> zasymulowane poprzez
|
|
|
|
|
u<>ycie slowa kluczowego
|
|
|
|
|
<SMALL>UNION</SMALL> i <SMALL>NOT IN</SMALL>. Dla przyk<79>adu, <20><>cz<63>c
|
|
|
|
|
tabele <I>tab1</I> i <I>tab2</I>, nast<73>puj<75>ce zapytanie wykonuje
|
|
|
|
|
<I>outer</I> join:<BR>
|
|
|
|
|
<BR>
|
|
|
|
|
</P>
|
|
|
|
|
<PRE>
|
|
|
|
|
SELECT tab1.col1, tab2.col2
|
|
|
|
|
FROM tab1, tab2
|
|
|
|
|
WHERE tab1.col1 = tab2.col1
|
|
|
|
|
UNION ALL
|
|
|
|
|
SELECT tab1.col1, NULL
|
|
|
|
|
FROM tab1
|
|
|
|
|
WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
|
|
|
|
|
ORDER BY col1
|
|
|
|
|
</PRE>
|
|
|
|
|
|
|
|
|
|
<H4><A name="4.24">4.24</A>) Jak wykonywa<77> zapytanie u<>ywaj<61>ce kilku
|
|
|
|
|
baz danych jednocze<7A>nie?</H4>
|
|
|
|
|
|
|
|
|
|
<P>Nie ma takiej mo<6D>liwo<77>ci aby w zapytaniu odpytawa<77> inn<6E> baze danych
|
|
|
|
|
poza bie<69><65>c<EFBFBD>. Poniewa<77> PostgreSQL <20>aduje specyficzne dla bazy danych
|
|
|
|
|
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>
|
|
|
|
|
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<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>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
|
|
|
|
|
<H4><A name="4.25">4.25</A>) Jak zwr<77>ci<63> w funkcji wiele rz<72>d<EFBFBD>w lub
|
|
|
|
|
kolumn?</H4>
|
|
|
|
|
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<P>Mo<EFBFBD>esz w <20>atwy spos<6F>b zwraca<63> wiele rz<72>d<EFBFBD>w lub kolumn u<>ywaj<61>c
|
2005-03-11 21:46:54 +00:00
|
|
|
|
funkcji z: <A href="http://techdocs.postgresql.org/guides/SetReturningFunctions">http://techdocs.postgresql.org/guides/SetReturningFunctions</A>.</P>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<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>
|
|
|
|
|
|
2005-03-11 21:46:54 +00:00
|
|
|
|
<H4><A name="4.27">4.27</A>) Jakie s<> mo<6D>liwo<77>ci replikacji w PostgreSQL?</H4>
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<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
|
2005-03-11 21:46:54 +00:00
|
|
|
|
href="http://gborg.PostgreSQL.org/genpage?replication_research">http://gborg.PostgreSQL.org/genpage?replication_research</A>
|
2004-03-05 19:29:23 +00:00
|
|
|
|
znajduje si<73> ich lista. Replikacja typu multi-master jest w trakcie
|
|
|
|
|
prac, opis projektu znajduje si<73> pod adresem: <A
|
2005-03-11 21:46:54 +00:00
|
|
|
|
href="http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php">
|
2004-03-05 19:29:23 +00:00
|
|
|
|
http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php</A>.
|
|
|
|
|
</P>
|
|
|
|
|
|
2005-03-11 21:46:54 +00:00
|
|
|
|
<H4><A name="4.28">4.28</A>) Jakie mo<6D>liwo<77>ci szyfrowania oferuje
|
2004-03-05 19:29:23 +00:00
|
|
|
|
PostgreSQL?</H4>
|
|
|
|
|
<UL>
|
|
|
|
|
<LI>contrib/pgcrypto zawiera wiele funkcji za pomoc<6F>, kt<6B>rych mo<6D>emy u<>ywa<77>
|
2005-03-11 21:46:54 +00:00
|
|
|
|
kryptografii w zapytaniach SQL.</LI>
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<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
|
2005-03-11 21:46:54 +00:00
|
|
|
|
przez PostgreSQL).</LI>
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<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
|
2005-03-11 21:46:54 +00:00
|
|
|
|
w<><77>czenie opcji PASSWORD_ENCRYPTION w postgresql.conf. </LI>
|
|
|
|
|
<LI>Serwer mo<6D>e dzia<69>a<EFBFBD> u<>ywaj<61>c szyfrowanego systemu plik<69>w.</LI>
|
2004-03-05 19:29:23 +00:00
|
|
|
|
</UL>
|
|
|
|
|
|
2002-04-29 02:57:18 +00:00
|
|
|
|
<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
|
|
|
|
|
w <I>psql</I>, program zrzuca pami<6D><69> (dump core)?</H4>
|
|
|
|
|
|
|
|
|
|
<P>Problem mo<6D>e by<62> spowodowany przez bardzo wiele rzeczy. Spr<70>buj
|
|
|
|
|
najpierw przetestowa<77> Twoj<6F> funkcj<63> w samodzielnie dzia<69>aj<61>cym programie.
|
|
|
|
|
</P>
|
|
|
|
|
|
|
|
|
|
<H4><A name="5.2">5.2</A>) Jak mog<6F> doda<64>/zg<7A>osi<73> nowe typy czy
|
|
|
|
|
funkcje do PostgreSQL?</H4>
|
|
|
|
|
|
|
|
|
|
<P>Wy<EFBFBD>lij Twoje propozycje na list<73> mailow<6F> <I>pgsql-hackers</I>,
|
|
|
|
|
wtedy prawdopodobnie Tw<54>j kod znajdzie si<73> w katalogu <I>contrib/</I>.</P>
|
|
|
|
|
|
|
|
|
|
<H4><A name="5.3">5.3</A>) Jak napisa<73> funkcj<63> C zwracaj<61>c<EFBFBD> krotk<74>
|
|
|
|
|
(tuple)?</H4>
|
|
|
|
|
|
2004-03-05 19:29:23 +00:00
|
|
|
|
<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>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
|
|
|
|
|
<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>
|
|
|
|
|
|
|
|
|
|
<P>Pliki <I>Makefiles</I> nie maj<61> dorzuconych odpowiednich
|
|
|
|
|
zale<6C>no<6E>ci dla plik<69>w nag<61><67>wkowych (include files). Wykonaj najpierw
|
|
|
|
|
<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
|
2004-03-05 19:29:23 +00:00
|
|
|
|
kompilator m<>g<EFBFBD> okre<72>li<6C> zale<6C>no<6E>ci samodzielnie.
|
|
|
|
|
</P>
|
2002-04-29 02:57:18 +00:00
|
|
|
|
</BODY>
|
|
|
|
|
</HTML>
|
|
|
|
|
|