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