]> granicus.if.org Git - postgresql/commitdiff
Update Czech FAQ.
authorBruce Momjian <bruce@momjian.us>
Thu, 1 Nov 2007 17:28:03 +0000 (17:28 +0000)
committerBruce Momjian <bruce@momjian.us>
Thu, 1 Nov 2007 17:28:03 +0000 (17:28 +0000)
Pavel Stehule

doc/FAQ_czech
doc/src/FAQ/FAQ_czech.html

index 78696bad58cde877562663ea30a517da89291f17..d065fa1f9c010f123349f58f12879ca84ef2304f 100644 (file)
 
-                     Èasto kladené dotazy (FAQ) PostgreSQL
+                          Frequently Asked Questions
                                        
-   Poslední aktualizace: Støeda 23. èervna 21:10:00 EST 2004
+   Casto kladené dotazy (FAQ) PostgreSQL
    
-   Souèasný správce: Bruce Momjian (pgman@candle.pha.pa.us)
+   Poslední aktualizace: 29. ríjna 2007 (aktualizováno pro PostgreSQL
+   8.3)
    
-   Pøelo¾il: Pavel Stìhule (stehule@kix.fsv.cvut.cz)
+   Soucasný správce: Bruce Momjian (bruce@momjian.us)
    
-   Aktuální verzi tohoto dokumentu naleznete na adrese:
-   http://www.PostgreSQL.org/docs/faqs/FAQ.html. Èeský pøeklad na adrese:
-   http://www.PostgreSQL.org/docs/faqs/FAQ_czech.html.
+   Prelozil: Pavel Stehule (pavel.stehule@gmail.com)
    
-   Odpovìdi na dotazy relevantní ke konkrétním platformám lze nalézt na
-   adrese: http://www.PostgreSQL.org/docs/index.html.
+   Nejaktuálnejsí verzi tohoto dokumentu naleznete na adrese
+   http://www.postgresql.org/files/documentation/faqs/FAQ.html
+   
+   Odpovedi na otázky vázané na konkrétní platformy naleznete na adrese
+   http://www.postgresql.org/docs/faq/.
      _________________________________________________________________
    
                                Obecné otázky
                                       
-   1.1) Co je PostgreSQL? Jak se vyslovuje?
-   1.2) Jaká je licence na PostgreSQL?
-   1.3) Na kterých Unixex lze spustit PostgreSQL?
-   1.4) Které ne-unixové platformy jsou podporované?
+   1.1) Co je to PostgreSQL? Jaká je správná výslovnost slova PostgreSQL?
+   1.2) Kdo rídí vývoj PostgreSQL?
+   1.3) Pod jakou licencí je PostgreSQL?
+   1.4) Na kterých platformách lze provozovat PostgreSQL?
    1.5) Kde mohu získat PostgreSQL?
-   1.6) Kde mohu získat podporu?
-   1.7) Kde je poslední verze?
-   1.8) Jaká je dostupná dokumentace?
-   1.9) Kde najdu seznam známých chyb nebo nepodporovaných vlastností?
-   1.10) Jak se mohu nauèit SQL?
-   1.11) Nemá PostgreSQL problémy s rokem 2000?
-   1.12) Jak se pøipojit k vývojáøskému týmu?
-   1.13) Kam podat report o chybì?
-   1.14) Jak je na tom PostgreSQL v porovnání s jinými databázemi?
-   1.15) Jak lze finanènì pomoci PostgreSQL?
-   
-                             User client dotazy
+   1.6) Jaká je poslední verze?
+   1.7) Kde mohu získat podporu?
+   1.8) Jak a kam hlásit chyby?
+   1.9) Kde najdu informace o známých chybách nebo nepodporovaných
+   vlastnostech?
+   1.10) Jaká je dostupná dokumentace?
+   1.11) Jak se mohu naucit SQL?
+   1.12) Jak se mohu pripojit k týmu vývojáru?
+   1.13) Jak je na tom PostgreSQL v porovnání s jinými databázemi?
+   1.14) Je PostgreSQL pripraven na aktuální zavádení letního casu v
+   nekterých zemích?
+   
+                        Dotazy na klientská rozhraní
                                       
-   2.1) Kde naleznu ODBC ovladaèe pro PostgreSQL?
-   2.2) Jaké nástroje lze pou¾ít pro PostgreSQL a web?
+   2.1) Která rozhraní jsou pouzitelná pro PostgreSQL?
+   2.2) Jaké nástroje lze pouzít pro PostgreSQL a web?
    2.3) Existuje grafické rozhraní pro PostgreSQL?
-   2.4) Které programovací jazyky mají podporu pro PostgreSQL?
    
                            Administrativní dotazy
                                       
-   3.1) Jak nainstalovat PostgreSQL jinam ne¾ do /usr/local/pgsql?
-   3.2) Pøi startu postmaster, dostanu chybové hlá¹ení Bad System Call
-   nebo core dump. Proè?
-   3.3) Pøi startu postmastera dostanu hlá¹ení o chybì IpcMemoryCreate.
-   Proè?
-   3.4) Pøi startu postmastera dostanu hlá¹ení o chybì
-   IpcSemaphoreCreate. Proè?
-   3.5) Jak povolit nebo zakázat pøístup z jiných stanic?
-   3.6) Jak ladit databázový stroj na lep¹í výkon?
-   3.7) Jaké jsou mo¾nosti ladìní?
-   3.8) Proè dostanu "Sorry, too many clients", kdy¾ se zkou¹ím pøipojit?
-   3.9) K èemu slou¾í adresáø pgsql_tmp?
-   3.10) Proè je po¾adováno dump a obnovení (load) databáze bìhem upgrade
-   mezi velkými verzemi PostgreSQL?
+   3.1) Jak nainstalovat PostgreSQL jinam nez do /usr/local/pgsql?
+   3.2) Jak nastavit pravidla pro prístup z jiných stanic?
+   3.3) Jak vyladit databázi na vyssí výkon?
+   3.4) Jaké mám ladící prostredky?
+   3.5) Co znamená "Sorry, too many clients", kdyz se zkousím pripojit?
+   3.6) Proc je nutný dump a obnovení (load) databáze pri upgradu
+   PostgreSQL?
+   3.7) Jaký hardware bych mel pouzívat?
    
                               Provozní dotazy
                                       
-   4.1) Èím se li¹í binární a normální kurzor?
-   4.2) Jak získat pouze první øádek dotazu? Náhodný øádek?
-   4.3) Jak získám seznam tabulek nebo jinak jak jej získá psql?
-   4.4) Jak odstraním sloupec tabulky, jak zmìním jeho typ?
-   4.5) Jaká je maximální velikost øádku, tabulky a databáze?
-   4.6) Kolik diskového prostoru je potøeba k ulo¾ení dat z normálního
+   4.1) Jak získat pouze první rádek dotazu? Náhodný rádek?
+   4.2) Jak získám seznam tabulek, indexu, databází, a definovaných
+   uzivatelu. Mohu videt dotazy, které pouzívá psql pro zobrazení techto
+   informací?
+   4.3) Jak zmenit datový typ sloupce?
+   4.4) Jaká je maximální velikost rádku, tabulky a databáze?
+   4.5) Kolik diskového prostoru je potreba k ulození dat z normálního
    textového souboru?
-   4.7) Jak získám seznam vytvoøených tabulek, indexù, databází?
-   4.8) Mùj dotaz je pomalý a nepou¾ívá vytvoøené indexy. Proè?
-   4.9) Jak zjistím, jak optimizer dotazu vyhodnocuje mùj dotaz?
-   4.10) Co to je R-tree index?
-   4.11) Co je Genetic Query Optimizer?
-   4.12) Jak provést vyhledávání regulárního výrazu case sensitiv,
-   insensitiv? Jak pou¾ít index pro case insensitive vyhledávání?
-   4.13) Jak v dotazu detekovat, ¾e polo¾ka je NULL?
-   4.14) Jaké jsou rozdíly mezi rùznými znakovými typy?
-   4.15.1) Jak vytvoøit serial/auto-increment pole?
-   4.15.2) Jak získat hodnotu SERIAL po vlo¾ení øádku?
-   4.15.3) Nepovede currval() a nextval() k rozhození podmínek pøi
-   soubìhu s jinými u¾ivateli?
-   4.15.4) Proè není vygenerované èíslo pou¾ito pøi pøeru¹ení transakce?
-   Proè vznikají díry v èíslování vlastní sekvencí/SERIAL sloupce?
-   4.16) Co to je OID? Co je to TID?
-   4.17) Jaký je význam nìkterých výrazù pou¾itých v PostgreSQL?
-   4.18) Proè jsem získal chybové hlá¹ení "ERROR: Memory exhausted in
+   4.6) Muj dotaz je pomalý a nepouzívá vytvorené indexy. Proc?
+   4.7) Jak zjistím, jak se vyhodnocuje muj dotaz?
+   4.8) Jak pouzít case-(in)sensitive regulární výraz? Jak pouzít index
+   pro case insensitive hledání?
+   4.9) Jak v dotazu detekovat, ze polozka je NULL? Jak bezpecne spojit
+   dva retezce, pokud mohou obsahovat NULL? Lze trídit podle toho, jestli
+   je polozka NULL nebo ne?
+   4.10) Jaké jsou rozdíly mezi ruznými znakovými typy?
+   4.11.1) Jak vytvorit serial/auto-increment polozku?
+   4.11.2) Jak získat hodnotu SERIAL po vlození rádku?
+   4.11.3) Nezpusobí currval() a nextval() problémy ve více uzivatelském
+   prostredí?
+   4.11.4) Proc není vygenerované císlo pouzito pri prerusení
+   transakce?Proc vznikají díry v císlování prostrednictvím sekvence nebo
+   typu SERIAL?
+   4.12) Co to je OID? Co je to CTID?
+   4.13) Co znamená chybové hlásení "ERROR: Memory exhausted in
    AllocSetAlloc()"?
-   4.19) Jak se dozvím, kterou verzi PostgreSQL pou¾ívám?
-   4.20) Proè operace s velkými objekty konèí "invalid large obj
-   descriptor"?
-   4.21) Jak vytvoøit sloupec obsahující implicitnì aktuální datum?
-   4.22) Proè jsou moje vnoøené dotazy pou¾ívající IN tak pomalé?
-   4.23) Jak provést vnìj¹í spojení (outer join)?
-   4.24) Jak provést dotaz napøíè nìkolika databázemi?
-   4.25) Mù¾e funkce vrátit více øádkù nebo sloupcù?
-   4.26) Proè nelze spolehlivì vytváøet a ru¹it doèasné tabulky v
-   PL/pgSQL funkcích?
-   4.27) Jaké jsou mo¾nosti replikace databází?
-   4.28) Jaké jsou mo¾nosti ¹ifrování databází?
-   
-                           Roz¹iøování PostgreSQL
-                                      
-   5.1) Napsal jsem UDF funkci, PostgreSQL v¹ak konèí dump core?
-   5.2) Jak mohu pøispìt nìjakými ¹ikovnými datovými typy a funkcemi do
-   PostgreSQL?
-   5.3) Jak napsat funkci v C vracející ntici?
-   5.4) Modifikoval jsem zdrojové soubory. Tato zmìna nebyla pøi
-   rekompilaci vzata v potaz. Proè?
+   4.14) Jak zjistím, kterou verzi PostgreSQL pouzívám?
+   4.15) Jak vytvorit sloupec, který bude implicitne obsahovat aktuální
+   cas?
+   4.16) Jak provést vnejsí spojení (outer join)?
+   4.17) Jak provést dotaz napríc nekolika databázemi?
+   4.18) Muze funkce vrátit více rádku nebo sloupcu?
+   4.19) Co je prícinou chyby "relation with OID xxxxx does not exist"?
+   4.20) Jaké jsou moznosti replikace databází?
+   4.21) Proc v dotazu nejsou rozpoznány názvy mých tabulek nebo funkcí?
+   Proc jsou velká písmena v názvech automaticky prevedena na malá
+   písmena?
      _________________________________________________________________
    
                                Obecné otázky
                                       
-    1.1) Co je PostgreSQL? Jak se vyslovuje?
-    
-   PostgreSQL se vyslovuje Post-Gres-Q-L. Zvukový záznam je dostupný na
-   adrese .
-   
-   PostgreSQL vychází z databáze POSTGRES (a stále je nìkdy oznaèován
-   zjednodu¹enì jako Postgres) - výzkumného prototypu DBMS nové generace.
-   Z postgresu byl pøevzat silný datový model a bohatý soubor datových
-   typù a jeho dotazovací jazyk PostQuel byl nahrazen roz¹íøenou
-   podmno¾inou jazyka SQL. PostgreSQL lze pou¾ívat bez omezení a jeho
-   zdrojové kódy jsou volnì k dispozici.
-   
-   PostgreSQL vyvýjí tým vývojáøù pøihlá¹ených do vývojáøské konference
-   PostgreSQL. Souèasným koordinátorem je Marc G. Fournier
-   (scrappy@PostgreSQL.org). (viz 1.6 - jak se zapojit). Tento tým je
-   zodpovìdný za ve¹kerý vývoj PostgreSQL. Jedná se o veøejný projekt,
-   který není øízen ¾ádnou firmou. Pokud se chcete zapojit, pøeètìte si
-   developer's FAQ na adrese
-   http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html
-   
-   Autory první verze PostgreSQL 1.01 byli Andrew Yu and Jolly Chen. Do
-   portace, testování, ladìní a roz¹iøování kódu se zapojilo mnoho
-   dal¹ích vývojáøù . Pùvodni kód Postgresu, ze kterého PostgreSQL
-   vychází, je výsledkem úsilí mnoha studentù a programátorù pracujících
-   pod vedením prof. Michaela Stonebrakera na University of California v
-   Berkley.
-   
-   Pùvodní název software z Berkley byl Postgres. Po pøidání jazyka SQL
-   se název zmìnil na Postgres95. Koncem roku 1996 byl RDBMS pøejmenován
-   na PostgreSQL.
-   
-    1.2) Jaká je licence na PostgreSQL?
-    
-   PostgreSQL je pøedmìtem následujících autorských práv:
-   
-   Dílèí Copyright (c) 1996-2007, PostgreSQL Global Development Group
-   Dílèí Copyright (c) 1994-6, Regents of the University of California
-   
-   Udìluje se oprávnìní k u¾ití, rozmno¾ování, provádìní úprav a
-   roz¹iøování tohoto softwaru a dokumentace k nìmu, pro jakékoli úèely,
-   bez licenèního poplatku a bez písemné licenèní smlouvy, za podmínky,
-   ¾e na v¹ech jeho kopiích je uvedeno oznámení o vý¹e uvedených právech,
-   jako¾ i obsah tohoto a dvou následujících odstavcù.
-   
-   THE UNIVERSITY OF CALIFORNIA ("KALIFORNSKÁ UNIVERZITA") NENÍ V ®ÁDNÉM
-   PØÍPADÌ ODPOVÌDNA ®ÁDNÉ TØETÍ OSOBÌ ZA PØÍMOU, NEPØÍMOU, ZVLÁ©TNÍ,
-   NAHODILOU NEBO VÝSLEDNOU ©KODU, VÈETNÌ U©LÉHO ZISKU, ZPùSOBENOU U®ITÍM
-   TOHOTO SOFTWARU A DOKUMENTACE K NÌMU, A TO I V PØÍPADÌ, ®E THE
-   UNIVERSITY OF CALIFORNIA BYLA INFORMOVÁNA O MO®NOSTI VZNIKU TAKOVÉ
-   ©KODY.
-   
-   HE UNIVERSITY OF CALIFORNIA ZEJMÉNA NEPOSKYTUJE JAKÉKOLI ZÁRUKY, A TO
-   NEJEN ZÁRUKY OBCHODOVATELNOSTI A VHODNOSTI TOHOTO VýROBKU KE
-   SPECIFICKýM ÚÈELùM. NÍ®E UVEDENý SOFTWARE JE POSKYTNUT "JAK STOJÍ A
-   LE®Í" A THE UNIVERSITY OF CALIFORNIA NENÍ POVINNA ZAJISTIT JEHO
-   ÚDR®BU, PODPORU, AKTUALIZACI, VYLEP©ENÍ NEBO MODIFIKACI.
-   
-   Vý¹e uvedené je BSD licence, bì¾ná licence otevøeného zdroje. Není zde
-   ¾ádné omezení ohlednì u¾ití kódu zdroje. Jsme s tím spokojeni a nemáme
-   v úmyslu na této skuteènosti cokoli mìnit.
-   
-    1.3) Na kterých Unixex lze spustit PostgreSQL?
-    
-   PostgreSQL bì¾í na v¹ech moderních unixových platformách. V
-   instalaèních instrukcích naleznete aktuální seznam v¹ech platforem na
-   kterých byla testováním ovìøena funkcionalita PostgreSQL.
-   
-    1.4) Které ne-unixové platformy jsou podporované?
-    
-   Klient
-   
-   Knihovna libpq, psql a nìkteré dal¹í moduly byly pøelo¾eny pro MS
-   Windows. Klienta lze provozovat na MS Windows, ten prostøednictvím
-   TCP/IP protokolu komunikuje se serverem bì¾ícím na nìkteré z
-   podporovaných Unixových platforem. K pøekladu lze pou¾ít win32.mak a
-   Win32 knihovny libpq a psql. K databázi PostgerSQL lze pøistupovat
-   skrze rozhraní ODBC.
-   
-   Server
-   
-   Server mù¾e být na WindowsNT a Win2k provozován pouze s knihovnou
-   Cygwin, Cygnus Unix/NT porting library. Více pgsql/doc/FAQ_MSWIN v
-   distribuci nebo MS Windows FAQ na adrese
-   http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN.
-   
-   Na nativním portu pro MS Win NT/2000/XP se pracuje. Dal¹í informace o
-   aktuálním stavu PostgreSQL pro Windows naleznet na adrese
-   http://techdocs.postgresql.org/guides/Windows a
-   http://momjian.postgresql.org/main/writings/pgsql/win32.html.
-   
-   Existující port pro Novell Netware 6 naleznete na
-   http://forge.novell.com.
-   
-    1.5) Kde mohu získat PostgreSQL?
-    
-   Primárním anonymním ftp serverem pro PostgreSQL je
-   ftp://ftp.PostgreSQL.org/pub. Seznam zrcadel naleznete na na¹ich
-   webových stránkách.
-   
-    1.6) Kde mohu získat podporu?
-    
-   Hlavní mailová konference je: pgsql-general@PostgreSQL.org. Slou¾í k
-   diskuzím ohlednì PostgreSQL. Pøihlásíte se zasláním mailu obsahující
-   následující øádky v tìle dopisu (nikoliv v záhlaví - subjectu):
-    subscribe
-    end
-
-   na adresu pgsql-general-request@PostgreSQL.org.
-   
-   Mù¾ete si vy¾ádat denní pøehled (diggest), který má zhruba 30K dennì
-   zpráv.
-   
-   Konference psql-bugs je urèena k zasílání zpráv o chybách. Pro
-   pøihlá¹ení po¹lete mail se stejným obsahem jako v pøedchozím pøípadì
-   na adresu pgsql-bugs-request@PostgreSQL.org.
-   
-   Do vývojáøské konference se pøihlásíte odesláním dopisu s ji¾
-   zmiòovaným obsahem na mailto:pgsql-hackers-request@PostgreSQL.org.
-   
-   Seznam dal¹ích konferencí naleznete na stránkách PostgreSQL:
-   
-     http://www.postgresql.org
-     
-    1.7) Jaká je poslední verze?
-    
-   Poslední verze PostgreSQL je 7.4.3. Plánujeme uvolnit významnou verzi
-   ka¾dých ¹est a¾ osm mìsícù.
-   
-    1.8) Jaká je dostupná dokumentace?
-    
-   Rùzné manuály, manuálové stránky a nìkolik malých testovacích pøíkladù
-   jsou souèásti distribuce. Podívejte se do adresáøe /doc. Manuály jsou
-   pøístupné online na http://www.PostgreSQL.org/docs.
-   
-   Na adresách http://www.PostgreSQL.org/docs/awbook.html a
-   http://www.commandprompt.com/ppbook/ naleznezte dvì online knihy o
-   PostgreSQL. Seznam dostupné literatury je na
-   http://techdocs.PostgreSQL.org/techdocs/bookreviews.php. Soubor
-   technických èlánkù s tematikou PostgresQL najdete na
-   http://techdocs.PostgreSQL.org/.
-   
-   psql má u¾iteèný metapøíkaz \d slou¾ící k zobrazení informací o
-   typech, operátorech, funkcí, agregaèních funkcí atd.
-   
-   Více dokumentace naleznete na na¹ich webových stránkách.
-   
-    1.9) Kde najdu seznam známých chyb nebo nepodporovaných vlastností?
-    
-   PostgreSQL podporuje roz¹íøenou podmno¾inu SQL-92. V na¹em TODO
-   najdete seznam známých chyb, chybìjících vlastností a seznam
-   vlastností, které budou do systému implementovány v budoucnu (vèetnì
-   priorit).
-   
-    1.10) Jak se mohu nauèit SQL?
-    
-   V knize The PostgreSQL book na
-   http://www.PostgreSQL.org/docs/awbook.html je vysvìtlen jazyk SQL
-   (vy¹la èesky). Dal¹í dostupnou knihou je
-   http://www.commandprompt.com/ppbook. Kvalitní návody naleznete na
-   http://www.intermedia.net/support/sql/sqltut.shtm, a na
-   http://sqlcourse.com.
-   
-   Dal¹í je Teach Yourself SQL in 21 days, Second Edition na
-   http://members.tripod.com/er4ebus/sql/index.htm.
-   
-   Mnoho u¾ivatelù doporuèuje The Practical SQL Handbook, Bowman, Judith
-   S., et al., Addison-Wesley. Jiní preferují The Complete Reference SQL,
-   Groff et al., McGraw-Hill.
-   
-    1.11) Nemá PostgreSQL problémy s rokem 2000?
-    
-   Nemá, mù¾eme pracovat s datumy po roce 2000 na¹eho letopoètu i pøed
-   rokem 2000 pø.n.l.
-   
-    1.12) Jak se pøipojit k vývojáøskému týmu?
-    
-   Nejdøíve si stáhnìte nejnovìj¹í zdroje a pøeètìte si vývojáøskou
-   dokumentaci na na¹em webu nebo v distribuci. Pak se pøihla¹te do
-   konferencí pgsql-hackers a pgsql-patches. Kvalitní záplaty posílejte
-   do pgsql-patches.
-   
-   Právo commit má v CVS archivu asi tøinácti lidí. Ka¾dý z nich poslal
-   mnoho kvalitních záplat, tak¾e tehdej¹í commiters mìli jistotu, ¾e
-   budou pøedkládat jenom kvalitní záplaty a mohli jim pøedìlit vìt¹í
-   práva.
-   
-    1.13) Kam podat report o chybì?
-    
-   Nav¹tivte na¹i PostgreSQL BugTool stránku na
-   http://www.PostgreSQL.org/bugs/bugs.php, která obsahuje návod a
-   smìrnice jak podat chybový report.
-   
-   Ovìøte si na na¹em ftp serveru ftp://ftp.PostgreSQL.org/pub, zda-li
-   máte nejnovìj¹í verzi PostgreSQL a zda-li k ní neexistují nìjaké
-   záplaty.
-   
-    1.14) Jak je na tom PostgreSQL v porovnání s jinými databázemi?
-    
-   Existuje nìkolik hledisek jak porovnávat software: vlastnosti, výkon,
-   spolehlivost, podpora a cena.
-   
-   Vlastnosti
-          PostgreSQL má hodnì spoleèných vlastností s velkými komerèními
-          DBMS, napø. transakce, vnoøené dotazy, spou¹tì, pohledy,
-          kontrolu referenèní integrity a sofistikované zamykání.
-          Podporuje nìkteré vlastnosti, které tyto systémy nemají,
-          u¾ivatelem definované typy, dìdiènost, pravidla, MVCC
-          redukující zamykání.
-          
-   Výkon
-          Výkonnostnì je na tom PostgreSQL podobnì jako dal¹í komerèní
-          ale i open source databáze, v nìèem je rychlej¹í, jindy
-          pomalej¹í. V porovnání s MySQL a podobnými databázovými systémy
-          je PostgreSQL rychlej¹í pøi víceu¾ivatelském pøístupu,
-          slo¾itìj¹ích dotazech a zatí¾ení read/write dotazy. MySQL je
-          rychlej¹í v jednodu¹¹ích dotazech s malým poètem u¾ivatelù.
-          Navíc, MySQL nepodporuje mnohé vlatnosti zmínìné v sekci
-          vlastnosti. Zapracovali jsme na spolehlivosti a podporovaných
-          vlastnostech, a výkon zvy¹ujeme v ka¾dé verzi. Zajímavou
-          stránku porovnávající PostgreSQL a MySQL naleznete na
-          http://openacs.org/philosophy/why-not-mysql.html. Za vývojem
-          MySQL není Open Source komunita, ale komerèní spoleènost,
-          pøesto¾e svoje produkty distribuuje jako Open Source.
-          
-   Spolehlivost
-          Jsme si vìdomi, ¾e databáze musí být spolehlivá, jinak je
-          nepou¾itelná. Sna¾íme se zveøejòovat dobøe otestovaný, stabilní
-          kód s minimem chyb. Ka¾dá verze je více ne¾ mìsíc v beta
-          testování, a na¹e historie verzí ukazuje, ¾e mù¾eme nabídnout
-          stabilní, solidní verze, které jsou pøipraveny pro reálné
-          nasazení. V této oblasti jsme srovnatelní s dal¹ími databázemi.
-          
-   Podpora
-          Na na¹í mailové konferenci mù¾ete kontaktovat velkou skupinu
-          vývojáøù a u¾ivatelù.problémù. Nemù¾eme garantovat opravu,
-          nicménì komerèní databáze také ne v¾dy nabídnou opravu. Podle
-          ohlasù je na¹e podpora hodnocena lépe ne¾ u jiných DBMS a to
-          díky pøímému kontaktu s vývojáøi, velkou komunitou u¾ivatelù,
-          kvalitními manuály a pøístupným zdrojovým kódem. Pro u¾ivatele,
-          kteøí vy¾adují podporu ke konkrétním pøípadùm, existuje placená
-          podpora (FAQ sekce 1.6).
-          
-   Cena
-          PosgreSQL lze volnì pou¾ívat pro nekomerèní i komerèní pou¾ití.
-          Mù¾ete do svých produktù pøidat ná¹ kód bez omezení, respektive
-          v souladu s podmínkami na¹í licenèní smlouvy (v duchu BSD
-          licence).
-          
-    1.15) Jak lze finanènì pomoci PostgreSQL?
-    
-   PosgreSQL má prvotøídní infrastrukturu od na¹eho zaèátku v roce 1996.
-   Vdìèíme za to Marku Fournierovi, který zalo¾il a spravoval tuto
-   infrastrukturu nìkolik let.
-   
-   Kvalitní infrastruktura je velice dùle¾itá pro ka¾dý open source
-   projekt. Pøedchází nedorozumìním, která velice zdr¾ují pokrok v
-   projektu.
-   
-   Tato infrastruktura není laciná. K jejímu zaji¹tìní je tøeba stále
-   hradit urèité mìsíèní a jednorázové èástky. Pokud máte Vy nebo Va¹e
-   spoleènost peníze, které nám mù¾ete darovat, obra»e se na
-   http://store.pgsql.com/shopping/ a darujte je.
-   
-   Aèkoliv webová stránka zmiòuje PostgreSQL, Inc. vklady jsou urèeny
-   pouze k podpoøe projektu PostgreSQL a nepodporují ¾ádnou existující
-   spoleènost. Pokud to vy¾adujete, mù¾ete poslat kontrolu na na¹i
-   kontaktní adresu.
+  1.1) Co je to PostgreSQL? Jaká je správná výslovnost slova PostgreSQL?
+  
+   Výslovnost PostgreSQL je Post-Gres-Q-L , nebo zjednodusene Postgres .
+   V rade jazyku je slovo PostgreSQL obtízne vyslovitelný, proto se v
+   hovoru casto pouzívá zjednodusená forma názvu. Pro ty, kterí by si
+   rádi poslechli výslovnost, je k dispozici audiozáznam v MP3 formátu.
+   
+   PostgreSQL je relacní databáze s nekterými objektovými rysy, která má
+   moznosti tradicních komercních databázových systému s nekolika
+   rozsíreními, které lze najít v DBMS systémech prístí generace.
+   Pouzívání PostgreSQL není omezené a veskeré zdrojové kódy jsou volne
+   dostupné.
+   
+   Za vývojem PostgreSQL je mezinárodní skupina nezávislých vývojáru
+   navzájem komunikujících prostrednictvím internetu. Tento projekt není
+   rízen zádnou obchodní organizací. Pokud se chcete pridat k projektu,
+   prectete si vývojárské FAQ na adrese
+   http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html .
+   
+  1.2) Kdo rídí vývoj PostgreSQL?
+  
+   Pokud budete hledat organizaci rídící vývoj PostgreSQL, budete
+   zklamáni. Nic takového neexistuje. Existují pouze "core" a CVS skupiny
+   uzivatelu, ale ty existují více z administrátorských duvodu nez z
+   organizacních. Projekt je smerován komunitou vývojáru a uzivatelu, ke
+   které se kdokoliv muze pripojit. Jediné co potrebuje, je prihlásit se
+   do elektronické konference. Více ve vývojárském FAQ.
+   
+  1.3) Pod jakou licencí je PostgreSQL?
+  
+   PostgreSQL je predmetem následujících autorských práv:
+   
+   Dílcí Copyright (c) 1996-2005, PostgreSQL Global Development Group
+   Dílcí Copyright (c) 1994-6, Regents of the University of California
+   
+   Udeluje se oprávnení k uzití, rozmnozování, provádení úprav a
+   rozsirování tohoto softwaru a dokumentace k nemu, pro jakékoli úcely,
+   bez licencního poplatku a bez písemné licencní smlouvy, za podmínky,
+   ze na vsech jeho kopiích je uvedeno oznámení o výse uvedených právech,
+   jakoz i obsah tohoto a dvou následujících odstavcu.
+   
+   THE UNIVERSITY OF CALIFORNIA ("KALIFORNSKÁ UNIVERZITA") NENÍ V ZÁDNÉM
+   PRÍPADE ODPOVEDNA ZÁDNÉ TRETÍ OSOBE ZA PRÍMOU, NEPRÍMOU, ZVLÁSTNÍ,
+   NAHODILOU NEBO VÝSLEDNOU SKODU, VCETNE USLÉHO ZISKU, ZPUSOBENOU UZITÍM
+   TOHOTO SOFTWARU A DOKUMENTACE K NEMU, A TO I V PRÍPADE, ZE THE
+   UNIVERSITY OF CALIFORNIA BYLA INFORMOVÁNA O MOZNOSTI VZNIKU TAKOVÉ
+   SKODY.
+   
+   THE UNIVERSITY OF CALIFORNIA ZEJMÉNA NEPOSKYTUJE JAKÉKOLI ZÁRUKY, A TO
+   NEJEN ZÁRUKY OBCHODOVATELNOSTI A VHODNOSTI TOHOTO VÝROBKU KE
+   SPECIFICKÝM ÚCELUM. NÍZE UVEDENÝ SOFTWARE JE POSKYTNUT "JAK STOJÍ A
+   LEZÍ" A THE UNIVERSITY OF CALIFORNIA NENÍ POVINNA ZAJISTIT JEHO
+   ÚDRZBU, PODPORU, AKTUALIZACI, VYLEPSENÍ NEBO MODIFIKACI.
+   
+   Výse uvedené je BSD licence, bezná licence otevreného zdroje. Není zde
+   zádné omezení ohledne uzití kódu zdroje. Jsme s tím spokojeni a nemáme
+   v úmyslu na této skutecnosti cokoli menit.
+   
+  1.4) Na kterých platformách lze provozovat PostgreSQL?
+  
+   Strucne receno, PostgreSQL bezí na vsech moderních unixových
+   systémech. Seznam tech, u kterých probehlo testování, naleznete v
+   instalacních instrukcích.
+   
+   PostreSQL také bezí nativne na vsech Microsof Windows systémech
+   odvozených z Microsoft Windows NT jako jsou Windows 2000SP4, WindowsXP
+   a Windows2003. Instalacní balícek naleznete na adrese
+   http://pgfoundry.org/projects/pginstaller. Na starsích systémech s
+   jeste MS-DOS jádrem lze spustit PostgreSQL s emulacním programem
+   Cygwin.
+   
+   Dále existuje port pro Novell Netware 6 port na adrese
+   http://forge.novell.com, a pro OS/2 verze (eComStation) na adrese
+   http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgre
+   SQL&stype=all&sort=type&dir=%2F .
+   
+  1.5) Kde mohu získat PostgreSQL?
+  
+   Pomocí webového klienta z adresy http://www.postgresql.org/ftp/ nebo
+   klienta ftp z adresy ftp://ftp.postgresql.org/pub/.
+   
+  1.6) Jaká je poslední verze?
+  
+   Nejnovejsí verzí PostgreSQL je verze 8.2.5
+   
+   V plánu je uvolnovat kazdorocne jednu velkou verzi a kazdých nekolik
+   mesícu malé verze.
+   
+  1.7) Kde mohu získat podporu?
+  
+   Nejcastejsí forma podpory uzivatelum PostgreSQL komunitou je
+   prostrednictvím e-mailu. Na nasem webovém serveru naleznete odkaz na
+   stránky,kde se muzete prihlásit do elektronické konference. Pro
+   zacátek jsou doporucené konference general nebo bugs.
+   
+   Dalsí cestou je IRC kanál #postgresql na Freenode (irc.freenode.net).
+   K pripojení pouzijte Unixový príkaz irc -x '#postgresql' "$USER"
+   irc.freenode.net nebo jakékoholiv jiného IRC klienta. V této síti
+   existuje jeste spanelská (#postgresql-es) a francouzská
+   (#postgresqlfr) verze. Dalsí PostgreSQL kanál naleznete na EFNet.
+   
+   Seznam spolecností poskytující komercní podporu naleznete na adrese
+   http://techdocs.postgresql.org/companies.php.
+   
+  1.8) Jak a kam hlásit chyby?
+  
+   Vyplnte formulár na adrese
+   http://www.postgresql.org/support/submitbug. Na nasem ftp serveru
+   ftp://ftp.postgresql.org/pub/ si overte, ze pouzíváte aktuální verzi
+   PostreSQL.
+   
+   Chyby reportované prostrednictvím chybového formuláre nebo zasláním
+   mailu do PostgreSQL konference obvykle generuje následující odezvu:
+     * Nejedná se o chybu, a proc
+     * Jedná se o známou chybu, která je jiz v seznamu úkolu TODO
+     * Tato chyba byla opravena v aktuální verzi
+     * Tato chyba byla jiz opravena ve verzi, která zatím nebyla
+       oficiálne uvolnena
+     * Pozadavek na dalsí doplnující informace:
+          + Operacní systém
+          + Verze PostgreSQL
+          + Test reprodukující chybu
+          + Ladící informace
+          + Backtrace výstup debuggeru
+     * Jedná se o zatím nezjistenou chybu, pak muzete cekat
+          + Záplatu odstranující chybu, která bude vlozena do dalsí velké
+            nebo malé verze
+          + Informaci, ze se jedná o chybu, kterou nelze okamzite resit a
+            je proto pridána do TODO
+       
+  1.9) Kde najdu informace o známých chybách nebo nepodporovaných vlastnostech?
+  
+   PostgreSQL podporuje rozsírenou podmnozinu SQL:2003. V nasem TODO
+   naleznete seznam známých chyb, chybejících vlastností, a plány do
+   budoucna.
+   
+   Odezva na pozadavek na novou vlastnost PostgreSQL je obvykle:
+     * Pozadavek je jiz v TODO
+     * Pozadovaná funkce není chtená protoze
+          + Duplikuje jiz existující funkci, která respektuje SQL
+            standard
+          + Implementací funkce by se prílis zkomplikoval kód bez
+            relevantního prínosu
+          + Funkce by mohla být nebezpecná nebo nespolehlivá
+     * Pozadavek je pridán do TODO
+       
+   PostgreSQL nepozívá systém pro sledování chyb, protoze jsme zjistili,
+   ze je efektivnejsí prímo reagovat na maily a udrzovat aktuální TODO. V
+   praxi je snaha o co nejrychlejsí resení chyb, a chyby, které by se
+   mohly projevit u mnoha uzivatelu jsou opravovány velice rychle. Jediné
+   místo, kde lze dohledat vsechny zmeny, rozsírení a opravy v PostgreSQL
+   je CVS log. Poznámky k verzi "Release notes" nezachycují vsechny
+   zmeny, k nemz doslo.
+   
+  1.10) Jaká je dostupná dokumentace?
+  
+   PostgreSQL obsahuje vynikající dokumentaci zahrnující manuál,
+   manuálové stránky a testovací príklady. Podívejte se do adresáre /doc.
+   Manuál je prístupný online na http://www.postgresql.org/docs.
+   
+   K dispozici jsou zdarma dve online knihy na adresách
+   http://www.postgresql.org/docs/books/awbook.html a
+   http://www.commandprompt.com/ppbook/. Dalsí literaturu lze zakoupit.
+   Nejpopulárnejsí je od Kerryho Douglase. Seznam dostupné literatury je
+   na http://techdocs.postgresql.org/techdocs/bookreviews.php. Jeste je
+   kolekce technicky orientovaných clánku tematicky spojených s
+   PostgreSQL na adrese http://techdocs.postgresql.org/.
+   
+   Rádkový klient psql má \d príkazy pro zobrazení informací o typech,
+   operátorech, funkcích, agregacních funkcí, atd. Pouzijte \? pro
+   zobrazení dostupných príkazu.
+   
+   Dalsí dokumentaci najdete na nasem webu.
+   
+  1.11) Jak se mohu naucit SQL?
+  
+   Podívejte se do výse uvedené dokumentace. Dalsí online knihou je
+   "Teach Yourself SQL in 21 Days, Second Edition" na adrese
+   http://members.tripod.com/er4ebus/sql/index.htm. Mnoho nasich
+   uzivatelu doporucuje knihu The Practical SQL Handbook, Bowman, Judith
+   S., et al., Addison-Wesley. Dalsí The Complete Reference SQL, Groff et
+   al., McGraw-Hill.
+   
+   Dalsí online tutoriály jsou dostupné na adresách:
+     * http://www.intermedia.net/support/sql/sqltut.shtm
+     * http://sqlcourse.com
+     * http://www.w3schools.com/sql/default.asp
+     * http://mysite.verizon.net/Graeme_Birchall/id1.html
+       
+  1.12) Jak se mohu pripojit k týmu vývojáru?
+  
+   Prostudujte si Developer's FAQ.
+   
+  1.13) Jak je na tom PostgreSQL v porovnání s jinými databázemi?
+  
+   Software muzeme porovnávat z nekolika ruzných pohledu: vlastnosti,
+   výkon, spolehlivost, podpora a cena.
+   
+    Vlastnosti
+    
+   PostgreSQL nabízí vetsinu funkcí funkcionality velkých komercních DBMS
+   systému jako jsou: transakce, vnorené dotazy, spouste, referencní
+   integrita a sofistikovaný systém zamykání. Poskytujeme urcité funkce,
+   které ostatní systémy bezne nepodporují. Napr. uzivatelem definované
+   typy, dedicnost, pravidla (rules), a MVCC architekturu.
+   
+    Výkon
+    
+   Výkon PostgreSQL je srovnatelný s ostatními komercními nebo Open
+   Source databázemi. V nekterých prípadech je rychlejsí, jindy
+   pomalejsí. Nás výkon je obvykle +/-10% vuci ostatním databázím.
+   
+    Spolehlivost
+    
+   Uvedomujeme si, ze databáze musí být stoprocentne spolehlivá, jinak je
+   nepouzitelná. Snazíme se, aby kazdá verze byla dobre otestována a
+   obsahovala minimum chyb. Kazdá verze je minimálne nekolik mesícu v
+   beta testovacím rezimu. Do produkcního rezimu se dostane, az kdyz
+   nedochází k dalsím zmenám nebo opravám. Veríme, ze jsem více nez
+   srovnatelní s ostatními databázemi v této oblasti.
+   
+    Podpora
+    
+   Na nasich internetových konferencích se setkává velká skupina vývojáru
+   a uzivatelu pri resení vyskytujících se problému. Nase internetové
+   konference umoznují kontakt velké skupiny vývojáru a uzivatelu.
+   Nemuzeme garantovat opravu chyby, ale komercní DBMSs také vzdy
+   negarantují resení problému. Veríme ale, ze díky prímému kontaktu na
+   vývojáre, nasi uzivatelskou komunitu, manuálum, a dostupným zdrojovým
+   kódum máme lepsí podporu nez ostatní DBMSs. Pro ty, kterí preferují
+   komercní "per-incident" podporu, existuje spolecností, kterí ji
+   nabízejí (FAQ sekce 1.7.)
+   
+    Cena
+    
+   PostgreSQL lze pouzívat bezplatne (a to i pro komercní pouzití). Také
+   muzete neomezene pouzívat nás kód ve svých produktech s výjimkami
+   specifikovanými v nasí licenci (prebíráme BSD licenci).
+   
+  1.14) Je PostgreSQL pripraven na aktuální zavádení letního casu v nekterých
+  zemích?
+  
+   Pocínaje verzí 8.0.[4+] podporuje PostgreSQL letní cas také pro USA.
+   Podpora letního casu (daylight saving time) pro Kanadu a Západní
+   Austrálii je obsazena ve verzích 8.0.[10+] a 8.1.[6+] a vsech
+   následujících verzích. Starsí verze pouzívaly systémovou databázi
+   casových zón obsahující, krome jiného, informaci o tom, zda se pro
+   danou casovou zónu rozlisuje mezi letním a zimním casem.
      _________________________________________________________________
    
-   Pokud máte pøíklad úspì¹ného nasazení PostgreSQL, pøihla¹tì se na ná¹
-   advocacy site na http://advocacy.postgresql.org.
-   
-                             User client dotazy
+                        Dotazy na klientská rozhraní
                                       
-    2.1) Kde naleznu ODBC ovladaèe pro PostgreSQL?
-    
-   Pro PostgreSQL existují dva ODBC ovladaèe - PsqlODBC a OpenLink ODBC.
-   
-   PsqlODBC je ke sta¾ení na
-   http://gborg.postgresql.org/project/psqlodbc/projdisplay.php.
-   
-   OpenLink mù¾ete získat na http://www.openlinksw.com. Spolupracuje s
-   jejich klientským programovým vybavením a je dostupný pro v¹echny jimi
-   podporované platformy (Win, Mac, Unix, VMS).
-   
-   Tento ovladaè je urèen pro ty, kteøí vy¾adují podporu komerèní
-   kvality, nicménì freeware verze je dostupná a funkèní. Dotazy
-   zasílejte na postgres95@openlink.co.uk.
-   
-    2.2) Jaké nástroje lze pou¾ít pro PostgreSQL a web?
-    
-   Pìkný úvod do databázových technologií zabezpeèujících chod webových
-   stránek najdete na http://www.webreview.com.
-   
-   Pro tvorbu webu existuje excelentní rozhraní PHP, které naleznete na
-   http://www.php.net.
+  2.1) Která rozhraní jsou pouzitelná pro PostgreSQL?
+  
+   PostgreSQL se distribuuje pouze s rozhraním pro jazyk C a embedded C.
+   Vsechna dalsí rozhraní predstavují nezávislé projekty, které je treba
+   stáhnout z internetu samostatne. Osamostatnení techto projektu
+   umoznuje nezávislost vývojových týmu a moznost vydávat nové verze bez
+   ohledu na vydání nové verze PostgreSQL.
+   
+   Nekteré programovací jazyky jako je napr. PHP obsahují rozhraní pro
+   PostgreSQL. Rozhraní pro jazyky jako je Perl, Tcl, Python a mnoho
+   dalsích jsou dostupné na adrese: http://gborg.postgresql.org v sekci
+   Drivers/Interfaces.
    
-   Pro slo¾itìj¹í pøípady se èasto pou¾ívá Perl a CGI.pm nebo mod_perl.
+  2.2) Jaké nástroje lze pouzít pro PostgreSQL a web?
+  
+   Dobrým úvodem do problematiky databází v prostredí webových stránek
+   muze být web http://www.webreview.com.
    
-    2.3) Existuje grafické rozhraní pro PostgreSQL?
-    
-   Pro PostgreSQL existuje nìkolik grafických rozhraní: PgAccess
-   (http://www.php.net), PgAdmin III (http://www.php.net), RHDB Admin
-   (http://sources.redhat.com/rhdb/) a Rekall (
-   http://www.thekompany.com/products/rekall/). Dále je¹tì PhpPgAdmin
-   (http://phppgadmin.sourceforge.net/) co¾ je rozhraní PostgreSQL
-   zalo¾ené na web technologii.
+   PHP (http://www.php.net) je vynikajícím rozhraním pro tvorbu webu.
    
-   Úplnìj¹í seznam najdete na
-   http://techdocs.postgresql.org/guides/GUITools.
+   Pro slozitejsí úlohy se casto pouzívá Perl a jeho BDB:Pg rozhraní s
+   podporou CGI - CGI.pm nebo mod_perl(u).
    
-    2.4) Které programovací jazyky mají podporu pro PostgreSQL?
-    
-   Vìt¹ina programovacích jazykù obsahuje rozhraní pro PostgreSQL.
-   Podívejte se do roz¹iøujících modulù Va¹eho programovacího jazyka.
-   
-   Distribuce PostgreSQL obsahuje tato rozhraní:
-     * C (libpq)
-     * Embbedded C (ecpg)
-     * Java (jdbc)
-     * Python (PyGreSQL)
-     * TCL (libpgtcl)
-       
-   Dal¹í rozhraní jsou dostupná na http://gborg.postgresql.org v sekci
-   Drivers/Interfaces.
+  2.3) Existuje grafické rozhraní pro PostgreSQL?
+  
+   K dispozici je rada grafických nástroju podporujících PostgreSQL a to
+   od komercních nebo open source vývojáru. Podrobný seznam naleznete na
+   adrese http://www.postgresql.org/docs/techdocs.54.
      _________________________________________________________________
    
                            Administrativní dotazy
                                       
-    3.1) Jak nainstalovat PostgreSQL jinam ne¾ do /usr/local/pgsql?
-    
-   Pou¾ijte volbu --prefix pøi spu¹tìní configure.
-   
-    3.2) Pøi startu postmaster, dostanu chybové hlá¹ení Bad System Call nebo
-    core dump. Proè?
-    
-   Dùvody mohou být rùzné, ale nejprve zkontrolujte, zda Vá¹ systém
-   podporuje System V extensions. PostgreSQL vy¾aduje v jádøe podporu
-   sdílené pamìti a semaforù.
-   
-    3.3) Pøi startu postmastera dostanu hlá¹ení o chybì IpcMemoryCreate. Proè?
-    
-   Buïto nemáte správnì nakonfigurovanou sdílenou pamì» v jádøe nebo
-   musite zvìt¹it její velikost. Potøebná velikost je závislá na
-   architektuøe a na tom, kolik pamì»ových bufferù a backendù máte
-   povoleno pro postmastera. Pro vìt¹inu systémù s pøeddefinovaným poètem
-   backendù a pamì»ových bufferù je minimum zhruba 1MB. V PostgreSQL
-   Administrator's Guide naleznete podrobnìj¹í informace o sdílené pamìti
-   a semaforech.
-   
-    3.4) Pøi startu postmastera dostanu hlá¹ení o chybì IpcSemaphoreCreate.
-    Proè?
-    
-   Pokud dostane chybovou zprávu IpcSemaphoreCreate: semget failed (No
-   space left on device), pak va¹e jádro nemá dost volných semaforù.
-   PostgreSQL vy¾aduje jeden semafor pro ka¾dý backend v pozadí. Doèasným
-   øe¹ením je start postmaster s limitem backendù. Pou¾ijte pøepínaè -N s
-   hodnotou men¹í ne¾ 32. Úplným øe¹ením je zvý¹ení hodnot SEMMNS a
-   SEMMNI jadra.
-   
-   Nefunkèní semafory mohou zpùsobit pád bìhem intenzivních databázových
-   operací.
-   
-   Pokud se tato chyba vyskytuje je¹tì nìkde jinde, mo¾ná nemáte vùbec
-   nakonfigurovány semafory ve va¹em jádøe. V PostgreSQL Administrator's
-   Guide najdete podrobnìj¹í popis po¾adavkù na sdílenou pamìt a
-   semafory.
-   
-    3.5) Jak povolit nebo zakázat pøístup z jiných stanic?
-    
-   Pøi výchozím nastavení PostgreSQL odepøe pøístup z jiných stanic ne¾
-   lokální s pou¾itím UDP. Pøístup z jiných strojù není mo¾ný dokud jej
-   nepovolíte nastavením tcpip_socket v postgresql.conf a urèením zpùsobu
-   autentifikace v $PGDATA/pg_hba.conf.
-   
-    3.6) Jak ladit databázový stroj na lep¹í výkon?
-    
-   Urèitì pomohou indexy. Pøíkaz EXPLAIN ANALYZE Vám umo¾ní sledovat jak
-   PostgreSQL interpretuje Vá¹ dotaz a které indexy pou¾ívá.
-   
-   Pøi vìt¹í dávce INSERTù uva¾ujte o náhradì pøíkazem COPY. Ten je
-   mnohem rychlej¹í ne¾li samotný INSERT. Ka¾dý pøíkaz mimo blok BEGIN
-   WORK/COMMIT se provádí ve vlastní transakci. Zva¾te, zda-li by se
-   nedalo nìkolik pøíkazù spojit do jedné transakce. Tím se sní¾í re¾ie
-   na transakce. Pøed provedením rozsáhlých zmìn zru¹te indexy, které po
-   dokonèení zmìn opìt vytvoøte.
-   
-   Máte nìkolik dal¹ích mo¾ností, jak zlep¹it výkon. Mù¾ete zakázat
-   fsyn() pøi startu postmastera pøepínaèi -o -F. Tyto pøepínaèe zabrání
-   fsync(), tj. zápisu na disk po ka¾dé transakci.
-   
-   Mù¾ete zvý¹it velikost pamì»ových bufferù pou¾itých backendy tj.
-   parametr -B postmasteru. Pokud ale tato hodnota bude pøíli¹ velká, tak
-   mo¾ná nespustíte postmastera jeliko¾ dosáhnete limitu sdílené pamìti.
-   Ka¾dý buffer má 8K a implicitnì je 64 bufferù.
-   
-   Dále mù¾ete pou¾ít pøepínaè -S k zvý¹ení limitu pamìti pro backendy na
-   doèasné tøídìní. Hodnota je mínìna v kilobytech a výchozí nastavení je
-   512, tj. 512K.
-   
-   Mù¾ete pou¾ít pøíkaz CLUSTER, který uspoøádá fyzicky data v tabulkách
-   podle indexu. Více na manuálových stránkách pøíkazu CLUSTER.
-   
-    3.7) Jaké jsou mo¾nosti ladìní?
-    
-   Máte nìkolik mo¾ností jak se dostat k u¾iteèným stavovým informacím.
-   
-   Zaprvé, pøi pøekladu pou¾ijte pøepínaè --enable-cassert, tím se zapne
-   monitorování a následné zastavení aplikace, kdy¾ se proces v backendu
-   dostane do neoèekávaného stavu.
-   
-   Jak postmaster tak postgres má nìkolik pøepínaèù umo¾òujících ladìní.
-   Postmaster nastartujte tak, abyste si byli jisti, ¾e je standartní
-   výstup a standartní chybový výstup pøesmìrován do souboru logu,
-   napøíklad:
-    cd /usr/local/pgsql
-    ./bin/postmaster > server.log 2>&1 &
-
-   Tím se vytvoøí log v adresáøi PostgreSQL, Tento soubor obsahuje
-   u¾iteèné informace o problémech a chybách vyskytlých se na serveru.
-   Postmaster má pøepínaè -d urèující, jak podrobné mají být reportované
-   informace, tj. debug level. Pozor, pøi velké hodnotì debug levelu
-   rychle roste velikost souboru logu.
-   
-   Pokud nebì¾í postmaster, mù¾ete spustit backend PostgreSQL z pøíkazové
-   øádky a napsat svùj SQL dotaz pøímo v backendu (doporuèeno pouze pro
-   ladìní). Dotaz je v tomto pøípadì ukonèen novou øádkou, nikoliv
-   støedníkem. Pokud máte aplikaci pøelo¾enou s ladícími symboly, mù¾ete
-   pou¾ít debbuger k monitorování procesu. Pokud není backend spu¹tìn
-   postmasterem, pak nebì¾í ve svém obvyklém prostøedí a tudí¾ nìkteré
-   problémy dané interakcí mezi backendy nemohou být nasimulovány.
-   
-   Pokud bì¾í postmaster, spus»e psql v jednom oknì a pak si zjistìte PID
-   procesu postgres pou¾itého psql. V debuggeru sepøipojte k postgresql
-   PID. Pak nastavte breakpointy v debuggeru a zadejte dotaz v psql.
-   Pokud ladíte startup postgresu, pak nastavte PGOPTIONS="-W n" a spus»e
-   psql. Tento pøepínaè zpùsobí pauzu n sekund, tak¾e budete mít èas se
-   pøipojit k procesu, a nastavit breakpointy a pokraèovat v startup
-   posloupnosti.
-   
-   Pro ladìní a mìøení výkonu mohou být u¾iteèné pøepínaèe -s, -A a -t
-   programu postgres (backend).
-   
-   Mù¾ete provést pøeklad s profilací, tak abyste vidìli kolik èasu
-   zabírají jednotlivé funkce. Soubory s profily backendù jsou ulo¾eny v
-   adresáøi pgsql/data/base/dbname. Profil klienta pak v jeho aktuálním
-   adresáøi. Korektní profilace v prostøedí Linux po¾aduje konfiguraci
-   systému s parametrem -DLINUX_PROFILE.
-   
-    3.8) Proè dostanu "Sorry, too many clients", kdy¾ se zkou¹ím pøipojit?
-    
-   Zvy¹te limit postmastera na maximální poèet souèasnì spu¹tìných
-   backendù.
-   
-   Výchozí hodnota je 32 backendù. Tuto hodnotu zvý¹íte zastavením a
-   opìtovným spu¹tìním postmastera s parametrem -N nebo úpravou
-   postgresql.conf.
-   
-   Pøi zvý¹ení hodnoty -N nad 32 musíte zvý¹it hodnotu -B nad výchozí 64,
-   -B musí být minimálnì dvakrát vìt¹í, nebo je¹tì lépe více.
-   Pravdìpodobnì zjistíte, ¾e pro velký poèet procesù backendu je nutné
-   zvý¹it nìkteré parametry jádra. Jsou to pøedev¹ím maximální velikost
-   sdílené pamìti SHMMAX, maximální poèet semafórù SEMMNS a SEMMNI,
-   maximální poèet procesù NPROC, maximální poèet procesù u¾ivatele
-   MAXUPRC a maximální poèet otevøených souborù NFILE a NINODE. Dùvod pro
-   omezení maximálního poètu backendù je fakt, ¾e by mohlo dojít k
-   vyèerpání zdrojù Va¹eho systému.
-   
-    3.9) K èemu slou¾í adresáø pgsql_tmp?
-    
-   Tento adresáø obsahuje doèasné soubory vytvoøené exekutorem dotazù.
-   Napøíklad, kdy¾ je nutné tøídìní k zaji¹tìní ORDER BY a tøídìní má
-   vìt¹í nároky na prostor ne¾ povoluje parametr -S backendu, pak je
-   vytvoøen doèasný soubor k ulo¾ení extra údajù.
-   
-   Doèasné soubory jsou obvykle mazány automaticky, ale mù¾e se stát, ¾e
-   bìhem tøídìní server spadne. Zastavení a dal¹í start postmastera
-   zajistí odstranìní souborù s tìchto adresáøù.
-   
-    3.10) Proè je po¾adováno dump a obnovení (load) databáze bìhem upgrade mezi
-    velkými verzemi PostgreSQL?
-    
-   PostgreSQL se minimálnì mìní bìhem malých verzí, tak¾e napø. pøi
-   upgrade z 7.2 na 7.2.1 není nutné dump a load databáze. Ale výynamné
-   verze èasto mìní interní formát systémových tabulek a datových
-   souborù. Tyto zmìny jsou natolik rozsáhlé, ¾e nelze zajistit zpìtnou
-   kompatibilitu pro datové soubory. Dump ulo¾í data v obecném formátu,
-   tak¾e mohou být naètena a pou¾ívána v novém interním formátu.
+  3.1) Jak nainstalovat PostgreSQL jinam nez do /usr/local/pgsql?
+  
+   Pri spoustení configure nastavte parametr --prefix
+   
+  3.2) Jak nastavit pravidla pro prístup z jiných stanic?
+  
+   Ve výchozí konfiguraci, PostgreSQL umoznuje pouze pripojení z
+   lokálního uzivatele prostrednictvím Unix domain sockets nebo TCP/IP
+   spojení. Bez modifikace listen_addresses v souboru postgresql.conf, a
+   povolení adresy v souboru $PGDATA/pg_hba.conf se nelze pripojit k
+   PostgreSQL z ostatních stanic. Zmena výse zmínených parametru vyzaduje
+   restart databázového serveru.
+   
+  3.3) Jak vyladit databázi na vyssí výkon?
+  
+   Výkon systému muzete ovlivnit ve trech oblastech:
+   
+    Zmeny dotazu
+    
+     * Pouzitím indexu vcetne cástecných a funkcionálních
+     * Pouzitím COPY místo opakovaných INSERTu
+     * Sloucením mnoha SQL príkazu do jedné transakce snízením rezie na
+       commit
+     * Pouzíváním CLUSTERU, pokud nacítáte vetsí pocet rádek podle indexu
+     * Pouzitím klauzule LIMIT v poddotazech
+     * Pouzitím predpripravených dotazu
+     * Pouzíváním ANALYZE. Tento príkaz aktualizuje statistiky, které se
+       pouzívají pri optimalizaci dotazu
+     * Pravidelné pouzití VACUUM nebo pouzívání pg_autovacuum
+     * Odstranením indexu pred rozsáhlými zmenami v datech
+       
+    Konfigurace serveru
+    
+   Urcité parametry v souboru postgresql.conf mají vliv na výkon serveru.
+   Detaily naleznete v prírucce Administrátora v Server Run-time
+   Environment/Run-time Configuration. Dalsí komentáre naleznete v
+   http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.ht
+   ml a http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html.
+   
+    Výber hardware
+    
+   Vliv hardware na výkon serveru je popsán v dokumentech
+   http://candle.pha.pa.us/main/writings/pgsql/hw_performance/index.html
+   a http://www.powerpostgresql.com/PerfList/.
+   
+  3.4) Jaké mám ladící prostredky?
+  
+   Nastavením log_* promenných v konfiguraci serveru si vynutíte logování
+   dotazu a procesních statistik, které Vám mohou pomoci pri ladení a
+   optimalizaci výkonu.
+   
+  3.5) Co znamená "Sorry, too many clients", kdyz se zkousím pripojit?
+  
+   Prekrocil jste výchozí limit, který je 100 soucasne pripojených
+   uzivatelu. V konfiguraci serveru v postgresql.conf tuto hodnotu muzete
+   zvetsit zmenou hodnoty max_connection. Nezapomente restartovat server.
+   
+  3.6) Proc je nutný dump a obnovení (load) databáze pri upgradu PostgreSQL?
+  
+   Zpusob císlování je popsán v dokumentaci na
+   http://www.postgresql.org/support/versioning. Instrukce k provedení
+   migrace na vyssí verzi jsou taktéz v dokumentaci na adrese
+   http://www.postgresql.org/docs/current/static/install-upgrading.html.
+   
+  3.7) Jaký hardware bych mel pouzívat?
+  
+   Jelikoz PC jsou vetsinou kompatibilní, lidé mají tendence verit, ze
+   vsechna PC jsou stejne kvalitní. Coz není pravda. Pameti ECC, SCSI a
+   kvalitní základní desky jsou mnohem spolehlivejsí a výkonnejsí nez
+   lacinejsí hardware. PostgreSQL pobezí na vetsine hardwaru, nicméne
+   pokud je pro Vás spolehlivost a výkon systému dulezitá, je dobré
+   venovat cas nalezení vhodné hardwarové konfigurace. Na nasich
+   elektronických konferencích muzete diskutovat o vhodných konfiguracích
+   a znackách.
      _________________________________________________________________
    
                               Provozní dotazy
                                       
-    4.1) Èím se li¹í binární a normální kurzor?
-    
-   Popis najdete v manuálové stránce DECLARE
-   
-    4.2) Jak získat pouze první øádek dotazu? Náhodný øádek?
-    
-   Podívejte se do man. stránky pøíkazu FETCH, nebo pou¾ijte SELECT ...
-   LIMIT ...
-   
-   I kdy¾ potøebujete získat pouze prvních nìkolik øádkù, je tøeba
-   zpracovat v¹echna data, napø. pokud dotaz má ORDER BY. Pokud v¹ak
-   existuje index, který odpovídá ORDER BY, PostgreSQL mù¾e získat pouze
-   prvních n øádkù a ukonèit zpracování dotazu.
-   
-   K získání náhodného øádku pou¾ijte:
-    SELECT col
-    FROM tab
-    ORDER BY random()
-    LIMIT 1;
+  4.1) Jak získat pouze první rádek dotazu? Náhodný rádek?
+  
+   Pokud potrebujete pouze nekolik rádku a pokud víte kolik, pouzijte
+   SELECT LIMIT. Pokud bude mozné pouzít index shodující se s ORDER BY,
+   je mozné, ze se nebude provádet celý dotaz. Pokud neznáte pocet
+   záznamu, pouzijte kurzor a príkaz FETCH.
+   
+   Pro výber náhodného rádku pouzijte príkaz ve tvaru:
+SELECT col
+FROM tab
+ORDER BY random()
+LIMIT 1;
 
-    4.3) Jak získám seznam tabulek nebo jinak jak jej získá psql?
-    
-   Pøíkaz \dt v psql zobrazí seznam tabulek. Úplný seznam pøíkazù psql
-   dostanete pøíkazem \?. Také se mù¾ete podívat do zdrojových kódù psql
-   do souboru pgsql/src/bin/psql/describe.c. Ten obsahuje SQL pøíkazy,
-   které se pou¾ívají v psql metapøíkazech. Dále mù¾ete spustit psql s
-   pøepínaèem -E, který zpùsobí zobrazení ka¾dého dotazu, které
-   zpracování metapøíkazu vyvolá. PostgreSQL nabízí SQLi INFORMATION
-   SCHEMA s tabulkami obsahující informace o databázi.
-   
-    4.4) Jak odstraním sloupec tabulky, jak zmìním jeho typ?
-    
-   Poèínaje verzí 7.3 mù¾ete pou¾ít pøíkaz ALTER TABLE DROP COLUMN. Ve
-   star¹ích verzích mù¾ete pou¾ít následující postup:
-    BEGIN;
-    LOCK TABLE old_table;
-    SELECT ... -- mimo sloupec, který chceme odstranit
-    INTO TABLE new_table;
-    DROP TABLE old_table;
-    ALTER TABLE new_table RENAME TO old_table;
-    COMMIT;
+  4.2) Jak získám seznam tabulek, indexu, databází, a definovaných uzivatelu.
+  Mohu videt dotazy, které pouzívá psql pro zobrazení techto informací?
+  
+   V psql príkazem \dt získáte seznam tabulek. Úplný seznam príkazu psql
+   získáte príkazem \?. Alternativne si muzete prostudovat zdrojový kód
+   psql - soubor pgsql/src/bin/psql/describe.c, který obsahuje SQL
+   príkazy, které jsou generovány pro získání výstupu psql "backslash"
+   príkazu. Také muzete nastartovat psql s parametrem -E, který zpusobí
+   zobrazení vsech SQL príkazu, které se odesílají na server. PostgreSQL
+   také podporuje SQL standard INFORMACNÍ SCHÉMATA (standardní systémové
+   tabulky). Klasickým dotazem do systémových tabulek získáte pozadované
+   informace o strukture databáze.
+   
+   Systémové tabulky PostgreSQL (mimo rámec SQL standardu) pouzívají
+   prefix pg_. Pro zjistení struktury databáze je muzete pouzít také, i
+   kdyz preferovány jsou dotazy do informacního schématu.
+   
+   Seznam vsech databází získáte príkazem psql -l
+   
+   Dalsí inspiraci najdete v souboru pgsql/src/tutorial/syscat.source.
+   Obsahuje ilustracní SELECTy potrebné k získání informací z systémových
+   tabulek databáze.
+   
+  4.3) Jak zmenit datový typ sloupce?
+  
+   Ve verzích 8.0 a pozdejsích jednoduse:
+ALTER TABLE ALTER COLUMN TYPE
 
-   Pro zmìnu typu sloupce je tøeba provést:
-    BEGIN;
-    ALTER TABLE tab ADD COLUMN new_col new_data_type;
-    UPDATE tab SET new_col = CAST(old_col AS new_data_type;
-    ALTER TABLE tab DROP COLUMN old_col;
-    COMMIT;
+   V starsích verzích:
+BEGIN;
+ALTER TABLE tab ADD COLUMN new_col new_data_type;
+UPDATE tab SET new_col = CAST(old_col AS new_data_type);
+ALTER TABLE tab DROP COLUMN old_col;
+COMMIT;
 
-   Poté proveïte VACUUM FULL tab - uvolníte tím diskový prostor zabraný
-   nyní ji¾ neplatnými øádky.
+   Po zmene spustte príkaz VACUUM FULL, aby doslo k uvolnení diskového
+   prostoru pouzitého v tu chvíli jiz neplatnými záznamy.
    
-    4.5) Jaká je maximální velikost øádku, tabulky a databáze?
-    
+  4.4) Jaká je maximální velikost rádku, tabulky a databáze?
+  
    PostgreSQL má tato omezení:
-    Maximální velikost databáze:           neomezena (existují 32TB db)
-    Maximálné velikost tabulky:            32 TB
-    Maximální velikost øádky:              1.6 TB
-    Maximální velikost polo¾ky             1 GB
-    Maximální poèet øádkù v tabulce:       neomezeno
-    Maximální poèet sloupcù v tabulce:     250-1600 podle typù
-    Maximální poèet indexù na tabulce:     neomezeno
-
-   Ve skuteènosti nic není neomezeno, limitem bývá v¾dy dostupná disková
-   pamì» nebo velikost operaèní pamìti. Pokud máte nìkterou z tìchto
-   hodnot neobvykle velkou, mù¾e dojít ke sní¾ení výkonu.
-   
-   Maximální velikost tabulky je 32 TB a nevy¾aduje podporu velkých
-   souborù operaèním systémem. Velké tabulky se ukládají do nìkolika 1 GB
-   souborù tak¾e limity souborového systému nejsou podstatné.
-   
-   Maximální velikost tabulky a maximální poèet sloupcù mù¾eme
-   zeètyønásobit nastavením velikosti bloku na 32K.
-   
-    4.6) Kolik diskového prostoru je potøeba k ulo¾ení dat z
-    
-   normálního textového souboru?
    
-   PostgreSQL vy¾aduje a¾ pìtinásobek diskového prostoru k ulo¾ení dat z
+   Maximální velikost databáze:       neomezena (existují 32TB db)
+   Maximální velikost tabulky:        32 TB
+   Maximální velikost rádky:          480GB
+   Maximální velikost polozky         1 GB
+   Maximální pocet rádku v tabulce:   neomezeno
+   Maximální pocet sloupcu v tabulce: 250-1600 podle typu
+   Maximální pocet indexu na tabulce: neomezeno
+   
+   Ve skutecnosti nic není neomezeno, limitem bývá vzdy dostupná disková
+   pamet nebo velikost operacní pameti. Pokud máte nekterou z techto
+   hodnot neobvykle velkou, muze dojít ke snízení výkonu.
+   
+   Maximální velikost tabulky je 32 TB a nevyzaduje podporu velkých
+   souboru operacním systémem. Velké tabulky se ukládají do nekolika 1 GB
+   souboru takze limity souborového systému nejsou podstatné.
+   
+   Maximální velikost tabulky a maximální pocet sloupcu muzeme
+   zectyrnásobit nastavením velikosti bloku na 32K.
+   
+   Indexy jsou povolené pouze na sloupcích jejichz délka je mensí nez
+   2000 znaku. Pokud tuto délku prekrocíme a index potrebujeme pro
+   zajistení jednoznacnosti, je vhodnejsí pouzít funkcionální index nad
+   MD5 funkcí nebo fulltextový index.
+   
+  4.5) Kolik diskového prostoru je potreba k ulození dat z normálního textového
+  souboru?
+  
+   PostgreSQL vyzaduje az petinásobek diskového prostoru k ulození dat z
    textového souboru.
    
-   Napøíklad, uva¾ujme soubor se 100 tisíci øádky obsahující na ka¾
-   øádce celé èíslo a textový popis. Text je v prùmìru dvacet bytù
+   Napríklad, uvazujme soubor se 100 tisíci rádky obsahující na kaz
+   rádce celé císlo a textový popis. Text je v prumerne dvacet bytu
    dlouhý. Textový soubor bude 2.8 MB dlouhý. Velikost databáze
-   obsahující odpovídající data bude zhruba 6.4 MB.
-    36 bytù: hlavièka øádku (pøibli¾nì)
-    24 bytù: jedna celoèíselná polo¾ka a jedna textová
-   + 4 byty: ukazatel na stránku k ntici
+   obsahující odpovídající data bude zhruba 5.2 MB.
+    24 bytu: hlavicka rádku (priblizne)
+    24 bytu: jedna celocíselná polozka a jedna textová
+   + 4 byty: ukazatel na stránku k entici
    ------------------------------------------------------
-    64 bytù na øádek
-
-   Velikost datové stránky PostgreSQL je 8KB
+    52 bytu na rádek
 
-    8192 bytù na stránce
-    ---------------------- = 128 øádek na stránku
-      64 bytù za øádek
+   Velikost datové stránky PostgreSQL je 8192 bytu (8KB)
+ 8192 bytu na stránce
+---------------------- = 158 rádek na stránku
+  52 bytu za rádek
 
-    100000 øádek
-    -------------------- = 782 stránek (zaokrouhleno nahoru)
-       128 øádek na stránce
+100000 rádek
+----------------------- = 633 stránek (zaokrouhleno nahoru)
+   158 rádek na stránce
 
-    782 * 8192 = 6, 406, 144 bytù (6.4 MB)
+633 datových stránek * 8192 bytu na kazdou stránku = 5,185,536 bytu (5.2 MB)
 
-   Indexy nemají tak velkou re¾ii, ale mohou být také velké, proto¾e
+   Indexy nemají tak velkou rezii, ale mohou být také velké, protoze
    obsahují indexovaná data.
    
-   Hodnoty NULL jsou ulo¾eny v bitmapách, tak¾e spotøebují jen velmi málo
+   Hodnoty NULL jsou ulozeny v bitmapách, takze zabírají jen velmi málo
    diskového prostoru.
    
-    4.7) Jak získám seznam vytvoøených tabulek, indexù, databází?
-    
-   psql má sadu metapøíkazù k zobrazení tìchto informací. Jejich seznam
-   získáte pøíkazem \?. Dále se mù¾ete podívat na obsah systémových
-   tabulek zaèínajících pg_. Spu¹tìní psql s parametrem -l provede výpis
-   názvù v¹ech databází.
-   
-   Soubor pgsql/src/tutorial/syscat.source obsahuje SELECTy pøistupující
-   k systémovým tabulkámm.
-   
-    4.8) Mùj dotaz je pomalý a nepou¾ívá vytvoøené indexy. Proè?
-    
-   Ka¾dý dotaz nemusí nutnì pou¾ít existující indexy. Index se pou¾ije
-   tehdy, kdy¾ je tabulka vìt¹í ne¾ urèitá minimální velikost, a dotaz
-   vybírá pouze procentuálnì malou èást øádkù tabulky. To proto, ¾e
-   náhodný pøístup k disku daný ètením indexu mù¾e být pomalej¹í ne¾
-   lineární ètení tabulky nebo sekvenèní ètení.
-   
-   PostgreSQL rozhoduje o pou¾ití indexù na základì statistiky pøístupù k
-   tabulce. Tyto statistiky se shroma¾ïují pøíkazy VACUUM ANALYZE nebo
-   ANALYZE. Díky statistikám má optimizer informaci o poètu øádek v
-   tabulce a mù¾e lépe rozhodnout o pou¾ití indexù. Statistiky se uplatní
-   pøi urèení optimálního poøadí a metody spojení tabulek. Statistiky by
-   se mìli aktualizovat opakovanì, tak jak se mìní obsah tabulek.
-   
-   Indexy nejsou obyèejnì pou¾ity pro setøídìní nebo spojení tabulek.
-   Sekvenèní zpracování následované explicitním tøídìním je obyèejnì
-   rychlej¹í ne¾ indexní ètení na velké tabulce.
-   
-   Jinak je tomu v pøípadì pou¾ití LIMIT a ORDER BY, pøi kterém se
-   vìt¹inou index pou¾ije, výsledkem je pouze malá èást tabulky. Funkce
-   MAX() a MIN() nepou¾ívají indexy, ale je mo¾né tuté¾ hodnotu získat:
-    SELECT col
-    FROM tab
-    ORDER BY col [ DESC ]
-    LIMIT 1;
-
-   Pokud si myslíte, ¾e optimizer mylnì zvolil sekvenèní prohledávání
-   tabulky, pou¾ijte pøíkaz SET enable_seqscan TO 'off' a zkuste zda je
-   indexní prohledávání rychlej¹í.
-   
-   Pøi vyhledávání na základì vzoru jako je napø. operátor LIKE nebo ~ se
-   indexy pou¾íjí pouze za urèitých skuteèností:
-     * zaèátek hledaného vzoru musí být ukotven k zaèátku, tj.
-          + vzor LIKE nesmí zaèínat %
-          + ~ regulární výraz musí zaèínat ^
-     * vzor nesmí zaèínat intervalem, napø. [a-e]
+  4.6) Muj dotaz je pomalý a nepouzívá vytvorené indexy. Proc?
+  
+   Kazdý dotaz nemusí nutne pouzít existující indexy. Index se pouzije
+   tehdy, kdyz je tabulka vetsí nez urcitá minimální velikost, a dotaz
+   vybírá pouze procentuálne malou cást rádku tabulky. To proto, ze
+   náhodný prístup k disku daný ctením indexu muze být pomalejsí nez
+   lineární ctení tabulky nebo sekvencní ctení.
+   
+   PostgreSQL rozhoduje o pouzití indexu na základe statistiky prístupu k
+   tabulce. Tyto statistiky se shromazdují príkazy VACUUM ANALYZE nebo
+   ANALYZE. Díky statistikám má optimizer informaci o poctu rádek v
+   tabulce a muze lépe rozhodnout o pouzití indexu. Statistiky se uplatní
+   pri urcení optimálního poradí a metody spojení tabulek. Statistiky by
+   se meli aktualizovat opakovane, tak jak se mení obsah tabulek.
+   
+   Indexy nejsou obycejne pouzity pro setrídení nebo spojení tabulek.
+   Sekvencní zpracování následované explicitním trídením je obycejne
+   rychlejsí nez pouzití indexu na velké tabulce.
+   
+   Jinak je tomu v prípade pouzití LIMIT a ORDER BY, pri kterém se
+   vetsinou index pouzije, jelikoz je výsledkem pouze malá cást tabulky.
+   
+   Pokud si myslíte, ze optimizer mylne zvolil sekvencní prohledávání
+   tabulky, pouzijte príkaz SET enable_seqscan TO 'off' a zkuste zda je
+   prohledávání s indexem rychlejsí.
+   
+   Pri vyhledávání na základe vzoru jako je napr. operátor LIKE nebo ~ se
+   indexy pouzijí pouze za urcitých skutecností:
+     * zacátek hledaného vzoru musí být ukotven k zacátku, tj.
+          + vzor LIKE nesmí zacínat %
+          + ~ regulární výraz musí zacínat ^
+     * vzor nesmí zacínat intervalem, napr. [a-e]
      * vyhledávaní, které není Case sensitiv jako je ILIKE nebo ~*
-       nepou¾ívá indexy. Mù¾ete ale pou¾ít funkcionální indexy, které
-       jsou posány v sekci 4.12
-     * pøi inicializaci databáze (initdb) musí být pou¾ito C locale
-       (pozn. pøekladatele - tudí¾ v na¹ich podmínkách nepou¾itelné,
-       nepracovalo by èeské tøídìní).
+       nepouzívá indexy. Muzete ale pouzít funkcionální indexy, které
+       jsou popsány v sekci 4.8
+     * pri inicializaci databáze (initdb) musí být pouzito C locale nebo
+       vytvorte speciální text_pattern_index, který umozní, pri
+       respektování zmínených podmínek pouzití indexu operací LIKE. Pro
+       vyhledávání celých slov je mozné a výhodné pouzít fulltext.
        
-    4.9) Jak zjistím, jak optimizer dotazu vyhodnocuje mùj dotaz?
-    
-   Podívejte se do manuálové stránky pøíkazu EXPLAIN.
-   
-    4.10) Co to je R-tree index?
-    
-   R-tree index se pou¾ívá pro indexování prostorových dat. Hash index
-   nemù¾e obslou¾it prohledávání oblastí. B-tree index mù¾e øídit
-   vyhledání oblastí v jedné dimenzi. R-tree index mù¾e podporovat
-   hledání v multidimenzionálních datech. Pou¾ijeme-li napøíklad R-tree
-   index na atributy typu point, pak systém mù¾e efektivnì odpovìdìt na
-   dotaz - vyber v¹echny body uvnitø obdélníkù.
-   
-   Pùvodní návrh R-tree je 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
-   
-   Tyto materiály naleznete v Stonebraker's "Readings in Database
-   Systems".
-   
-   Vestavìné R-tree mù¾e slou¾it k indexaci polygonù a oblastí.
-   Teoreticky mù¾eme R-tree pou¾ít i pro více dimenzí (jiné ne¾ 3D). Ve
-   skuteènosti ale takové roz¹íøení R-tree vy¾aduje trochu práce a ve
-   souèastnosti chybí dokumentace jak na to.
-   
-    4.11) Co je Genetic Query Optimizer?
-    
-   GEQO modul urychluje optimalizaci dotazù pøi spojování mno¾ství
-   tabulek metodou Genetických algoritmù (GA). To umo¾òuje získat velkého
-   mno¾ství variant spojení pøi neúplném prohledáváním.
-   
-    4.12) Jak provést vyhledávání regulárního výrazu case sensitiv, insensitiv?
-    Jak pou¾ít index pro case insensitive vyhledávání?
-    
-   Operátor ~ slou¾í k porování s regulárním výrazem, jeho modifikace *~
-   pøedstavuje case insensitive vyhledávání. Jedná se o obdobu LIKE a
-   ILIKE.
-   
-   Pro vyhledávání bez ohledu na velká malá písmena pou¾ijeme:
-    SELECT *
-    FROM tab
-    WHERE lower(col) = 'abc';
+  4.7) Jak zjistím, jak se vyhodnocuje muj dotaz?
+  
+   Podívejte se do nápovedy k príkazu EXPLAIN.
+   
+  4.8) Jak pouzít case-(in)sensitive regulární výraz? Jak pouzít index pro case
+  insensitive hledání?
+  
+   Vyhledávání prostrednictvím regulárních vzoru zajistuje operátor ~,
+   který je case-sensitive. Jeho case-insensitive varianta je operátor
+   ~*. Case-insensitive variací operátoru LIKE je operátor ILIKE.
+   
+   Case-insensitive vyhledání se resí:
+SELECT *
+FROM tab
+WHERE lower(col) = 'abc';
 
-   V tomto pøípadì se nepou¾ije standardní index. Nicménì, pou¾ije se
-   funkcionální index, pokud jej vytvoøíte:
-    CREATE INDEX tabindex ON tab (lower(col));
+   Tento dotaz nepouzije standardní index. Musíte pouzít tzv.
+   funkcionální index:
+CREATE INDEX tabindex ON tab (lower(col));
 
-    4.13) Jak v dotazu detekovat, ¾e polo¾ka je NULL?
-    
-   Urèíte pomocí IS NULL nebo IS NOT NULL
-   
-    4.14) Jaké jsou rozdíly mezi rùznými znakovými typy?
-    
-Typ         Interní název       Poznámka
---------------------------------------------------------------------------
-VARCHAR(n)  varchar             omezeno maximální délkou, bez doplnìní mezerami
-CHAR(n)     bpchar              øetìzec je doplnìn mezerami do dané délky
-TEXT        text                bez horního limitu na délku
-BYTEA       bytea               pole bytù (bezpeènì lze ulo¾it i znak NULL)
-"char"      char                jeden znak
+   Pokud index vytvoríme jako unikátní, tak muzeme ukládat retezce
+   obsahující malá i velká písmena, ale nikoliv retezce, které se od sebe
+   odlisují jen v malých a velkých písmenech. K zajistení zápisu retezce
+   obsahující pouze malá nebo pouze velká písmena pouzijte CHECK kontroly
+   nebo triggery.
+   
+  4.9) Jak v dotazu detekovat, ze polozka je NULL? Jak bezpecne spojit dva
+  retezce, pokud mohou obsahovat NULL? Lze trídit podle toho, jestli je polozka
+  NULL nebo ne?
+  
+   Pokud chcete testovat hodnotu NULL pouzijte operátor IS:
+   SELECT *
+   FROM tab
+   WHERE col IS NULL;
 
-   S interními názvy se setkáte v systémovém katalogu a v nìkterých
-   chybových hlá¹eních.
-   
-   První ètyøi uvedené typy jsou tzv. varlena typy (tj. první ètyøi byty
-   na disku nesou údaj o délce, následují samotná data). Proto skuteèný
-   pou¾itý prostor je v¾dy o nìco málo vìt¹í ne¾ deklarovaná délka.
-   Naopak, tyto datové typy jsou komprimovánty TOASTem, tak¾e prostor na
-   disku mù¾e být ni¾¹í ne¾ je oèekáváno.
-   
-   VARCHAR(n) je vhodný pro ukládání textù prommìné délky s pevnì
-   stanovenou maximální délkou. TEXT je pro øetìzce bez omezení délky s
-   maximem jeden gigabajt.
-   
-   CHAR(n) slou¾í k ukládání øetìzcù stejné délky. CHAR(n) doplní prázdné
-   znaky do specifikované délky, zatímco VARCHAR(n) ulo¾í pouze pøedané
-   znaky. BYTEA je urèeno pro ukládání binárních dat, vèetnì NULL byte.
-   V¹echny zde popsané typy mají podobné výkonnostní charakteristiky.
-   
-    4.15.1) Jak vytvoøit serial/auto-increment pole?
-    
-   PostgreSQL podporuje typ SERIAL. Pøi jeho pou¾ití se automaticky
-   vytvoøí SEQUENCE. Napøíklad:
-    CREATE TABLE person (
-        id   SERIAL,
-        name TEXT
-    );
+   K spojení retezcu, které mohou obsahovat hodnotu NULL, pouzívejte
+   funkci COALESCE(), napr.:
+   SELECT COALESCE(col1, '') || COALESCE(col2, '')
+   FROM tab
 
-   je automaticky pøevedeno do
-    CREATE SEQUENCE person_id_seq;
-    CREATE TABLE person (
-        id   INT4 NOT NULL DEFAULT nextval('person_id_seq'),
-        name TEXT
-    );
-    CREATE UNIQUE INDEX person_id_key ON person(id);
+   Pokud chcete trídit podle hodnoty NULL, pouzijte výraz IS NULL nebo IS
+   NOT NULL v klauzuli ORDER. Hodnota pravda má prednost pred hodnotou
+   false a tedy pokud pouzijete:
+   SELECT *
+   FROM tab
+   ORDER BY (col IS NOT NULL)
 
-   Viz dokumentace create_sequence v manuálových stránkách. Dále mù¾ete
-   pou¾ít unikátní hodnotu OID ka¾dého øádku. Potom ale musíte spou¹tìt
-   pg_dump s pøepínaèem -o, tak aby zùstaly zachovány hodnoty OID (u
-   pøíkazu copy COPY WITH OIDS).
-   
-    4.15.2) Jak získat hodnotu SERIAL po vlo¾ení øádku?
-    
-   Jednou z mo¾ností je získat budoucí hodnotu SERIAL funkcí nextval()
-   pøed samotným vlo¾ením a pak ji vlo¾it explicitnì. Napøíklad v jakémsi
-   pseudojazyku:
-    newid = execute("SELECT nextval('person_id_seq')");
-    execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
+   tak záznamy s NULL budou na zacátku setrídených dat.
+   
+  4.10) Jaké jsou rozdíly mezi ruznými znakovými typy?
+  
+   Typ        Interní název Poznámky
+   VARCHAR(n) varchar       n urcuje maximální délku
+   CHAR(n)    bpchar        retezec je do dané délky rozsíren mezerami
+   TEXT       text          bez omezení délky
+   BYTEA      bytea         pole bytu nespecifikované délky
+   "char"     char          jeden znak
+   
+   Na interní názvy muzete narazit v systémovém katalogu nebo v nekterých
+   chybových hláseních.
+   
+   Ctyri první typy jsou tzv. varlena typy (první ctyri byty na disku
+   jsou obsahují délku, ostatní obsahují vlastní data). Skutecne obsazený
+   prostor je tedy o neco málo vetsí nez deklarovaná velikost. Na druhou
+   stranu, delsí retezce jsou komprimovány, takze obsazený prostor na
+   disku muze být mensí nez se ceká.
+   
+   VARCHAR(n) je vhodný pro ukládání ruzne dlouhých retezcu u kterých
+   známe délkové omezení, TEXT pro retezce bez omezení délky (maximum je
+   jeden gigabyte).
+   
+   CHAR(n) se pouzívá pro ulození stejne dlouhých retezcu. CHAR(n) doplní
+   mezerami na specifikovanou délku, VARCHAR(n) hodnoty se ukládají tak
+   jak jsou. BYTEA je pro ukládání binárních dat - non ASCII hodnot.
+   Vsechny zmínené typy mají podobné výkonové charakteristiky.
+   
+  4.11.1) Jak vytvorit serial/auto-increment polozku?
+  
+   V PostgreSQL muzete pouzít datový typ SERIAL. Jeho pouzitím se
+   automaticky vytvorí sekvence. Napríklad:
+CREATE TABLE person (
+  id   SERIAL,
+  name TEXT
+);
 
-   Mù¾ete pak je¹tì pou¾ít hodnotu newid v dal¹ích dotazech, napø. jako
-   hodnotu cizího klíèe. Název automaticky vytvoøené sekvence je
-   tabulka_sloupec_seq.
-   
-   Alternativnì mù¾ete získat hodnotu poslednì generovou sekvencí funkcí
-   currval() po vlo¾ení:
-    execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
-    new_id = execute("SELECT currval('person_id_seq')");
+   je automaticky transformováno na:
+CREATE SEQUENCE person_id_seq;
+CREATE TABLE person (
+  id   INT4 NOT NULL DEFAULT nextval('person_id_seq'),
+  name TEXT
+);
 
-   Koneènì mù¾ete pou¾ít OID hodnotu vrácenou pøíkazem INSERT, ale to je
-   pravdìpodobnì nejménì pøenositelné øe¹ení. V Perlu pøi pou¾ití DBI
-   modulu Edmunda Mergleho DBD:Pg oid hodnotu získáme
-   $sth->{pg_oid_status} po ka¾dém $sth->execute().
-   
-    4.15.3) Nepovede currval() a nextval() k rozhození podmínek pøi soubìhu s
-    jinými u¾ivateli?
-    
-   Nikoliv, currval() vrací hodnotu naposledy generovanou ve va¹em
-   backendu, a ta tudí¾ není spoleèná v¹em u¾ivatelùm.
-   
-    4.15.4) Proè není vygenerované èíslo pou¾ito pøi pøeru¹ení transakce? Proè
-    vznikají díry v èíslování vlastní sekvencí/SERIAL sloupce?
-    
-   K zaji¹tìní efektivnosti soubìhu, jsou hodnoty posloupnosti, kdy¾ se o
-   nì po¾ádá, a sekvence není zamèena do ukonèení transakce. To zpùsobuje
-   díry v èíslování ze zru¹ených transakcí.
-   
-    4.16) Co to je OID? Co je to TID?
-    
-   Ka¾dý øádek vytvoøený v PostgreSQL získá jedineèné OID. V¹echna OID
-   generovaná bìhem inicializace databáze jsou men¹í ne¾ 16384
-   (include/access/transam.h). V¹echna OID generovaná na po¾adavek
-   u¾ivatele jsou rovna nebo vy¹¹í této hodnotì. Normálnì, v¹echna OID
-   jsou jedineèná nejen uvnitø tabulky nebo databáze, ale v rámci celé
-   instalace PostgreSQL
-   
-   PostgreSQL pou¾ívá OID ve svém interním systému tabulek k vytvoøení
-   relací. Tato OID mohou být pou¾ita k identifikaci konkrétního
-   u¾ivatele a pou¾ita v spojení. Pro OID hodnoty je doporuèen typ OID.
-   Nad tímto sloupcem mù¾ete vytvoøit index pro urychlení pøístupu.
-   
-   OID jsou dána v¹em øádkùm z centrální oblasti a jsou pou¾ita v ka¾dé
-   databázi. Pokud potøebujete zmìnit OID, nebo chcete zkopírovat tabulku
-   s pùvodními OID, lze pou¾ít:
-        CREATE TABLE new_table(old_oid oid, mycol int);
-        SELECT old_oid, mycol INTO new FROM old;
-        COPY new TO '/tmp/pgtable';
-        DELETE FROM new;
-        COPY new WITH OIDS FROM '/tmp/pgtable';
+   Podrobnejsí informace najdete v manuálu v popisu príkazu
+   create_sequence.
+   
+  4.11.2) Jak získat hodnotu SERIAL po vlození rádku?
+  
+   Nejjednodussím zpusob, jak získat vygenerovanou hodnotu typu SERIAL,
+   je vyuzít klauzuli RETURNING. Pro tabulku z 4.11.1 vypadá takto:
+INSERT INTO person (name) VALUES ('Blaise Pascal') RETURNING id;
 
-   OID jsou ulo¾ena jako 4bajtový integer a pøeteèou po ètyøech
-   miliardách. Nebylo hlá¹eno, ¾e by se tak nìkdy stalo, pøesto ale
-   plánujeme odstranit tento limit døív ne¾ se tak stane.
-   
-   TID se pou¾ívají i identifikaci fyzických øádkù s hodnotou bloku a
-   offsetu. TIDs se mìní modifikací øádkù (pou¾ívá se jako ukazatel
-   indexu fyzického øádku).
-   
-    4.17) Jaký je význam nìkterých výrazù pou¾itých v PostgreSQL?
-    
-   V nìkterých zdrojových kódech nebo star¹í dokumentaci se mù¾ete setkat
-   s následujícími výrazy, které mají ¹ir¹í význam. Zde je pøíklad
-   nekterých:
-     * tabulka, relace, tøída (table, relation, class)
-     * øádek, záznam, ntice (row, record, tuple)
-     * sloupec, polo¾ka, atribut (column, field, attribute)
-     * vyhledání, výbìr (retrieve, select)
-     * náhrada, úprava (replace, update)
-     * pøidání, vkládání (append, insert)
-     * OID, serial value (OID, serial value)
-     * portal, kurzor (portal, cursor)
-     * range variable, jméno tabulky, alias tabulky (range variable,
-       table name, table alias)
-       
-   seznam tìchto výrazù mù¾ete nalézt na
-   http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary
-   /glossary.html.
-   
-    4.18) Proè jsem získal chybové hlá¹ení "ERROR: Memory exhausted in
-    AllocSetAlloc()"?
-    
-   Pravdìpodobnì do¹lo k vyèerpání virtuální pamì»i na Va¹em systému,
-   nebo jádro má nízký limit pro urèité zdroje. Vyzkou¹ejte pøed startem
-   posmatera
-    ulimit -d 262144
-    limit datasize 256m
+   Také muzete pouzít funkci nextvall() a její výsledek pouzít v príkazu
+   INSERT, nebo zavolat currval() po provedení príkazu INSERT.
+   
+  4.11.3) Nezpusobí currval() a nextval() problémy ve více uzivatelském
+  prostredí?
+  
+   Ne, currval vrací vzdy hodnotu, která byla vygenerována pro vás.
+   
+  4.11.4) Proc není vygenerované císlo pouzito pri prerusení transakce?Proc
+  vznikají díry v císlování prostrednictvím sekvence nebo typu SERIAL?
+  
+   Poté co sekvence vygeneruje nové císlo, tak se nedochází k zamcení
+   sekvence a neceká se na úspesné nebo neúspesné dokoncení transakce.
+   Odvoláním transakce, která si vyzádala císla sekvence se tato císla
+   nenávratne ztratí.
+   
+  4.12) Co to je OID? Co je to CTID?
+  
+   V prípade, ze tabulku nezalozíme s atributem WITHOUT OIDS, tak má
+   kazdý rádek unikátní identifikacní císlo OID. Toto císlo je 4 bajtové
+   celé císlo, které je jedinecné v celé instalaci. Pretece po 4
+   miliardách rádku. PostgreSQL pouzívá OIDs jako interní linky v
+   interních systémových tabulkách.
+   
+   K získání unikátního císla v nesystémových tabulkách je vhodnejsí
+   pouzití typu SERIAL nez OID, jelikoz sekvence SERIAL se pouzívá pouze
+   pro jednu tabulku a je tudíz méne náchylná na pretecení. Pokud byste
+   se toho obávali, pouzijte typ SERIAL8.
+   
+   CTID se pouzívá k identifikaci konkrétního fyzického rádku. CTID se
+   mení pokud je rádek modifikován nebo znovu nacten. Pouzívají ho indexy
+   jako adresaci fyzických rádku.
+   
+  4.13) Co znamená chybové hlásení "ERROR: Memory exhausted in
+  AllocSetAlloc()"?
+  
+   Pravdepodobne jste vycerpal dostupnou virtuální pamet, nebo tvuj
+   kernel má prílis nízké limity u urcitých zdroju. Pred startem
+   PostgreSQL vyzkousejte:
+ulimit -d 262144
+limit datasize 256m
 
-   Zále¾í na Va¹em shellu, zda budou tyto pøíkazy úspì¹né, mìly by zvý¹it
-   limit datového segmentu pro Va¹e procesy a umo¾nit tak dokonèení
-   dotazu. Tyto pøíkazy se aplikují na aktuální proces a v¹echny synovské
-   procesy vytvoøené po provedení pøíkazu. Pokud máte problémy s SQL
-   klientem proto¾e backend vrací pøíli¹ mnoho dat, zkuste zvý¹it limity
-   pøed startem klienta.
-   
-    4.19) Jak se dozvím, kterou verzi PostgreSQL pou¾ívám?
-    
-   V psql spus»te SELECT version();
-   
-    4.20) Proè operace s velkými objekty konèí "invalid large obj descriptor"?
-    
-   V¹echny operace s velkými objekty - lo_open, lo_close, ... musíte
-   spou¹tìt v transakci, tj. mezi pøíkazy BEGIN WORK a COMMIT.
-   
-   PostgreSQL uvolòuje handle velkých objektù pøi skonèení transakce.
-   Pokud budete pracovat s velkými objekty mimo transakci, pravdìpodobnì
-   dostanete toto chybové hlá¹ení, proto¾e handle ji¾ budou neplatné.
-   Pokud pou¾íváte interface podobné ODBC musíte nastavit set auto_commit
-   off.
-   
-    4.21) Jak vytvoøit sloupec obsahující implicitnì aktuální datum?
-    
-   Pou¾ijte CURRENT_TIMESTAMP:
-
-CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
-
-    4.22) Proè jsou moje vnoøené dotazy pou¾ívající IN tak pomalé?
-    
-   Døívìj¹í verze (pøed 7.4) spojovali vnoøené dotazy k vnìj¹ím
-   sekvenèním ètením výsledku poddotazu pro ka¾dý øádek vnìj¹ího dotazu.
-   Pokud poddotaz vrátil nìkolik málo øádkù IN bylo rychlé. Pro ostatní
-   pøípady je vhodné nahradit IN EXISTS:
-    SELECT *
-    FROM tab
-    WHERE col IN (SELECT subcol FROM subtab);
+   Mozná, ze se projde pouze jeden príkaz - zálezí to na vasem shellu.
+   Mel by zvednout limity datových segmentu vasich procesu na dostatecne
+   velkou hodnotu a snad umoznit dokoncení dotazu. Zmena limitu se bude
+   aplikovat pouze na aktuální proces a na vsechny nove vytvorené
+   procesy. Jestlize máte problém s SQL klientem, protoze vám server
+   vrátil prílis dat, zkuste to pred startem klienta.
+   
+  4.14) Jak zjistím, kterou verzi PostgreSQL pouzívám?
+  
+   V psql napiste:
+SELECT version();
 
-   na:
-   SELECT *
-   FROM tab
-   WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
+  4.15) Jak vytvorit sloupec, který bude implicitne obsahovat aktuální cas?
+  
+   Pouzijte CURRENT_TIMESTAMP:
+CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
 
-   Pro urychlení vytvoøete index pro subcol.
-   
-   Ve verzi 7.4 a pozdìj¹ích, IN pou¾ívá stejnì sofistikovanou techniku
-   spojování tabulek jako ostatní dotazy a je preferovaný pøed EXISTS.
-   
-    4.23) Jak provést vnìj¹í spojení (outer join)?
-    
-   PostgreSQL podporuje vnìj¹í spojení tabulek standardními SQL pøíkazy.
-   Zde jsou dva pøíklady:
-    SELECT *
-    FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
+  4.16) Jak provést vnejsí spojení (outer join)?
+  
+   PostgreSQL podporuje standardní SQL syntaxi pro vnejsí spojení. Zde
+   jsou dva príklady:
+SELECT *
+FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
 
    nebo
-    SELECT *
-    FROM t1 LEFT OUTER JOIN USING (col);
-
-   Tyto identické dotazy napojí t1.col na t2.col a je¹tì pøidá
-   nepøipojené øádky z t1 (které nemají obdoby v t2). Pravé spojení
-   (RIGHT JOIN) pøidá nepøipojené øádky z t2. FULL JOIN vrátí v¹echny
-   øádky, vèetnì nepøipojených z tbulek t1 a t2. Klíèové slovo OUTER je
-   nepovinné a vá¾e se na LEFT, RIGHT a FULL join. Bì¾né spojení se
-   nazývá INNER JOIN.
-   
-   V døívìj¹ích verzích se vnìj¹í spojení tabulek mohlo simulovat pomocí
-   UNION a NOT IN. Napøíklad pro spojení tabulek tab1 a tab2, je
-   následující dotaz ekvivalentní k vnìj¹ímu spojení dvou tabulek:
-    SELECT tab1.col2, tab2.col2
-    FROM tab1, tab2
-    WHERE tab1.col1 = tab2.col1
-    UNION ALL
-    SELECT tab1.col2, NULL
-    FROM tab1
-    WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
-    ORDER BY col1;
+SELECT *
+FROM t1 LEFT OUTER JOIN t2 USING (col);
 
-    4.24) Jak provést dotaz z více databází?
-    
-   PostgreSQL nepodporuje dotazy do jiné ne¾ aktuální databáze.
-   
-   contrib/dblink nabízí funkce umo¾òující provedení dotazu v jiné
-   databázi. Klient si mù¾e otevøít simultální pøipojení do rùzných db
-   bez omezení.
-   
-    4.25) Mù¾e funkce vrátit více øádkù nebo sloupcù?
-    
-   V PostgreSQL 7.3 mù¾ete jednodu¹e vracet více øádkù nebo sloupcù z
-   funkce, viz:
-   http://techdocs.postgresql.org/guides/SetReturningFunctions.
-   
-    4.26) Proè nelze spolehlivì vytváøet a ru¹it doèasné tabulky v PL/pgSQL
-    funkcích?
-    
-   Pøelo¾ený kód PL/pgSQL funkce je ulo¾en ve vyrovnávací pamìti, tj.
-   funkce je pøekládána pouze pøi zmìnì kódu, nikoliv pøed ka¾dým voláním
-   funkce. Nechtìným vedlej¹ím efektem je, ¾e volání funkce sel¾e, kdy¾
-   se funkce odkazuje na doèasnou tabulku, pokud tato tabulka byla od
-   pøekladu funkce zru¹ena (aèkoliv ji¾ byla znovu vytvoøena a existuje).
-   Jediným øe¹ením problému je pøístup k doèasné tabulce pomocí EXECUTE,
-   tj. dynamické provádìní dotazu. Tento pøíkaz zajistí opakovaný pøeklad
-   dotazu pøi ka¾dém volání funkce.
-   
-    4.27) Jaké jsou mo¾nosti replikace databází?
-    
-   Existuje nìkolik dostupných øe¹ení master/slave replikací, tj umo¾òují
-   modifikace master databáze a slave databázím umo¾òují pouze ètení. Na
-   konci http://gborg.PostgreSQL.org/genpage?replication_research najdete
-   jejich seznam. Na øe¹ení multi-master replikaci se pracuje na
-   http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.
-   
-    4.28) Jaké jsou mo¾nosti ¹ifrování databází?
-    
-     * contrib/pgcrypto obsahuje ¹ifrovací funkce pou¾itelné v SQL
-       dotazech.
-     * K ¹ifrování pøenosu dat z klienta na server, musí být server
-       pøelo¾en s podporou ssl a pøepínaè ssl v postgresql.conf musí být
-       nastaven na hodnotu true. Klient musí mít vytvoøen záznam hostssl
-       v pg_hba.conf a také mít povolen re¾im ssl. Lze pou¾ít i jiné
-       prostøedky, nejen nativní podporu ssl v PostgreSQL, napø. stunel a
-       ssh.
-     * Hesla u¾ivatelù databáze jsou za¹ifrována poèínaje verzí 7.3. Ve
-       star¹ích verzích toto chování muselo být vynuceno volbou
-       PASSWORD_ENCRYPTION v postgresql.conf
-     * Server mù¾e bì¾et na ¹ifrovaném souborovém systému.
-     _________________________________________________________________
-   
-                           Roz¹iøování PostgreSQL
-                                      
-    5.1) Napsal jsem UDF funkci, PostgreSQL v¹ak konèí dump core?
-    
-   Problém mù¾e být zpùsoben mnoha okolnostmi. Vyzkou¹ejte si svoji
-   funkci nejdøíve v nìjaké jednoduché aplikaci.
-   
-    5.2) Jak mohu pøispìt nìjakými ¹ikovnými datovými typy a funkcemi do
-    PostgreSQL?
-    
-   Po¹lete své roz¹íøení do konference pgsql-hackers, a ono pak mo¾ná
-   skonèí v podadresáøi contrib.
-   
-    5.3) Jak napsat funkci v C vracející ntici?
-    
-   Funkce vracející tabulky jsou podporované PostgreSQL 7.3 a vy¹¹í pro
-   jazyky C, PL/PgSQL a SQL. Více naleznete v The Programmer's Guide.
-   Pøíklady tìchto funkcí pro C naleznete v contrib/tablefunc.
-   
-    5.4) Modifikoval jsem zdrojové soubory. Tato zmìna nebyla pøi rekompilaci
-    vzata v potaz. Proè?
-    
-   Makefile nemá informace o závislostech mezi hlavièkovými soubory.
-   Musíte provést make clean a pak make. Pokud pou¾íváte gcc, mù¾ete
-   pou¾ít pøepínaè --enable-depend pøíkazu configure k automatickému
-   øe¹ení závislostí pøekladaèem.
+   Tyto identické dotazy spojí sloupec t1.col k sloupci t2.col, a jeste
+   vrátí vsechny nespárované rádky t2 (ty, které nedohledá v t2). RIGHT
+   JOIN by pripojil vsechny nespárované rádky z t2. FULL JOIN vrátí
+   vsechny spárované rádky i vsechny zbývající rádky z obou tabulek.
+   Klícové slovo OUTER je volitelné. Bezná operace JOIN se také oznacuje
+   jako vnitrní spojení.
+   
+  4.17) Jak provést dotaz napríc nekolika databázemi?
+  
+   Neexistuje zádný zpusob, jak se v dotazu odkazovat na tabulky z jiné
+   nez aktuální databáze. A to protoze má systémové tabulky ulozené
+   nezávisle v kazdé databázi a není tak úplne zrejmé, jak by se dotaz
+   provedený napríc databázemi mel chovat.
+   
+   Jeden z doplnku dblink umoznuje dotaz nad nekolika tabulkami pomocí
+   funkcí. Druhý zpusob je simultální pripojení klienta ke vsem
+   relevantním databázím a sloucení výsledku na strane klienta.
+   
+  4.18) Muze funkce vrátit více rádku nebo sloupcu?
+  
+   Jde to jednoduse pomocí set-returning funkce. Více na
+   http://www.postgresql.org/docs/techdocs.17.
+   
+  4.19) Co je prícinou chyby "relation with OID xxxxx does not exist"?
+  
+   Nechteným vedlejsím efektem kesování SQL dotazu v PL/pgSQL funkci je
+   problém s neplatnými odkazy na docasné tabulky, které byly od prvního
+   spustení funkce zruseny a znovu vytvoreny pred dalsím spustením
+   PL/pgSQL funkce. Resením je pouzít príkaz EXECUTE a to proto, ze
+   provádecí plán SQL príkazu spousteného príkazem EXECUTE se vytvárí
+   pokazdé znovu (neukládá se do cache).
+   
+   Tento problém by se nemel vyskytovat u PostgreSQL verze 8.3 a vyssích
+   verzích.
+   
+  4.20) Jaké jsou moznosti replikace databází?
+  
+   Replikaci databáze umoznuje nekolik technoligií. Kazdá má urcité
+   výhody a nevýhody.
+   
+   Master/Slave replikaci podporuje jeden hlavní server, který prijímá
+   pozadavky na zápis a ctení, a nekolik podrízených serveru, které
+   umoznují pouze ctení (SELECT). Nejrozsírenejsím volne dostupným
+   resením tohoto typu je Slony-I.
+   
+   Replikace typu Multi-master podporuje existenci nekolika serveru s
+   povoleným zápisem na více replikovaných serverech. Toto resení zvysuje
+   zátez serveru, protoze je nutná synchronizace serveru.
+   Nejrozsírenejsím volne dostupným resením je PGCluster.
+   
+   Jeste existuje nekolik komercních a hardware resení replikací
+   podporujících ruzné modely replikace.
+   
+  4.21) Proc v dotazu nejsou rozpoznány názvy mých tabulek nebo funkcí? Proc
+  jsou velká písmena v názvech automaticky prevedena na malá písmena?
+  
+   Nejcastejsím duvodem nerozpoznání názvu objektu bylo pouzití vlození
+   názvu sloupce nebo tabulky mezi uvozovky pri zakládání tabulky. Pokud
+   se název zapíse mezi uvozovky, pak je case sensitive, a v dusledku
+   toho je nutné názvy techto sloupcu nebo tabulek v SQL príkazech také
+   vkládat mezi uvozovky (pokud obsahují velká písmena). Nekteré
+   programy, jako je napríklad pgAdmin, automaticky pouzívají uvozovky.
+   Takze pokud chcete, aby systém identifikoval identifikátor, musíte:
+     * nepouzívat uvozovky v príkazu CREATE TABLE
+     * v identifikátoru pouzít pouze malá písmena
+     * v dotazech vkládat identifikátory do uvozovek
index 7baa4c0dea984ea05cb15e0730e822176ec05a21..3a485388eedf951ed0206063d3d9d611572a6c40 100644 (file)
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<HTML>
-  <HEAD>
-    <META name="generator" content="HTML Tidy, see www.w3.org">
-    <META http-equiv="Content-Type" content="text/html; charset="iso-8859-2">
-    <META http-equiv="Content-language" content="cs">
-    <META name="description" lang="en" content="Czech translation of FAQ for PostgreSQL"> 
-    <META name="description" lang="cs" content="Èeský pøeklad FAQ PostgreSQL">
-
-    <TITLE>PostgreSQL FAQ</TITLE>
-  </HEAD>
-
-  <BODY bgcolor="#ffffff" text="#000000" link="#ff0000" vlink="#a00000"
-  alink="#0000ff">
-
-
-   <H1>Èasto kladené dotazy (FAQ) PostgreSQL</H1>
-
-   <P>Poslední aktualizace: Støeda 23. èervna 21:10:00 EST 2004</P>
-
-   <P>Souèasný správce: Bruce Momjian (<A href=
-   "mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)</P>
-
-   <P>Pøelo¾il: Pavel Stìhule (<A href=
-   "mailto:stehule@kix.fsv.cvut.cz">stehule@kix.fsv.cvut.cz</A>)</P>
-
-   <P>Aktuální verzi tohoto dokumentu naleznete na adrese: <A href=
-   "http://www.PostgreSQL.org/docs/faqs/FAQ.html">http://www.PostgreSQL.org/docs/faqs/FAQ.html</A>. 
-   Èeský pøeklad na adrese: <A href="http://www.PostgreSQL.org/docs/faqs/FAQ_czech.html">
-   http://www.PostgreSQL.org/docs/faqs/FAQ_czech.html</A>.</P>
-
-   <P>Odpovìdi na dotazy relevantní ke konkrétním platformám
-   lze nalézt na adrese: <A href="http://www.PostgreSQL.org/docs/index.html">
-   http://www.PostgreSQL.org/docs/index.html</A>.</P>
-   <HR>
-   <H2 align="center">Obecné otázky</H2>
-
-   <A href="#1.1">1.1</A>) Co je PostgreSQL? Jak se vyslovuje?<BR>
-   <A href="#1.2">1.2</A>) Jaká je licence na PostgreSQL?<BR>
-   <A href="#1.3">1.3</A>) Na kterých Unixex lze spustit PostgreSQL?<BR>
-   <A href="#1.4">1.4</A>) Které ne-unixové platformy jsou podporované?<BR>
-   <A href="#1.5">1.5</A>) Kde mohu získat PostgreSQL?<BR>
-   <A href="#1.6">1.6</A>) Kde mohu získat podporu?<BR>
-   <A href="#1.7">1.7</A>) Kde je poslední verze?<BR>
-   <A href="#1.8">1.8</A>) Jaká je dostupná dokumentace?<BR>
-   <A href="#1.9">1.9</A>) Kde najdu seznam známých chyb nebo nepodporovaných vlastností?<BR>
-   <A href="#1.10">1.10</A>) Jak se mohu nauèit SQL?<BR>
-   <A href="#1.11">1.11</A>) Nemá PostgreSQL problémy s rokem 2000?<BR>
-   <A href="#1.12">1.12</A>) Jak se pøipojit k vývojáøskému týmu?<BR>
-   <A href="#1.13">1.13</A>) Kam podat report o chybì?<BR>
-   <A href="#1.14">1.14</A>) Jak je na tom PostgreSQL v porovnání s jinými databázemi?<BR>
-   <A href="#1.15">1.15</A>) Jak lze finanènì pomoci PostgreSQL?<BR>
-
-   <H2 align="center">User client dotazy</H2>
-
-   <A href="#2.1">2.1</A>) Kde naleznu ODBC ovladaèe pro PostgreSQL?<BR>
-   <A href="#2.2">2.2</A>) Jaké nástroje lze pou¾ít pro PostgreSQL a web?<BR>
-   <A href="#2.3">2.3</A>) Existuje grafické rozhraní pro PostgreSQL?<BR>
-   <A href="#2.4">2.4</A>) Které programovací jazyky mají podporu pro PostgreSQL?<BR>
-
-   <H2 align="center">Administrativní dotazy</H2>
-   <A href="#3.1">3.1</A>) Jak nainstalovat PostgreSQL jinam ne¾ do /usr/local/pgsql?<BR>
-   <A href="#3.2">3.2</A>) Pøi startu postmaster, dostanu chybové hlá¹ení Bad System Call nebo
-   core dump. Proè?<BR>
-   <A href="#3.3">3.3</A>) Pøi startu postmastera dostanu hlá¹ení o chybì
-   IpcMemoryCreate. Proè?<BR>
-   <A href="#3.4">3.4</A>) Pøi startu postmastera dostanu hlá¹ení o chybì IpcSemaphoreCreate. 
-   Proè?<BR>
-   <A href="#3.5">3.5</A>) Jak povolit nebo zakázat pøístup z jiných stanic?<BR>
-   <A href="#3.6">3.6</A>) Jak ladit databázový stroj na lep¹í výkon?<BR>
-   <A href="#3.7">3.7</A>) Jaké jsou mo¾nosti ladìní?<BR>
-   <A href="#3.8">3.8</A>) Proè dostanu "Sorry, too many clients", kdy¾ se zkou¹ím pøipojit?<BR>
-   <A href="#3.9">3.9</A>) K èemu slou¾í adresáø pgsql_tmp?<BR>
-   <A href="#3.10">3.10</A>) Proè je po¾adováno dump a obnovení (load) databáze bìhem upgrade
-   mezi velkými verzemi PostgreSQL?<BR>
-
-   <H2 align="center">Provozní dotazy</H2>
-
-   <A href="#4.1">4.1</A>) Èím se li¹í binární a normální kurzor?<BR>
-   <A href="#4.2">4.2</A>) Jak získat pouze první øádek dotazu? Náhodný øádek?<BR>
-   <A href="#4.3">4.3</A>) Jak získám seznam tabulek nebo jinak jak jej získá psql?<BR>
-   <A href="#4.4">4.4</A>) Jak odstraním sloupec tabulky, jak zmìním jeho typ?<BR>
-   <A href="#4.5">4.5</A>) Jaká je maximální velikost øádku, tabulky a databáze?<BR>
-   <A href="#4.6">4.6</A>) Kolik diskového prostoru je potøeba k ulo¾ení dat z normálního
-   textového souboru?<BR>
-   <A href="#4.7">4.7</A>) Jak získám seznam vytvoøených tabulek, indexù,
-   databází?<BR>
-   <A href="#4.8">4.8</A>) Mùj dotaz je pomalý a nepou¾ívá vytvoøené indexy. Proè?<BR>
-   <A href="#4.9">4.9</A>) Jak zjistím, jak optimizer dotazu vyhodnocuje mùj dotaz?<BR>
-   <A href="#4.10">4.10</A>) Co to je R-tree index?<BR>
-   <A href="#4.11">4.11</A>) Co je Genetic Query Optimizer?<BR>
-   <A href="#4.12">4.12</A>) Jak provést vyhledávání regulárního výrazu case sensitiv,
-   insensitiv? Jak pou¾ít index pro case insensitive vyhledávání?<BR>
-   <A href="#4.13">4.13</A>) Jak v dotazu detekovat, ¾e polo¾ka je NULL?<BR>
-   <A href="#4.14">4.14</A>) Jaké jsou rozdíly mezi rùznými znakovými typy?<BR>
-   <A href="#4.15.1">4.15.1</A>) Jak vytvoøit serial/auto-increment pole?<BR>
-   <A href="#4.15.2">4.15.2</A>) Jak získat hodnotu SERIAL po vlo¾ení øádku?<BR>
-   <A href="#4.15.3">4.15.3</A>) Nepovede currval() a nextval() k rozhození podmínek pøi soubìhu s
-   jinými u¾ivateli?<BR>
-   <A href="#4.15.4">4.15.4</A>) Proè není vygenerované èíslo pou¾ito pøi pøeru¹ení transakce?
-   Proè vznikají díry v èíslování vlastní sekvencí/SERIAL sloupce?<BR>
-   <A href="#4.16">4.16</A>) Co to je OID? Co je to TID?<BR>
-   <A href="#4.17">4.17</A>) Jaký je význam nìkterých výrazù pou¾itých v PostgreSQL?<BR>
-   <A href="#4.18">4.18</A>) Proè jsem získal chybové hlá¹ení "ERROR: Memory exhausted in
-   AllocSetAlloc()"?<BR>
-   <A href="#4.19">4.19</A>) Jak se dozvím, kterou verzi PostgreSQL pou¾ívám?<BR>
-   <A href="#4.20">4.20</A>) Proè operace s velkými objekty konèí "invalid large obj descriptor"?<BR>
-   <A href="#4.21">4.21</A>) Jak vytvoøit sloupec obsahující implicitnì aktuální datum?<BR>
-   <A href="#4.22">4.22</A>) Proè jsou moje vnoøené dotazy pou¾ívající IN tak pomalé?<BR>
-   <A href="#4.23">4.23</A>) Jak provést vnìj¹í spojení (outer join)?<BR>
-   <A href="#4.24">4.24</A>) Jak provést dotaz napøíè nìkolika databázemi?<BR>
-   <A href="#4.25">4.25</A>) Mù¾e funkce vrátit více øádkù nebo sloupcù?<BR>
-   <A href="#4.26">4.26</A>) Proè nelze spolehlivì vytváøet a ru¹it doèasné tabulky 
-   v PL/pgSQL funkcích?<BR>
-   <A href="#4.27">4.27</A>) Jaké jsou mo¾nosti replikace databází?<BR>
-   <A href="#4.28">4.28</A>) Jaké jsou mo¾nosti ¹ifrování databází?<BR>
-
-   <H2 align="center">Roz¹iøování PostgreSQL</H2>
-
-   <A href="#5.1">5.1</A>) Napsal jsem UDF funkci, PostgreSQL v¹ak konèí dump core?<BR>
-   <A href="#5.2">5.2</A>) Jak mohu pøispìt nìjakými ¹ikovnými datovými typy a funkcemi do
-   PostgreSQL?<BR>
-   <A href="#5.3">5.3</A>) Jak napsat funkci v C vracející ntici?<BR>
-   <A href="#5.4">5.4</A>) Modifikoval jsem zdrojové soubory. Tato zmìna nebyla pøi rekompilaci
-   vzata v potaz. Proè?<BR>
-
-   <HR>
-   <H2 align="center">Obecné otázky</H2>
-
-   <H4><A name="1.1">1.1</A>) Co je PostgreSQL? Jak se vyslovuje?</H4>
-
-   <P>PostgreSQL se vyslovuje <I>Post-Gres-Q-L</I>. Zvukový záznam je 
-   dostupný na adrese <A href="http://www.postgresql.org/postgresql.mp3"></A>.</P>
-
-   <P>PostgreSQL vychází z databáze POSTGRES (a stále je nìkdy oznaèován
-   zjednodu¹enì jako Postgres) - výzkumného prototypu <SMALL>DBMS</SMALL> nové
-   generace. Z postgresu byl pøevzat silný datový model a bohatý soubor
-   datových typù a jeho dotazovací jazyk PostQuel byl nahrazen roz¹íøenou
-   podmno¾inou jazyka <SMALL>SQL</SMALL>. PostgreSQL lze pou¾ívat bez omezení a jeho
-   zdrojové kódy jsou volnì k dispozici.</P>
-
-   <P>PostgreSQL vyvýjí tým vývojáøù pøihlá¹ených do vývojáøské konference
-   PostgreSQL. Souèasným koordinátorem je Marc G. Fournier (<A href=
-   "mailto:scrappy@PostgreSQL.org">scrappy@PostgreSQL.org</A>). 
-   (viz <A href="#1.6">1.6</A> - jak se zapojit). Tento tým je zodpovìdný za ve¹kerý vývoj 
-   PostgreSQL. Jedná se o veøejný projekt, který není øízen ¾ádnou firmou.
-   Pokud se chcete zapojit, pøeètìte si  developer's FAQ na adrese <A href=
-   "http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html">http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html</A></P>
-
-   <P>Autory první verze PostgreSQL 1.01 byli Andrew Yu and Jolly Chen. Do
-   portace, testování, ladìní a roz¹iøování kódu se zapojilo mnoho dal¹ích
-   vývojáøù . Pùvodni kód Postgresu, ze kterého PostgreSQL vychází, je
-   výsledkem úsilí mnoha studentù a programátorù pracujících pod vedením
-   prof. Michaela Stonebrakera na University of California v Berkley.</P>
-
-   <P>Pùvodní název software z Berkley byl Postgres. Po pøidání jazyka <SMALL>SQL</SMALL> se
-   název zmìnil na Postgres95. Koncem roku 1996 byl RDBMS pøejmenován na
-   PostgreSQL.</P>
-
-   <H4><A name="1.2">1.2</A>) Jaká je licence na PostgreSQL?</H4>
-
-   <P>PostgreSQL je pøedmìtem následujících autorských práv:</P>
-
-   <P>Dílèí Copyright (c) 1996-2007, PostgreSQL Global Development Group
-   Dílèí Copyright (c) 1994-6, Regents of the University of California</P>
-
-   <P>Udìluje se oprávnìní k u¾ití, rozmno¾ování, provádìní úprav a
-   roz¹iøování tohoto softwaru a dokumentace k nìmu, pro jakékoli úèely,
-   bez licenèního poplatku a bez písemné licenèní smlouvy, za podmínky, ¾e
-   na v¹ech jeho kopiích je uvedeno oznámení o vý¹e uvedených právech,
-   jako¾ i obsah tohoto a dvou následujících odstavcù.</P>
-
-   <P>THE UNIVERSITY OF CALIFORNIA ("KALIFORNSKÁ UNIVERZITA") NENÍ V ®ÁDNÉM
-   PØÍPADÌ ODPOVÌDNA ®ÁDNÉ TØETÍ OSOBÌ ZA PØÍMOU, NEPØÍMOU, ZVLÁ©TNÍ,
-   NAHODILOU NEBO VÝSLEDNOU ©KODU, VÈETNÌ U©LÉHO ZISKU, ZPùSOBENOU U®ITÍM
-   TOHOTO SOFTWARU A DOKUMENTACE K NÌMU, A TO I V PØÍPADÌ, ®E THE
-   UNIVERSITY OF CALIFORNIA BYLA INFORMOVÁNA O MO®NOSTI VZNIKU TAKOVÉ
-   ©KODY.</P>
-
-   <P>HE UNIVERSITY OF CALIFORNIA ZEJMÉNA NEPOSKYTUJE JAKÉKOLI ZÁRUKY, A TO
-   NEJEN ZÁRUKY OBCHODOVATELNOSTI A VHODNOSTI TOHOTO VýROBKU KE SPECIFICKýM
-   ÚÈELùM. NÍ®E UVEDENý SOFTWARE JE POSKYTNUT "JAK STOJÍ A LE®Í" A THE
-   UNIVERSITY OF CALIFORNIA NENÍ POVINNA ZAJISTIT JEHO ÚDR®BU, PODPORU,
-   AKTUALIZACI, VYLEP©ENÍ NEBO MODIFIKACI.</P>
-
-   <P>Vý¹e uvedené je BSD licence, bì¾ná licence otevøeného zdroje. Není zde
-   ¾ádné omezení ohlednì u¾ití kódu zdroje. Jsme s tím spokojeni a nemáme v
-   úmyslu na této skuteènosti cokoli mìnit.</P>
-
-   <H4><A name="1.3">1.3</A>) Na kterých Unixex lze spustit PostgreSQL?</H4>
-
-   <P>PostgreSQL bì¾í na v¹ech moderních unixových platformách. V instalaèních
-   instrukcích naleznete aktuální seznam v¹ech platforem na kterých byla
-   testováním ovìøena funkcionalita PostgreSQL.</P>
-
-   <H4><A name="1.4">1.4</A>) Které ne-unixové platformy jsou podporované?</H4>
-
-   <P><STRONG>Klient</STRONG></P>
-
-   <P>Knihovna <I>libpq</I>, psql a nìkteré dal¹í moduly byly pøelo¾eny pro MS
-   Windows. Klienta lze provozovat na MS Windows, ten prostøednictvím
-   TCP/IP protokolu komunikuje se serverem bì¾ícím na nìkteré z
-   podporovaných Unixových platforem. K pøekladu lze pou¾ít <I>win32.mak</I> a
-   Win32 knihovny <I>libpq</I> a <I>psql</I>. K databázi PostgerSQL lze pøistupovat skrze
-   rozhraní <SMALL>ODBC</SMALL>.</P>
-
-   <P><STRONG>Server</STRONG></P>
-
-   <P>Server mù¾e být na WindowsNT a Win2k provozován pouze s knihovnou
-   Cygwin, Cygnus Unix/NT porting library. Více <I>pgsql/doc/FAQ_MSWIN</I> v
-   distribuci nebo MS Windows FAQ na adrese
-   <A href="http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN">http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN</A>.</P>
-
-   <P>Na nativním portu pro MS Win NT/2000/XP se pracuje. Dal¹í informace
-   o aktuálním stavu PostgreSQL pro Windows naleznet na adrese
-   <A href="http://techdocs.postgresql.org/guides/Windows">http://techdocs.postgresql.org/guides/Windows</A> a
-   <A href="http://momjian.postgresql.org/main/writings/pgsql/win32.html">
-   http://momjian.postgresql.org/main/writings/pgsql/win32.html</A>.</P>
-
-   <P>Existující port pro Novell Netware 6 naleznete na
-   <A href="http://forge.novell.com">http://forge.novell.com</A>.</P>
-
-   <H4><A name="1.5">1.5</A>) Kde mohu získat PostgreSQL?</H4>
-
-   <P>Primárním anonymním ftp serverem pro PostgreSQL je
-   <A href="ftp://ftp.PostgreSQL.org/pub">ftp://ftp.PostgreSQL.org/pub</A>. 
-   Seznam zrcadel naleznete na na¹ich webových stránkách.</P>
-
-   <H4><A name="1.6">1.6</A>) Kde mohu získat podporu?</H4>
-
-   <P>Hlavní mailová konference je: <A href="mailto:pgsql-general@PostgreSQL.org">
-   pgsql-general@PostgreSQL.org</A>. Slou¾í k
-   diskuzím ohlednì PostgreSQL. Pøihlásíte se zasláním mailu obsahující
-   následující øádky v tìle dopisu (nikoliv v záhlaví - subjectu):</P>
-<PRE>
-    subscribe
-    end
-</PRE>
-<P>na adresu <A href="mailto:pgsql-general-request@PostgreSQL.org">
-   pgsql-general-request@PostgreSQL.org</A>.</P>
-
-   <P>Mù¾ete si vy¾ádat denní pøehled (diggest), který má zhruba 30K dennì
-   zpráv.</P>
-
-   <P>Konference psql-bugs je urèena k zasílání zpráv o chybách. Pro
-   pøihlá¹ení po¹lete mail se stejným obsahem jako v pøedchozím pøípadì na
-   adresu <A href="mailto:pgsql-bugs-request@PostgreSQL.org">
-   pgsql-bugs-request@PostgreSQL.org</A>.</P>
-
-   <P>Do vývojáøské konference se pøihlásíte odesláním dopisu s ji¾ zmiòovaným
-   obsahem na mailto:pgsql-hackers-request@PostgreSQL.org.</P>
-
-   <P>Seznam dal¹ích konferencí naleznete na stránkách PostgreSQL:</P>
-   <BLOCKQUOTE>
-   <P><A href="http://www.postgresql.org">http://www.postgresql.org</A></P>
-   </BLOCKQUOTE>
-   <H4><A name="1.7">1.7</A>) Jaká je poslední verze?</H4>
-
-   <P>Poslední verze PostgreSQL je 7.4.3. Plánujeme uvolnit významnou verzi
-   ka¾dých ¹est a¾ osm mìsícù.</P>
-
-   <H4><A name="1.8">1.8</A>) Jaká je dostupná dokumentace?</H4>
-
-   <P>Rùzné manuály, manuálové stránky a nìkolik malých testovacích pøíkladù
-   jsou souèásti distribuce. Podívejte se do adresáøe <I>/doc</I>. Manuály jsou
-   pøístupné online na <A href="http://www.PostgreSQL.org/docs">http://www.PostgreSQL.org/docs</A>.</P>
-
-   <P>Na adresách <A href="http://www.PostgreSQL.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html</A> a
-   <A href="http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook/</A> 
-   naleznezte dvì online knihy o PostgreSQL. Seznam dostupné literatury je na
-   <A href="http://techdocs.PostgreSQL.org/techdocs/bookreviews.php">
-   http://techdocs.PostgreSQL.org/techdocs/bookreviews.php</A>. Soubor
-   technických èlánkù s tematikou PostgresQL najdete na <A href=
-   "http://techdocs.PostgreSQL.org/">http://techdocs.PostgreSQL.org/</A>.</P>
-
-   <P><I>psql</I> má u¾iteèný metapøíkaz \d slou¾ící k zobrazení informací o typech,
-   operátorech, funkcí, agregaèních funkcí atd.</P>
-
-   <P>Více dokumentace naleznete na na¹ich webových stránkách.</P>
-
-   <H4><A name="1.9">1.9</A>) Kde najdu seznam známých chyb nebo nepodporovaných vlastností?</H4>
-
-   <P>PostgreSQL podporuje roz¹íøenou podmno¾inu <SMALL>SQL-92</SMALL>. V na¹em 
-   <A href="http://www.postgresql.org/docs/faqs.TODO.html">TODO</A>
-   najdete seznam známých chyb, chybìjících vlastností a seznam vlastností,
-   které budou do systému implementovány v budoucnu (vèetnì priorit).</P>
-
-   <H4><A name="1.10">1.10</A>) Jak se mohu nauèit SQL?</H4>
-
-   <P>V knize The PostgreSQL book na <A href=
-   "http://www.PostgreSQL.org/docs/awbook.html">
-   http://www.PostgreSQL.org/docs/awbook.html</A> je vysvìtlen jazyk SQL (vy¹la
-   èesky). Dal¹í dostupnou knihou je <A href=
-   "http://www.commandprompt.com/ppbook">http://www.commandprompt.com/ppbook</A>.
-   Kvalitní návody naleznete na <A href=
-   "http://www.intermedia.net/support/sql/sqltut.shtm"> 
-   http://www.intermedia.net/support/sql/sqltut.shtm</A>, a na
-   <A href="http://sqlcourse.com">http://sqlcourse.com</A>.</P>
-
-   <P>Dal¹í je Teach Yourself SQL in 21 days, Second Edition na <A href=
-   "http://members.tripod.com/er4ebus/sql/index.htm">http://members.tripod.com/er4ebus/sql/index.htm</A>.</P>
-
-   <P>Mnoho u¾ivatelù doporuèuje <I>The Practical SQL Handbook</I>, Bowman, Judith
-   S., et al., Addison-Wesley. Jiní preferují <I>The Complete Reference SQL</I>,
-   Groff et al., McGraw-Hill.</P>
-
-   <H4><A name="1.11">1.11</A>) Nemá PostgreSQL problémy s rokem 2000?</H4>
-
-   <P>Nemá, mù¾eme pracovat s datumy po roce 2000 na¹eho letopoètu i pøed
-   rokem 2000 pø.n.l.</P>
-
-   <H4><A name="1.12">1.12</A>) Jak se pøipojit k vývojáøskému týmu?</H4>
-
-   <P>Nejdøíve si stáhnìte nejnovìj¹í zdroje a pøeètìte si vývojáøskou
-   dokumentaci na na¹em webu nebo v distribuci. Pak se pøihla¹te do
-   konferencí <I>pgsql-hackers</I> a <I>pgsql-patches</I>. Kvalitní záplaty posílejte do
-   pgsql-patches.</P>
-
-   <P>Právo commit má v <SMALL>CVS</SMALL> archivu asi tøinácti lidí. Ka¾dý z nich poslal
-   mnoho kvalitních záplat, tak¾e tehdej¹í commiters mìli jistotu, ¾e budou
-   pøedkládat jenom kvalitní záplaty a mohli jim pøedìlit vìt¹í práva.</P>
-
-   <H4><A name="1.13">1.13</A>) Kam podat report o chybì?</H4>
-
-   <P>Nav¹tivte na¹i PostgreSQL BugTool stránku na <A href=
-   "http://www.PostgreSQL.org/bugs/bugs.php">http://www.PostgreSQL.org/bugs/bugs.php</A>, 
-   která obsahuje návod a smìrnice jak podat chybový report.</P>
-
-   <P>Ovìøte si na na¹em ftp serveru <A href="ftp://ftp.PostgreSQL.org/pub">ftp://ftp.PostgreSQL.org/pub</A>, 
-   zda-li máte nejnovìj¹í verzi PostgreSQL a zda-li k ní neexistují nìjaké záplaty.</P>
-
-   <H4><A name="1.14">1.14</A>) Jak je na tom PostgreSQL v porovnání s jinými databázemi?</H4>
-
-   <P>Existuje nìkolik hledisek jak porovnávat software: vlastnosti, výkon,
-   spolehlivost, podpora a cena.</P>
-   <DL>
-   <DT><B>Vlastnosti</B></DT>
-       <DD>PostgreSQL má hodnì spoleèných vlastností s velkými komerèními 
-       <SMALL>DBMS</SMALL>, napø. transakce, vnoøené dotazy, spou¹tì, pohledy, kontrolu 
-       referenèní integrity a sofistikované zamykání. Podporuje nìkteré 
-       vlastnosti, které tyto systémy nemají, u¾ivatelem definované typy, 
-       dìdiènost, pravidla, MVCC redukující zamykání.<BR><BR></DD>
-
-   <DT><B>Výkon</B></DT>
-       <DD>Výkonnostnì je na tom PostgreSQL podobnì jako dal¹í komerèní ale 
-       i open source databáze, v nìèem je rychlej¹í, jindy pomalej¹í. 
-       V porovnání s MySQL a podobnými databázovými systémy je PostgreSQL 
-       rychlej¹í pøi víceu¾ivatelském pøístupu, slo¾itìj¹ích dotazech 
-       a zatí¾ení read/write dotazy. MySQL je rychlej¹í v jednodu¹¹ích 
-       dotazech s malým poètem u¾ivatelù. Navíc, MySQL nepodporuje mnohé 
-       vlatnosti zmínìné v sekci <I>vlastnosti</I>. Zapracovali jsme na 
-       spolehlivosti a podporovaných vlastnostech, a výkon zvy¹ujeme 
-       v ka¾dé verzi. Zajímavou stránku porovnávající PostgreSQL a MySQL 
-       naleznete na <A href="http://openacs.org/philosophy/why-not-mysql.html">http://openacs.org/philosophy/why-not-mysql.html</A>. 
-       Za vývojem MySQL není Open Source komunita, ale komerèní spoleènost,
-       pøesto¾e svoje produkty distribuuje jako Open Source.<BR><BR></DD>
-
-   <DT><B>Spolehlivost</B></DT>
-       <DD>Jsme si vìdomi, ¾e databáze musí být spolehlivá, jinak je 
-       nepou¾itelná. Sna¾íme se zveøejòovat dobøe otestovaný, stabilní 
-       kód s minimem chyb. Ka¾dá verze je více ne¾ mìsíc v beta testování, 
-       a na¹e historie verzí ukazuje, ¾e mù¾eme nabídnout stabilní, solidní 
-       verze, které jsou pøipraveny pro reálné nasazení. V této oblasti 
-       jsme srovnatelní s dal¹ími databázemi.<BR><BR></DD>
-
-   <DT><B>Podpora</B></DT>
-       <DD>Na na¹í mailové konferenci mù¾ete kontaktovat velkou skupinu 
-       vývojáøù a u¾ivatelù.problémù. Nemù¾eme garantovat opravu, 
-       nicménì komerèní databáze také ne v¾dy nabídnou opravu. Podle 
-       ohlasù je na¹e podpora hodnocena lépe ne¾ u jiných <SMALL>DBMS</SMALL> a to 
-       díky pøímému kontaktu s vývojáøi, velkou komunitou u¾ivatelù, 
-       kvalitními manuály a pøístupným zdrojovým kódem. Pro u¾ivatele, 
-       kteøí vy¾adují podporu ke konkrétním pøípadùm, existuje placená 
-       podpora (<A href="#1.6">FAQ sekce 1.6</A>).<BR><BR></DD>
-
-   <DT><B>Cena</B></DT>
-       <DD>PosgreSQL lze volnì pou¾ívat pro nekomerèní i komerèní pou¾ití. 
-       Mù¾ete do svých produktù pøidat ná¹ kód bez omezení, respektive 
-       v souladu s podmínkami na¹í licenèní smlouvy (v duchu BSD licence).<BR>
-        <BR></DD>
-   </DL>
-
-   <H4><A name="1.15">1.15</A>) Jak lze finanènì pomoci PostgreSQL?</H4>
-
-   <P>PosgreSQL má prvotøídní infrastrukturu od na¹eho zaèátku v roce 1996.
-   Vdìèíme za to Marku Fournierovi, který zalo¾il a spravoval tuto
-   infrastrukturu nìkolik let.</P>
-
-   <P>Kvalitní infrastruktura je velice dùle¾itá pro ka¾dý open source
-   projekt. Pøedchází nedorozumìním, která velice zdr¾ují pokrok v
-   projektu.</P>
-
-   <P>Tato infrastruktura není laciná. K jejímu zaji¹tìní je tøeba stále
-   hradit urèité mìsíèní a jednorázové èástky. Pokud máte Vy nebo Va¹e
-   spoleènost peníze, které nám mù¾ete darovat, obra»e se na <A href=
-   "http://store.pgsql.com/shopping/">http://store.pgsql.com/shopping/</A> a darujte je.</P>
-
-   <P>Aèkoliv webová stránka zmiòuje PostgreSQL, Inc. vklady jsou urèeny pouze
-   k podpoøe projektu PostgreSQL a nepodporují ¾ádnou existující
-   spoleènost. Pokud to vy¾adujete, mù¾ete poslat kontrolu na na¹i
-   kontaktní adresu.</P>
-   <HR>
-
-   <P>Pokud máte pøíklad úspì¹ného nasazení PostgreSQL, pøihla¹tì se na ná¹
-   advocacy site na <A href="http://advocacy.postgresql.org">http://advocacy.postgresql.org</A>.</P>
-
-   <H2 align="center">User client dotazy</H2>
-
-   <H4><A name="2.1">2.1</A>) Kde naleznu <SMALL>ODBC</SMALL> ovladaèe pro PostgreSQL?</H4>
-
-   <P>Pro PostgreSQL existují dva <SMALL>ODBC</SMALL> ovladaèe - PsqlODBC a OpenLink ODBC.</P>
-
-   <P>PsqlODBC je ke sta¾ení na <A href=
-   "http://gborg.postgresql.org/project/psqlodbc/projdisplay.php">
-   http://gborg.postgresql.org/project/psqlodbc/projdisplay.php</A>.</P>
-
-   <P>OpenLink mù¾ete získat na <A href="http://www.openlinksw.com">http://www.openlinksw.com</A>. 
-   Spolupracuje s jejich klientským programovým vybavením a je dostupný pro v¹echny jimi
-   podporované platformy (Win, Mac, Unix, VMS).</P>
-
-   <P>Tento ovladaè je urèen pro ty, kteøí vy¾adují podporu komerèní kvality,
-   nicménì freeware verze je dostupná a funkèní. Dotazy zasílejte na <A href=
-   "mailto:postgres95@openlink.co.uk">postgres95@openlink.co.uk</A>.</P>
-
-   <H4><A name="2.2">2.2</A>) Jaké nástroje lze pou¾ít pro PostgreSQL a web?</H4>
-
-   <P>Pìkný úvod do databázových technologií zabezpeèujících chod webových
-   stránek najdete na <A href="http://www.webreview.com">http://www.webreview.com</A>.</P>
-
-   <P>Pro tvorbu webu existuje excelentní rozhraní PHP, které naleznete na
-   <A href="http://www.php.net">http://www.php.net</A>.</P>
-
-   <P>Pro slo¾itìj¹í pøípady se èasto pou¾ívá Perl a CGI.pm nebo mod_perl.</P>
-
-   <H4><A name="2.3">2.3</A>) Existuje grafické rozhraní pro PostgreSQL?</H4>
-
-   <P>Pro PostgreSQL existuje nìkolik grafických rozhraní: PgAccess
-   (<A href="http://www.php.net">http://www.php.net</A>), PgAdmin III 
-   (<A href="http://www.php.net">http://www.php.net</A>), RHDB Admin
-   (<A href="http://sources.redhat.com/rhdb/">http://sources.redhat.com/rhdb/</A>) a Rekall (
-   <A href="http://www.thekompany.com/products/rekall/">http://www.thekompany.com/products/rekall/</A>). 
-   Dále je¹tì PhpPgAdmin
-   (<A href="http://phppgadmin.sourceforge.net/">http://phppgadmin.sourceforge.net/</A>) co¾ je rozhraní PostgreSQL 
-   zalo¾ené na web technologii.</P>
-
-   <P>Úplnìj¹í seznam najdete na <A href=
-   "http://techdocs.postgresql.org/guides/GUITools">http://techdocs.postgresql.org/guides/GUITools</A>.</P>
-
-   <H4><A name="2.4">2.4</A>) Které programovací jazyky mají podporu pro PostgreSQL?</H4>
-
-   <P>Vìt¹ina programovacích jazykù obsahuje rozhraní pro PostgreSQL.
-   Podívejte se do roz¹iøujících modulù Va¹eho programovacího jazyka.</P>
-
-   <P>Distribuce PostgreSQL obsahuje tato rozhraní:</P>
-   <UL>
-      <LI>C (libpq)</LI>
-      <LI>Embbedded C (ecpg)</LI>
-      <LI>Java (jdbc)</LI>
-      <LI>Python (PyGreSQL)</LI>
-      <LI>TCL (libpgtcl)</LI>
-   </UL>
-   <P>Dal¹í rozhraní jsou dostupná na <A href="http://gborg.postgresql.org">http://gborg.postgresql.org</A> 
-   v sekci <I>Drivers/Interfaces</I>.</P>
-  <HR>
-
-  <H2 align="center">Administrativní dotazy</H2>
-
-   <H4><A name="3.1">3.1</A>) Jak nainstalovat PostgreSQL jinam ne¾ do /usr/local/pgsql?</H4>
-
-   <P>Pou¾ijte volbu <I>--prefix</I> pøi spu¹tìní configure.</P>
-
-   <H4><A name="3.2">3.2</A>) Pøi startu postmaster, dostanu chybové hlá¹ení Bad System Call 
-    nebo core dump. Proè?</H4>
-
-   <P>Dùvody mohou být rùzné, ale nejprve zkontrolujte, zda Vá¹ systém
-   podporuje System V extensions. PostgreSQL vy¾aduje v jádøe podporu
-   sdílené pamìti a semaforù.</P>
-
-   <H4><A name="3.3">3.3</A>) Pøi startu postmastera dostanu hlá¹ení o chybì IpcMemoryCreate. Proè?</H4>
-
-   <P>Buïto nemáte správnì nakonfigurovanou sdílenou pamì» v jádøe nebo musite
-   zvìt¹it její velikost. Potøebná velikost je závislá na architektuøe a na
-   tom, kolik pamì»ových bufferù a backendù máte povoleno pro postmastera.
-   Pro vìt¹inu systémù s pøeddefinovaným poètem backendù a pamì»ových
-   bufferù je minimum zhruba 1MB. V PostgreSQL Administrator's Guide
-   naleznete podrobnìj¹í informace o sdílené pamìti a semaforech.</P>
-
-   <H4><A name="3.4">3.4</A>) Pøi startu postmastera dostanu hlá¹ení o chybì IpcSemaphoreCreate. 
-    Proè?</H4>
-
-   <P>Pokud dostane chybovou zprávu IpcSemaphoreCreate: semget failed (No
-   space left on device), pak va¹e jádro nemá dost volných semaforù.
-   PostgreSQL vy¾aduje jeden semafor pro ka¾dý backend v pozadí. Doèasným
-   øe¹ením je start <I>postmaster</I> s limitem backendù. Pou¾ijte pøepínaè <I>-N</I> s
-   hodnotou men¹í ne¾ 32. Úplným øe¹ením je zvý¹ení hodnot <SMALL>SEMMNS</SMALL> 
-   a <SMALL>SEMMNI</SMALL> jadra.</P>
-
-   <P>Nefunkèní semafory mohou zpùsobit pád bìhem intenzivních databázových
-   operací.</P>
-
-   <P>Pokud se tato chyba vyskytuje je¹tì nìkde jinde, mo¾ná nemáte vùbec
-   nakonfigurovány semafory ve va¹em jádøe. V PostgreSQL Administrator's
-   Guide najdete podrobnìj¹í popis po¾adavkù na sdílenou pamìt a semafory.</P>
-
-   <H4><A name="3.5">3.5</A>) Jak povolit nebo zakázat pøístup z jiných stanic?</H4>
-
-   <P>Pøi výchozím nastavení PostgreSQL odepøe pøístup z jiných stanic ne¾
-   lokální s pou¾itím UDP. Pøístup z jiných strojù není mo¾ný dokud
-   jej nepovolíte nastavením tcpip_socket v postgresql.conf <B>a</B> urèením
-   zpùsobu autentifikace v <I>$PGDATA/pg_hba.conf</I>.</P> 
-
-   <H4><A name="3.6">3.6</A>) Jak ladit databázový stroj na lep¹í výkon?</H4>
-
-   <P>Urèitì pomohou indexy. Pøíkaz <SMALL>EXPLAIN ANALYZE</SMALL> Vám umo¾ní sledovat
-   jak PostgreSQL interpretuje Vá¹ dotaz a které indexy pou¾ívá.</P>
-
-   <P>Pøi vìt¹í dávce INSERTù uva¾ujte o náhradì pøíkazem <SMALL>COPY</SMALL>. Ten je mnohem
-   rychlej¹í ne¾li samotný <SMALL>INSERT</SMALL>. Ka¾dý pøíkaz mimo blok <SMALL>BEGIN WORK/COMMIT</SMALL>
-   se provádí ve vlastní transakci. Zva¾te, zda-li by se nedalo nìkolik
-   pøíkazù spojit do jedné transakce. Tím se sní¾í re¾ie na transakce. Pøed
-   provedením rozsáhlých zmìn zru¹te indexy, které po dokonèení zmìn opìt
-   vytvoøte.</P>
-
-   <P>Máte nìkolik dal¹ích mo¾ností, jak zlep¹it výkon. Mù¾ete zakázat <I>fsyn()</I>
-   pøi startu postmastera pøepínaèi <I>-o -F</I>. Tyto pøepínaèe zabrání <I>fsync()</I>,
-   tj. zápisu na disk po ka¾dé transakci.</P>
-
-   <P>Mù¾ete zvý¹it velikost pamì»ových bufferù pou¾itých backendy tj.
-   parametr <I>-B</I> postmasteru. Pokud ale tato hodnota bude pøíli¹ velká, tak
-   mo¾ná nespustíte postmastera jeliko¾ dosáhnete limitu sdílené pamìti.
-   Ka¾dý buffer má 8K a implicitnì je 64 bufferù.</P>
-
-   <P>Dále mù¾ete pou¾ít pøepínaè <I>-S</I> k zvý¹ení limitu pamìti pro backendy na
-   doèasné tøídìní. Hodnota je mínìna v kilobytech a výchozí nastavení je
-   512, tj. 512K.</P>
-
-   <P>Mù¾ete pou¾ít pøíkaz <SMALL>CLUSTER</SMALL>, který uspoøádá fyzicky data v tabulkách
-   podle indexu. Více na manuálových stránkách pøíkazu <SMALL>CLUSTER</SMALL>.</P>
-
-   <H4><A name="3.7">3.7</A>) Jaké jsou mo¾nosti ladìní?</H4>
-
-   <P>Máte nìkolik mo¾ností jak se dostat k u¾iteèným stavovým informacím.</P>
-
-   <P>Zaprvé, pøi pøekladu pou¾ijte pøepínaè <I>--enable-cassert</I>, tím se zapne
-   monitorování a následné zastavení aplikace, kdy¾ se proces v backendu
-   dostane do neoèekávaného stavu.</P>
-
-   <P>Jak postmaster tak postgres má nìkolik pøepínaèù umo¾òujících ladìní.
-   Postmaster nastartujte tak, abyste si byli jisti, ¾e je standartní
-   výstup a standartní chybový výstup pøesmìrován do souboru logu,
-   napøíklad:</P>
-<PRE>
-    cd /usr/local/pgsql
-    ./bin/postmaster > server.log 2>&amp;1 &amp;
-</PRE>
-   <P>Tím se vytvoøí log v adresáøi PostgreSQL, Tento soubor obsahuje u¾iteèné
-   informace o problémech a chybách vyskytlých se na serveru. Postmaster má
-   pøepínaè <I>-d</I> urèující, jak podrobné mají být reportované informace, tj.
-   debug level. Pozor, pøi velké hodnotì debug levelu rychle roste velikost
-   souboru logu.</P>
-
-   <P>Pokud nebì¾í postmaster, mù¾ete spustit backend PostgreSQL z pøíkazové
-   øádky a napsat svùj <SMALL>SQL</SMALL> dotaz pøímo v backendu (doporuèeno <B>pouze</B> pro
-   ladìní). Dotaz je v tomto pøípadì ukonèen novou øádkou, nikoliv
-   støedníkem. Pokud máte aplikaci pøelo¾enou s ladícími symboly, mù¾ete
-   pou¾ít debbuger k monitorování procesu. Pokud není backend spu¹tìn
-   postmasterem, pak nebì¾í ve svém obvyklém prostøedí a tudí¾ nìkteré
-   problémy dané interakcí mezi backendy nemohou být nasimulovány.</P>
-
-   <P>Pokud bì¾í <I>postmaster</I>, spus»e <I>psql</I> v jednom oknì a pak si zjistìte <SMALL>PID</SMALL>
-   procesu postgres pou¾itého psql. V debuggeru sepøipojte k postgresql
-   <SMALL>PID</SMALL>. Pak nastavte breakpointy v debuggeru a zadejte dotaz v psql. Pokud
-   ladíte startup postgresu, pak nastavte PGOPTIONS="-W n" a spus»e <I>psql</I>.
-   Tento pøepínaè zpùsobí pauzu n sekund, tak¾e budete mít èas se pøipojit
-   k procesu, a nastavit breakpointy a pokraèovat v startup posloupnosti.</P>
-
-   <P>Pro ladìní a mìøení výkonu mohou být u¾iteèné pøepínaèe <I>-s, -A</I> a <I>-t</I>
-   programu postgres (backend).</P>
-
-   <P>Mù¾ete provést pøeklad s profilací, tak abyste vidìli kolik èasu
-   zabírají jednotlivé funkce. Soubory s profily backendù jsou ulo¾eny v
-   adresáøi <I>pgsql/data/base/dbname</I>. Profil klienta pak v jeho aktuálním
-   adresáøi. Korektní profilace v prostøedí Linux po¾aduje konfiguraci
-   systému s parametrem <I>-DLINUX_PROFILE</I>.</P>
-
-   <H4><A name="3.8">3.8</A>) Proè dostanu "Sorry, too many clients", kdy¾ se zkou¹ím pøipojit?</H4>
-
-   <P>Zvy¹te limit postmastera na maximální poèet souèasnì spu¹tìných
-   backendù.</P>
-
-   <P>Výchozí hodnota je 32 backendù. Tuto hodnotu zvý¹íte zastavením a
-   opìtovným spu¹tìním postmastera s parametrem <I>-N</I> nebo úpravou
-   <I>postgresql.conf</I>.</P>
-
-   <P>Pøi zvý¹ení hodnoty <I>-N</I> nad 32 musíte zvý¹it hodnotu <I>-B</I> nad výchozí 64,
-   <I>-B</I> musí být minimálnì dvakrát vìt¹í, nebo je¹tì lépe více. Pravdìpodobnì
-   zjistíte, ¾e pro velký poèet procesù backendu je nutné zvý¹it nìkteré
-   parametry jádra. Jsou to pøedev¹ím maximální velikost sdílené pamìti
-   <SMALL>SHMMAX</SMALL>, maximální poèet semafórù <SMALL>SEMMNS</SMALL> a <SMALL>SEMMNI</SMALL>, maximální poèet
-   procesù <SMALL>NPROC</SMALL>, maximální poèet procesù u¾ivatele <SMALL>MAXUPRC</SMALL> a maximální
-   poèet otevøených souborù <SMALL>NFILE</SMALL> a <SMALL>NINODE</SMALL>. Dùvod pro omezení maximálního
-   poètu backendù je fakt, ¾e by mohlo dojít k vyèerpání zdrojù Va¹eho
-   systému.</P>
-
-   <H4><A name="3.9">3.9</A>) K èemu slou¾í adresáø pgsql_tmp?</H4>
-
-   <P>Tento adresáø obsahuje doèasné soubory vytvoøené exekutorem dotazù.
-   Napøíklad, kdy¾ je nutné tøídìní k zaji¹tìní <SMALL>ORDER BY</SMALL> a tøídìní má vìt¹í
-   nároky na prostor ne¾ povoluje parametr <I>-S</I> backendu, pak je vytvoøen
-   doèasný soubor k ulo¾ení extra údajù.</P>
-
-   <P>Doèasné soubory jsou obvykle mazány automaticky, ale mù¾e se stát, ¾e
-   bìhem tøídìní server spadne. Zastavení a dal¹í start postmastera zajistí
-   odstranìní souborù s tìchto adresáøù.</P>
-
-   <H4><A name="3.10">3.10</A>) Proè je po¾adováno dump a obnovení (load) databáze bìhem 
-    upgrade mezi velkými verzemi PostgreSQL?</H4>
-
-   <P>PostgreSQL se minimálnì mìní bìhem malých verzí, tak¾e napø. pøi upgrade
-   z 7.2 na 7.2.1 není nutné dump a load databáze. Ale výynamné verze èasto
-   mìní interní formát systémových tabulek a datových souborù. Tyto zmìny
-   jsou natolik rozsáhlé, ¾e nelze zajistit zpìtnou kompatibilitu pro
-   datové soubory. Dump ulo¾í data v obecném formátu, tak¾e mohou být
-   naètena a pou¾ívána v novém interním formátu.</P>
-
-   <HR>
-
-   <H2 align="center">Provozní dotazy</H2>
-
-   <H4><A name="4.1">4.1</A>) Èím se li¹í binární a normální kurzor?</H4>
-
-   <P>Popis najdete v manuálové stránce <SMALL>DECLARE</SMALL></P>
-
-   <H4><A name="4.2">4.2</A>) Jak získat pouze první øádek dotazu? Náhodný øádek?</H4>
-
-   <P>Podívejte se do man. stránky pøíkazu <SMALL>FETCH</SMALL>, nebo pou¾ijte <SMALL>SELECT</SMALL> ...
-   <SMALL>LIMIT</SMALL> ...</P>
-
-   <P>I kdy¾ potøebujete získat pouze prvních nìkolik øádkù, je tøeba
-   zpracovat v¹echna data, napø. pokud dotaz má <SMALL>ORDER BY</SMALL>. Pokud v¹ak
-   existuje index, který odpovídá <SMALL>ORDER BY</SMALL>, PostgreSQL mù¾e získat
-   pouze prvních n øádkù a ukonèit zpracování dotazu.</P>
-
-   <P>K získání náhodného øádku pou¾ijte:</P>
-<PRE>
-    SELECT col 
-    FROM tab
-    ORDER BY random() 
-    LIMIT 1;
-</PRE>
-   <H4><A name="4.3">4.3</A>) Jak získám seznam tabulek nebo jinak jak jej získá psql?</H4>
-
-   <P>Pøíkaz \dt v psql zobrazí seznam tabulek. Úplný seznam pøíkazù <I>psql</I>
-   dostanete pøíkazem \?. Také se mù¾ete podívat do zdrojových kódù <I>psql</I> 
-   do souboru <I>pgsql/src/bin/psql/describe.c</I>. Ten obsahuje <SMALL>SQL</SMALL> pøíkazy, 
-   které se pou¾ívají v psql metapøíkazech. Dále mù¾ete spustit <I>psql</I>
-   s pøepínaèem <I>-E</I>, který zpùsobí zobrazení ka¾dého dotazu, které 
-   zpracování metapøíkazu vyvolá. PostgreSQL nabízí SQLi INFORMATION 
-   SCHEMA s tabulkami obsahující informace o databázi.</P>
-
-   <H4><A name="4.4">4.4</A>) Jak odstraním sloupec tabulky, jak zmìním jeho typ?</H4>
-
-   <P>Poèínaje verzí 7.3 mù¾ete pou¾ít pøíkaz <SMALL>ALTER TABLE DROP COLUMN</SMALL>. Ve
-   star¹ích verzích mù¾ete pou¾ít následující postup:</P>
-<PRE>
-    BEGIN;
-    LOCK TABLE old_table;
-    SELECT ... -- mimo sloupec, který chceme odstranit
-    INTO TABLE new_table;
-    DROP TABLE old_table;
-    ALTER TABLE new_table RENAME TO old_table;
-    COMMIT;
-</PRE>
-   <P>Pro zmìnu typu sloupce je tøeba provést:</P>
-<PRE>
-    BEGIN;
-    ALTER TABLE tab ADD COLUMN new_col new_data_type;
-    UPDATE tab SET new_col = CAST(old_col AS new_data_type;
-    ALTER TABLE tab DROP COLUMN old_col;
-    COMMIT;
-</PRE>
-   Poté proveïte <I>VACUUM FULL tab</I> - uvolníte tím diskový prostor zabraný
-   nyní ji¾ neplatnými øádky.
-
-   <H4><A name="4.5">4.5</A>) Jaká je maximální velikost øádku, tabulky a databáze?</H4>
-
-   <P>PostgreSQL má tato omezení:</P>
-<PRE>
-    Maximální velikost databáze:           neomezena (existují 32TB db)
-    Maximálné velikost tabulky:            32 TB
-    Maximální velikost øádky:              1.6 TB
-    Maximální velikost polo¾ky             1 GB
-    Maximální poèet øádkù v tabulce:       neomezeno
-    Maximální poèet sloupcù v tabulce:     250-1600 podle typù
-    Maximální poèet indexù na tabulce:     neomezeno
-</PRE>
-   <P>Ve skuteènosti nic není neomezeno, limitem bývá v¾dy dostupná disková
-   pamì» nebo velikost operaèní pamìti. Pokud máte nìkterou z tìchto hodnot
-   neobvykle velkou, mù¾e dojít ke sní¾ení výkonu.</P>
-
-   <P>Maximální velikost tabulky je 32 TB a nevy¾aduje podporu velkých souborù
-   operaèním systémem. Velké tabulky se ukládají do nìkolika 1 GB souborù
-   tak¾e limity souborového systému nejsou podstatné.</P>
-
-   <P>Maximální velikost tabulky a maximální poèet sloupcù mù¾eme
-   zeètyønásobit nastavením velikosti bloku na 32K.</P>
-
-   <H4><A name="4.6">4.6</A>) Kolik diskového prostoru je potøeba k ulo¾ení dat z </H4>
-    normálního textového souboru?
-
-   <P>PostgreSQL vy¾aduje a¾ pìtinásobek diskového prostoru k ulo¾ení dat z
-   textového souboru.</P>
-
-   <P>Napøíklad, uva¾ujme soubor se 100 tisíci øádky obsahující na ka¾dé øádce
-   celé èíslo a textový popis. Text je v prùmìru dvacet bytù dlouhý.
-   Textový soubor bude 2.8 MB dlouhý. Velikost databáze obsahující
-   odpovídající data bude zhruba 6.4 MB.</P>
-<PRE>
-    36 bytù: hlavièka øádku (pøibli¾nì)
-    24 bytù: jedna celoèíselná polo¾ka a jedna textová
-   + 4 byty: ukazatel na stránku k ntici
+<html>
+<head>
+<title>PostgreSQL FAQ</title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta http-equiv="Content-language" content="cs">
+<meta name="description" lang="en" content="Czech translation of FAQ for PostgreSQL">
+<meta name="description" lang="cs" content="Český překlad FAQ PostgreSQL">
+</head>
+<body bgcolor="#ffffff" text="#000000" link="#ff0000" vlink="#a00000" alink="#0000ff">
+<h1>Frequently Asked Questions</h1>
+<p><i>Často kladené dotazy (FAQ) PostgreSQL</i>
+</p>
+<p>Poslední aktualizace: 29. října 2007 (aktualizováno pro PostgreSQL 8.3)
+</p>
+<p>Současný správce: Bruce Momjian (bruce@momjian.us)
+</p>
+<p>Přeložil: Pavel Stěhule (pavel.stehule@gmail.com)
+</p>
+<p>Nejaktuálnější verzi tohoto dokumentu naleznete na adrese
+<a href="http://www.postgresql.org/files/documentation/faqs/FAQ.html" title="http://www.postgresql.org/files/documentation/faqs/FAQ.html">http://www.postgresql.org/files/documentation/faqs/FAQ.html</a> 
+</p>
+<p>Odpovědi na otázky vázané na konkrétní platformy naleznete na
+adrese <a href="http://www.postgresql.org/docs/faq/" title="http://www.postgresql.org/docs/faq/">http://www.postgresql.org/docs/faq/</a>.
+</p>
+<hr>
+<h2 align="center">Obecné otázky</h2>
+<a href="#item1.1">1.1</a>) Co je to PostgreSQL? Jaká je správná výslovnost slova PostgreSQL?<br>
+<a href="#item1.2">1.2</a>) Kdo řídí vývoj PostgreSQL?<br>
+<a href="#item1.3">1.3</a>) Pod jakou licencí je PostgreSQL?<br>
+<a href="#item1.4">1.4</a>) Na kterých platformách lze provozovat PostgreSQL?<br>
+<a href="#item1.5">1.5</a>) Kde mohu získat PostgreSQL?<br>
+<a href="#item1.6">1.6</a>) Jaká je poslední verze?<br>
+<a href="#item1.7">1.7</a>) Kde mohu získat podporu?<br>
+<a href="#item1.8">1.8</a>) Jak a kam hlásit chyby?<br>
+<a href="#item1.9">1.9</a>) Kde najdu informace o známých chybách nebo nepodporovaných vlastnostech?<br>
+<a href="#item1.10">1.10</a>) Jaká je dostupná dokumentace?<br>
+<a href="#item1.11">1.11</a>) Jak se mohu naučit SQL?<br>
+<a href="#item1.12">1.12</a>) Jak se mohu připojit k týmu vývojářů?<br>
+<a href="#item1.13">1.13</a>) Jak je na tom PostgreSQL v porovnání s jinými databázemi?<br>
+<a href="#item1.14">1.14</a>) Je PostgreSQL připraven na aktuální zavádění letního času v některých zemích?<br>
+<h2 align="center">Dotazy na klientská rozhraní</h2>
+<a href="#item2.1">2.1</a>) Která rozhraní jsou použitelná pro PostgreSQL?<br>
+<a href="#item2.2">2.2</a>) Jaké nástroje lze použít pro PostgreSQL a web?<br>
+<a href="#item2.3">2.3</a>) Existuje grafické rozhraní pro PostgreSQL?<br>
+<h2 align="center">Administrativní dotazy</h2>
+<a href="#item3.1">3.1</a>) Jak nainstalovat PostgreSQL jinam než do /usr/local/pgsql?<br>
+<a href="#item3.2">3.2</a>) Jak nastavit pravidla pro přístup z jiných stanic?<br>
+<a href="#item3.3">3.3</a>) Jak vyladit databázi na vyšší výkon?<br>
+<a href="#item3.4">3.4</a>) Jaké mám ladící prostředky?<br>
+<a href="#item3.5">3.5</a>) Co znamená "Sorry, too many clients", když se zkouším připojit?<br>
+<a href="#item3.6">3.6</a>) Proč je nutný dump a obnovení (load) databáze při upgradu PostgreSQL?<br>
+<a href="#item3.7">3.7</a>) Jaký hardware bych měl používat?<br>
+<h2 align="center">Provozní dotazy</h2>
+<a href="#item4.1">4.1</a>) Jak získat pouze první řádek dotazu? Náhodný řádek?<br>
+<a href="#item4.2">4.2</a>) Jak získám seznam tabulek, indexů, databází, a definovaných uživatelů. Mohu vidět dotazy, které používá psql pro zobrazení těchto informací?<br>
+<a href="#item4.3">4.3</a>) Jak změnit datový typ sloupce?<br>
+<a href="#item4.4">4.4</a>) Jaká je maximální velikost řádku, tabulky a databáze?<br>
+<a href="#item4.5">4.5</a>) Kolik diskového prostoru je potřeba k uložení dat z normálního textového souboru?<br>
+<a href="#item4.6">4.6</a>) Můj dotaz je pomalý a nepoužívá vytvořené indexy. Proč?<br>
+<a href="#item4.7">4.7</a>) Jak zjistím, jak se vyhodnocuje můj dotaz?<br>
+<a href="#item4.8">4.8</a>) Jak použít case-(in)sensitive regulární výraz? Jak použít index pro case insensitive hledání?<br>
+<a href="#item4.9">4.9</a>) Jak v dotazu detekovat, že položka je NULL? Jak bezpečně spojit dva řetězce, pokud mohou obsahovat NULL? Lze třídit podle toho, jestli je položka NULL nebo ne?<br>
+<a href="#item4.10">4.10</a>) Jaké jsou rozdíly mezi různými znakovými typy?<br>
+<a href="#item4.11.1">4.11.1</a>) Jak vytvořit serial/auto-increment položku?<br>
+<a href="#item4.11.2">4.11.2</a>) Jak získat hodnotu SERIAL po vložení řádku?<br>
+<a href="#item4.11.3">4.11.3</a>) Nezpůsobí currval() a nextval() problémy ve více uživatelském prostředí?<br>
+<a href="#item4.11.4">4.11.4</a>) Proč není vygenerované číslo použito při přerušení transakce?Proč vznikají díry v číslování prostřednictvím sekvence nebo typu SERIAL?<br>
+<a href="#item4.12">4.12</a>) Co to je OID? Co je to CTID?<br>
+<a href="#item4.13">4.13</a>) Co znamená chybové hlášení "ERROR: Memory exhausted in AllocSetAlloc()"?<br>
+<a href="#item4.14">4.14</a>) Jak zjistím, kterou verzi PostgreSQL používám?<br>
+<a href="#item4.15">4.15</a>) Jak vytvořit sloupec, který bude implicitně obsahovat aktuální čas?<br>
+<a href="#item4.16">4.16</a>) Jak provést vnější spojení (outer join)?<br>
+<a href="#item4.17">4.17</a>) Jak provést dotaz napříč několika databázemi?<br>
+<a href="#item4.18">4.18</a>) Může funkce vrátit více řádků nebo sloupců?<br>
+<a href="#item4.19">4.19</a>) Co je příčinou chyby "relation with OID xxxxx does not exist"?<br>
+<a href="#item4.20">4.20</a>) Jaké jsou možnosti replikace databází?<br>
+<a href="#item4.21">4.21</a>) Proč v dotazu nejsou rozpoznány názvy mých tabulek nebo funkcí? Proč jsou velká písmena v názvech automaticky převedena na malá písmena?<br>
+<hr>
+<h2 align="center">Obecné otázky</h2>
+<h3><a name="item1.1">1.1</a>) Co je to PostgreSQL? Jaká je správná výslovnost slova PostgreSQL?</h3>
+<p>Výslovnost PostgreSQL je <i>Post-Gres-Q-L</i>
+, nebo zjednodušeně <i>Postgres</i>
+. V řadě jazyků je slovo PostgreSQL obtížně vyslovitelný, proto se v hovoru často používá zjednodušená forma názvu. Pro ty, kteří by si rádi poslechli výslovnost, je k dispozici audiozáznam v <a href="http://www.postgresql.org/files/postgresql.mp3" title="http://www.postgresql.org/files/postgresql.mp3">MP3 formátu</a>.
+</p>
+<p>PostgreSQL je relační databáze s některými objektovými rysy, která má možnosti tradičních
+komerčních databázových systémů s několika rozšířeními, které lze najít v DBMS
+systémech příští generace. Používání PostgreSQL není omezené a veškeré zdrojové kódy jsou
+volně dostupné.
+</p>
+<p>Za vývojem PostgreSQL je mezinárodní skupina nezávislých vývojářů navzájem komunikujících
+prostřednictvím internetu. Tento projekt není řízen žádnou obchodní organizací. Pokud se chcete 
+přidat k projektu, přečtěte si vývojářské FAQ na adrese <a href="http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html" title="http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html">http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html</a> .
+</p>
+<h3><a name="item1.2">1.2</a>) Kdo řídí vývoj PostgreSQL?</h3>
+<p>Pokud budete hledat organizaci řídící vývoj PostgreSQL, budete zklamáni. Nic takového
+neexistuje. Existují pouze "core" a CVS skupiny uživatelů, ale ty existují více z administrátorských
+důvodů než z organizačních. Projekt je směrován komunitou vývojářů a uživatelů, ke které se 
+kdokoliv může připojit. Jediné co potřebuje, je přihlásit se do elektronické konference. Více ve 
+<a href="http://www.postgresql.org/docs/faqs.FAQ_DEV.html" title="http://www.postgresql.org/docs/faqs.FAQ_DEV.html">vývojářském FAQ</a>.
+</p>
+<h3><a name="item1.3">1.3</a>) Pod jakou licencí je PostgreSQL?</h3>
+<p>PostgreSQL je předmětem následujících autorských práv:
+</p>
+<p>Dílčí Copyright (c) 1996-2005, PostgreSQL Global Development Group<br>
+Dílčí Copyright (c) 1994-6, Regents of the University of California
+</p>
+<p>Uděluje se oprávnění k užití, rozmnožování, provádění úprav a
+rozšiřování tohoto softwaru a dokumentace k němu, pro jakékoli účely,
+bez licenčního poplatku a bez písemné licenční smlouvy, za podmínky,
+že na všech jeho kopiích je uvedeno oznámení o výše uvedených právech,
+jakož i obsah tohoto a dvou následujících odstavců.
+</p>
+<p>THE UNIVERSITY OF CALIFORNIA ("KALIFORNSKÁ UNIVERZITA") NENÍ V ŽÁDNÉM
+PŘÍPADĚ ODPOVĚDNA ŽÁDNÉ TŘETÍ OSOBĚ ZA PŘÍMOU, NEPŘÍMOU, ZVLÁŠTNÍ,
+NAHODILOU NEBO VÝSLEDNOU ŠKODU, VČETNĚ UŠLÉHO ZISKU, ZPŮSOBENOU UŽITÍM
+TOHOTO SOFTWARU A DOKUMENTACE K NĚMU, A TO I V PŘÍPADĚ, ŽE THE
+UNIVERSITY OF CALIFORNIA BYLA INFORMOVÁNA O MOŽNOSTI VZNIKU TAKOVÉ
+ŠKODY.
+</p>
+<p>THE UNIVERSITY OF CALIFORNIA ZEJMÉNA NEPOSKYTUJE JAKÉKOLI ZÁRUKY, A TO
+NEJEN ZÁRUKY OBCHODOVATELNOSTI A VHODNOSTI TOHOTO VÝROBKU KE
+SPECIFICKÝM ÚČELŮM. NÍŽE UVEDENÝ SOFTWARE JE POSKYTNUT "JAK STOJÍ A
+LEŽÍ" A THE UNIVERSITY OF CALIFORNIA NENÍ POVINNA ZAJISTIT JEHO
+ÚDRŽBU, PODPORU, AKTUALIZACI, VYLEPŠENÍ NEBO MODIFIKACI.
+</p>
+<p>Výše uvedené je BSD licence, běžná licence otevřeného zdroje. Není zde
+žádné omezení ohledně užití kódu zdroje. Jsme s tím spokojeni a nemáme
+v úmyslu na této skutečnosti cokoli měnit.
+</p>
+<h3><a name="item1.4">1.4</a>) Na kterých platformách lze provozovat PostgreSQL?</h3>
+<p>Stručně řečeno, PostgreSQL běží na všech moderních unixových systémech. Seznam těch, u kterých proběhlo testování, naleznete v instalačních instrukcích.
+</p>
+<p>PostreSQL také běží nativně na všech Microsof Windows systémech odvozených z Microsoft Windows NT jako jsou Windows  2000SP4, WindowsXP a Windows2003. Instalační balíček naleznete na adrese <a href="http://pgfoundry.org/projects/pginstaller" title="http://pgfoundry.org/projects/pginstaller">http://pgfoundry.org/projects/pginstaller</a>. Na starších systémech s ještě MS-DOS jádrem lze spustit PostgreSQL s emulačním programem Cygwin.
+</p>
+<p>Dále existuje port pro Novell Netware 6 port na adrese <a href="http://forge.novell.com" title="http://forge.novell.com">http://forge.novell.com</a>, a pro OS/2 verze (eComStation) na adrese <a href="http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgreSQL&stype=all&sort=type&dir=%2F" title="http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgreSQL&stype=all&sort=type&dir=%2F">http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgreSQL&stype=all&sort=type&dir=%2F</a> .
+</p>
+<h3><a name="item1.5">1.5</a>) Kde mohu získat PostgreSQL?</h3>
+<p>Pomocí webového klienta z adresy <a href="http://www.postgresql.org/ftp/" title="http://www.postgresql.org/ftp/">http://www.postgresql.org/ftp/</a> nebo klienta ftp z adresy <a href="ftp://ftp.postgresql.org/pub/" title="ftp://ftp.postgresql.org/pub/">ftp://ftp.postgresql.org/pub/</a>.
+</p>
+<h3><a name="item1.6">1.6</a>) Jaká je poslední verze?</h3>
+<p>Nejnovější verzí PostgreSQL je verze 8.2.5
+</p>
+<p>V plánu je uvolňovat každoročně jednu velkou verzi a každých několik měsíců malé verze.
+</p>
+<h3><a name="item1.7">1.7</a>) Kde mohu získat podporu?</h3>
+<p>Nejčastější forma podpory uživatelům PostgreSQL komunitou je prostřednictvím e-mailů. Na našem webovém serveru naleznete <a href="http://www.postgresql.org/community/lists/" title="http://www.postgresql.org/community/lists/">odkaz</a> na stránky,kde se můžete přihlásit do elektronické konference. Pro začátek jsou doporučené konference general nebo bugs.
+</p>
+<p>Další cestou je IRC kanál #postgresql na Freenode (irc.freenode.net). K připojení použijte Unixový příkaz irc -x '#postgresql' "$USER" irc.freenode.net nebo jakékoholiv jiného IRC klienta. V této síti existuje ještě španělská (#postgresql-es) a francouzská (#postgresqlfr) verze. Další PostgreSQL kanál naleznete na EFNet.
+</p>
+<p>Seznam společností poskytující komerční podporu naleznete na adrese <a href="http://techdocs.postgresql.org/companies.php" title="http://techdocs.postgresql.org/companies.php">http://techdocs.postgresql.org/companies.php</a>.
+</p>
+<h3><a name="item1.8">1.8</a>) Jak a kam hlásit chyby?</h3>
+<p>Vyplňte formulář na adrese <a href="http://www.postgresql.org/support/submitbug" title="http://www.postgresql.org/support/submitbug">http://www.postgresql.org/support/submitbug</a>. Na našem ftp serveru <a href="ftp://ftp.postgresql.org/pub/" title="ftp://ftp.postgresql.org/pub/">ftp://ftp.postgresql.org/pub/</a> si ověřte, že používáte aktuální verzi PostreSQL.
+</p>
+<p>Chyby reportované prostřednictvím chybového formuláře nebo zasláním mailu do PostgreSQL konference obvykle generuje následující odezvu:
+</p>
+<ul><li> Nejedná se o chybu, a proč
+</li>
+<li> Jedná se o známou chybu, která je již v seznamu úkolů <a href="http://www.postgresql.org/docs/faqs.TODO.html" title="http://www.postgresql.org/docs/faqs.TODO.html">TODO</a>
+</li>
+<li> Tato chyba byla opravena v aktuální verzi
+</li>
+<li> Tato chyba byla již opravena ve verzi, která zatím nebyla oficiálně uvolněna
+</li>
+<li> Požadavek na další doplňující informace:
+<ul><li> Operační systém
+</li>
+<li> Verze PostgreSQL
+</li>
+<li> Test reprodukující chybu
+</li>
+<li> Ladící informace
+</li>
+<li> Backtrace výstup debuggeru
+</li>
+</ul>
+</li>
+<li> Jedná se o zatím nezjištěnou chybu, pak můžete čekat
+<ul><li> Záplatu odstraňující chybu, která bude vložena do další velké nebo malé verze
+</li>
+<li> Informaci, že se jedná o chybu, kterou nelze okamžitě řešit a je proto přidána do <a href="http://www.postgresql.org/docs/faqs.TODO.html" title="http://www.postgresql.org/docs/faqs.TODO.html">TODO</a>
+</li>
+</ul>
+</li>
+</ul>
+<h3><a name="item1.9">1.9</a>) Kde najdu informace o známých chybách nebo nepodporovaných vlastnostech?</h3>
+<p>PostgreSQL podporuje rozšířenou podmnožinu SQL:2003. V našem <a href="http://www.postgresql.org/docs/faqs.TODO.html" title="http://www.postgresql.org/docs/faqs.TODO.html">TODO</a> naleznete seznam známých chyb, chybějících vlastností, a plány do budoucna.
+</p>
+<p>Odezva na požadavek na novou vlastnost PostgreSQL je obvykle:
+</p>
+<ul><li> Požadavek je již v <a href="http://www.postgresql.org/docs/faqs.TODO.html" title="http://www.postgresql.org/docs/faqs.TODO.html">TODO</a>
+</li>
+<li> Požadovaná funkce není chtěná protože
+<ul><li> Duplikuje již existující funkci, která respektuje SQL standard
+</li>
+<li> Implementací funkce by se příliš zkomplikoval kód bez relevantního přínosu
+</li>
+<li> Funkce by mohla být nebezpečná nebo nespolehlivá
+</li>
+</ul>
+</li>
+<li> Požadavek je přidán do <a href="http://www.postgresql.org/docs/faqs.TODO.html" title="http://www.postgresql.org/docs/faqs.TODO.html">TODO</a>
+</li>
+</ul>
+<p>PostgreSQL nepožívá systém pro sledování chyb, protože jsme zjistili, že je efektivnější přímo reagovat na maily a udržovat aktuální <a href="http://www.postgresql.org/docs/faqs.TODO.html" title="http://www.postgresql.org/docs/faqs.TODO.html">TODO</a>. V praxi je snaha o co nejrychlejší řešení chyb, a chyby, které by se mohly projevit u mnoha uživatelů jsou opravovány velice rychle. Jediné místo, kde lze dohledat všechny změny, rozšíření a opravy v PostgreSQL je CVS log. Poznámky k verzi "Release notes" nezachycují všechny změny, k němž došlo.
+</p>
+<h3><a name="item1.10">1.10</a>) Jaká je dostupná dokumentace?</h3>
+<p>PostgreSQL obsahuje vynikající dokumentaci zahrnující manuál, manuálové stránky a testovací příklady. Podívejte se do adresáře /doc. Manuál je přístupný online na <a href="http://www.postgresql.org/docs" title="http://www.postgresql.org/docs">http://www.postgresql.org/docs</a>.
+</p>
+<p>K dispozici jsou zdarma dvě online knihy na adresách <a href="http://www.postgresql.org/docs/books/awbook.html" title="http://www.postgresql.org/docs/books/awbook.html">http://www.postgresql.org/docs/books/awbook.html</a> a <a href="http://www.commandprompt.com/ppbook/" title="http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook/</a>. Další literaturu lze zakoupit. Nejpopulárnější je od Kerryho Douglase. Seznam dostupné literatury je na <a href="http://techdocs.postgresql.org/techdocs/bookreviews.php" title="http://techdocs.postgresql.org/techdocs/bookreviews.php">http://techdocs.postgresql.org/techdocs/bookreviews.php</a>. Ještě je kolekce technicky orientovaných článků tematicky spojených s PostgreSQL na adrese <a href="http://techdocs.postgresql.org/" title="http://techdocs.postgresql.org/">http://techdocs.postgresql.org/</a>.
+</p>
+<p>Řádkový klient psql má \d příkazy pro zobrazení informací o typech, operátorech, funkcích, agregačních funkcí, atd. Použijte \? pro zobrazení dostupných příkazů.
+</p>
+<p>Další dokumentaci najdete na našem webu.
+</p>
+<h3><a name="item1.11">1.11</a>) Jak se mohu naučit SQL?</h3>
+<p>Podívejte se do výše uvedené dokumentace. Další online knihou je "Teach Yourself SQL in 21 Days, Second Edition" na adrese <a href="http://members.tripod.com/er4ebus/sql/index.htm" title="http://members.tripod.com/er4ebus/sql/index.htm">http://members.tripod.com/er4ebus/sql/index.htm</a>. Mnoho našich uživatelů doporučuje knihu The Practical SQL Handbook, Bowman, Judith S., et al., Addison-Wesley. Další The Complete Reference SQL, Groff et al., McGraw-Hill.
+</p>
+<p>Další online tutoriály jsou dostupné na adresách:
+</p>
+<ul><li> <a href="http://www.intermedia.net/support/sql/sqltut.shtm" title="http://www.intermedia.net/support/sql/sqltut.shtm">http://www.intermedia.net/support/sql/sqltut.shtm</a>
+</li>
+<li> <a href="http://sqlcourse.com" title="http://sqlcourse.com">http://sqlcourse.com</a>
+</li>
+<li> <a href="http://www.w3schools.com/sql/default.asp" title="http://www.w3schools.com/sql/default.asp">http://www.w3schools.com/sql/default.asp</a>
+</li>
+<li> <a href="http://mysite.verizon.net/Graeme_Birchall/id1.html" title="http://mysite.verizon.net/Graeme_Birchall/id1.html">http://mysite.verizon.net/Graeme_Birchall/id1.html</a>
+</li>
+</ul>
+<h3><a name="item1.12">1.12</a>) Jak se mohu připojit k týmu vývojářů?</h3>
+<p>Prostudujte si <a href="http://www.postgresql.org/docs/faqs.FAQ_DEV.html" title="http://www.postgresql.org/docs/faqs.FAQ_DEV.html">Developer's FAQ</a>.
+</p>
+<h3><a name="item1.13">1.13</a>) Jak je na tom PostgreSQL v porovnání s jinými databázemi?</h3>
+<p>Software můžeme porovnávat z několika různých pohledů: vlastnosti, výkon, spolehlivost, podpora a cena.
+</p>
+<script></script>
+<h4> Vlastnosti </h4>
+<p>PostgreSQL nabízí většinu funkcí funkcionality velkých komerčních DBMS systémů jako jsou: transakce, vnořené dotazy, spouště, referenční integrita a sofistikovaný systém zamykání. Poskytujeme určité funkce, které ostatní systémy běžně nepodporují. Např. uživatelem definované typy, dědičnost, pravidla (rules), a MVCC architekturu.
+</p>
+<h4> Výkon </h4>
+<p>Výkon PostgreSQL je srovnatelný s ostatními komerčními nebo Open Source databázemi. V některých případech je rychlejší, jindy pomalejší. Náš výkon je obvykle +/-10% vůči ostatním databázím. 
+</p>
+<h4> Spolehlivost </h4>
+<p>Uvědomujeme si, že databáze musí být stoprocentně spolehlivá, jinak je nepoužitelná. Snažíme se, aby každá verze byla dobře otestována a obsahovala minimum chyb. Každá verze je minimálně několik měsíců v beta testovacím režimu. Do produkčního režimu se dostane, až když nedochází k dalším změnám nebo opravám. Věříme, že jsem více než srovnatelní s ostatními databázemi v této oblasti.
+</p>
+<h4> Podpora </h4>
+<p>Na našich internetových konferencích se setkává velká skupina vývojářů a uživatelů při řešení vyskytujících se problémů. 
+Naše internetové konference umožňují kontakt velké skupiny vývojářů a uživatelů. Nemůžeme garantovat opravu chyby, ale komerční DBMSs také vždy negarantují řešení problémů. Věříme ale, že díky přímému kontaktu na vývojáře, naši uživatelskou komunitu, manuálům, a dostupným zdrojovým kódům máme lepší podporu než ostatní DBMSs. Pro ty, kteří preferují komerční "per-incident" podporu, existuje společností, kteří ji nabízejí (FAQ sekce 1.7.)
+</p>
+<h4> Cena </h4>
+<p>PostgreSQL lze používat bezplatně (a to i pro komerční použití). Také můžete neomezeně používat náš kód ve svých produktech s výjimkami specifikovanými v naší licenci (přebíráme BSD licenci).
+</p>
+<h3><a name="item1.14">1.14</a>) Je PostgreSQL připraven na aktuální zavádění letního času v některých zemích?</h3>
+<p>Počínaje verzí 8.0.[4+] podporuje PostgreSQL letní čas také pro USA. Podpora letního času (daylight saving time) pro Kanadu a Západní Austrálii je obsažena ve verzích 8.0.[10+] a 8.1.[6+] a všech následujících verzích. Starší verze používaly systémovou databázi časových zón obsahující, kromě jiného, informaci o tom, zda se pro danou časovou zónu rozlišuje mezi letním a zimním časem.
+</p>
+<hr>
+<h2 align="center">Dotazy na klientská rozhraní</h2>
+<h3><a name="item2.1">2.1</a>) Která rozhraní jsou použitelná pro PostgreSQL?</h3>
+<p>PostgreSQL se distribuuje pouze s rozhraním pro jazyk C a embedded C. Všechna další rozhraní představují nezávislé projekty, které je třeba stáhnout z internetu samostatně. Osamostatnění těchto projektů umožňuje nezávislost vývojových týmů a možnost vydávat nové verze bez ohledu na vydání nové verze PostgreSQL.
+</p>
+<p>Některé programovací jazyky jako je např. PHP obsahují rozhraní pro PostgreSQL. Rozhraní pro jazyky jako je Perl, Tcl, Python a mnoho dalších jsou dostupné na adrese: <a href="http://gborg.postgresql.org" title="http://gborg.postgresql.org">http://gborg.postgresql.org</a> v sekci Drivers/Interfaces.
+</p>
+<h3><a name="item2.2">2.2</a>) Jaké nástroje lze použít pro PostgreSQL a web?</h3>
+<p>Dobrým úvodem do problematiky databází v prostředí webových stránek může být web <a href="http://www.webreview.com" title="http://www.webreview.com">http://www.webreview.com</a>.
+</p>
+<p>PHP (<a href="http://www.php.net" title="http://www.php.net">http://www.php.net</a>) je vynikajícím rozhraním pro tvorbu webů.
+</p>
+<p>Pro složitější úlohy se často používá Perl a jeho BDB:Pg rozhraní s podporou CGI - CGI.pm nebo mod_perl(u).
+</p>
+<h3><a name="item2.3">2.3</a>) Existuje grafické rozhraní pro PostgreSQL?</h3>
+<p>K dispozici je řada grafických nástrojů podporujících PostgreSQL a to od komerčních nebo open source vývojářů. Podrobný seznam naleznete na adrese 
+<a href="http://www.postgresql.org/docs/techdocs.54" title="http://www.postgresql.org/docs/techdocs.54">http://www.postgresql.org/docs/techdocs.54</a>.
+</p>
+<hr>
+<h2 align="center">Administrativní dotazy</h2>
+<h3><a name="item3.1">3.1</a>) Jak nainstalovat PostgreSQL jinam než do /usr/local/pgsql?</h3>
+<p>Při spouštění configure nastavte parametr --prefix
+</p>
+<h3><a name="item3.2">3.2</a>) Jak nastavit pravidla pro přístup z jiných stanic?</h3>
+<p>Ve výchozí konfiguraci, PostgreSQL umožňuje pouze připojení z lokálního uživatele prostřednictvím Unix domain sockets nebo TCP/IP spojení. Bez modifikace listen_addresses v souboru postgresql.conf, a povolení adresy v souboru $PGDATA/pg_hba.conf se nelze připojit k PostgreSQL z ostatních stanic. Změna výše zmíněných parametrů vyžaduje restart databázového serveru.
+</p>
+<h3><a name="item3.3">3.3</a>) Jak vyladit databázi na vyšší výkon?</h3>
+<p>Výkon systému můžete ovlivnit ve třech oblastech:
+</p>
+<h4> Změny dotazu </h4>
+<ul><li> Použitím indexů včetně částečných a funkcionálních
+</li>
+<li> Použitím COPY místo opakovaných INSERTů
+</li>
+<li> Sloučením mnoha SQL příkazů do jedné transakce snížením režie na commit
+</li>
+<li> Používáním CLUSTERU, pokud načítáte větší počet řádek podle indexu
+</li>
+<li> Použitím klauzule LIMIT v poddotazech
+</li>
+<li> Použitím předpřipravených dotazů
+</li>
+<li> Používáním ANALYZE. Tento příkaz aktualizuje statistiky, které se používají při optimalizaci dotazu
+</li>
+<li> Pravidelné použití VACUUM nebo používání pg_autovacuum
+</li>
+<li> Odstraněním indexů před rozsáhlými změnami v datech
+</li>
+</ul>
+<h4> Konfigurace serveru </h4>
+<p>Určité parametry v souboru postgresql.conf mají vliv na výkon serveru. Detaily naleznete v příručce Administrátora v Server Run-time Environment/Run-time Configuration. Další komentáře naleznete v <a href="http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.html" title="http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.html">http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.html</a> a <a href="http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html" title="http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html">http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html</a>.
+</p>
+<h4> Výběr hardware </h4>
+<p>Vliv hardware na výkon serveru je popsán v dokumentech <a href="http://candle.pha.pa.us/main/writings/pgsql/hw_performance/index.html" title="http://candle.pha.pa.us/main/writings/pgsql/hw_performance/index.html">http://candle.pha.pa.us/main/writings/pgsql/hw_performance/index.html</a> a <a href="http://www.powerpostgresql.com/PerfList/" title="http://www.powerpostgresql.com/PerfList/">http://www.powerpostgresql.com/PerfList/</a>.
+</p>
+<h3><a name="item3.4">3.4</a>) Jaké mám ladící prostředky?</h3>
+<p>Nastavením log_* proměnných v konfiguraci serveru si vynutíte logování dotazů a procesních statistik, které Vám mohou  pomoci při ladění a optimalizaci výkonu.
+</p>
+<h3><a name="item3.5">3.5</a>) Co znamená "Sorry, too many clients", když se zkouším připojit?</h3>
+<p>Překročil jste výchozí limit, který je 100 současně připojených uživatelů. V konfiguraci serveru v postgresql.conf tuto hodnotu můžete zvětšit změnou hodnoty max_connection. Nezapomeňte restartovat server.
+</p>
+<h3><a name="item3.6">3.6</a>) Proč je nutný dump a obnovení (load) databáze při upgradu PostgreSQL?</h3>
+<p>Způsob číslování je popsán v dokumentaci na <a href="http://www.postgresql.org/support/versioning" title="http://www.postgresql.org/support/versioning">http://www.postgresql.org/support/versioning</a>. Instrukce k provedení migrace na vyšší verzi jsou taktéž v dokumentaci na adrese <a href="http://www.postgresql.org/docs/current/static/install-upgrading.html" title="http://www.postgresql.org/docs/current/static/install-upgrading.html">http://www.postgresql.org/docs/current/static/install-upgrading.html</a>.
+</p>
+<h3><a name="item3.7">3.7</a>) Jaký hardware bych měl používat?</h3>
+<p>Jelikož PC jsou většinou kompatibilní, lidé mají tendence věřit, že všechna PC jsou stejně kvalitní. Což není pravda. Paměti ECC, SCSI a kvalitní základní desky jsou mnohem spolehlivější a výkonnější než lacinější hardware. PostgreSQL poběží na většině hardwaru, nicméně pokud je pro Vás spolehlivost a výkon systému důležitá,  je dobré věnovat čas nalezení  vhodné hardwarové konfigurace. Na našich elektronických konferencích můžete diskutovat o vhodných konfiguracích a značkách.
+</p>
+<hr>
+<h2 align="center">Provozní dotazy</h2>
+<h3><a name="item4.1">4.1</a>) Jak získat pouze první řádek dotazu? Náhodný řádek?</h3>
+<p>Pokud potřebujete pouze několik řádků a pokud víte kolik, použijte 
+SELECT LIMIT. Pokud bude možné použít index shodující se s ORDER BY,
+je možné, že se nebude provádět celý dotaz. Pokud neznáte počet záznamů,
+použijte kurzor a příkaz FETCH.
+</p>
+<p>Pro výběr náhodného řádku použijte příkaz ve tvaru:
+</p>
+<pre>
+SELECT col
+FROM tab
+ORDER BY random()
+LIMIT 1;
+</pre>
+<h3><a name="item4.2">4.2</a>) Jak získám seznam tabulek, indexů, databází, a definovaných uživatelů. Mohu vidět dotazy, které používá psql pro zobrazení těchto informací?</h3>
+<p>V psql příkazem \dt získáte seznam tabulek. Úplný seznam příkazů psql získáte příkazem \?. Alternativně si můžete prostudovat zdrojový kód psql - soubor pgsql/src/bin/psql/describe.c, který obsahuje SQL příkazy, které jsou generovány pro získání výstupu psql "backslash" příkazů. Také můžete nastartovat psql s parametrem -E, který způsobí zobrazení všech SQL příkazů, které se odesílají na server. PostgreSQL také podporuje SQL standard INFORMAČNÍ SCHÉMATA (standardní systémové tabulky). Klasickým dotazem do systémových tabulek získáte požadované informace o struktuře databáze.
+</p>
+<p>Systémové tabulky PostgreSQL (mimo rámec SQL standardů) používají prefix pg_. Pro zjištění struktury databáze je můžete použít také, i když preferovány jsou dotazy do informačního schématu.
+</p>
+<p>Seznam všech databází získáte příkazem psql -l
+</p>
+<p>Další inspiraci najdete v souboru pgsql/src/tutorial/syscat.source. Obsahuje ilustrační SELECTy potřebné k získání informací z systémových tabulek databáze.
+</p>
+<h3><a name="item4.3">4.3</a>) Jak změnit datový typ sloupce?</h3>
+<p>Ve verzích 8.0 a pozdějších jednoduše:
+</p>
+<pre>
+ALTER TABLE ALTER COLUMN TYPE
+</pre><p>V starších verzích:
+</p>
+<pre>
+BEGIN;
+ALTER TABLE tab ADD COLUMN new_col new_data_type;
+UPDATE tab SET new_col = CAST(old_col AS new_data_type);
+ALTER TABLE tab DROP COLUMN old_col;
+COMMIT;
+</pre><p>Po změně spusťte příkaz VACUUM FULL, aby došlo k uvolnění diskového prostoru použitého v tu chvíli již neplatnými záznamy.
+</p>
+<h3><a name="item4.4">4.4</a>) Jaká je maximální velikost řádku, tabulky a databáze?</h3>
+<p>PostgreSQL má tato omezení:
+</p>
+<table border="0">
+<tr><td>    Maximální velikost databáze: </td><td>           neomezena (existují 32TB db)
+</td></tr>
+<tr><td>    Maximální velikost tabulky: </td><td>           32 TB
+</td></tr>
+<tr><td>    Maximální velikost řádky: </td><td>             480GB
+</td></tr>
+<tr><td>    Maximální velikost položky </td><td>            1 GB
+</td></tr>
+<tr><td>    Maximální počet řádků v tabulce:  </td><td>     neomezeno
+</td></tr>
+<tr><td>    Maximální počet sloupců v tabulce:  </td><td>   250-1600 podle typů
+</td></tr>
+<tr><td>    Maximální počet indexů na tabulce:  </td><td>   neomezeno
+</td></tr>
+</table>
+<p>Ve skutečnosti nic není neomezeno, limitem bývá vždy dostupná disková
+paměť nebo velikost operační paměti. Pokud máte některou z těchto
+hodnot neobvykle velkou, může dojít ke snížení výkonu.
+</p>
+<p>Maximální velikost tabulky je 32 TB a nevyžaduje podporu velkých
+souborů operačním systémem. Velké tabulky se ukládají do několika 1 GB
+souborů takže limity souborového systému nejsou podstatné.
+</p>
+<p>Maximální velikost tabulky a maximální počet sloupců můžeme
+zečtyřnásobit nastavením velikosti bloku na 32K.
+</p>
+<p>Indexy jsou povolené pouze na sloupcích jejichž délka je menší než 2000 znaků. Pokud tuto délku překročíme a index potřebujeme pro zajištění jednoznačnosti, je vhodnější použít funkcionální index nad MD5 funkcí nebo fulltextový index.
+</p>
+<h3><a name="item4.5">4.5</a>) Kolik diskového prostoru je potřeba k uložení dat z normálního textového souboru?</h3>
+<p>PostgreSQL vyžaduje až pětinásobek diskového prostoru k uložení dat z
+textového souboru.
+</p>
+<p>Například, uvažujme soubor se 100 tisíci řádky obsahující na každé
+řádce celé číslo a textový popis. Text je v průměrně dvacet bytů
+dlouhý. Textový soubor bude 2.8 MB dlouhý. Velikost databáze
+obsahující odpovídající data bude zhruba 5.2 MB.
+</p>
+<pre>
+    24 bytů: hlavička řádku (přibližně)
+    24 bytů: jedna celočíselná položka a jedna textová
+   + 4 byty: ukazatel na stránku k entici
    ------------------------------------------------------
-    64 bytù na øádek
-
-   Velikost datové stránky PostgreSQL je 8KB
-
-    8192 bytù na stránce
-    ---------------------- = 128 øádek na stránku
-      64 bytù za øádek
-
-    100000 øádek
-    -------------------- = 782 stránek (zaokrouhleno nahoru)
-       128 øádek na stránce
-
-    782 * 8192 = 6, 406, 144 bytù (6.4 MB)
-</PRE>
-   <P>Indexy nemají tak velkou re¾ii, ale mohou být také velké, proto¾e
-   obsahují indexovaná data.</P>
-
-   <P>Hodnoty <SMALL>NULL</SMALL> jsou ulo¾eny v bitmapách, tak¾e spotøebují jen velmi málo
-   diskového prostoru.</P>
-
-   <H4><A name="4.7">4.7</A>) Jak získám seznam vytvoøených tabulek, indexù, databází?</H4>
-
-   <P><I>psql</I> má sadu metapøíkazù k zobrazení tìchto informací. Jejich seznam
-   získáte pøíkazem \?. Dále se mù¾ete podívat na obsah systémových tabulek
-   zaèínajících <I>pg_</I>. Spu¹tìní <I>psql</I> s parametrem <I>-l</I> provede výpis názvù
-   v¹ech databází.</P>
-
-   <P>Soubor <I>pgsql/src/tutorial/syscat.source</I> obsahuje <SMALL>SELECT</SMALL>y pøistupující k
-   systémovým tabulkámm.</P>
-
-   <H4><A name="4.8">4.8</A>) Mùj dotaz je pomalý a nepou¾ívá vytvoøené indexy. Proè?</H4>
-
-   <P>Ka¾dý dotaz nemusí nutnì pou¾ít existující indexy. Index se pou¾ije
-   tehdy, kdy¾ je tabulka vìt¹í ne¾ urèitá minimální velikost, a dotaz
-   vybírá pouze procentuálnì malou èást øádkù tabulky. To proto, ¾e náhodný
-   pøístup k disku daný ètením indexu mù¾e být pomalej¹í ne¾ lineární ètení
-   tabulky nebo sekvenèní ètení.</P>
-
-   <P>PostgreSQL rozhoduje o pou¾ití indexù na základì statistiky pøístupù k
-   tabulce. Tyto statistiky se shroma¾ïují pøíkazy <SMALL>VACUUM ANALYZE</SMALL> nebo
-   <SMALL>ANALYZE</SMALL>. Díky statistikám má optimizer informaci o poètu øádek v tabulce
-   a mù¾e lépe rozhodnout o pou¾ití indexù. Statistiky se uplatní pøi
-   urèení optimálního poøadí a metody spojení tabulek. Statistiky by se
-   mìli aktualizovat opakovanì, tak jak se mìní obsah tabulek.</P>
-
-   <P>Indexy nejsou obyèejnì pou¾ity pro setøídìní nebo spojení tabulek.
-   Sekvenèní zpracování následované explicitním tøídìním je obyèejnì
-   rychlej¹í ne¾ indexní ètení na velké tabulce.</P>
-
-   <P>Jinak je tomu v pøípadì pou¾ití <SMALL>LIMIT</SMALL> a <SMALL>ORDER BY</SMALL>, pøi kterém se vìt¹inou
-   index pou¾ije, výsledkem je pouze malá èást tabulky. Funkce MAX() a
-   MIN() nepou¾ívají indexy, ale je mo¾né tuté¾ hodnotu získat:</P>
-<PRE>
-    SELECT col 
-    FROM tab
-    ORDER BY col [ DESC ] 
-    LIMIT 1;
-</PRE>
-   <P>Pokud si myslíte, ¾e optimizer mylnì zvolil sekvenèní prohledávání
-   tabulky, pou¾ijte pøíkaz <CODE>SET enable_seqscan TO 'off'</CODE> a zkuste zda je
-   indexní prohledávání rychlej¹í.</P>
-
-   <P>Pøi vyhledávání na základì vzoru jako je napø. operátor <SMALL>LIKE</SMALL> nebo <I>~</I> se
-   indexy pou¾íjí pouze za urèitých skuteèností:</P>
-   <UL>
-    <LI>zaèátek hledaného vzoru musí být ukotven k zaèátku, tj.
-      <UL>
-        <LI>vzor <SMALL>LIKE</SMALL> nesmí zaèínat <I>%</I></LI>
-        <LI><I>~</I> regulární výraz musí zaèínat <I>^</I></LI>
-      </UL></LI>
-    <LI>vzor nesmí zaèínat intervalem, napø. [a-e]</LI>
-    <LI>vyhledávaní, které není Case sensitiv jako je <SMALL>ILIKE</SMALL> nebo <I>~*</I> 
-      nepou¾ívá indexy. Mù¾ete ale pou¾ít funkcionální indexy, které jsou 
-      posány v sekci <A href="#4.12">4.12</A></LI>
-    <LI>pøi inicializaci databáze (<I>initdb</I>) musí být pou¾ito C locale
-      (pozn. pøekladatele - tudí¾ v na¹ich podmínkách nepou¾itelné,
-      nepracovalo by èeské tøídìní).</LI>
-   </UL>
-   <H4><A name="4.9">4.9</A>) Jak zjistím, jak optimizer dotazu vyhodnocuje mùj dotaz?</H4>
-
-   Podívejte se do manuálové stránky pøíkazu <SMALL>EXPLAIN</SMALL>.
-
-   <H4><A name="4.10">4.10</A>) Co to je R-tree index?</H4>
-
-   <P>R-tree index se pou¾ívá pro indexování prostorových dat. Hash index
-   nemù¾e obslou¾it prohledávání oblastí. B-tree index mù¾e øídit vyhledání
-   oblastí v jedné dimenzi. R-tree index mù¾e podporovat hledání v
-   multidimenzionálních datech. Pou¾ijeme-li napøíklad R-tree index na
-   atributy typu <I>point</I>, pak systém mù¾e efektivnì odpovìdìt na dotaz -
-   vyber v¹echny body uvnitø obdélníkù.</P>
-   
-   <P>Pùvodní návrh R-tree je 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>Tyto materiály naleznete v Stonebraker's "Readings in Database Systems".</P>
-
-   <P>Vestavìné R-tree mù¾e slou¾it k indexaci polygonù a oblastí. Teoreticky
-   mù¾eme R-tree pou¾ít i pro více dimenzí (jiné ne¾ 3D). Ve skuteènosti
-   ale takové roz¹íøení R-tree vy¾aduje trochu práce a ve souèastnosti
-   chybí dokumentace jak na to.</P>
-
-   <H4><A name="4.11">4.11</A>) Co je Genetic Query Optimizer?</H4>
-
-   <P><SMALL>GEQO</SMALL> modul urychluje optimalizaci dotazù pøi spojování mno¾ství tabulek
-   metodou Genetických algoritmù (GA). To umo¾òuje získat velkého mno¾ství
-   variant spojení pøi neúplném prohledáváním.</P>
-
-   <H4><A name="4.12">4.12</A>) Jak provést vyhledávání regulárního výrazu case sensitiv,
-    insensitiv? Jak pou¾ít index pro case insensitive vyhledávání?</H4>
-
-   <P>Operátor <I>~</I> slou¾í k porování s regulárním výrazem, jeho modifikace <I>*~</I>
-   pøedstavuje case insensitive vyhledávání. Jedná se o obdobu <SMALL>LIKE</SMALL> a
-   <SMALL>ILIKE</SMALL>.</P>
-
-   <P>Pro vyhledávání bez ohledu na velká malá písmena pou¾ijeme:</P>
-<PRE>
-    SELECT * 
-    FROM tab
-    WHERE lower(col) = 'abc';
-</PRE>
-   V tomto pøípadì se nepou¾ije standardní index. Nicménì, pou¾ije se
-   funkcionální index, pokud jej vytvoøíte:
-<PRE>
-    CREATE INDEX tabindex ON tab (lower(col));
-</PRE>
-   <H4><A name="4.13">4.13</A>) Jak v dotazu detekovat, ¾e polo¾ka je NULL?</H4>
-
-   <P>Urèíte pomocí <SMALL>IS NULL</SMALL> nebo <SMALL>IS NOT NULL</SMALL></P>
-
- <H4><A name="4.14">4.14</A>) Jaké jsou rozdíly mezi rùznými znakovými typy?</H4>
-<PRE>
-Typ         Interní název       Poznámka
---------------------------------------------------------------------------
-VARCHAR(n)  varchar             omezeno maximální délkou, bez doplnìní mezerami
-CHAR(n)     bpchar              øetìzec je doplnìn mezerami do dané délky
-TEXT        text                bez horního limitu na délku
-BYTEA       bytea               pole bytù (bezpeènì lze ulo¾it i znak NULL)
-"char"      char                jeden znak
-</PRE>
-   <P>S interními názvy se setkáte v systémovém katalogu a v nìkterých
-   chybových hlá¹eních.</P>
-
-   <P>První ètyøi uvedené typy jsou tzv. varlena typy (tj. první ètyøi byty na
-   disku nesou údaj o délce, následují samotná data). Proto skuteèný
-   pou¾itý prostor je v¾dy o nìco málo vìt¹í ne¾ deklarovaná délka. Naopak,
-   tyto datové typy jsou komprimovánty <SMALL>TOAST</SMALL>em, tak¾e prostor na disku mù¾e
-   být ni¾¹í ne¾ je oèekáváno.</P>
-
-   <P><SMALL>VARCHAR(n)</SMALL> je vhodný pro ukládání textù prommìné délky s pevnì
-   stanovenou maximální délkou. <SMALL>TEXT</SMALL> je pro øetìzce bez omezení délky s
-   maximem jeden gigabajt.</P>
-
-   <P><SMALL>CHAR(n)</SMALL> slou¾í k ukládání øetìzcù stejné délky. <SMALL>CHAR(n)</SMALL> doplní prázdné
-   znaky do specifikované délky, zatímco VARCHAR(n) ulo¾í pouze pøedané
-   znaky. <SMALL>BYTEA</SMALL> je urèeno pro ukládání binárních dat, vèetnì <SMALL>NULL</SMALL> byte.
-   V¹echny zde popsané typy mají podobné výkonnostní charakteristiky.</P>
-
-   <H4><A name="4.15.1">4.15.1</A>) Jak vytvoøit serial/auto-increment pole?</H4>
-
-   <P>PostgreSQL podporuje typ <SMALL>SERIAL</SMALL>. Pøi jeho pou¾ití se automaticky vytvoøí
-   SEQUENCE. Napøíklad:</P>
-<PRE>
-    CREATE TABLE person (
-        id   SERIAL,
-        name TEXT
-    );
-</PRE>
-   je automaticky pøevedeno do
-<PRE>
-    CREATE SEQUENCE person_id_seq;
-    CREATE TABLE person (
-        id   INT4 NOT NULL DEFAULT nextval('person_id_seq'),
-        name TEXT
-    );
-    CREATE UNIQUE INDEX person_id_key ON person(id);
-</PRE>
-   Viz dokumentace <I>create_sequence</I> v manuálových stránkách. Dále mù¾ete
-   pou¾ít unikátní hodnotu <I>OID</I> ka¾dého øádku. Potom ale musíte spou¹tìt
-   <I>pg_dump</I> s pøepínaèem <I>-o</I>, tak aby zùstaly zachovány hodnoty <SMALL>OID</SMALL> (u
-   pøíkazu copy <SMALL>COPY WITH OIDS</SMALL>).
-
-   <H4><A name="4.15.2">4.15.2</A>) Jak získat hodnotu <SMALL>SERIAL</SMALL> po vlo¾ení øádku?</H4>
-
-   <P>Jednou z mo¾ností je získat budoucí hodnotu <SMALL>SERIAL</SMALL> funkcí <I>nextval()</I> pøed
-   samotným vlo¾ením a pak ji vlo¾it explicitnì. Napøíklad v jakémsi
-   pseudojazyku:</P>
-<PRE>
-    newid = execute("SELECT nextval('person_id_seq')");
-    execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
-</PRE>
-   <P>Mù¾ete pak je¹tì pou¾ít hodnotu newid v dal¹ích dotazech, napø. jako
-   hodnotu cizího klíèe. Název automaticky vytvoøené sekvence je
-   <I>tabulka_sloupec_seq</I>.</P>
-
-   <P>Alternativnì mù¾ete získat hodnotu poslednì generovou sekvencí funkcí
-   <I>currval()</I> po vlo¾ení:</P>
-<PRE>
-    execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
-    new_id = execute("SELECT currval('person_id_seq')");
-</PRE>
-   <P>Koneènì mù¾ete pou¾ít <SMALL>OID</SMALL> hodnotu vrácenou pøíkazem <SMALL>INSERT</SMALL>, ale to je
-   pravdìpodobnì nejménì pøenositelné øe¹ení. V Perlu pøi pou¾ití DBI
-   modulu Edmunda Mergleho DBD:Pg oid hodnotu získáme <I>$sth->{pg_oid_status}</I>
-   po ka¾dém <I>$sth->execute()</I>.</P>
-
-   <H4><A name="4.15.3">4.15.3</A>) Nepovede <I>currval()</I> a <I>nextval()</I> k rozhození 
-     podmínek pøi soubìhu s jinými u¾ivateli?</H4>
-
-   <P>Nikoliv, <I>currval()</I> vrací hodnotu naposledy generovanou ve va¹em
-   backendu, a ta tudí¾ není spoleèná v¹em u¾ivatelùm.</P>
-
-   <H4><A name="4.15.4">4.15.4</A>) Proè není vygenerované èíslo pou¾ito pøi pøeru¹ení transakce? 
-   Proè vznikají díry v èíslování vlastní sekvencí/SERIAL sloupce?</H4>
-
-   <P>K zaji¹tìní efektivnosti soubìhu, jsou hodnoty posloupnosti, kdy¾ se o
-   nì po¾ádá, a sekvence není zamèena do ukonèení transakce. To zpùsobuje
-   díry v èíslování ze zru¹ených transakcí.</P>
-
-   <H4><A name="4.16">4.16</A>) Co to je <SMALL>OID</SMALL>? Co je to <SMALL>TID</SMALL>?</H4>
-
-   <P>Ka¾dý øádek vytvoøený v PostgreSQL získá jedineèné <SMALL>OID</SMALL>. V¹echna <SMALL>OID</SMALL>
-   generovaná bìhem inicializace databáze jsou men¹í ne¾ 16384
-   (include/access/transam.h). V¹echna <SMALL>OID</SMALL> generovaná na po¾adavek
-   u¾ivatele jsou rovna nebo vy¹¹í této hodnotì. Normálnì, v¹echna <SMALL>OID</SMALL> jsou
-   jedineèná nejen uvnitø tabulky nebo databáze, ale v rámci celé instalace
-   PostgreSQL</P>
-
-   <P>PostgreSQL pou¾ívá <SMALL>OID</SMALL> ve svém interním systému tabulek k vytvoøení
-   relací. Tato <SMALL>OID</SMALL> mohou být pou¾ita k identifikaci konkrétního u¾ivatele
-   a pou¾ita v spojení. Pro <SMALL>OID</SMALL> hodnoty je doporuèen typ <SMALL>OID</SMALL>. Nad tímto
-   sloupcem mù¾ete vytvoøit index pro urychlení pøístupu.</P>
-
-   <P><SMALL>OID</SMALL> jsou dána v¹em øádkùm z centrální oblasti a jsou pou¾ita v ka¾dé
-   databázi. Pokud potøebujete zmìnit <SMALL>OID</SMALL>, nebo chcete zkopírovat tabulku s
-   pùvodními <SMALL>OID</SMALL>, lze pou¾ít:</P>
-<PRE>
-        CREATE TABLE new_table(old_oid oid, mycol int);
-        SELECT old_oid, mycol INTO new FROM old;
-        COPY new TO '/tmp/pgtable';
-        DELETE FROM new;
-        COPY new WITH OIDS FROM '/tmp/pgtable';
-</PRE>
-   <P><SMALL>OID</SMALL> jsou ulo¾ena jako 4bajtový integer a pøeteèou po ètyøech miliardách.
-   Nebylo hlá¹eno, ¾e by se tak nìkdy stalo, pøesto ale plánujeme odstranit
-   tento limit døív ne¾ se tak stane.</P>
-    
-   <P><SMALL>TID</SMALL> se pou¾ívají i identifikaci fyzických øádkù s hodnotou bloku a
-   offsetu. TIDs se mìní modifikací øádkù (pou¾ívá se jako ukazatel indexu
-   fyzického øádku).</P>
-
-   <H4><A name="4.17">4.17</A>) Jaký je význam nìkterých výrazù pou¾itých v PostgreSQL?</H4>
-
-   <P>V nìkterých zdrojových kódech nebo star¹í dokumentaci se mù¾ete setkat s
-   následujícími výrazy, které mají ¹ir¹í význam. Zde je pøíklad nekterých:</P>
-   <UL>
-      <LI> tabulka, relace, tøída (table, relation, class)</LI>
-      <LI> øádek, záznam, ntice (row, record, tuple)</LI>
-      <LI> sloupec, polo¾ka, atribut (column, field, attribute)</LI>
-      <LI> vyhledání, výbìr (retrieve, select)</LI>
-      <LI> náhrada, úprava (replace, update)</LI>
-      <LI> pøidání, vkládání (append, insert)</LI>
-      <LI> OID, serial value (OID, serial value)</LI>
-      <LI> portal, kurzor (portal, cursor)</LI>
-      <LI> range variable, jméno tabulky, alias tabulky (range
-        variable, table name, table alias)</LI>
-   </UL>
-
-   <P>seznam tìchto výrazù mù¾ete nalézt na
-   <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>) Proè jsem získal chybové hlá¹ení "ERROR: Memory exhausted in AllocSetAlloc()"?</H4>
-
-   <P>Pravdìpodobnì do¹lo k vyèerpání virtuální pamì»i na Va¹em systému, nebo
-   jádro má nízký limit pro urèité zdroje. Vyzkou¹ejte pøed startem
-   posmatera</P>
-<PRE>
-    ulimit -d 262144
-    limit datasize 256m
-</PRE>
-   <P>Zále¾í na Va¹em shellu, zda budou tyto pøíkazy úspì¹né, mìly by zvý¹it
-   limit datového segmentu pro Va¹e procesy a umo¾nit tak dokonèení dotazu.
-   Tyto pøíkazy se aplikují na aktuální proces a v¹echny synovské procesy
-   vytvoøené po provedení pøíkazu. Pokud máte problémy s SQL klientem
-   proto¾e backend vrací pøíli¹ mnoho dat, zkuste zvý¹it limity pøed
-   startem klienta.</P>
-
-   <H4><A name="4.19">4.19</A>) Jak se dozvím, kterou verzi PostgreSQL pou¾ívám?</H4>
-
-   <P>V psql spus»te <CODE>SELECT version();</CODE></P>
-
-   <H4><A name="4.20">4.20</A>) Proè operace s velkými objekty konèí "invalid large obj descriptor"?</H4>
-
-   <P>V¹echny operace s velkými objekty - <CODE>lo_open</CODE>, <CODE>lo_close</CODE>, ... musíte
-   spou¹tìt v transakci, tj. mezi pøíkazy <CODE>BEGIN WORK</CODE> a <CODE>COMMIT</CODE>.</P>
-
-   <P>PostgreSQL uvolòuje handle velkých objektù pøi skonèení transakce. Pokud
-   budete pracovat s velkými objekty mimo transakci, pravdìpodobnì
-   dostanete toto chybové hlá¹ení, proto¾e handle ji¾ budou neplatné.</P>
-
-   Pokud pou¾íváte interface podobné <SMALL>ODBC</SMALL> musíte nastavit <CODE>set 
-   auto_commit off</CODE>.
-
-   <H4><A name="4.21">4.21</A>) Jak vytvoøit sloupec obsahující implicitnì aktuální datum?</H4>
-
-   <P>Pou¾ijte <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>) Proè jsou moje vnoøené dotazy pou¾ívající IN tak pomalé?</H4>
-
-   <P>Døívìj¹í verze (pøed 7.4) spojovali vnoøené dotazy k vnìj¹ím sekvenèním
-   ètením výsledku poddotazu pro ka¾dý øádek vnìj¹ího dotazu. Pokud poddotaz
-   vrátil nìkolik málo øádkù <SMALL>IN</SMALL> bylo rychlé. Pro ostatní pøípady je vhodné
-   nahradit <SMALL>IN</SMALL> <SMALL>EXISTS</SMALL>:</P>
-<PRE>
-    SELECT * 
-    FROM tab
-    WHERE col IN (SELECT subcol FROM subtab);
-</PRE>
-<p>na:</p>
-<PRE>
-   SELECT * 
+    52 bytů na řádek
+</pre><p>Velikost datové stránky PostgreSQL je 8192 bytů (8KB)
+</p>
+<pre>
+ 8192 bytů na stránce
+---------------------- = 158 řádek na stránku
+  52 bytů za řádek
+
+100000 řádek
+----------------------- = 633 stránek (zaokrouhleno nahoru)
+   158 řádek na stránce
+
+633 datových stránek * 8192 bytů na každou stránku = 5,185,536 bytů (5.2 MB)
+</pre><p>Indexy nemají tak velkou režii, ale mohou být také velké, protože
+obsahují indexovaná data.
+</p>
+<p>Hodnoty NULL jsou uloženy v bitmapách, takže zabírají jen velmi málo
+diskového prostoru.
+</p>
+<h3><a name="item4.6">4.6</a>) Můj dotaz je pomalý a nepoužívá vytvořené indexy. Proč?</h3>
+<p>Každý dotaz nemusí nutně použít existující indexy. Index se použije
+tehdy, když je tabulka větší než určitá minimální velikost, a dotaz
+vybírá pouze procentuálně malou část řádků tabulky. To proto, že
+náhodný přístup k disku daný čtením indexu může být pomalejší než
+lineární čtení tabulky nebo sekvenční čtení.
+</p>
+<p>PostgreSQL rozhoduje o použití indexů na základě statistiky přístupů k
+tabulce. Tyto statistiky se shromažďují příkazy VACUUM ANALYZE nebo
+ANALYZE. Díky statistikám má optimizer informaci o počtu řádek v
+tabulce a může lépe rozhodnout o použití indexů. Statistiky se uplatní
+při určení optimálního pořadí a metody spojení tabulek. Statistiky by
+se měli aktualizovat opakovaně, tak jak se mění obsah tabulek.
+</p>
+<p>Indexy nejsou obyčejně použity pro setřídění nebo spojení tabulek.
+Sekvenční zpracování následované explicitním tříděním je obyčejně
+rychlejší než použití indexu na velké tabulce.
+</p>
+<p>Jinak je tomu v případě použití LIMIT a ORDER BY, při kterém se
+většinou index použije, jelikož je výsledkem pouze malá část tabulky.
+</p>
+<p>Pokud si myslíte, že optimizer mylně zvolil sekvenční prohledávání
+tabulky, použijte příkaz SET enable_seqscan TO 'off' a zkuste zda je
+prohledávání s indexem rychlejší.
+</p>
+<p>Při vyhledávání na základě vzoru jako je např. operátor LIKE nebo ~ se
+indexy použijí pouze za určitých skutečností:
+</p>
+<ul><li> začátek hledaného vzoru musí být ukotven k začátku, tj.
+<ul><li> vzor LIKE nesmí začínat %
+</li>
+<li> ~ regulární výraz musí začínat ^
+</li>
+</ul>
+</li>
+<li> vzor nesmí začínat intervalem, např. [a-e]
+</li>
+<li> vyhledávaní, které není Case sensitiv jako je ILIKE nebo ~* nepoužívá indexy. Můžete ale použít funkcionální indexy, které jsou popsány v sekci 4.8
+</li>
+<li> při inicializaci databáze (initdb) musí být použito C locale nebo vytvořte speciální text_pattern_index, který umožní, při respektování zmíněných podmínek použití indexu operací LIKE. Pro vyhledávání celých slov je možné a výhodné použít fulltext.
+</li>
+</ul>
+<h3><a name="item4.7">4.7</a>) Jak zjistím, jak se vyhodnocuje můj dotaz?</h3>
+<p>Podívejte se do nápovědy k příkazu EXPLAIN.
+</p>
+<h3><a name="item4.8">4.8</a>) Jak použít case-(in)sensitive regulární výraz? Jak použít index pro case insensitive hledání?</h3>
+<p>Vyhledávání prostřednictvím regulárních vzorů zajišťuje operátor ~, který je case-sensitive. Jeho case-insensitive varianta je operátor ~*. Case-insensitive variací operátoru LIKE je operátor ILIKE.
+</p>
+<p>Case-insensitive vyhledání se řeší:
+</p>
+<pre>
+SELECT *
+FROM tab
+WHERE lower(col) = 'abc';
+</pre><p>Tento dotaz nepoužije standardní index. Musíte použít tzv. funkcionální index:
+</p>
+<pre>
+CREATE INDEX tabindex ON tab (lower(col));
+</pre><p>Pokud index vytvoříme jako unikátní, tak můžeme ukládat řetězce obsahující malá i velká písmena, ale nikoliv řetězce, které se od sebe odlišují jen v malých a velkých písmenech. K zajištění zápisu řetězce obsahující pouze malá nebo pouze velká písmena použijte CHECK kontroly nebo triggery.
+</p>
+<h3><a name="item4.9">4.9</a>) Jak v dotazu detekovat, že položka je NULL? Jak bezpečně spojit dva řetězce, pokud mohou obsahovat NULL? Lze třídit podle toho, jestli je položka NULL nebo ne?</h3>
+<p>Pokud chcete testovat hodnotu NULL použijte operátor IS:
+</p>
+<pre>
+   SELECT *
    FROM tab
-   WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
-</PRE>
-   <P>Pro urychlení vytvoøete index pro subcol. </P>
-
-   <P>Ve verzi 7.4 a pozdìj¹ích, <SMALL>IN</SMALL> pou¾ívá stejnì sofistikovanou techniku
-   spojování tabulek jako ostatní dotazy a je preferovaný pøed <SMALL>EXISTS</SMALL>.</P>
-
-   <H4><A name="4.23">4.23</A>) Jak provést vnìj¹í spojení (outer join)?</H4>
-
-   <P>PostgreSQL podporuje vnìj¹í spojení tabulek standardními SQL pøíkazy.
-   Zde jsou dva pøíklady:</P>
-<PRE>
-    SELECT * 
-    FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
-</PRE>
-   nebo
-<PRE>
-    SELECT * 
-    FROM t1 LEFT OUTER JOIN USING (col);
-</PRE>
-   <P>Tyto identické dotazy napojí t1.col na t2.col a je¹tì pøidá nepøipojené
-   øádky z t1 (které nemají obdoby v t2). Pravé spojení (<SMALL>RIGHT JOIN</SMALL>) pøidá
-   nepøipojené øádky z t2. <SMALL>FULL JOIN</SMALL> vrátí v¹echny øádky, vèetnì
-   nepøipojených z tbulek t1 a t2. Klíèové slovo <SMALL>OUTER</SMALL> je nepovinné a vá¾e
-   se na <SMALL>LEFT</SMALL>, <SMALL>RIGHT</SMALL> a <SMALL>FULL</SMALL> join. Bì¾né 
-   spojení se nazývá <SMALL>INNER JOIN</SMALL>.</P>
-
-   <P>V døívìj¹ích verzích se vnìj¹í spojení tabulek mohlo simulovat pomocí
-   <SMALL>UNION</SMALL> a <SMALL>NOT IN</SMALL>. Napøíklad pro spojení tabulek tab1 a tab2, je
-   následující dotaz ekvivalentní k vnìj¹ímu spojení dvou tabulek:</P>
-<PRE>
-    SELECT tab1.col2, tab2.col2 
-    FROM tab1, tab2
-    WHERE tab1.col1 = tab2.col1
-    UNION ALL
-    SELECT tab1.col2, NULL 
-    FROM tab1
-    WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
-    ORDER BY col1;
-</PRE>
-
-   <H4><A name="4.24">4.24</A>) Jak provést dotaz z více databází?</H4>
-
-   <P>PostgreSQL nepodporuje dotazy do jiné ne¾ aktuální databáze.</P>
-
-   <P><I>contrib/dblink</I> nabízí funkce umo¾òující provedení dotazu v jiné 
-   databázi. Klient si mù¾e otevøít simultální pøipojení do rùzných
-   db bez omezení.</P>
-
-   <H4><A name="4.25">4.25</A>) Mù¾e funkce vrátit více øádkù nebo sloupcù?</H4>
-
-   <P>V PostgreSQL 7.3 mù¾ete jednodu¹e vracet více øádkù nebo sloupcù z
-   funkce, viz:
-   <A href="http://techdocs.postgresql.org/guides/SetReturningFunctions">http://techdocs.postgresql.org/guides/SetReturningFunctions</A>.</P>
-
-   <H4><A name="4.26">4.26</A>) Proè nelze spolehlivì vytváøet a ru¹it doèasné tabulky v PL/pgSQL funkcích?</H4>
-
-   <P>Pøelo¾ený kód PL/pgSQL funkce je ulo¾en ve vyrovnávací pamìti, tj.
-   funkce je pøekládána pouze pøi zmìnì kódu, nikoliv pøed ka¾dým voláním
-   funkce. Nechtìným vedlej¹ím efektem je, ¾e volání funkce sel¾e, kdy¾ se
-   funkce odkazuje na doèasnou tabulku, pokud tato tabulka byla od pøekladu
-   funkce zru¹ena (aèkoliv ji¾ byla znovu vytvoøena a existuje). Jediným
-   øe¹ením problému je pøístup k doèasné tabulce pomocí <SMALL>EXECUTE</SMALL>, tj.
-   dynamické provádìní dotazu. Tento pøíkaz zajistí opakovaný pøeklad
-   dotazu pøi ka¾dém volání funkce.</P>
-
-   <H4><A name="4.27">4.27</A>) Jaké jsou mo¾nosti replikace databází?</H4>
-
-   <P>Existuje nìkolik dostupných øe¹ení master/slave replikací, tj umo¾òují
-   modifikace master databáze a slave databázím umo¾òují pouze ètení. Na
-   konci <A href="http://gborg.PostgreSQL.org/genpage?replication_research">http://gborg.PostgreSQL.org/genpage?replication_research</A> najdete
-   jejich seznam. Na øe¹ení multi-master replikaci se pracuje na
-   <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>) Jaké jsou mo¾nosti ¹ifrování databází?</H4>
-     <UL>
-     <LI><I>contrib/pgcrypto</I> obsahuje ¹ifrovací funkce pou¾itelné v SQL
-       dotazech.</LI>
-     <LI>K ¹ifrování pøenosu dat z klienta na server, musí být server
-       pøelo¾en s podporou <I>ssl</I> a pøepínaè <I>ssl</I> v <I>postgresql.conf</I> musí být
-       nastaven na hodnotu true. Klient musí mít vytvoøen záznam hostssl v
-       <I>pg_hba.conf</I> a také mít povolen re¾im <I>ssl</I>. Lze pou¾ít i jiné
-       prostøedky, nejen nativní podporu ssl v PostgreSQL, napø. stunel a
-       ssh.</LI>
-     <LI>Hesla u¾ivatelù databáze jsou za¹ifrována poèínaje verzí 7.3. Ve
-       star¹ích verzích toto chování muselo být vynuceno volbou
-       <I>PASSWORD_ENCRYPTION</I> v <I>postgresql.conf</I></LI>
-     <LI> Server mù¾e bì¾et na ¹ifrovaném souborovém systému.</LI>
-    </UL>
-   <HR>
-
-   <H2 align="center">Roz¹iøování PostgreSQL</H2>
-
-   <H4><A name="5.1">5.1</A>) Napsal jsem UDF funkci, PostgreSQL v¹ak konèí dump core?</H4>
-   <P>Problém mù¾e být zpùsoben mnoha okolnostmi. Vyzkou¹ejte si svoji funkci
-   nejdøíve v nìjaké jednoduché aplikaci.</P>
-
-   <H4><A name="5.2">5.2</A>) Jak mohu pøispìt nìjakými ¹ikovnými datovými typy a funkcemi do PostgreSQL?</H4>
-
-   <P>Po¹lete své roz¹íøení do konference pgsql-hackers, a ono pak mo¾ná
-   skonèí v podadresáøi contrib.</P>
-
-   <H4><A name="5.3">5.3</A>) Jak napsat funkci v C vracející ntici?</H4>
-
-   <P>Funkce vracející tabulky jsou podporované PostgreSQL 7.3 a vy¹¹í pro
-   jazyky C, PL/PgSQL a SQL. Více naleznete v The Programmer's Guide.
-   Pøíklady tìchto funkcí pro C naleznete v <I>contrib/tablefunc</I>.</P>
-
-   <H4><A name="5.4">5.4</A>) Modifikoval jsem zdrojové soubory. Tato zmìna nebyla pøi rekompilaci vzata v potaz. Proè?</H4>
-
-   <P><I>Makefile</I> nemá informace o závislostech mezi hlavièkovými soubory. Musíte
-   provést <I>make clean</I> a pak <I>make</I>. Pokud pou¾íváte <SMALL>gcc</SMALL>, mù¾ete pou¾ít
-   pøepínaè <I>--enable-depend</I> pøíkazu <I>configure</I> k automatickému øe¹ení
-   závislostí pøekladaèem.</P>
- </BODY>
-</HTML>
+   WHERE col IS NULL;
+</pre><p>K spojení řetězců, které mohou obsahovat hodnotu NULL, používejte funkci COALESCE(), např.:
+</p>
+<pre>
+   SELECT COALESCE(col1, '') || COALESCE(col2, '')
+   FROM tab
+</pre><p>Pokud chcete třídit podle hodnoty NULL, použijte výraz IS NULL nebo IS NOT NULL v klauzuli ORDER. Hodnota pravda má přednost před hodnotou false a tedy pokud použijete:
+</p>
+<pre>
+   SELECT *
+   FROM tab
+   ORDER BY (col IS NOT NULL)
+</pre><p>tak záznamy s NULL budou na začátku setříděných dat.
+</p>
+<h3><a name="item4.10">4.10</a>) Jaké jsou rozdíly mezi různými znakovými typy?</h3>
+<table border="0">
+<tr><td>Typ </td><td> Interní název </td><td> Poznámky
+</td></tr>
+<tr><td> VARCHAR(n)</td><td> varchar</td><td> n určuje maximální délku
+</td></tr>
+<tr><td> CHAR(n)</td><td> bpchar </td><td> řetězec je do dané délky rozšířen mezerami
+</td></tr>
+<tr><td> TEXT</td><td> text</td><td> bez omezení délky
+</td></tr>
+<tr><td> BYTEA</td><td> bytea</td><td> pole bytů nespecifikované délky
+</td></tr>
+<tr><td> "char"</td><td> char</td><td> jeden znak
+</td></tr>
+</table>
+<p>Na interní názvy můžete narazit v systémovém katalogu nebo v některých chybových hlášeních.
+</p>
+<p>Čtyři první typy jsou tzv. varlena typy (první čtyři byty na disku jsou obsahují délku, ostatní obsahují vlastní data). Skutečně obsazený prostor je tedy o něco málo větší než deklarovaná velikost. Na druhou stranu, delší řetězce jsou komprimovány, takže obsazený prostor na disku může být menší než se čeká.
+</p>
+<p>VARCHAR(n) je vhodný pro ukládání různě dlouhých řetězců u kterých známe délkové omezení, TEXT pro řetězce bez omezení délky (maximum je jeden gigabyte).
+</p>
+<p>CHAR(n) se používá pro uložení stejně dlouhých řetězců. CHAR(n) doplní mezerami na specifikovanou délku, VARCHAR(n) hodnoty se ukládají tak jak jsou. BYTEA je pro ukládání binárních dat - non ASCII hodnot. Všechny zmíněné typy mají podobné výkonové charakteristiky.
+</p>
+<h3><a name="item4.11.1">4.11.1</a>) Jak vytvořit serial/auto-increment položku?</h3>
+<p>V PostgreSQL můžete použít datový typ SERIAL. Jeho použitím se automaticky vytvoří sekvence.
+Například:
+</p>
+<pre>
+CREATE TABLE person (
+  id   SERIAL,
+  name TEXT
+);
+</pre><p>je automaticky transformováno na:
+</p>
+<pre>
+CREATE SEQUENCE person_id_seq;
+CREATE TABLE person (
+  id   INT4 NOT NULL DEFAULT nextval('person_id_seq'),
+  name TEXT
+);
+</pre><p>Podrobnější informace najdete v manuálu v popisu příkazu create_sequence.
+</p>
+<h3><a name="item4.11.2">4.11.2</a>) Jak získat hodnotu SERIAL po vložení řádku?</h3>
+<p>Nejjednodušším způsob, jak získat vygenerovanou hodnotu typu SERIAL, je využít klauzuli RETURNING. Pro tabulku z 4.11.1 vypadá takto:
+</p>
+<pre>
+INSERT INTO person (name) VALUES ('Blaise Pascal') RETURNING id;
+</pre><p>Také můžete použít funkci nextvall() a její výsledek použít v příkazu INSERT, nebo zavolat currval() po provedení příkazu INSERT.
+</p>
+<h3><a name="item4.11.3">4.11.3</a>) Nezpůsobí currval() a nextval() problémy ve více uživatelském prostředí?</h3>
+<p>Ne, currval vrací vždy hodnotu, která byla vygenerována pro vás.
+</p>
+<h3><a name="item4.11.4">4.11.4</a>) Proč není vygenerované číslo použito při přerušení transakce?Proč vznikají díry v číslování prostřednictvím sekvence nebo typu SERIAL?</h3>
+<p>Poté co sekvence vygeneruje nové číslo, tak se nedochází k zamčení sekvence a nečeká se na úspěšné nebo neúspěšné dokončení transakce. Odvoláním transakce, která si vyžádala čísla sekvence se tato čísla nenávratně ztratí.
+</p>
+<h3><a name="item4.12">4.12</a>) Co to je OID? Co je to CTID?</h3>
+<p>V případě, že tabulku nezaložíme s atributem WITHOUT OIDS, tak má každý řádek unikátní identifikační číslo OID. Toto číslo je 4 bajtové celé číslo, které je jedinečné v celé instalaci. Přeteče po 4 miliardách řádků. PostgreSQL používá OIDs jako interní linky v interních systémových tabulkách.
+</p>
+<p>K získání unikátního čísla v nesystémových tabulkách je vhodnější použití typu SERIAL než OID, jelikož sekvence SERIAL se používá pouze pro jednu tabulku a je tudíž méně náchylná na přetečení. Pokud byste se toho obávali, použijte typ SERIAL8.
+</p>
+<p>CTID se používá k identifikaci konkrétního fyzického řádku. CTID se mění pokud je řádek modifikován nebo znovu načten. Používají ho indexy jako adresaci fyzických řádků.
+</p>
+<h3><a name="item4.13">4.13</a>) Co znamená chybové hlášení "ERROR: Memory exhausted in AllocSetAlloc()"?</h3>
+<p>Pravděpodobně jste vyčerpal dostupnou virtuální paměť, nebo tvůj kernel
+má příliš nízké limity u určitých zdrojů. Před startem PostgreSQL vyzkoušejte:
+</p>
+<pre>
+ulimit -d 262144
+limit datasize 256m
+</pre><p>Možná, že se projde pouze jeden příkaz - záleží to na vašem shellu.
+Měl by zvednout limity datových segmentů vašich procesů na dostatečně velkou
+hodnotu a snad umožnit dokončení dotazu. Změna limitů se bude aplikovat 
+pouze na aktuální proces a na všechny nově vytvořené procesy. Jestliže máte
+problém s SQL klientem, protože vám server vrátil příliš dat, zkuste to
+před startem klienta.
+</p>
+<h3><a name="item4.14">4.14</a>) Jak zjistím, kterou verzi PostgreSQL používám?</h3>
+<p>V psql napište:
+</p>
+<pre>
+SELECT version();
+</pre>
+<h3><a name="item4.15">4.15</a>) Jak vytvořit sloupec, který bude implicitně obsahovat aktuální čas?</h3>
+<p>Použijte CURRENT_TIMESTAMP:
+</p>
+<pre>
+CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
+</pre>
+<h3><a name="item4.16">4.16</a>) Jak provést vnější spojení (outer join)?</h3>
+<p>PostgreSQL podporuje standardní SQL syntaxi pro vnější spojení. Zde jsou 
+dva příklady:
+</p>
+<pre>
+SELECT *
+FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
+</pre><p>nebo
+</p>
+<pre>
+SELECT *
+FROM t1 LEFT OUTER JOIN t2 USING (col);
+</pre><p>Tyto identické dotazy spojí sloupec t1.col k sloupci t2.col, a ještě vrátí všechny nespárované řádky t2 (ty, které nedohledá v t2). RIGHT JOIN by připojil všechny nespárované řádky z t2. FULL JOIN vrátí všechny spárované řádky i všechny zbývající řádky z obou tabulek. Klíčové slovo OUTER je volitelné. Běžná operace JOIN se také označuje jako vnitřní spojení.
+</p>
+<h3><a name="item4.17">4.17</a>) Jak provést dotaz napříč několika databázemi?</h3>
+<p>Neexistuje žádný způsob, jak se v dotazu odkazovat na tabulky z jiné než aktuální databáze. A to protože má systémové tabulky uložené nezávisle v každé databázi a není tak úplně zřejmé, jak by se dotaz provedený napříč databázemi měl chovat.
+</p>
+<p>Jeden z doplňků dblink umožňuje dotaz nad několika tabulkami pomocí funkcí. Druhý způsob je simultální připojení klienta ke všem relevantním databázím a sloučení výsledku na straně klienta.
+</p>
+<h3><a name="item4.18">4.18</a>) Může funkce vrátit více řádků nebo sloupců?</h3>
+<p>Jde to jednoduše pomocí set-returning funkce. Více na 
+<a href="http://www.postgresql.org/docs/techdocs.17" title="http://www.postgresql.org/docs/techdocs.17">http://www.postgresql.org/docs/techdocs.17</a>.
+</p>
+<h3><a name="item4.19">4.19</a>) Co je příčinou chyby "relation with OID xxxxx does not exist"?</h3>
+<p>Nechtěným vedlejším efektem kešování SQL dotazů v PL/pgSQL funkci je problém s neplatnými odkazy na dočasné tabulky, které byly od prvního spuštění funkce zrušeny a znovu vytvořeny před dalším spuštěním PL/pgSQL funkce. Řešením je použít příkaz EXECUTE a to proto, že prováděcí plán SQL příkazu spouštěného příkazem EXECUTE se vytváří pokaždé znovu (neukládá se do cache).
+</p>
+<p>Tento problém by se neměl vyskytovat u PostgreSQL verze 8.3 a vyšších verzích.
+</p>
+<h3><a name="item4.20">4.20</a>) Jaké jsou možnosti replikace databází?</h3>
+<p>Replikaci databáze umožňuje několik technoligií. Každá má určité výhody a nevýhody.
+</p>
+<p>Master/Slave replikaci podporuje jeden hlavní server, který přijímá požadavky na zápis a čtení, a několik podřízených serverů, které umožňují pouze čtení (SELECT). Nejrozšířenějším volně dostupným řešením tohoto typu je <a href="http://main.slony.info/" title="http://main.slony.info/">Slony-I</a>.
+</p>
+<p>Replikace typu Multi-master podporuje existenci několika serverů s povoleným zápisem na více replikovaných serverech. Toto řešení zvyšuje zátěž serverů, protože je nutná synchronizace serverů. Nejrozšířenějším volně dostupným řešením je <a href="http://pgfoundry.org/projects/pgcluster/" title="http://pgfoundry.org/projects/pgcluster/">PGCluster</a>.
+</p>
+<p>Ještě existuje několik komerčních a hardware řešení replikací podporujících různé modely replikace.
+</p>
+<h3><a name="item4.21">4.21</a>) Proč v dotazu nejsou rozpoznány názvy mých tabulek nebo funkcí? Proč jsou velká písmena v názvech automaticky převedena na malá písmena?</h3>
+<p>Nejčastějším důvodem nerozpoznání názvu objektu bylo použití vložení názvu sloupce nebo tabulky  mezi uvozovky při zakládání tabulky. Pokud se název zapíše mezi uvozovky, pak je case sensitive, a v důsledku toho je nutné názvy těchto sloupců nebo tabulek v SQL příkazech také vkládat mezi uvozovky (pokud obsahují velká písmena). Některé programy, jako je například pgAdmin, automaticky používají uvozovky. Takže pokud chcete, aby systém identifikoval identifikátor, musíte:
+</p>
+<ul><li> nepoužívat uvozovky v příkazu CREATE TABLE
+</li>
+<li> v identifikátoru použít pouze malá písmena
+</li>
+<li> v dotazech vkládat identifikátory do uvozovek
+</li>
+</ul>
+</body>
+</htm>