Frequently Asked Questions
                                       
   Casto kladen� dotazy (FAQ) PostgreSQL
   
   Posledn� aktualizace: 29. r�jna 2007 (aktualizov�no pro PostgreSQL
   8.3)
   
   Soucasn� spr�vce: Bruce Momjian (bruce@momjian.us)
   
   Prelozil: Pavel Stehule (pavel.stehule@gmail.com)
   
   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 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) 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) 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?
   
                           Administrativn� dotazy
                                      
   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) 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.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.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 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-2009, 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.
     _________________________________________________________________
   
                        Dotazy na klientsk� rozhran�
                                      
  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.
   
  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.
   
   PHP (http://www.php.net) je vynikaj�c�m rozhran�m pro tvorbu webu.
   
   Pro slozitejs� �lohy se casto pouz�v� Perl a jeho BDB:Pg rozhran� s
   podporou CGI - CGI.pm nebo mod_perl(u).
   
  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 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) 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.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

   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;

   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.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 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.
   
   Napr�klad, uvazujme soubor se 100 tis�ci r�dky obsahuj�c� na kazd�
   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 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
   ------------------------------------------------------
    52 bytu na r�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 r�dek
----------------------- = 633 str�nek (zaokrouhleno nahoru)
   158 r�dek na str�nce

633 datov�ch str�nek * 8192 bytu na kazdou str�nku = 5,185,536 bytu (5.2 MB)

   Indexy nemaj� tak velkou rezii, ale mohou b�t tak� velk�, protoze
   obsahuj� indexovan� data.
   
   Hodnoty NULL jsou ulozeny v bitmap�ch, takze zab�raj� jen velmi m�lo
   diskov�ho prostoru.
   
  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 ~*
       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.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';

   Tento dotaz nepouzije standardn� index. Mus�te pouz�t tzv.
   funkcion�ln� index:
CREATE INDEX tabindex ON tab (lower(col));

   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;

   K spojen� retezcu, kter� mohou obsahovat hodnotu NULL, pouz�vejte
   funkci COALESCE(), napr.:
   SELECT COALESCE(col1, '') || COALESCE(col2, '')
   FROM tab

   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)

   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
);

   je automaticky transformov�no na:
CREATE SEQUENCE person_id_seq;
CREATE TABLE person (
  id   INT4 NOT NULL DEFAULT nextval('person_id_seq'),
  name TEXT
);

   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;

   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

   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();

  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 );

  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 t2 USING (col);

   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