summaryrefslogtreecommitdiff
path: root/doc/FAQ_czech
diff options
context:
space:
mode:
authorPeter Eisentraut2003-12-16 09:47:55 +0000
committerPeter Eisentraut2003-12-16 09:47:55 +0000
commitf57832f6466bab8ad600d98fc8d4991e36c8bcdd (patch)
tree27573f085bfcbb4b91110bc3605a4f337c392655 /doc/FAQ_czech
parent3bc199cd6c443511e5b5f3e873b4242cfc2cfec0 (diff)
Repair name.
Diffstat (limited to 'doc/FAQ_czech')
-rw-r--r--doc/FAQ_czech1189
1 files changed, 1189 insertions, 0 deletions
diff --git a/doc/FAQ_czech b/doc/FAQ_czech
new file mode 100644
index 0000000000..1fd6627b8a
--- /dev/null
+++ b/doc/FAQ_czech
@@ -0,0 +1,1189 @@
+Často kladené dotazy (FAQ) PostgreSQL
+=====================================
+
+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.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
+==================
+2.1 Kde naleznu ODBC ovladače pro PostgreSQL?
+2.2 Jaké nástroje lze použí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?
+
+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
+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
+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č?
+------------------------------------------------------------------------
+
+Obecné otázky
+=============
+
+1.1 Co je PostgreSQL? Jak se vyslovuje?
+---------------------------------------
+
+PostgreSQL se vyslovuje Post-Gres-Q-L.
+
+PostgreSQL vychází z databáze 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. (Odpověď 1.6. -
+jak se zapojit). Tento tým je zodpovědný za veškerý vývoj PostgreSQL.
+
+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-2002, 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.
+
+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.
+
+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. Na nativním portu pro MS Win
+NT/2000/XP se pracuje. 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ím 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 mailto: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 mailto: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 Kde je poslední verze?
+--------------------------
+
+Poslední verzí je PostgreSQL 7.4.. Plánujeme uvolnit velkou 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 [1]
+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, na
+http://www.intermedia.net/support/sql/sqltut.shtm [2] , 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.
+
+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
+==================
+
+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.
+
+Pro složitější případy se často používá Perl a CGI.pm nebo mod_perl.
+
+2.3 Existuje grafické rozhraní pro PostgreSQL?
+----------------------------------------------
+
+Pro PostgreSQL existuje několik grafických rozhraní: PgAccess
+(http://www.php.net), PgAdmin (http://www.php.net), RHDB Admin
+(http://sources.redhat.com/rhdb/) a Rekall (
+http://www.thekompany.com/products/rekall/). Dále existuje PHPPgAdmin
+(http://phppgadmin.sourceforge.net/) rozhraní PostgreSQL založené na web
+technologii.
+
+Úplnější seznam najdete na
+http://techdocs.postgresql.org/guides/GUITools.
+
+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.
+
+------------------------------------------------------------------------
+
+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
+http://www.postgresql.org/docs/view.php?version=current&idoc=1&file=kern
+el-resources.html [3] 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 postmastera 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. Databáze se zpřístupní jiným stanicím nastavením
+přepínače -i postmastera a povolením stanice a určením režimu
+autentifikace v $PGDATA/pg_hba.conf. Tím se povolí TCP/IP spojení.
+ZASTARALÉ
+
+3.6 Jak ladit databázový stroj na lepší výkon?
+----------------------------------------------
+
+Určitě pomohou indexy. Příkaz EXPLAIN zobrazí způsob interpretace Vašeho
+dotazu a použití indexů.
+
+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 velké 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.
+
+------------------------------------------------------------------------
+
+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 ...
+
+Není nutné zpracovávat celý dotaz, když potřebujete pouze několik
+prvních řádků. Pokud existuje index ORDER BY, PostgreSQL je schopen
+přerušit zpracování dotazu po získání požadovaného počtu řádků.
+
+K získání náhodného řádku použijte:
+
+SELECT col FROM tab
+ ORDER BY random() LIMIT 1;
+
+4.3 Jak získám seznam tabulek nebo jinak jak jej získá psql?
+------------------------------------------------------------
+
+Podívejte se 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á.
+
+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;
+
+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;
+
+Poté proveďte VACUUM FULL tab - uvolníte tím diskový prostor zabraný
+nyní již neplatnými řádky.
+
+4.5 Jaká je maximální velikost řá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
+textového souboru.
+
+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.
+
+ 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
+------------------------------------------------------
+ 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)
+
+Indexy nemají tak velkou režii, ale mohou být také velké, protože
+obsahují indexovaná data.
+
+Hodnoty NULL jsou uloženy v bitmapách, takže spotřebují 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]
+
+ - vyhledávaní, které není Case sensitiv 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í).
+
+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';
+
+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));
+
+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
+
+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 a index na sloupci (Pro vyšší verze to neplatí OVĚŘIT).
+Například:
+
+CREATE TABLE person (
+ id SERIAL,
+ name TEXT
+);
+
+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);
+
+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')");
+
+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')");
+
+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';
+
+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/g
+lossary.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
+
+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é?
+-------------------------------------------------------------
+
+Aktuálně spojujeme tabulky se sekvenčním skenováním výsledku pro každý
+řádek vnějšího dotazu. Pokud vnořený dotaz má pouze několik řádků a
+vnější dotaz vrací hodně řádek, IN je rychlé. V jiných případech
+nahraďte IN EXISTS:
+
+SELECT * FROM tab
+ WHERE col IN (SELECT subcol FROM subtab);
+
+takto
+
+SELECT * FROM tab
+ WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
+
+Pro urychlení vytvořete index pro subcol. Tento výkonnostní problém byl
+odstraněn ve verzi 7.4.
+
+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);
+
+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;
+
+4.24 Jak provést dotaz napříč několika databázemi?
+--------------------------------------------------
+
+PostgreSQL nenabízí žádný způsob, jak se dotázat do jiné databáze než do
+aktuální. Doplněk contrib/dblink umožňuje dotaz do cizí databáze
+prostřednictvím funkce. Na straně klienta není problém si otevřít více
+simultálních přístupů do různých databází a spojovat výsledek na straně
+klienta.
+
+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í. Ty povolují
+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č sslv 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.
+
+
+[1] http://developer.postgresql.org/todo.php
+[2] http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM
+[3] http://postgresql.ok.cz/PostgreSQL%20Administrator%27sGuide
+