Skip to content
Snippets Groups Projects
FAQ_czech.html 56.03 KiB
<!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 peklad 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: Steda 23. ervna 21:10:00 EST 2004</P>

   <P>Souasn sprvce: Bruce Momjian (<A href=
   "mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)</P>

   <P>Peloil: Pavel Sthule (<A href=
   "mailto:stehule@kix.fsv.cvut.cz">stehule@kix.fsv.cvut.cz</A>)</P>

   <P>Aktuln 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 peklad 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>Odpovdi na dotazy relevantn ke konkrtnm platformm
   lze nalzt 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 otzky</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 kterch 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 zskat PostgreSQL?<BR>
   <A href="#1.6">1.6</A>) Kde mohu zskat 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 znmch chyb nebo nepodporovanch vlastnost?<BR>
   <A href="#1.10">1.10</A>) Jak se mohu nauit SQL?<BR>
   <A href="#1.11">1.11</A>) Nem PostgreSQL problmy s rokem 2000?<BR>
   <A href="#1.12">1.12</A>) Jak se pipojit k vvojskmu tmu?<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 porovnn s jinmi databzemi?<BR>
   <A href="#1.15">1.15</A>) Jak lze finann pomoci PostgreSQL?<BR>

   <H2 align="center">User client dotazy</H2>

   <A href="#2.1">2.1</A>) Kde naleznu ODBC ovladae pro PostgreSQL?<BR>
   <A href="#2.2">2.2</A>) Jak nstroje lze pout 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>) Pi startu postmaster, dostanu chybov hlen Bad System Call nebo
   core dump. Pro?<BR>
   <A href="#3.3">3.3</A>) Pi startu postmastera dostanu hlen o chyb
   IpcMemoryCreate. Pro?<BR>
   <A href="#3.4">3.4</A>) Pi startu postmastera dostanu hlen o chyb IpcSemaphoreCreate. 
   Pro?<BR>
   <A href="#3.5">3.5</A>) Jak povolit nebo zakzat pstup z jinch stanic?<BR>
   <A href="#3.6">3.6</A>) Jak ladit databzov stroj na lep vkon?<BR>
   <A href="#3.7">3.7</A>) Jak jsou monosti ladn?<BR>
   <A href="#3.8">3.8</A>) Pro dostanu "Sorry, too many clients", kdy se zkoum pipojit?<BR>
   <A href="#3.9">3.9</A>) K emu slou adres pgsql_tmp?<BR>
   <A href="#3.10">3.10</A>) Pro je poadovno dump a obnoven (load) databze bhem upgrade
   mezi velkmi verzemi PostgreSQL?<BR>

   <H2 align="center">Provozn dotazy</H2>

   <A href="#4.1">4.1</A>) m se li binrn a normln kurzor?<BR>
   <A href="#4.2">4.2</A>) Jak zskat pouze prvn dek dotazu? Nhodn dek?<BR>
   <A href="#4.3">4.3</A>) Jak zskm seznam tabulek nebo jinak jak jej zsk psql?<BR>
   <A href="#4.4">4.4</A>) Jak odstranm sloupec tabulky, jak zmnm jeho typ?<BR>
   <A href="#4.5">4.5</A>) Jak je maximln velikost dku, tabulky a databze?<BR>
   <A href="#4.6">4.6</A>) Kolik diskovho prostoru je poteba k uloen dat z normlnho
   textovho souboru?<BR>
   <A href="#4.7">4.7</A>) Jak zskm seznam vytvoench tabulek, index,
   databz?<BR>
   <A href="#4.8">4.8</A>) Mj dotaz je pomal a nepouv vytvoen indexy. Pro?<BR>
   <A href="#4.9">4.9</A>) Jak zjistm, jak optimizer dotazu vyhodnocuje mj 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 provst vyhledvn regulrnho vrazu case sensitiv,
   insensitiv? Jak pout index pro case insensitive vyhledvn?<BR>
   <A href="#4.13">4.13</A>) Jak v dotazu detekovat, e poloka je NULL?<BR>
   <A href="#4.14">4.14</A>) Jak jsou rozdly mezi rznmi znakovmi typy?<BR>
   <A href="#4.15.1">4.15.1</A>) Jak vytvoit serial/auto-increment pole?<BR>
   <A href="#4.15.2">4.15.2</A>) Jak zskat hodnotu SERIAL po vloen dku?<BR>
   <A href="#4.15.3">4.15.3</A>) Nepovede currval() a nextval() k rozhozen podmnek pi soubhu s
   jinmi uivateli?<BR>
   <A href="#4.15.4">4.15.4</A>) Pro nen vygenerovan slo pouito pi peruen transakce?
   Pro vznikaj dry v slovn 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 vznam nkterch vraz pouitch v PostgreSQL?<BR>
   <A href="#4.18">4.18</A>) Pro jsem zskal chybov hlen "ERROR: Memory exhausted in
   AllocSetAlloc()"?<BR>
   <A href="#4.19">4.19</A>) Jak se dozvm, kterou verzi PostgreSQL pouvm?<BR>
   <A href="#4.20">4.20</A>) Pro operace s velkmi objekty kon "invalid large obj descriptor"?<BR>
   <A href="#4.21">4.21</A>) Jak vytvoit sloupec obsahujc implicitn aktuln datum?<BR>
   <A href="#4.22">4.22</A>) Pro jsou moje vnoen dotazy pouvajc IN tak pomal?<BR>
   <A href="#4.23">4.23</A>) Jak provst vnj spojen (outer join)?<BR>
   <A href="#4.24">4.24</A>) Jak provst dotaz nap nkolika databzemi?<BR>
   <A href="#4.25">4.25</A>) Me funkce vrtit vce dk nebo sloupc?<BR>
   <A href="#4.26">4.26</A>) Pro nelze spolehliv vytvet a ruit doasn tabulky 
   v PL/pgSQL funkcch?<BR>
   <A href="#4.27">4.27</A>) Jak jsou monosti replikace databz?<BR>
   <A href="#4.28">4.28</A>) Jak jsou monosti ifrovn databz?<BR>

   <H2 align="center">Roziovn PostgreSQL</H2>

   <A href="#5.1">5.1</A>) Napsal jsem UDF funkci, PostgreSQL vak kon dump core?<BR>
   <A href="#5.2">5.2</A>) Jak mohu pispt njakmi ikovnmi datovmi typy a funkcemi do
   PostgreSQL?<BR>
   <A href="#5.3">5.3</A>) Jak napsat funkci v C vracejc ntici?<BR>
   <A href="#5.4">5.4</A>) Modifikoval jsem zdrojov soubory. Tato zmna nebyla pi rekompilaci
   vzata v potaz. Pro?<BR>

   <HR>
 
   <H2 align="center">Obecn otzky</H2>

   <H4><A name="1.1">1.1</A>) Co je PostgreSQL? Jak se vyslovuje?</H2>

   <P>PostgreSQL se vyslovuje <I>Post-Gres-Q-L</I>. Zvukov zznam je 
   dostupn na adrese <A href="http://www.postgresql.org/postgresql.mp3"></A>.</P>

   <P>PostgreSQL vychz z databze POSTGRES (a stle je nkdy oznaovn
   zjednoduen jako Postgres) - vzkumnho prototypu <SMALL>DBMS</SMALL> nov
   generace. Z postgresu byl pevzat siln datov model a bohat soubor
   datovch typ a jeho dotazovac jazyk PostQuel byl nahrazen rozenou
   podmnoinou jazyka <SMALL>SQL</SMALL>. PostgreSQL lze pouvat bez omezen a jeho
   zdrojov kdy jsou voln k dispozici.</P>

   <P>PostgreSQL vyvj tm vvoj pihlench do vvojsk konference
   PostgreSQL. Souasnm koordintorem 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 tm je zodpovdn za veker vvoj 
   PostgreSQL. Jedn se o veejn projekt, kter nen zen dnou firmou.
   Pokud se chcete zapojit, pette 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, testovn, ladn a roziovn kdu se zapojilo mnoho dalch
   vvoj . Pvodni kd Postgresu, ze kterho PostgreSQL vychz, je
   vsledkem sil mnoha student a programtor pracujcch pod vedenm
   prof. Michaela Stonebrakera na University of California v Berkley.</P>

   <P>Pvodn nzev software z Berkley byl Postgres. Po pidn jazyka <SMALL>SQL</SMALL> se
   nzev zmnil na Postgres95. Koncem roku 1996 byl RDBMS pejmenovn na
   PostgreSQL.</P>

   <H4><A name="1.2">1.2</A>) Jak je licence na PostgreSQL?</H4>

   <P>PostgreSQL je pedmtem nsledujcch autorskch prv:</P>

   <P>Dl Copyright (c) 1996-2005, PostgreSQL Global Development Group
   Dl Copyright (c) 1994-6, Regents of the University of California</P>

   <P>Udluje se oprvnn k uit, rozmnoovn, provdn prav a
   roziovn tohoto softwaru a dokumentace k nmu, pro jakkoli ely,
   bez licennho poplatku a bez psemn licenn smlouvy, za podmnky, e
   na vech jeho kopich je uvedeno oznmen o ve uvedench prvech,
   jako i obsah tohoto a dvou nsledujcch odstavc.</P>

   <P>THE UNIVERSITY OF CALIFORNIA ("KALIFORNSK UNIVERZITA") NEN V DNM
   PPAD ODPOVDNA DN TET OSOB ZA PMOU, NEPMOU, ZVLTN,
   NAHODILOU NEBO VSLEDNOU KODU, VETN ULHO ZISKU, ZPSOBENOU UITM
   TOHOTO SOFTWARU A DOKUMENTACE K NMU, A TO I V PPAD, E THE
   UNIVERSITY OF CALIFORNIA BYLA INFORMOVNA O MONOSTI VZNIKU TAKOV
   KODY.</P>

   <P>HE UNIVERSITY OF CALIFORNIA ZEJMNA NEPOSKYTUJE JAKKOLI ZRUKY, A TO
   NEJEN ZRUKY OBCHODOVATELNOSTI A VHODNOSTI TOHOTO VROBKU KE SPECIFICKM
   ELM. NͮE UVEDEN SOFTWARE JE POSKYTNUT "JAK STOJ A LE" A THE
   UNIVERSITY OF CALIFORNIA NEN POVINNA ZAJISTIT JEHO DRBU, PODPORU,
   AKTUALIZACI, VYLEPEN NEBO MODIFIKACI.</P>

   <P>Ve uveden je BSD licence, bn licence otevenho zdroje. Nen zde
   dn omezen ohledn uit kdu zdroje. Jsme s tm spokojeni a nemme v
   myslu na tto skutenosti cokoli mnit.</P>

   <H4><A name="1.3">1.3</A>) Na kterch Unixex lze spustit PostgreSQL?</H4>

   <P>PostgreSQL b na vech modernch unixovch platformch. V instalanch
   instrukcch naleznete aktuln seznam vech platforem na kterch byla
   testovnm ovena 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 nkter dal moduly byly peloeny pro MS
   Windows. Klienta lze provozovat na MS Windows, ten prostednictvm
   TCP/IP protokolu komunikuje se serverem bcm na nkter z
   podporovanch Unixovch platforem. K pekladu lze pout <I>win32.mak</I> a
   Win32 knihovny <I>libpq</I> a <I>psql</I>. K databzi PostgerSQL lze pistupovat skrze
   rozhran <SMALL>ODBC</SMALL>.</P>

   <P><STRONG>Server</STRONG><P>
   <P>Server me bt na WindowsNT a Win2k provozovn pouze s knihovnou
   Cygwin, Cygnus Unix/NT porting library. Vce <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>Na nativnm portu pro MS Win NT/2000/XP se pracuje. Dal informace
   o aktulnm 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>Existujc 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 zskat PostgreSQL?</H4>

   <P>Primrnm anonymnm ftp serverem pro PostgreSQL je
   <A href="ftp://ftp.PostgreSQL.org/pub">ftp://ftp.PostgreSQL.org/pub</A>. 
   Seznam zrcadel naleznete na naich webovch strnkch.</P>

   <H4><A name="1.6">1.6</A>) Kde mohu zskat podporu?</H4>

   <P>Hlavn mailov konference je: <A href="mailto:pgsql-general@PostgreSQL.org">
   pgsql-general@PostgreSQL.org</A>. Slou k
   diskuzm ohledn PostgreSQL. Pihlste se zaslnm mailu obsahujc
   nsledujc dky v tle dopisu (nikoliv v zhlav - subjectu):</P>
<PRE>
    subscribe
    end
</PRE>
   na adresu <A href="mailto:pgsql-general-request@PostgreSQL.org">
   pgsql-general-request@PostgreSQL.org</A>.</P>

   <P>Mete si vydat denn pehled (diggest), kter m zhruba 30K denn
   zprv.</P>

   <P>Konference psql-bugs je urena k zasln zprv o chybch. Pro
   pihlen polete mail se stejnm obsahem jako v pedchozm ppad na
   adresu <A href="mailto:pgsql-bugs-request@PostgreSQL.org">
   pgsql-bugs-request@PostgreSQL.org</A>.</P>

   <P>Do vvojsk konference se pihlste odeslnm dopisu s ji zmiovanm
   obsahem na mailto:pgsql-hackers-request@PostgreSQL.org.</P>

   <P>Seznam dalch konferenc naleznete na strnkch PostgreSQL:</P>
   <BLOCKQUOTE>
   <A href="http://www.postgresql.org">http://www.postgresql.org</A>
   </BLOCKQUOTE>
   <H4><A name="1.7">1.7</A>) Jak je posledn verze?</H4>

   <P>Posledn verze PostgreSQL je 7.4.3. Plnujeme uvolnit vznamnou verzi
   kadch est a osm msc.</P>

   <H4><A name="1.8">1.8</A>) Jak je dostupn dokumentace?</H4>

   <P>Rzn manuly, manulov strnky a nkolik malch testovacch pklad
   jsou sousti distribuce. Podvejte se do adrese <I>/doc</I>. Manuly jsou
   pstupn online na <A href="http://www.PostgreSQL.org/docs">http://www.PostgreSQL.org/docs</A>.</P>

   <P>Na adresch <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
   technickch lnk s tematikou PostgresQL najdete na <A href=
   "http://techdocs.PostgreSQL.org/">http://techdocs.PostgreSQL.org/</A>.</P>

   <P><I>psql</I> m uiten metapkaz \d slouc k zobrazen informac o typech,
   opertorech, funkc, agreganch funkc atd.</P>
   <P>Vce dokumentace naleznete na naich webovch strnkch.</P>

   <H4><A name="1.9">1.9</A>) Kde najdu seznam znmch chyb nebo nepodporovanch vlastnost?</H4>

   <P>PostgreSQL podporuje rozenou podmnoinu <SMALL>SQL-92</SMALL>. V naem 
   <A href="http://developer.PostgreSQL.org/todo.php">TODO</A>
   najdete seznam znmch chyb, chybjcch vlastnost a seznam vlastnost,
   kter budou do systmu implementovny v budoucnu (vetn priorit).</P>

   <H4><A name="1.10">1.10</A>) Jak se mohu nauit 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 vysvtlen jazyk SQL (vyla
   esky). Dal dostupnou knihou je <A href=
   "http://www.commandprompt.com/ppbook">http://www.commandprompt.com/ppbook</A>.
   Kvalitn nvody 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 uivatel doporuuje <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 problmy s rokem 2000?</H4>

   <P>Nem, meme pracovat s datumy po roce 2000 naeho letopotu i ped
   rokem 2000 p.n.l.</P>

   <H4><A name="1.12">1.12</A>) Jak se pipojit k vvojskmu tmu?</H4>

   <P>Nejdve si sthnte nejnovj zdroje a pette si vvojskou
   dokumentaci na naem webu nebo v distribuci. Pak se pihlate do
   konferenc <I>pgsql-hackers</I> a <P>pgsql-patches</I>. Kvalitn zplaty poslejte do
   pgsql-patches.</P>

   <P>Prvo commit m v <SMALL>CVS</SMALL> archivu asi tincti lid. Kad z nich poslal
   mnoho kvalitnch zplat, take tehdej commiters mli jistotu, e budou
   pedkldat jenom kvalitn zplaty a mohli jim pedlit vt prva.</P>

   <H4><A name="1.13">1.13</A>) Kam podat report o chyb?</H4>

   <P>Navtivte nai PostgreSQL BugTool strnku na <A href=
   "http://www.PostgreSQL.org/bugs/bugs.php">http://www.PostgreSQL.org/bugs/bugs.php</A>, 
   kter obsahuje nvod a smrnice jak podat chybov report.</P>

   <P>Ovte si na naem ftp serveru <A href="ftp://ftp.PostgreSQL.org/pub">ftp://ftp.PostgreSQL.org/pub</A>, 
   zda-li mte nejnovj verzi PostgreSQL a zda-li k n neexistuj njak zplaty.</P>

   <H4><A name="1.14">1.14</A>) Jak je na tom PostgreSQL v porovnn s jinmi databzemi?</H4>

   <P>Existuje nkolik hledisek jak porovnvat software: vlastnosti, vkon,
   spolehlivost, podpora a cena.</P>
   <DL>
   <DT><B>Vlastnosti</B></DT>
	<DD>PostgreSQL m hodn spolench vlastnost s velkmi komernmi 
	<SMALL>DBMS</SMALL>, nap. transakce, vnoen dotazy, spout, pohledy, kontrolu 
	referenn integrity a sofistikovan zamykn. Podporuje nkter 
	vlastnosti, kter tyto systmy nemaj, uivatelem definovan typy, 
	ddinost, pravidla, MVCC redukujc zamykn.</BR></BR></DD>

   <DT><B>Vkon</B></DT>
	<DD>Vkonnostn je na tom PostgreSQL podobn jako dal komern ale 
	i open source databze, v nem je rychlej, jindy pomalej. 
	V porovnn s MySQL a podobnmi databzovmi systmy je PostgreSQL 
	rychlej pi vceuivatelskm pstupu, sloitjch dotazech 
	a zaten read/write dotazy. MySQL je rychlej v jednoduch 
	dotazech s malm potem uivatel. Navc, MySQL nepodporuje mnoh 
	vlatnosti zmnn v sekci <I>vlastnosti</I>. Zapracovali jsme na 
	spolehlivosti a podporovanch vlastnostech, a vkon zvyujeme 
	v kad verzi. Zajmavou strnku porovnvajc 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 vvojem MySQL nen Open Source komunita, ale komern spolenost,
	pestoe svoje produkty distribuuje jako Open Source.<BR><BR></DD>

   <DT><B>Spolehlivost</B></DT>
	<DD>Jsme si vdomi, e databze mus bt spolehliv, jinak je 
	nepouiteln. Sname se zveejovat dobe otestovan, stabiln 
	kd s minimem chyb. Kad verze je vce ne msc v beta testovn, 
	a nae historie verz ukazuje, e meme nabdnout stabiln, solidn 
	verze, kter jsou pipraveny pro reln nasazen. V tto oblasti 
	jsme srovnateln s dalmi databzemi.</BR></BR></DD>

   <DT><B>Podpora</B></DT>
	<DD>Na na mailov konferenci mete kontaktovat velkou skupinu 
	vvoj a uivatel.problm. Nememe garantovat opravu, 
	nicmn komern databze tak ne vdy nabdnou opravu. Podle 
	ohlas je nae podpora hodnocena lpe ne u jinch <SMALL>DBMS</SMALL> a to 
	dky pmmu kontaktu s vvoji, velkou komunitou uivatel, 
	kvalitnmi manuly a pstupnm zdrojovm kdem. Pro uivatele, 
	kte vyaduj podporu ke konkrtnm ppadm, existuje placen 
	podpora (<A href="#1.6">FAQ sekce 1.6</A>).<BR><BR></DD>

   <DT><B>Cena</B><DT>
	<DD>PosgreSQL lze voln pouvat pro nekomern i komern pouit. 
	Mete do svch produkt pidat n kd bez omezen, respektive 
	v souladu s podmnkami na licenn smlouvy (v duchu BSD licence).<BR>
        <BR></DD>
   </DL>

   <H4><A name="1.15">1.15</A>) Jak lze finann pomoci PostgreSQL?</H4>

   <P>PosgreSQL m prvotdn infrastrukturu od naeho zatku v roce 1996.
   Vdme za to Marku Fournierovi, kter zaloil a spravoval tuto
   infrastrukturu nkolik let.</P>

   <P>Kvalitn infrastruktura je velice dleit pro kad open source
   projekt. Pedchz nedorozumnm, kter velice zdruj pokrok v
   projektu.</P>

   <P>Tato infrastruktura nen lacin. K jejmu zajitn je teba stle
   hradit urit msn a jednorzov stky. Pokud mte Vy nebo Vae
   spolenost penze, kter nm mete darovat, obrae se na <A href=
   "http://store.pgsql.com/shopping/">http://store.pgsql.com/shopping/</A> a darujte je.</P>

   <P>Akoliv webov strnka zmiuje PostgreSQL, Inc. vklady jsou ureny pouze
   k podpoe projektu PostgreSQL a nepodporuj dnou existujc
   spolenost. Pokud to vyadujete, mete poslat kontrolu na nai
   kontaktn adresu.</P>
   <HR>

   <P>Pokud mte pklad spnho nasazen PostgreSQL, pihlat 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> ovladae pro PostgreSQL?</H4>

   <P>Pro PostgreSQL existuj dva <SMALL>ODBC</SMALL> ovladae - PsqlODBC a OpenLink ODBC.</P>

   <P>PsqlODBC je ke staen na <A href=
   "http://gborg.postgresql.org/project/psqlodbc/projdisplay.php">
   http://gborg.postgresql.org/project/psqlodbc/projdisplay.php</A>.</P>

   <P>OpenLink mete zskat na <A href="http://www.openlinksw.com">http://www.openlinksw.com</A>. 
   Spolupracuje s jejich klientskm programovm vybavenm a je dostupn pro vechny jimi
   podporovan platformy (Win, Mac, Unix, VMS).</P>

   <P>Tento ovlada je uren pro ty, kte vyaduj podporu komern kvality,
   nicmn freeware verze je dostupn a funkn. Dotazy zaslejte na <A href=
   "mailto:postgres95@openlink.co.uk">postgres95@openlink.co.uk</A>.</P>

   <H4><A name="2.2">2.2</A>) Jak nstroje lze pout pro PostgreSQL a web?</H4>

   <P>Pkn vod do databzovch technologi zabezpeujcch chod webovch
   strnek 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 sloitj ppady se asto pouv 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 nkolik grafickch 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>). 
   Dle jet PhpPgAdmin
   (<A href="http://phppgadmin.sourceforge.net/">http://phppgadmin.sourceforge.net/</A>) co je rozhran PostgreSQL 
   zaloen na web technologii.</P>

   <P>plnj 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>Vtina programovacch jazyk obsahuje rozhran pro PostgreSQL.
   Podvejte se do roziujcch modul Vaeho programovacho 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>Pouijte volbu <I>--prefix</I> pi sputn configure.</P>

   <H4><A name="3.2">3.2</A>) Pi startu postmaster, dostanu chybov hlen Bad System Call 
    nebo core dump. Pro?</H4>

   <P>Dvody mohou bt rzn, ale nejprve zkontrolujte, zda V systm
   podporuje System V extensions. PostgreSQL vyaduje v jde podporu
   sdlen pamti a semafor.</P>

   <H4><A name="3.3">3.3</A>) Pi startu postmastera dostanu hlen o chyb IpcMemoryCreate. Pro?</H4>

   <P>Buto nemte sprvn nakonfigurovanou sdlenou pam v jde nebo musite
   zvtit jej velikost. Potebn velikost je zvisl na architektue a na
   tom, kolik pamovch buffer a backend mte povoleno pro postmastera.
   Pro vtinu systm s peddefinovanm potem backend a pamovch
   buffer je minimum zhruba 1MB. V PostgreSQL Administrator's Guide
   naleznete podrobnj informace o sdlen pamti a semaforech.</P>

   <H4><A name="3.4">3.4</A>) Pi startu postmastera dostanu hlen o chyb IpcSemaphoreCreate. 
    Pro?</H4>

   <P>Pokud dostane chybovou zprvu IpcSemaphoreCreate: semget failed (No
   space left on device), pak vae jdro nem dost volnch semafor.
   PostgreSQL vyaduje jeden semafor pro kad backend v pozad. Doasnm
   eenm je start <I>postmaster</I> s limitem backend. Pouijte pepna <I>-N</I> s
   hodnotou men ne 32. plnm eenm je zven hodnot <SMALL>SEMMNS</SMALL> 
   a <SMALL>SEMMNI</SMALL> jadra.</P>

   <P>Nefunkn semafory mohou zpsobit pd bhem intenzivnch databzovch
   operac.</P>

   <P>Pokud se tato chyba vyskytuje jet nkde jinde, mon nemte vbec
   nakonfigurovny semafory ve vaem jde. V PostgreSQL Administrator's
   Guide najdete podrobnj popis poadavk na sdlenou pamt a semafory.</P>

   <H4><A name="3.5">3.5</A>) Jak povolit nebo zakzat pstup z jinch stanic?</H4>

   <P>Pi vchozm nastaven PostgreSQL odepe pstup z jinch stanic ne
   lokln s pouitm UDP. Pstup z jinch stroj nen mon dokud
   jej nepovolte nastavenm tcpip_socket v postgresql.conf <B>a</B> urenm
   zpsobu autentifikace v <I>$PGDATA/pg_hba.conf</I>.</P> 

   <H4><A name="3.6">3.6</A>) Jak ladit databzov stroj na lep vkon?</H4>

   <P>Urit pomohou indexy. Pkaz <SMALL>EXPLAIN ANALYZE</SMALL> Vm umon sledovat
   jak PostgreSQL interpretuje V dotaz a kter indexy pouv.</P>

   <P>Pi vt dvce INSERT uvaujte o nhrad pkazem <SMALL>COPY</SMALL>. Ten je mnohem
   rychlej neli samotn <SMALL>INSERT</SMALL>. Kad pkaz mimo blok <SMALL>BEGIN WORK/COMMIT</SMALL>
   se provd ve vlastn transakci. Zvate, zda-li by se nedalo nkolik
   pkaz spojit do jedn transakce. Tm se sn reie na transakce. Ped
   provedenm rozshlch zmn zrute indexy, kter po dokonen zmn opt
   vytvote.</P>

   <P>Mte nkolik dalch monost, jak zlepit vkon. Mete zakzat <I>fsyn()</I>
   pi startu postmastera pepnai <I>-o -F</I>. Tyto pepnae zabrn <I>fsync()</I>,
   tj. zpisu na disk po kad transakci.</P>

   <P>Mete zvit velikost pamovch buffer pouitch backendy tj.
   parametr <I>-B</I> postmasteru. Pokud ale tato hodnota bude pli velk, tak
   mon nespustte postmastera jeliko doshnete limitu sdlen pamti.
   Kad buffer m 8K a implicitn je 64 buffer.</P>

   <P>Dle mete pout pepna <I>-S</I> k zven limitu pamti pro backendy na
   doasn tdn. Hodnota je mnna v kilobytech a vchoz nastaven je
   512, tj. 512K.</P>

   <P>Mete pout pkaz <SMALL>CLUSTER</SMALL>, kter uspod fyzicky data v tabulkch
   podle indexu. Vce na manulovch strnkch pkazu <SMALL>CLUSTER</SMALL>.</P>

   <H4><A name="3.7">3.7</A>) Jak jsou monosti ladn?</H4>

   <P>Mte nkolik monost jak se dostat k uitenm stavovm informacm.</P>

   <P>Zaprv, pi pekladu pouijte pepna <I>--enable-cassert</I>, tm se zapne
   monitorovn a nsledn zastaven aplikace, kdy se proces v backendu
   dostane do neoekvanho stavu.</P>

   <P>Jak postmaster tak postgres m nkolik pepna umoujcch ladn.
   Postmaster nastartujte tak, abyste si byli jisti, e je standartn
   vstup a standartn chybov vstup pesmrovn do souboru logu,
   napklad:</P>
<PRE>
    cd /usr/local/pgsql
    ./bin/postmaster > server.log 2>&1 &
</PRE>
   <P>Tm se vytvo log v adresi PostgreSQL, Tento soubor obsahuje uiten
   informace o problmech a chybch vyskytlch se na serveru. Postmaster m
   pepna <I>-d</I> urujc, jak podrobn maj bt reportovan informace, tj.
   debug level. Pozor, pi velk hodnot debug levelu rychle roste velikost
   souboru logu.</P>

   <P>Pokud neb postmaster, mete spustit backend PostgreSQL z pkazov
   dky a napsat svj <SMALL>SQL</SMALL> dotaz pmo v backendu (doporueno <B>pouze</B> pro
   ladn). Dotaz je v tomto ppad ukonen novou dkou, nikoliv
   stednkem. Pokud mte aplikaci peloenou s ladcmi symboly, mete
   pout debbuger k monitorovn procesu. Pokud nen backend sputn
   postmasterem, pak neb ve svm obvyklm prosted a tud nkter
   problmy dan interakc mezi backendy nemohou bt nasimulovny.</P>

   <P>Pokud b <I>postmaster</I>, spuse <I>psql</I> v jednom okn a pak si zjistte <SMALL>PID</SMALL>
   procesu postgres pouitho psql. V debuggeru sepipojte k postgresql
   <SMALL>PID</SMALL>. Pak nastavte breakpointy v debuggeru a zadejte dotaz v psql. Pokud
   ladte startup postgresu, pak nastavte PGOPTIONS="-W n" a spuse <I>psql</I>.
   Tento pepna zpsob pauzu n sekund, take budete mt as se pipojit
   k procesu, a nastavit breakpointy a pokraovat v startup posloupnosti.</P>

   <P>Pro ladn a men vkonu mohou bt uiten pepnae <I>-s, -A</I> a <I>-t</I>
   programu postgres (backend).</P>

   <P>Mete provst peklad s profilac, tak abyste vidli kolik asu
   zabraj jednotliv funkce. Soubory s profily backend jsou uloeny v
   adresi <I>pgsql/data/base/dbname</I>. Profil klienta pak v jeho aktulnm
   adresi. Korektn profilace v prosted Linux poaduje konfiguraci
   systmu s parametrem <I>-DLINUX_PROFILE</I>.</P>

   <H4><A name="3.8">3.8</A>) Pro dostanu "Sorry, too many clients", kdy se zkoum pipojit?</H4>

   <P>Zvyte limit postmastera na maximln poet souasn sputnch
   backend.</P>

   <P>Vchoz hodnota je 32 backend. Tuto hodnotu zvte zastavenm a
   optovnm sputnm postmastera s parametrem <I>-N</I> nebo pravou
   <I>postgresql.conf</I>.</P>

   <P>Pi zven hodnoty <I>-N</I> nad 32 muste zvit hodnotu <I>-B</I> nad vchoz 64,
   <I>-B</I> mus bt minimln dvakrt vt, nebo jet lpe vce. Pravdpodobn
   zjistte, e pro velk poet proces backendu je nutn zvit nkter
   parametry jdra. Jsou to pedevm maximln velikost sdlen pamti
   <SMALL>SHMMAX</SMALL>, maximln poet semafr <SMALL>SEMMNS</SMALL> a <SMALL>SEMMNI</SMALL>, maximln poet
   proces <SMALL>NPROC</SMALL>, maximln poet proces uivatele <SMALL>MAXUPRC</SMALL> a maximln
   poet otevench soubor <SMALL>NFILE</SMALL> a <SMALL>NINODE</SMALL>. Dvod pro omezen maximlnho
   potu backend je fakt, e by mohlo dojt k vyerpn zdroj Vaeho
   systmu.</P>

   <H4><A name="3.9">3.9</A>) K emu slou adres pgsql_tmp?</H4>

   <P>Tento adres obsahuje doasn soubory vytvoen exekutorem dotaz.
   Napklad, kdy je nutn tdn k zajitn <SMALL>ORDER BY</SMALL> a tdn m vt
   nroky na prostor ne povoluje parametr <I>-S</I> backendu, pak je vytvoen
   doasn soubor k uloen extra daj.</P>

   <P>Doasn soubory jsou obvykle mazny automaticky, ale me se stt, e
   bhem tdn server spadne. Zastaven a dal start postmastera zajist
   odstrann soubor s tchto adres.</P>

   <H4><A name="3.10">3.10</A>) Pro je poadovno dump a obnoven (load) databze bhem 
    upgrade mezi velkmi verzemi PostgreSQL?</H4>

   <P>PostgreSQL se minimln mn bhem malch verz, take nap. pi upgrade
   z 7.2 na 7.2.1 nen nutn dump a load databze. Ale vynamn verze asto
   mn intern formt systmovch tabulek a datovch soubor. Tyto zmny
   jsou natolik rozshl, e nelze zajistit zptnou kompatibilitu pro
   datov soubory. Dump ulo data v obecnm formtu, take mohou bt
   natena a pouvna v novm internm formtu.</P>

   <HR>

   <H2 align="center">Provozn dotazy</H2>

   <H4><A name="4.1">4.1</A>) m se li binrn a normln kurzor?</H4>

   <P>Popis najdete v manulov strnce <SMALL>DECLARE</SMALL></P>

   <H4><A name="4.2">4.2</A>) Jak zskat pouze prvn dek dotazu? Nhodn dek?</H4>

   <P>Podvejte se do man. strnky pkazu <SMALL>FETCH</SMALL>, nebo pouijte <SMALL>SELECT</SMALL> ...
   <SMALL>LIMIT</SMALL> ...</P>

   <P>I kdy potebujete zskat pouze prvnch nkolik dk, je teba
   zpracovat vechna data, nap. pokud dotaz m <SMALL>ORDER BY</SMALL>. Pokud vak
   existuje index, kter odpovd <SMALL>ORDER BY</SMALL>, PostgreSQL me zskat
   pouze prvnch n dk a ukonit zpracovn dotazu.</P>

   <P>K zskn nhodnho dku pouijte:</P>
<PRE>
    SELECT col 
    FROM tab
    ORDER BY random() 
    LIMIT 1;
</PRE>
   <H4><A name="4.3">4.3</A>) Jak zskm seznam tabulek nebo jinak jak jej zsk psql?</H4>

   <P>Pkaz \dt v psql zobraz seznam tabulek. pln seznam pkaz <I>psql</I>
   dostanete pkazem \?. Tak se mete podvat do zdrojovch kd <I>psql</I> 
   do souboru <I>pgsql/src/bin/psql/describe.c</I>. Ten obsahuje <SMALL>SQL</SMALL> pkazy, 
   kter se pouvaj v psql metapkazech. Dle mete spustit <I>psql</I>
   s pepnaem <I>-E</I>, kter zpsob zobrazen kadho dotazu, kter 
   zpracovn metapkazu vyvol. PostgreSQL nabz SQLi INFORMATION 
   SCHEMA s tabulkami obsahujc informace o databzi.</P>

   <H4><A name="4.4">4.4</A>) Jak odstranm sloupec tabulky, jak zmnm jeho typ?</H4>

   <P>Ponaje verz 7.3 mete pout pkaz <SMALL>ALTER TABLE DROP COLUMN</SMALL>. Ve
   starch verzch mete pout nsledujc 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 zmnu typu sloupce je teba provst:</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 provete <I>VACUUM FULL tab</I> - uvolnte tm diskov prostor zabran
   nyn ji neplatnmi dky.

   <H4><A name="4.5">4.5</A>) Jak je maximln velikost dku, tabulky a databze?</H4>

   <P>PostgreSQL m tato omezen:</P>
<PRE>
    Maximln velikost databze:           neomezena (existuj 32TB db)
    Maximln velikost tabulky:            32 TB
    Maximln velikost dky:              1.6 TB
    Maximln velikost poloky             1 GB
    Maximln poet dk v tabulce:       neomezeno
    Maximln poet sloupc v tabulce:     250-1600 podle typ
    Maximln poet index na tabulce:     neomezeno
</PRE>
   <P>Ve skutenosti nic nen neomezeno, limitem bv vdy dostupn diskov
   pam nebo velikost operan pamti. Pokud mte nkterou z tchto hodnot
   neobvykle velkou, me dojt ke snen vkonu.</P>

   <P>Maximln velikost tabulky je 32 TB a nevyaduje podporu velkch soubor
   operanm systmem. Velk tabulky se ukldaj do nkolika 1 GB soubor
   take limity souborovho systmu nejsou podstatn.</P>

   <P>Maximln velikost tabulky a maximln poet sloupc meme
   zetynsobit nastavenm velikosti bloku na 32K.</P>

   <H4><A name="4.6">4.6</A>) Kolik diskovho prostoru je poteba k uloen dat z </H4>
    normlnho textovho souboru?

   <P>PostgreSQL vyaduje a ptinsobek diskovho prostoru k uloen dat z
   textovho souboru.</P>

   <P>Napklad, uvaujme soubor se 100 tisci dky obsahujc na kad dce
   cel slo a textov popis. Text je v prmru dvacet byt dlouh.
   Textov soubor bude 2.8 MB dlouh. Velikost databze obsahujc
   odpovdajc data bude zhruba 6.4 MB.</P>
<PRE>
    36 byt: hlavika dku (piblin)
    24 byt: jedna celoseln poloka a jedna textov
   + 4 byty: ukazatel na strnku k ntici
   ------------------------------------------------------
    64 byt na dek

   Velikost datov strnky PostgreSQL je 8KB

    8192 byt na strnce
    ---------------------- = 128 dek na strnku
      64 byt za dek

    100000 dek
    -------------------- = 782 strnek (zaokrouhleno nahoru)
       128 dek na strnce

    782 * 8192 = 6, 406, 144 byt (6.4 MB)
</PRE>
   <P>Indexy nemaj tak velkou reii, ale mohou bt tak velk, protoe
   obsahuj indexovan data.</P>

   <P>Hodnoty <SMALL>NULL</SMALL> jsou uloeny v bitmapch, take spotebuj jen velmi mlo
   diskovho prostoru.</P>

   <H4><A name="4.7">4.7</A>) Jak zskm seznam vytvoench tabulek, index, databz?</H4>

   <P><I>psql</I> m sadu metapkaz k zobrazen tchto informac. Jejich seznam
   zskte pkazem \?. Dle se mete podvat na obsah systmovch tabulek
   zanajcch <I>pg_</I>. Sputn <I>psql</I> s parametrem <I>-l</I> provede vpis nzv
   vech databz.</P>

   <P>Soubor <I>pgsql/src/tutorial/syscat.source</I> obsahuje <SMALL>SELECT</SMALL>y pistupujc k
   systmovm tabulkmm.</P>

   <H4><A name="4.8">4.8</A>) Mj dotaz je pomal a nepouv vytvoen indexy. Pro?</H4>

   <P>Kad dotaz nemus nutn pout existujc indexy. Index se pouije
   tehdy, kdy je tabulka vt ne urit minimln velikost, a dotaz
   vybr pouze procentuln malou st dk tabulky. To proto, e nhodn
   pstup k disku dan tenm indexu me bt pomalej ne linern ten
   tabulky nebo sekvenn ten.</P>

   <P>PostgreSQL rozhoduje o pouit index na zklad statistiky pstup k
   tabulce. Tyto statistiky se shromauj pkazy <SMALL>VACUUM ANALYZE</SMALL> nebo
   <SMALL>ANALYZE</SMALL>. Dky statistikm m optimizer informaci o potu dek v tabulce
   a me lpe rozhodnout o pouit index. Statistiky se uplatn pi
   uren optimlnho poad a metody spojen tabulek. Statistiky by se
   mli aktualizovat opakovan, tak jak se mn obsah tabulek.</P>

   <P>Indexy nejsou obyejn pouity pro setdn nebo spojen tabulek.
   Sekvenn zpracovn nsledovan explicitnm tdnm je obyejn
   rychlej ne indexn ten na velk tabulce.</P>

   <P>Jinak je tomu v ppad pouit <SMALL>LIMIT</SMALL> a <SMALL>ORDER BY</SMALL>, pi kterm se vtinou
   index pouije, vsledkem je pouze mal st tabulky. Funkce MAX() a
   MIN() nepouvaj indexy, ale je mon tut hodnotu zskat:
<PRE>
    SELECT col 
    FROM tab
    ORDER BY col [ DESC ] 
    LIMIT 1;
</PRE>
   <P>Pokud si myslte, e optimizer myln zvolil sekvenn prohledvn
   tabulky, pouijte pkaz <CODE>SET enable_seqscan TO 'off'</CODE> a zkuste zda je
   indexn prohledvn rychlej.</P>

   <P>Pi vyhledvn na zklad vzoru jako je nap. opertor <SMALL>LIKE</SMALL> nebo <I>~</I> se
   indexy pouj pouze za uritch skutenost:</P>
   <UL>
    <LI>zatek hledanho vzoru mus bt ukotven k zatku, tj.
      <UL>
        <LI>vzor <SMALL>LIKE</SMALL> nesm zanat <I>%</I></LI>
        <LI><I>~</I> regulrn vraz mus zanat <I>^</I></LI>
      </UL>
    <LI>vzor nesm zanat intervalem, nap. [a-e]</LI>
    <LI>vyhledvan, kter nen Case sensitiv jako je <SMALL>ILIKE</SMALL> nebo <I>~*</I> 
      nepouv indexy. Mete ale pout funkcionln indexy, kter jsou 
      posny v sekci <A href="#4.12">4.12</A></LI>
    <LI>pi inicializaci databze (<I>initdb</I>) mus bt pouito C locale
      (pozn. pekladatele - tud v naich podmnkch nepouiteln,
      nepracovalo by esk tdn).</LI>
   </UL>
   <H4><A name="4.9">4.9</A>) Jak zjistm, jak optimizer dotazu vyhodnocuje mj dotaz?</H4>

   Podvejte se do manulov strnky pkazu <SMALL>EXPLAIN</SMALL>.

   <H4><A name="4.10">4.10</A>) Co to je R-tree index?</H4>

   <P>R-tree index se pouv pro indexovn prostorovch dat. Hash index
   neme obslouit prohledvn oblast. B-tree index me dit vyhledn
   oblast v jedn dimenzi. R-tree index me podporovat hledn v
   multidimenzionlnch datech. Pouijeme-li napklad R-tree index na
   atributy typu <I>point</I>, pak systm me efektivn odpovdt na dotaz -
   vyber vechny body uvnit obdlnk.</P>
   
   <P>Pvodn nvrh 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 materily naleznete v Stonebraker's "Readings in Database Systems".</P>

   <P>Vestavn R-tree me slouit k indexaci polygon a oblast. Teoreticky
   meme R-tree pout i pro vce dimenz (jin ne 3D). Ve skutenosti
   ale takov rozen R-tree vyaduje trochu prce a ve souastnosti
   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 pi spojovn mnostv tabulek
   metodou Genetickch algoritm (GA). To umouje zskat velkho mnostv
   variant spojen pi neplnm prohledvnm.</P>

   <H4><A name="4.12">4.12</A>) Jak provst vyhledvn regulrnho vrazu case sensitiv,
    insensitiv? Jak pout index pro case insensitive vyhledvn?</H4>

   <P>Opertor <I>~</I> slou k porovn s regulrnm vrazem, jeho modifikace <I>*~</I>
   pedstavuje case insensitive vyhledvn. Jedn se o obdobu <SMALL>LIKE</SMALL> a
   <SMALL>ILIKE</SMALL>.</P>

   <P>Pro vyhledvn bez ohledu na velk mal psmena pouijeme:</P>
<PRE>
    SELECT * 
    FROM tab
    WHERE lower(col) = 'abc';
</PRE>
   V tomto ppad se nepouije standardn index. Nicmn, pouije se
   funkcionln index, pokud jej vytvote:
<PRE>
    CREATE INDEX tabindex ON tab (lower(col));
</PRE>
   <H4><A name="4.13">4.13</A>) Jak v dotazu detekovat, e poloka je NULL?</H4>

   <P>Urte pomoc <SMALL>IS NULL</SMALL> nebo <SMALL>IS NOT NULL</SMALL></P>

 <H4><A name="4.14">4.14</A>) Jak jsou rozdly mezi rznmi znakovmi typy?</H4>
<PRE>
Typ         Intern nzev       Poznmka
--------------------------------------------------------------------------
VARCHAR(n)  varchar             omezeno maximln dlkou, bez doplnn mezerami
CHAR(n)     bpchar              etzec je doplnn mezerami do dan dlky
TEXT        text                bez hornho limitu na dlku
BYTEA       bytea               pole byt (bezpen lze uloit i znak NULL)
"char"      char                jeden znak
</PRE>
   <P>S internmi nzvy se setkte v systmovm katalogu a v nkterch
   chybovch hlench.</P>

   <P>Prvn tyi uveden typy jsou tzv. varlena typy (tj. prvn tyi byty na
   disku nesou daj o dlce, nsleduj samotn data). Proto skuten
   pouit prostor je vdy o nco mlo vt ne deklarovan dlka. Naopak,
   tyto datov typy jsou komprimovnty <SMALL>TOAST</SMALL>em, take prostor na disku me
   bt ni ne je oekvno.</P>

   <P><SMALL>VARCHAR(n)</SMALL> je vhodn pro ukldn text prommn dlky s pevn
   stanovenou maximln dlkou. <SMALL>TEXT</SMALL> je pro etzce bez omezen dlky s
   maximem jeden gigabajt.</P>

   <P><SMALL>CHAR(n)</SMALL> slou k ukldn etzc stejn dlky. <SMALL>CHAR(n)</SMALL> dopln przdn
   znaky do specifikovan dlky, zatmco VARCHAR(n) ulo pouze pedan
   znaky. <SMALL>BYTEA</SMALL> je ureno pro ukldn binrnch dat, vetn <SMALL>NULL</SMALL> byte.
   Vechny zde popsan typy maj podobn vkonnostn charakteristiky.</P>

   <H4><A name="4.15.1">4.15.1</A>) Jak vytvoit serial/auto-increment pole?</H4>

   <P>PostgreSQL podporuje typ <SMALL>SERIAL</SMALL>. Pi jeho pouit se automaticky vytvo
   SEQUENCE. Napklad:</P>
<PRE>
    CREATE TABLE person (
        id   SERIAL,
        name TEXT
    );
</PRE>
   je automaticky pevedeno 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 manulovch strnkch. Dle mete
   pout uniktn hodnotu <I>OID</I> kadho dku. Potom ale muste spoutt
   <I>pg_dump</I> s pepnaem <I>-o</I>, tak aby zstaly zachovny hodnoty <SMALL>OID</SMALL> (u
   pkazu copy <SMALL>COPY WITH OIDS</SMALL>).

   <H4><A name="4.15.2">4.15.2</A>) Jak zskat hodnotu <SMALL>SERIAL</SMALL> po vloen dku?</H4>

   <P>Jednou z monost je zskat budouc hodnotu <SMALL>SERIAL</SMALL> funkc <I>nextval()</I> ped
   samotnm vloenm a pak ji vloit explicitn. Napklad v jakmsi
   pseudojazyku:</P>
<PRE>
    newid = execute("SELECT nextval('person_id_seq')");
    execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
</PRE>
   <P>Mete pak jet pout hodnotu newid v dalch dotazech, nap. jako
   hodnotu cizho kle. Nzev automaticky vytvoen sekvence je
   <I>tabulka_sloupec_seq</I>.</P>

   <P>Alternativn mete zskat hodnotu posledn generovou sekvenc funkc
   <I>currval()</I> po vloen:</P>
<PRE>
    execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
    new_id = execute("SELECT currval('person_id_seq')");
</PRE>
   <P>Konen mete pout <SMALL>OID</SMALL> hodnotu vrcenou pkazem <SMALL>INSERT</SMALL>, ale to je
   pravdpodobn nejmn penositeln een. V Perlu pi pouit DBI
   modulu Edmunda Mergleho DBD:Pg oid hodnotu zskme <I>$sth->{pg_oid_status}</I>
   po kadm <I>$sth->execute()</I>.

   <H4><A name="4.15.3">4.15.3</A>) Nepovede <I>currval()</I> a <I>nextval()</I> k rozhozen 
     podmnek pi soubhu s jinmi uivateli?</H4>

   <P>Nikoliv, <I>currval()</I> vrac hodnotu naposledy generovanou ve vaem
   backendu, a ta tud nen spolen vem uivatelm.</P>

   <H4><A name="4.15.4">4.15.4</A>) Pro nen vygenerovan slo pouito pi peruen transakce? 
   Pro vznikaj dry v slovn vlastn sekvenc/SERIAL sloupce?</H4>

   <P>K zajitn efektivnosti soubhu, jsou hodnoty posloupnosti, kdy se o
   n pod, a sekvence nen zamena do ukonen transakce. To zpsobuje
   dry v slovn ze zruench transakc.</P>

   <H4><A name="4.16">4.16</A>) Co to je <SMALL>OID</SMALL>? Co je to <SMALL>TID</SMALL>?</H4>

   <P>Kad dek vytvoen v PostgreSQL zsk jedinen <SMALL>OID</SMALL>. Vechna <SMALL>OID</SMALL>
   generovan bhem inicializace databze jsou men ne 16384
   (include/access/transam.h). Vechna <SMALL>OID</SMALL> generovan na poadavek
   uivatele jsou rovna nebo vy tto hodnot. Normln, vechna <SMALL>OID</SMALL> jsou
   jedinen nejen uvnit tabulky nebo databze, ale v rmci cel instalace
   PostgreSQL</P>

   <P>PostgreSQL pouv <SMALL>OID</SMALL> ve svm internm systmu tabulek k vytvoen
   relac. Tato <SMALL>OID</SMALL> mohou bt pouita k identifikaci konkrtnho uivatele
   a pouita v spojen. Pro <SMALL>OID</SMALL> hodnoty je doporuen typ <SMALL>OID</SMALL>. Nad tmto
   sloupcem mete vytvoit index pro urychlen pstupu.</P>

   <P><SMALL>OID</SMALL> jsou dna vem dkm z centrln oblasti a jsou pouita v kad
   databzi. Pokud potebujete zmnit <SMALL>OID</SMALL>, nebo chcete zkoprovat tabulku s
   pvodnmi <SMALL>OID</SMALL>, lze pout:</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 uloena jako 4bajtov integer a peteou po tyech miliardch.
   Nebylo hleno, e by se tak nkdy stalo, pesto ale plnujeme odstranit
   tento limit dv ne se tak stane.</P>
    
   <P><SMALL>TID</SMALL> se pouvaj i identifikaci fyzickch dk s hodnotou bloku a
   offsetu. TIDs se mn modifikac dk (pouv se jako ukazatel indexu
   fyzickho dku).</P>

   <H4><A name="4.17">4.17</A>) Jak je vznam nkterch vraz pouitch v PostgreSQL?</H4>

   <P>V nkterch zdrojovch kdech nebo star dokumentaci se mete setkat s
   nsledujcmi vrazy, kter maj ir vznam. Zde je pklad nekterch:</P>
   <UL>
      <LI> tabulka, relace, tda (table, relation, class)</LI>
      <LI> dek, zznam, ntice (row, record, tuple)</LI>
      <LI> sloupec, poloka, atribut (column, field, attribute)</LI>
      <LI> vyhledn, vbr (retrieve, select)</LI>
      <LI> nhrada, prava (replace, update)</LI>
      <LI> pidn, vkldn (append, insert)</LI>
      <LI> OID, serial value (OID, serial value)</LI>
      <LI> portal, kurzor (portal, cursor)</LI>
      <LI> range variable, jmno tabulky, alias tabulky (range</LI>
        variable, table name, table alias)</LI>
   </UL>

   <P>seznam tchto vraz mete nalzt 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 zskal chybov hlen "ERROR: Memory exhausted in AllocSetAlloc()"?</H4>

   <P>Pravdpodobn dolo k vyerpn virtuln pami na Vaem systmu, nebo
   jdro m nzk limit pro urit zdroje. Vyzkouejte ped startem
   posmatera</P>
<PRE>
    ulimit -d 262144
    limit datasize 256m
</PRE>
   <P>Zle na Vaem shellu, zda budou tyto pkazy spn, mly by zvit
   limit datovho segmentu pro Vae procesy a umonit tak dokonen dotazu.
   Tyto pkazy se aplikuj na aktuln proces a vechny synovsk procesy
   vytvoen po proveden pkazu. Pokud mte problmy s SQL klientem
   protoe backend vrac pli mnoho dat, zkuste zvit limity ped
   startem klienta.</P>

   <H4><A name="4.19">4.19</A>) Jak se dozvm, kterou verzi PostgreSQL pouvm?</H4>

   <P>V psql spuste <CODE>SELECT version();</CODE></P>

   <H4><A name="4.20">4.20</A>) Pro operace s velkmi objekty kon "invalid large obj descriptor"?</H4>

   <P>Vechny operace s velkmi objekty - <CODE>lo_open</CODE>, <CODE>lo_close</CODE>, ... muste
   spoutt v transakci, tj. mezi pkazy <CODE>BEGIN WORK</CODE> a <CODE>COMMIT</CODE>.</P>

   <P>PostgreSQL uvoluje handle velkch objekt pi skonen transakce. Pokud
   budete pracovat s velkmi objekty mimo transakci, pravdpodobn
   dostanete toto chybov hlen, protoe handle ji budou neplatn.</P>

   Pokud pouvte interface podobn <SMALL>ODBC</SMALL> muste nastavit <CODE>set 
   auto_commit off</CODE>.

   <H4><A name="4.21">4.21</A>) Jak vytvoit sloupec obsahujc implicitn aktuln datum?</H4>

   <P>Pouijte <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 vnoen dotazy pouvajc IN tak pomal?</H4>

   <P>Dvj verze (ped 7.4) spojovali vnoen dotazy k vnjm sekvennm
   tenm vsledku poddotazu pro kad dek vnjho dotazu. Pokud poddotaz
   vrtil nkolik mlo dk <SMALL>IN</SMALL> bylo rychl. Pro ostatn ppady je vhodn
   nahradit <SMALL>IN</SMALL> <SMALL>EXISTS</SMALL>:
<PRE>
    SELECT * 
    FROM tab
    WHERE col IN (SELECT subcol FROM subtab);
</PRE>
  na:
<PRE>
   SELECT * 
   FROM tab
   WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
</PRE>
   <P>Pro urychlen vytvoete index pro subcol. </P>

   <P>Ve verzi 7.4 a pozdjch, <SMALL>IN</SMALL> pouv stejn sofistikovanou techniku
   spojovn tabulek jako ostatn dotazy a je preferovan ped <SMALL>EXISTS</SMALL>.</P>

   <H4><A name="4.23">4.23</A>) Jak provst vnj spojen (outer join)?</H4>

   <P>PostgreSQL podporuje vnj spojen tabulek standardnmi SQL pkazy.
   Zde jsou dva pklady:</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 jet pid nepipojen
   dky z t1 (kter nemaj obdoby v t2). Prav spojen (<SMALL>RIGHT JOIN</SMALL>) pid
   nepipojen dky z t2. <SMALL>FULL JOIN</SMALL> vrt vechny dky, vetn
   nepipojench z tbulek t1 a t2. Klov slovo <SMALL>OUTER</SMALL> je nepovinn a ve
   se na <SMALL>LEFT</SMALL>, <SMALL>RIGHT</SMALL> a <SMALL>FULL</SMALL> join. Bn 
   spojen se nazv <SMALL>INNER JOIN</SMALL>.</P>

   <P>V dvjch verzch se vnj spojen tabulek mohlo simulovat pomoc
   <SMALL>UNION</SMALL> a <SMALL>NOT IN</SMALL>. Napklad pro spojen tabulek tab1 a tab2, je
   nsledujc dotaz ekvivalentn k vnjmu 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 provst dotaz z vce databz?</H4>

   <P>PostgreSQL nepodporuje dotazy do jin ne aktuln databze.</P>

   <P><I>contrib/dblink</I> nabz funkce umoujc proveden dotazu v jin 
   databzi. Klient si me otevt simultln pipojen do rznch
   db bez omezen.</P>

   <H4><A name="4.25">4.25</A>) Me funkce vrtit vce dk nebo sloupc?</H4>

   <P>V PostgreSQL 7.3 mete jednodue vracet vce dk nebo sloupc z
   funkce, viz:
   <A href="http://techdocs.postgresql.org/guides/SetReturningFunctions">http://techdocs.postgresql.org/guides/SetReturningFunctions</A>.

   <H4><A name="4.26">4.26</A>) Pro nelze spolehliv vytvet a ruit doasn tabulky v PL/pgSQL funkcch?</H4>

   <P>Peloen kd PL/pgSQL funkce je uloen ve vyrovnvac pamti, tj.
   funkce je pekldna pouze pi zmn kdu, nikoliv ped kadm volnm
   funkce. Nechtnm vedlejm efektem je, e voln funkce sele, kdy se
   funkce odkazuje na doasnou tabulku, pokud tato tabulka byla od pekladu
   funkce zruena (akoliv ji byla znovu vytvoena a existuje). Jedinm
   eenm problmu je pstup k doasn tabulce pomoc <SMALL>EXECUTE</SMALL>, tj.
   dynamick provdn dotazu. Tento pkaz zajist opakovan peklad
   dotazu pi kadm voln funkce.</P>

   <H4><A name="4.27">4.27</A>) Jak jsou monosti replikace databz?</H4>

   <P>Existuje nkolik dostupnch een master/slave replikac, tj umouj
   modifikace master databze a slave databzm umouj 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 een 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 monosti ifrovn databz?</H4>
     <UL>
     <LI><I>contrib/pgcrypto</I> obsahuje ifrovac funkce pouiteln v SQL
       dotazech.</LI>
     <LI>K ifrovn penosu dat z klienta na server, mus bt server
       peloen s podporou <I>ssl</I> a pepna <I>ssl</I> v <I>postgresql.conf</I> mus bt
       nastaven na hodnotu true. Klient mus mt vytvoen zznam hostssl v
       <I>pg_hba.conf</I> a tak mt povolen reim <I>ssl</I>. Lze pout i jin
       prostedky, nejen nativn podporu ssl v PostgreSQL, nap. stunel a
       ssh.</LI>
     <LI>Hesla uivatel databze jsou zaifrovna ponaje verz 7.3. Ve
       starch verzch toto chovn muselo bt vynuceno volbou
       <I>PASSWORD_ENCRYPTION</I> v <I>postgresql.conf</I></LI>
     <LI> Server me bet na ifrovanm souborovm systmu.</LI>
    </UL>
   <HR>

   <H2 align="center">Roziovn PostgreSQL</H2>

   <H4><A name="5.1">5.1</A>) Napsal jsem UDF funkci, PostgreSQL vak kon dump core?</H4>
 
   <P>Problm me bt zpsoben mnoha okolnostmi. Vyzkouejte si svoji funkci
   nejdve v njak jednoduch aplikaci.</P>

   <H4><A name="5.2">5.2</A>) Jak mohu pispt njakmi ikovnmi datovmi typy a funkcemi do PostgreSQL?</H4>

   <P>Polete sv rozen do konference pgsql-hackers, a ono pak mon
   skon v podadresi contrib.</P>

   <H4><A name="5.3">5.3</A>) Jak napsat funkci v C vracejc ntici?</H4>

   <P>Funkce vracejc tabulky jsou podporovan PostgreSQL 7.3 a vy pro
   jazyky C, PL/PgSQL a SQL. Vce naleznete v The Programmer's Guide.
   Pklady tchto funkc pro C naleznete v <I>contrib/tablefunc</I>.</P>

   <H4><A name="5.4">5.4</A>) Modifikoval jsem zdrojov soubory. Tato zmna nebyla pi rekompilaci vzata v potaz. Pro?</H4>

   <P><I>Makefile</I> nem informace o zvislostech mezi hlavikovmi soubory. Muste
   provst <I>make clean</I> a pak <I>make</I>. Pokud pouvte <SMALL>gcc</SMALL>, mete pout
   pepna <I>--enable-depend</I> pkazu <I>configure</I> k automatickmu een
   zvislost pekladaem.</P>
 </BODY>
</HTML>