diff --git a/doc/FAQ_czeck b/doc/FAQ_czeck new file mode 100644 index 0000000000000000000000000000000000000000..1fd6627b8a581314c968e487297e53fa77aa27f3 --- /dev/null +++ b/doc/FAQ_czeck @@ -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 + diff --git a/doc/bug.template b/doc/bug.template index f30e7598282656a37d8f0181a5a0ab77e777813d..2a4177f53695a1b198e7e15be8c1d2e7f23afb0e 100644 --- a/doc/bug.template +++ b/doc/bug.template @@ -25,7 +25,7 @@ System Configuration --------------------- Architecture (example: Intel Pentium) : - Operating System (example: Linux 2.0.26 ELF) : + Operating System (example: Linux 2.4.18) : PostgreSQL version (example: PostgreSQL-7.5): PostgreSQL-7.5 diff --git a/doc/src/FAQ/FAQ_czech.html b/doc/src/FAQ/FAQ_czech.html new file mode 100644 index 0000000000000000000000000000000000000000..9d2c43b5ff35d4215dcd5f96d471b78f6619b051 --- /dev/null +++ b/doc/src/FAQ/FAQ_czech.html @@ -0,0 +1,1088 @@ +<html><head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2"> + <meta http-equiv="Content-language" content="cs"> + <meta name="robots" content="index,FOLLOW"> + <meta name="description" lang="en" content="Czech translation of FAQ for PostgreSQL"> + <meta name="description" lang="cs" content="�esk� p�eklad FAQ PostgreSQL"><title>PostgreSQL FAQ cz</title> + + + <style type="text/css"> + A {font-family:helvetica,arial,sans-serif; font-weight:normal; color:#0201FF; text-decoration:none;} + A:active {color:#0201FF;;} + A:visited {color:#0F0169;} + A:hover{text-decoration:underline; color:#020169;} + body {font-family:helvetica,arial,sans-serif; font-weight:normal;} + </style></head> + <body leftmargin="10" topmargin="10" marginwidth="10" marginheight="10" bgcolor="white"> + + +<h1>�asto kladen� dotazy (FAQ) PostgreSQL</h1> + +<h2>Obecn� ot�zky</h2> +<a href="#1.1">1.1</a> Co je PostgreSQL? Jak se vyslovuje?<br> +<a href="#1.2">1.2</a> Jak� je licence na PostgreSQL?<br> +<a href="#1.3">1.3</a> Na kter�ch Unixex lze spustit PostgreSQL?<br> +<a href="#1.4">1.4</a> Kter� ne-unixov� platformy jsou podporovan�?<br> +<a href="#1.5">1.5</a> Kde mohu z�skat PostgreSQL?<br> +<a href="#1.6">1.6</a> Kde mohu z�skat podporu?<br> +<a href="#1.7">1.7</a> Kde je posledn� verze?<br> +<a href="#1.8">1.8</a> Jak� je dostupn� dokumentace?<br> +<a href="#1.9">1.9</a> Kde najdu seznam zn�m�ch chyb nebo nepodporovan�ch vlastnost�?<br> +<a href="#1.10">1.10</a> Jak se mohu nau�it SQL?<br> +<a href="#1.11">1.11</a> Nem� PostgreSQL probl�my s rokem 2000?<br> +<a href="#1.12">1.12</a> Jak se p�ipojit k v�voj��sk�mu t�mu?<br> +<a href="#1.13">1.13</a> Kam podat report o chyb�?<br> +<a href="#1.14">1.14</a> Jak je na tom PostgreSQL v porovn�n� s jin�mi datab�zemi?<br> +<a href="#1.15">1.15</a> Jak lze finan�n� pomoci PostgreSQL?<br> + +<h2>User client dotazy</h2> + +<a href="#2.1">2.1</a> Kde naleznu ODBC ovlada�e pro PostgreSQL?<br> +<a href="#2.2">2.2</a> Jak� n�stroje lze pou��t pro PostgreSQL a web?<br> +<a href="#2.3">2.3</a> Existuje grafick� rozhran� pro PostgreSQL?<br> +<a href="#2.4">2.4</a> Kter� programovac� jazyky maj� podporu pro PostgreSQL?<br> + +<h2>Administrativn� dotazy</h2> +<a href="#3.1">3.1</a> Jak nainstalovat PostgreSQL jinam ne� do /usr/local/pgsql?<br> +<a href="#3.2">3.2</a> P�i startu postmaster, dostanu chybov� hl�en� Bad System Call nebo +core dump. Pro�?<br> +<a href="#3.3">3.3</a> P�i startu postmastera dostanu hl�en� o chyb� IpcMemoryCreate. Pro�?<br> +<a href="#3.4">3.4</a> P�i startu postmastera dostanu hl�en� o chyb� +IpcSemaphoreCreate. Pro�?<br> +<a href="#3.5">3.5</a> Jak povolit nebo zak�zat p��stup z jin�ch stanic?<br> +<a href="#3.6">3.6</a> Jak ladit datab�zov� stroj na lep�� v�kon?<br> +<a href="#3.7">3.7</a> Jak� jsou mo�nosti lad�n�?<br> +<a href="#3.8">3.8</a> Pro� dostanu "Sorry, too many clients", kdy� se zkou��m p�ipojit?<br> +<a href="#3.9">3.9</a> K �emu slou�� adres�� pgsql_tmp?<br> +<a href="#3.10">3.10</a> Pro� je po�adov�no dump a obnoven� (load) datab�ze b�hem upgrade +mezi velk�mi verzemi PostgreSQL?<br> +<h2>Provozn� dotazy</h2> +<a href="#4.1">4.1</a> ��m se li�� bin�rn� a norm�ln� kurzor?<br> +<a href="#4.2">4.2</a> Jak z�skat pouze prvn� ��dek dotazu? N�hodn� ��dek?<br> +<a href="#4.3">4.3</a> Jak z�sk�m seznam tabulek nebo jinak jak jej z�sk� psql?<br> +<a href="#4.4">4.4</a> Jak odstran�m sloupec tabulky, jak zm�n�m jeho typ?<br> +<a href="#4.5">4.5</a> Jak� je maxim�ln� velikost ��dku, tabulky a datab�ze?<br> +<a href="#4.6">4.6</a> Kolik diskov�ho prostoru je pot�eba k ulo�en� dat z norm�ln�ho +textov�ho souboru? <br> +<a href="#4.7">4.7</a> Jak z�sk�m seznam vytvo�en�ch tabulek, index�, datab�z�?<br> +<a href="#4.8">4.8</a> M�j dotaz je pomal� a nepou��v� vytvo�en� indexy. Pro�?<br> +<a href="#4.9">4.9</a> Jak zjist�m, jak optimizer dotazu vyhodnocuje m�j dotaz?<br> +<a href="#4.10">4.10</a> Co to je R-tree index?<br> +<a href="#4.11">4.11</a> Co je Genetic Query Optimizer?<br> +<a href="#4.12">4.12</a> Jak prov�st vyhled�v�n� regul�rn�ho v�razu case sensitiv, +insensitiv? Jak pou��t index pro case insensitive vyhled�v�n�?<br> +<a href="#4.13">4.13</a> Jak v dotazu detekovat, �e polo�ka je NULL?<br> +<a href="#4.14">4.14</a> Jak� jsou rozd�ly mezi r�zn�mi znakov�mi typy?<br> +<a href="#4.15.1">4.15.1</a> Jak vytvo�it serial/auto-increment pole?<br> +<a href="#4.15.2">4.15.2</a> Jak z�skat hodnotu SERIAL po vlo�en� ��dku?<br> +<a href="#4.15.3">4.15.3</a> Nepovede currval() a nextval() k rozhozen� podm�nek p�i soub�hu s jin�mi u�ivateli?<br> +<a href="#4.15.4">4.15.4</a> Pro� nen� vygenerovan� ��slo pou�ito p�i p�eru�en� +transakce? Pro� vznikaj� d�ry v ��slov�n� vlastn� sekvenc�/SERIAL +sloupce?<br> +<a href="#4.16">4.16</a> Co to je OID? Co je to TID?<br> +<a href="#4.17">4.17</a> Jak� je v�znam n�kter�ch v�raz� pou�it�ch v PostgreSQL?<br> +<a href="#4.18">4.18</a> Pro� jsem z�skal chybov� hl�en� "ERROR: Memory exhausted in +AllocSetAlloc()"?<br> +<a href="#4.19">4.19</a> Jak se dozv�m, kterou verzi PostgreSQL pou��v�m?<br> +<a href="#4.20">4.20</a> Pro� operace s velk�mi objekty kon�� "invalid large obj descriptor"?<br> +<a href="#4.21">4.21</a> Jak vytvo�it sloupec obsahuj�c� implicitn� aktu�ln� datum?<br> +<a href="#4.22">4.22</a> Pro� jsou moje vno�en� dotazy pou��vaj�c� IN tak pomal�?<br> +<a href="#4.23">4.23</a> Jak prov�st vn�j�� spojen� (outer join)?<br> +<a href="#4.24">4.24</a> Jak prov�st dotaz nap��� n�kolika datab�zemi?<br> +<a href="#4.25">4.25</a> M��e funkce vr�tit v�ce ��dk� nebo sloupc�?<br> +<a href="#4.26">4.26</a> Pro� nelze spolehliv� vytv��et a ru�it do�asn� tabulky v +PL/pgSQL funkc�ch?<br> +<a href="#4.27">4.27</a> Jak� jsou mo�nosti replikace datab�z�?<br> +<a href="#4.28">4.28</a> Jak� jsou mo�nosti �ifrov�n� datab�z�?<br> +<h2>Roz�i�ov�n� PostgreSQL</h2> +<a href="#5.1">5.1</a> Napsal jsem UDF funkci, PostgreSQL v�ak kon�� dump core?<br> +<a href="#5.2">5.2</a> Jak mohu p�isp�t n�jak�mi �ikovn�mi datov�mi typy a funkcemi +do PostgreSQL?<br> +<a href="#5.3">5.3</a> Jak napsat funkci v C vracej�c� ntici?<br> +<a href="#5.4">5.4</a> Modifikoval jsem zdrojov� soubory. Tato zm�na nebyla p�i +rekompilaci vzata v potaz. Pro�?<br> + + + + +<hr> +<h2>Obecn� ot�zky</h2> + +<h3><a name="1.1">1.1</a> Co je PostgreSQL? Jak se vyslovuje?</h3> + +<p>PostgreSQL se vyslovuje Post-Gres-Q-L.</p> + +<p></p>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.<p></p> + +<p>PostgreSQL vyv�j� t�m v�voj��� p�ihl�en�ch do v�voj��sk� konference +PostgreSQL. Sou�asn�m koordin�torem je Marc G. Fournier. (Odpov�� +1.6. - jak se zapojit). Tento t�m je zodpov�dn� za ve�ker� v�voj +PostgreSQL.</p> + +<p>Autory prvn� verze PostgreSQL 1.01 byli Andrew Yu and Jolly +Chen. Do portace, testov�n�, lad�n� a +roz�i�ov�n� k�du se zapojilo mnoho dal��ch v�voj��� . P�vodni k�d Postgresu, ze kter�ho PostgreSQL +vych�z�, je v�sledkem �sil� mnoha student� a program�tor� pracuj�c�ch +pod veden�m prof. Michaela Stonebrakera na University of California v +Berkley.</p> + +<p>P�vodn� n�zev software z Berkley byl Postgres. Po p�id�n� jazyka SQL +se n�zev zm�nil na Postgres95. Koncem roku 1996 byl RDBMS +p�ejmenov�n na PostgreSQL.</p> + +<h3><a name="1.2">1.2</a> Jak� je licence na PostgreSQL?</h3> + + <p>PostgreSQL je p�edm�tem n�sleduj�c�ch autorsk�ch pr�v:</p> + + <p>D�l�� copyright (c) 1996-2002, PostgreSQL Global Development Group</p> + + <p>D�l�� copyright (c) 1994-6, Regents of the University of California</p> + + + <p>Ud�luje se opr�vn�n� k u�it�, rozmno�ov�n�, prov�d�n� �prav a + roz�i�ov�n� tohoto softwaru a dokumentace k n�mu, pro jak�koli ��ely, + bez licen�n�ho poplatku a bez p�semn� licen�n� smlouvy, za podm�nky, �e + na v�ech jeho kopi�ch je uvedeno ozn�men� o v��e uveden�ch pr�vech, + jako� i obsah tohoto a dvou n�sleduj�c�ch odstavc�.</p> + + + <p>THE UNIVERSITY OF CALIFORNIA ("KALIFORNSK� UNIVERZITA") NEN� V ��DN�M + P��PAD� ODPOV�DNA ��DN� T�ET� OSOB� ZA P��MOU, NEP��MOU, ZVL��TN�, + NAHODILOU NEBO V�SLEDNOU �KODU, V�ETN� U�L�HO ZISKU, ZP�SOBENOU U�IT�M + TOHOTO SOFTWARU A DOKUMENTACE K N�MU, A TO I V P��PAD�, �E THE + UNIVERSITY OF CALIFORNIA BYLA INFORMOV�NA O MO�NOSTI VZNIKU TAKOV� �KODY.</p> + + + <p>THE UNIVERSITY OF CALIFORNIA ZEJM�NA NEPOSKYTUJE JAK�KOLI Z�RUKY, A TO + NEJEN Z�RUKY OBCHODOVATELNOSTI A VHODNOSTI TOHOTO V�ROBKU KE SPECIFICK�M + ��EL�M. NͮE UVEDEN� SOFTWARE JE POSKYTNUT "JAK STOJ� A LE��" A THE + UNIVERSITY OF CALIFORNIA NEN� POVINNA ZAJISTIT JEHO �DR�BU, PODPORU, + AKTUALIZACI, VYLEP�EN� NEBO MODIFIKACI.</p> + + <p>V��e uveden� je BSD licence, b�n� licence otev�en�ho zdroje. Nen� zde + ��dn� omezen� ohledn� u�it� k�du zdroje. Jsme s t�m spokojeni a nem�me v + �myslu na t�to skute�nosti cokoli m�nit.</p> + + +<h3><a name="1.3">1.3</a> Na kter�ch Unixex lze spustit PostgreSQL?</h3> + +<p>PostgreSQL b�� na v�ech modern�ch unixov�ch platform�ch. V instala�n�ch +instrukc�ch naleznete aktu�ln� seznam v�ech platforem na kter�ch byla +testov�n�m ov��ena funkcionalita PostgreSQL.</p> + +<h3><a name="1.4">1.4</a> Kter� ne-unixov� platformy jsou podporovan�?</h3> + +<h4>Klient</h4> + +<p>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.</p> + +<h4>Server</h4> +<p>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 +<a href="http://forge.novell.com/">http://forge.novell.com</a>. </p> + +<h3><a name="1.5">1.5</a> Kde mohu z�skat PostgreSQL?</h3> + +<p>Prim�rn�m anonymn�m ftp serverem pro PostgreSQL je +<a href="ftp://ftp.postgresql.org/pub">ftp://ftp.PostgreSQL.org/pub</a> +. Seznam zrcadel naleznete na na�ich +webov�ch str�nk�ch.</p><p> + +</p><h3><a name="1.6">1.6</a> Kde mohu z�skat podporu?</h3> + +<p>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)</p> +<pre>subscribe +end +</pre> +na adresu <a href="mailto:pgsql-general-request@PostgreSQL.org">mailto:pgsql-general-request@PostgreSQL.org</a>.<p></p> + +<p>M��ete si vy��dat denn� p�ehled (diggest), kter� m� zhruba 30K denn� zpr�v. + +</p><p>Konference psql-bugs je ur�ena k zas�l�n� zpr�v o chyb�ch. Pro p�ihl�en� +po�lete mail se stejn�m obsahem jako v p�edchoz�m p��pad� na adresu +<href ="mailto:pgsql-bugs-request@PostgreSQL.org">mailto:pgsql-bugs-request@PostgreSQL.org.</href></p> + +<p>Do v�voj��sk� konference se p�ihl�s�te odesl�n�m dopisu s +ji� zmi�ovan�m obsahem na <a href="mailto:pgsql-hackers-request@PostgreSQL.org">mailto:pgsql-hackers-request@PostgreSQL.org</a>.</p> + +<p>Seznam dal��ch konferenc� naleznete na str�nk�ch PostgreSQL +<a href="http://www.postgresql.org/">http://www.postgresql.org</a></p> + +<h3><a name="1.7">1.7</a> Kde je posledn� verze?</h3> + +<p>Posledn� verz� je PostgreSQL 7.4.. Pl�nujeme uvolnit velkou verzi +ka�d�ch �est a� osm m�s�c�.</p> + +<h3><a name="1.8">1.8</a> Jak� je dostupn� dokumentace?</h3> + +<p>R�zn� manu�ly, manu�lov� str�nky a n�kolik mal�ch testovac�ch p��klad� +jsou sou��sti distribuce. Pod�vejte se do adres��e /doc. Manu�ly jsou +p��stupn� online na <a href="http://www.postgresql.org/docs">http://www.PostgreSQL.org/docs</a>.</p> + +<p>Na adres�ch <a href="http://www.postgresql.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html</a> a +<a href="http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook/</a> naleznezte dv� online knihy o +PostgreSQL. Seznam dostupn� literatury je na +<a href="http://techdocs.postgresql.org/techdocs/bookreviews.php">http://techdocs.PostgreSQL.org/techdocs/bookreviews.php</a>. Soubor +technick�ch �l�nk� s tematikou PostgresQL najdete na +<a href="http://techdocs.postgresql.org/">http://techdocs.PostgreSQL.org/</a>.</p> + +<p>psql m� u�ite�n� metap��kaz \d slou��c� k zobrazen� informac� +o typech, oper�torech, funkc�, agrega�n�ch funkc� atd.</p> + +<p>V�ce dokumentace naleznete na na�ich webov�ch str�nk�ch.</p> + +<h3><a name="1.9">1.9</a> Kde najdu seznam zn�m�ch chyb nebo nepodporovan�ch vlastnost�?</h3> + +<p>PostgreSQL podporuje roz���enou podmno�inu SQL-92. V na�em <a href="http://developer.postgresql.org/todo.php">TODO</a> najdete +seznam zn�m�ch chyb, chyb�j�c�ch vlastnost� a seznam vlastnost�, +kter� budou do syst�mu implementov�ny v budoucnu (v�etn� priorit).</p> + +<h3><a name="1.10">1.10</a> Jak se mohu nau�it SQL?</h3> + +<p>V knize The PostgreSQL book na <a href="http://www.postgresql.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html</a> +je vysv�tlen jazyk SQL (vy�la �esky). Dal�� dostupnou knihou je +<a href="http://www.commandprompt.com/ppbook">http://www.commandprompt.com/ppbook</a>. Kvalitn� n�vody naleznete na +<a href="http://www.intermedia.net/support/sql/sqltut.shtm">http://www.intermedia.net/support/sql/sqltut.shtm</a>, na +<a href="http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM">http://www.intermedia.net/support/sql/sqltut.shtm</a>, +a na <a href="http://sqlcourse.com/">http://sqlcourse.com</a>.</p> + +<p>Dal�� je Teach Yourself SQL in 21 days, Second Edition na +<a href="http://members.tripod.com/er4ebus/sql/index.htm">http://members.tripod.com/er4ebus/sql/index.htm</a>.</p> + +<p>Mnoho u�ivatel� doporu�uje The Practical SQL Handbook, Bowman, Judith +S., et al., Addison-Wesley. Jin� preferuj� The Complete Reference SQL, +Groff et al., McGraw-Hill.</p> + +<h3><a name="1.11">1.11</a> Nem� PostgreSQL probl�my s rokem 2000?</h3> + +<p>Nem�, m��eme pracovat s datumy po roce 2000 na�eho letopo�tu i p�ed +rokem 2000 p�.n.l. </p> + +<h3><a name="1.12">1.12</a> Jak se p�ipojit k v�voj��sk�mu t�mu?</h3> + +<p>Nejd��ve si st�hn�te nejnov�j�� zdroje a p�e�t�te si v�voj��skou +dokumentaci na na�em webu nebo v distribuci. Pak se p�ihla�te do +konferenc� pgsql-hackers a pgsql-patches. Kvalitn� z�platy +pos�lejte do pgsql-patches.</p> + +<p>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.</p> + +<h3><a name="1.13">1.13</a> Kam podat report o chyb�?</h3> + +<p>Nav�tivte na�i PostgreSQL BugTool str�nku na +<a href="http://www.postgresql.org/bugs/bugs.php">http://www.PostgreSQL.org/bugs/bugs.php</a>, kter� obsahuje n�vod a +sm�rnice jak podat chybov� report. </p> + +<p>Ov��te si na na�em ftp serveru <a href="ftp://ftp.postgresql.org/pub">ftp://ftp.PostgreSQL.org/pub</a>, zda-li +m�te nejnov�j�� verzi PostgreSQL a zda-li k n� neexistuj� n�jak� z�platy.</p> + +<h3><a name="1.14">1.14</a> Jak je na tom PostgreSQL v porovn�n� s jin�mi datab�zemi?</h3> + +<p>Existuje n�kolik hledisek jak porovn�vat software: vlastnosti, v�kon, +spolehlivost, podpora a cena.</p> + +<h4>Vlastnosti</h4> + <p>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�.</p> + +<h4>V�kon</h4> + <p>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 + <a href="http://openacs.org/philosophy/why-not-mysql.html">http://openacs.org/philosophy/why-not-mysql.html</a>. Za v�vojem MySQL + nen� Open Source komunita, ale komer�n� spole�nost, p�esto�e + svoje produkty distribuuje jako Open Source.</p> + +<h4>Spolehlivost</h4> + <p>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. </p> + +<h4>Podpora</h4> + <p>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).</p> + +<h4>Cena</h4> + <p>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).</p> + +<h3><a name="1.15">1.15</a> Jak lze finan�n� pomoci PostgreSQL?</h3> + +<p>PosgreSQL m� prvot��dn� infrastrukturu od na�eho za��tku v roce +1996. Vd���me za to Marku Fournierovi, kter� zalo�il a spravoval tuto +infrastrukturu n�kolik let.</p> + +<p>Kvalitn� infrastruktura je velice d�le�it� pro ka�d� open source +projekt. P�edch�z� nedorozum�n�m, kter� velice zdr�uj� pokrok v projektu.</p> + +<p>Tato infrastruktura nen� lacin�. K jej�mu zaji�t�n� je t�eba st�le hradit ur�it� +m�s��n� a jednor�zov� ��stky. Pokud m�te Vy nebo Va�e spole�nost +pen�ze, kter� n�m m��ete darovat, obra�e se na <a href="http://store.pgsql.com/shopping/">http://store.pgsql.com/shopping/</a> a darujte je.</p> + +<p>A�koliv webov� str�nka zmi�uje PostgreSQL, Inc. vklady jsou ur�eny +pouze k podpo�e projektu PostgreSQL a nepodporuj� ��dnou existuj�c� +spole�nost. Pokud to vy�adujete, m��ete poslat kontrolu na na�i kontaktn� +adresu.</p> + +<p>Pokud m�te p��klad �sp�n�ho nasazen� PostgreSQL, p�ihla�t� se na n� +advocacy site na <a href="http://advocacy.postgresql.org/">http://advocacy.postgresql.org</a>.</p> +<hr> + +<h2>User client dotazy</h2> + +<h3><a name="2.1">2.1</a> Kde naleznu ODBC ovlada�e pro PostgreSQL?</h3> + +<p>Pro PostgreSQL existuj� dva ODBC ovlada�e - PsqlODBC a OpenLink ODBC.</p> + +<p>PsqlODBC je ke sta�en� na <a href="http://gborg.postgresql.org/project/psqlodbc/projdisplay.php">http://gborg.postgresql.org/project/psqlodbc/projdisplay.php</a>.</p> + +<p>OpenLink m��ete z�skat na <a href="http://www.openlinksw.com/">http://www.openlinksw.com</a>. Spolupracuje +s jejich klientsk�m programov�m vybaven�m a je dostupn� pro v�echny jimi +podporovan� platformy (Win, Mac, Unix, VMS).</p> + +<p>Tento ovlada� je ur�en pro ty, kte�� vy�aduj� podporu komer�n� kvality, +nicm�n� freeware verze je dostupn� a funk�n�. Dotazy zas�lejte +na postgres95@openlink.co.uk.</p> + +<h3><a name="2.2">2.2</a> Jak� n�stroje lze pou��t pro PostgreSQL a web?</h3> + +<p>P�kn� �vod do datab�zov�ch technologi� zabezpe�uj�c�ch chod +webov�ch str�nek najdete na <a href="http://www.webreview.com/">http://www.webreview.com</a>.</p> + +<p>Pro tvorbu webu existuje excelentn� rozhran� PHP, kter� naleznete na +<a href="http://www.php.net/">http://www.php.net</a>.</p> + +<p>Pro slo�it�j�� p��pady se �asto pou��v� Perl a CGI.pm nebo mod_perl.</p> + +<h3><a name="2.3">2.3</a> Existuje grafick� rozhran� pro PostgreSQL?</h3> + +<p>Pro PostgreSQL existuje n�kolik grafick�ch rozhran�: +PgAccess (<a href="http://www.php.net/">http://www.php.net</a>), PgAdmin (<a href="http://www.php.net/">http://www.php.net</a>), RHDB +Admin (<a href="http://sources.redhat.com/rhdb/">http://sources.redhat.com/rhdb/</a>) a Rekall +(<a href="http://www.thekompany.com/products/rekall/">http://www.thekompany.com/products/rekall/</a>). D�le existuje +PHPPgAdmin (<a href="http://phppgadmin.sourceforge.net/">http://phppgadmin.sourceforge.net/</a>) rozhran� +PostgreSQL zalo�en� na web technologii.</p> + +<p>�pln�j�� seznam najdete na <a href="http://techdocs.postgresql.org/guides/GUITools">http://techdocs.postgresql.org/guides/GUITools</a>.</p> + +<h3><a name="2.4">2.4</a> Kter� programovac� jazyky maj� podporu pro PostgreSQL?</h3> + +<p>V�t�ina programovac�ch jazyk� obsahuje rozhran� pro +PostgreSQL. Pod�vejte se do roz�i�uj�c�ch modul� Va�eho programovac�ho +jazyka.</p> + +<p>Distribuce PostgreSQL obsahuje tato rozhran�: + </p><ul> + <li> C (libpq) + </li><li> Embbedded C (ecpg) + </li><li> Java (jdbc) + </li><li> Python (PyGreSQL) + </li><li> TCL (libpgtcl) +</li></ul> +<p>Dal�� rozhran� jsou dostupn� na <a href="http://gborg.postgresql.org/">http://gborg.postgresql.org</a> v sekci +Drivers/Interfaces. </p> +<hr> + +<h2>Administrativn� dotazy</h2> + +<h3><a name="3.1">3.1</a> Jak nainstalovat PostgreSQL jinam ne� do /usr/local/pgsql?</h3> + +<p>Pou�ijte volbu --prefix p�i spu�t�n� configure</p> + +<h3><a name="3.2">3.2</a> P�i startu postmaster, dostanu chybov� hl�en� Bad System Call nebo +core dump. Pro�?</h3> + +<p>D�vody mohou b�t r�zn�, ale nejprve zkontrolujte, zda V� syst�m +podporuje System V extensions. PostgreSQL vy�aduje v j�d�e podporu +sd�len� pam�ti a semafor�.</p> + +<h3><a name="3.3">3.3</a> P�i startu postmastera dostanu hl�en� o chyb� IpcMemoryCreate. Pro�?</h3> + +<p>Bu�to nem�te spr�vn� nakonfigurovanou sd�lenou pam� v j�d�e nebo +musite zv�t�it jej� velikost. Pot�ebn� velikost je z�visl� na +architektu�e a na tom, kolik pam�ov�ch buffer� a backend� m�te povoleno +pro postmastera. Pro v�t�inu syst�m� s +p�eddefinovan�m po�tem backend� a pam�ov�ch buffer� je +minimum zhruba 1MB. V <a href="http://postgresql.ok.cz/PostgreSQL%20Administrator%27sGuide">http://www.postgresql.org/docs/view.php?version=current&idoc=1&file=kernel-resources.html</a> +naleznete podrobn�j�� informace o sd�len� pam�ti a semaforech.</p> + +<h3><a name="3.4">3.4</a> P�i startu postmastera dostanu hl�en� o chyb� +IpcSemaphoreCreate. Pro�?</h3> + +<p>Pokud dostane chybovou zpr�vu IpcSemaphoreCreate: semget failed (No +space left on device), pak va�e j�dro nem� dost voln�ch semafor�. PostgreSQL +vy�aduje jeden semafor pro ka�d� backend v pozad�. Do�asn�m +�e�en�m je start 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.</p> + +<p>Nefunk�n� semafory mohou zp�sobit p�d b�hem intenzivn�ch datab�zov�ch +operac�.</p> + +<p>Pokud se tato chyba vyskytuje je�t� n�kde jinde, mo�n� nem�te v�bec +nakonfigurov�ny semafory ve va�em j�d�e. V PostgreSQL +Administrator's Guide najdete podrobn�j�� popis po�adavk� na sd�lenou +pam�t a semafory.</p> + +<h3><a name="3.5">3.5</a> Jak povolit nebo zak�zat p��stup z jin�ch stanic?</h3> + +<p>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�</p> + +<h3><a name="3.6">3.6</a> Jak ladit datab�zov� stroj na lep�� v�kon?</h3> + +<p>Ur�it� pomohou indexy. P��kaz EXPLAIN zobraz� zp�sob interpretace +Va�eho dotazu a pou�it� index�.</p> + +<p>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.</p> + +<p>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.</p> + +<p>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�.</p> + +<p>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. </p> + +<p>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.</p> + +<h3><a name="3.7">3.7</a> Jak� jsou mo�nosti lad�n�?</h3> + +<p>M�te n�kolik mo�nost� jak se dostat k u�ite�n�m stavov�m informac�m.</p> + +<p>Zaprv�, p�i p�ekladu pou�ijte p�ep�na� --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.</p> + +<p>Jak postmaster tak postgres m� n�kolik p�ep�na�� umo��uj�c�ch +lad�n�. Postmaster nastartujte tak, abyste si byli jisti, �e je +standartn� v�stup a standartn� chybov� v�stup p�esm�rov�n do souboru +logu, nap��klad:</p> +<pre>cd /usr/local/pgsql +./bin/postmaster > server.log 2>&1 & +</pre> +<p>T�m se vytvo�� log v adres��i PostgreSQL, Tento soubor obsahuje +u�ite�n� informace o probl�mech a chyb�ch vyskytl�ch se na +serveru. Postmaster m� p�ep�na� -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.</p> + +<p>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.</p> + +<p>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.</p> + +<p>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).</p> + +<p>M��ete prov�st p�eklad s profilac�, tak abyste vid�li kolik �asu +zab�raj� jednotliv� funkce. Soubory s profily backend� jsou ulo�eny v +adres��i 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.</p> + +<h3><a name="3.8">3.8</a> Pro� dostanu "Sorry, too many clients", kdy� se zkou��m p�ipojit?</h3> + +<p>Zvy�te limit postmastera na maxim�ln� po�et sou�asn� spu�t�n�ch backend�.</p> + +<p>V�choz� hodnota je 32 backend�. Tuto hodnotu zv���te zastaven�m a +op�tovn�m spu�t�n�m postmastera s parametrem -N nebo �pravou postgresql.conf.</p> + +<p>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.</p> + +<h3><a name="3.9">3.9</a> K �emu slou�� adres�� pgsql_tmp?</h3> + +<p>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�.</p> + +<p>Do�asn� soubory jsou obvykle maz�ny automaticky, ale m��e se st�t, �e +b�hem t��d�n� server spadne. Zastaven� a dal�� start postmastera zajist� +odstran�n� soubor� s t�chto adres���.</p> + +<h3><a name="3.10">3.10</a> Pro� je po�adov�no dump a obnoven� (load) datab�ze b�hem upgrade +mezi velk�mi verzemi PostgreSQL?</h3> + +<p>PostgreSQL se minim�ln� m�n� b�hem mal�ch verz�, tak�e nap�. p�i upgrade z +7.2 na 7.2.1 nen� nutn� dump a load datab�ze. Ale 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.</p> +<hr> + +<h2>Provozn� dotazy</h2> + +<h3><a name="4.1">4.1</a> ��m se li�� bin�rn� a norm�ln� kurzor?</h3> + +<p>Popis najdete v manu�lov� str�nce DECLARE</p> + +<h3><a name="4.2">4.2</a> Jak z�skat pouze prvn� ��dek dotazu? N�hodn� ��dek?</h3> + +<p>Pod�vejte se do man. str�nky p��kazu FETCH, nebo pou�ijte SELECT ... +LIMIT ... </p> + +<p>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�.</p> + +<p>K z�sk�n� n�hodn�ho ��dku pou�ijte:</p> +<pre>SELECT col FROM tab + ORDER BY random() LIMIT 1; +</pre> +<h3><a name="4.3">4.3</a> Jak z�sk�m seznam tabulek nebo jinak jak jej z�sk� psql?</h3> + +<p>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�.</p> + +<h3><a name="4.4">4.4</a> Jak odstran�m sloupec tabulky, jak zm�n�m jeho typ?</h3> + +<p>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:</p> +<pre>BEGIN; +LOCK TABLE old_table; +SELECT ... -- mimo sloupec, kter� chceme odstranit + INTO TABLE new_table; +DROP TABLE old_table; +ALTER TABLE new_table RENAME TO old_table; +COMMIT; +</pre> +<p>Pro zm�nu typu sloupce je t�eba prov�st:</p> +<pre>BEGIN; +ALTER TABLE tab ADD COLUMN new_col new_data_type; +UPDATE tab SET new_col = CAST(old_col AS new_data_type; +ALTER TABLE tab DROP COLUMN old_col; +COMMIT; +</pre> +<p>Pot� prove�te VACUUM FULL tab - uvoln�te t�m diskov� prostor zabran� +nyn� ji� neplatn�mi ��dky.</p> + +<h3><a name="4.5">4.5</a> Jak� je maxim�ln� velikost ��dku, tabulky a datab�ze?</h3> + +<p>PostgreSQL m� tato omezen�:</p> +<table> +<tbody><tr><td>Maxim�ln� velikost datab�ze:</td><td> neomezena (existuj� 32TB db) +</td></tr><tr><td>Maxim�ln� velikost tabulky:</td><td> 32 TB +</td></tr><tr><td>Maxim�ln� velikost ��dky:</td><td> 1.6 TB +</td></tr><tr><td>Maxim�ln� velikost polo�ky</td><td> 1 GB +</td></tr><tr><td>Maxim�ln� po�et ��dk� v tabulce:</td><td> neomezeno +</td></tr><tr><td>Maxim�ln� po�et sloupc� v tabulce:</td><td> 250-1600 podle typ� +</td></tr><tr><td>Maxim�ln� po�et index� na tabulce:</td><td> neomezeno +</td></tr></tbody></table> +<p>Ve skute�nosti nic nen� neomezeno, limitem b�v� v�dy dostupn� diskov� +pam� nebo velikost opera�n� pam�ti. Pokud m�te n�kterou z t�chto +hodnot neobvykle velkou, m��e doj�t ke sn��en� v�konu.</p> + +<p>Maxim�ln� velikost tabulky je 32 TB a nevy�aduje podporu velk�ch soubor� +opera�n�m syst�mem. Velk� tabulky se ukl�daj� do n�kolika 1 GB soubor� +tak�e limity souborov�ho syst�mu nejsou podstatn�.</p> + +<p>Maxim�ln� velikost tabulky a maxim�ln� po�et sloupc� m��eme +ze�ty�n�sobit nastaven�m velikosti bloku na 32K.</p> + +<h3><a name="4.6">4.6</a> Kolik diskov�ho prostoru je pot�eba k ulo�en� dat z norm�ln�ho +textov�ho souboru? </h3> + +<p>PostgreSQL vy�aduje a� p�tin�sobek diskov�ho prostoru k ulo�en� dat z +textov�ho souboru.</p> + +<p>Nap��klad, uva�ujme soubor se 100 tis�ci ��dky obsahuj�c� na ka�d� +��dce cel� ��slo a textov� popis. Text je v pr�m�ru dvacet byt� +dlouh�. Textov� soubor bude 2.8 MB dlouh�. Velikost +datab�ze obsahuj�c� odpov�daj�c� data bude zhruba 6.4 MB.</p> +<pre> 36 byt�: hlavi�ka ��dku (p�ibli�n�) + 24 byt�: jedna celo��seln� polo�ka a jedna textov� + 4 byty: ukazatel na str�nku k ntici +------------------------------------------------------ + 64 byt� na ��dek +</pre> +<p>Velikost datov� str�nky PostgreSQL je 8KB</p> +<pre> 8192 byt� na str�nce +---------------------- = 128 ��dek na str�nku + 64 byt� za ��dek + +100000 ��dek +-------------------- = 782 str�nek (zaokrouhleno nahoru) +128 ��dek na str�nce + +782 * 8192 = 6, 406, 144 byt� (6.4 MB) +</pre> +<p>Indexy nemaj� tak velkou re�ii, ale mohou b�t tak� velk�, +proto�e obsahuj� indexovan� data.</p> + +<p>Hodnoty NULL jsou ulo�eny v bitmap�ch, tak�e spot�ebuj� jen velmi m�lo +diskov�ho prostoru.</p> + +<h3><a name="4.7">4.7</a> Jak z�sk�m seznam vytvo�en�ch tabulek, index�, datab�z�?</h3> + +<p>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�.</p> + +<p>Soubor pgsql/src/tutorial/syscat.source obsahuje SELECTy p�istupuj�c� +k syst�mov�m tabulk�mm.</p> + +<h3><a name="4.8">4.8</a> M�j dotaz je pomal� a nepou��v� vytvo�en� indexy. Pro�?</h3> + +<p>Ka�d� dotaz nemus� nutn� pou��t existuj�c� indexy. Index se pou�ije tehdy, +kdy� je tabulka v�t�� ne� ur�it� minim�ln� velikost, a dotaz vyb�r� +pouze procentu�ln� malou ��st ��dk� tabulky. To proto, �e n�hodn� +p��stup k disku dan� �ten�m indexu m��e b�t pomalej�� ne� line�rn� +�ten� tabulky nebo sekven�n� �ten�,</p> + +<p>PostgreSQL rozhoduje o pou�it� index� na z�klad� statistiky p��stup� k +tabulce. Tyto statistiky se shroma��uj� p��kazy VACUUM ANALYZE nebo +ANALYZE. D�ky statistik�m m� optimizer informaci o po�tu ��dek v +tabulce a m��e l�pe rozhodnout o pou�it� index�. Statistiky se uplatn� +p�i ur�en� optim�ln�ho po�ad� a metody spojen� tabulek. Statistiky by +se m�li aktualizovat opakovan�, tak jak se m�n� obsah tabulek.</p> + +<p>Indexy nejsou oby�ejn� pou�ity pro set��d�n� nebo spojen� +tabulek. Sekven�n� zpracov�n� n�sledovan� explicitn�m t��d�n�m je +oby�ejn� rychlej�� ne� indexn� �ten� na velk� tabulce.</p> + +<p>Jinak je tomu v p��pad� pou�it� LIMIT a ORDER BY, p�i kter�m se +v�t�inou index pou�ije, v�sledkem je pouze mal� ��st tabulky. Funkce +MAX() a MIN() nepou��vaj� indexy, ale je mo�n� tut� hodnotu z�skat </p> +<pre>SELECT col FROM tab + ORDER BY col [ DESC ] LIMIT 1; +</pre> +<p>Pokud si mysl�te, �e optimizer myln� zvolil sekven�n� prohled�v�n� +tabulky, pou�ijte p��kaz SET enable_seqscan TO 'off' a zkuste zda je +indexn� prohled�v�n� rychlej��.</p> + +<p>P�i vyhled�v�n� na z�klad� vzoru jako je nap�. oper�tor LIKE nebo ~ se +indexy pou��j� pouze za ur�it�ch skute�nost�:</p> +<ul> + <li> za��tek hledan�ho vzoru mus� b�t ukotven k za��tku, tj. + <ul> + <li>vzor LIKE nesm� za��nat % + </li><li>regul�rn� v�raz mus� za��nat ^ + </li></ul> + </li><li>vzor nesm� za��nat intervalem, nap�. [a-e] + </li><li>vyhled�van�, kter� nen� Case sensitiv nepou��v� indexy. M��ete ale + pou��t funkcion�ln� indexy, kter� jsou pos�ny v sekci 4.12 + </li><li>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�). +</li></ul> + +<h3><a name="4.9">4.9</a> Jak zjist�m, jak optimizer dotazu vyhodnocuje m�j dotaz?</h3> + +<p>Pod�vejte se do manu�lov� str�nky p��kazu EXPLAIN.</p> + +<h3><a name="4.10">4.10</a> Co to je R-tree index?</h3> + +<p>R-tree index se pou��v� pro indexov�n� prostorov�ch dat. Hash index +nem��e obslou�it prohled�v�n� oblast�. B-tree index m��e ��dit +vyhled�n� oblast� v jedn� dimenzi. R-tree index m��e podporovat hled�n� v +multidimenzion�ln�ch datech. Pou�ijeme-li nap��klad R-tree index na +atributy typu point, pak syst�m m��e efektivn� odpov�d�t na dotaz - +vyber v�echny body uvnit� obd�ln�k�.</p> + +<p>P�vodn� n�vrh R-tree je Guttman, A. "R-trees: A Dynamic Index +Structure for Spatial Searching." Proceedings of the 1984 ACM SIGMOD +Int'l Conf on Mgmt of Data, 45-57</p> + +<p>Tyto materi�ly naleznete v Stonebraker's "Readings in Database Systems".</p> + +<p>Vestav�n� R-tree m��e slou�it k indexaci polygon� a +oblast�. Teoreticky m��eme R-tree pou��t i pro v�ce dimenz� (jin� ne� 3D). +Ve skute�nosti ale takov� roz���en� R-tree vy�aduje trochu pr�ce a +ve sou�astnosti chyb� dokumentace jak na to.</p> + +<h3><a name="4.11">4.11</a> Co je Genetic Query Optimizer?</h3> + +<p>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.</p> + +<h3><a name="4.12">4.12</a> Jak prov�st vyhled�v�n� regul�rn�ho v�razu case sensitiv, +insensitiv? Jak pou��t index pro case insensitive vyhled�v�n�?</h3> + +<p>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.</p> + +<p>Pro vyhled�v�n� bez ohledu na velk� mal� p�smena pou�ijeme</p> +<pre>SELECT * FROM tab + WHERE lower(col) = 'abc'; +</pre> +<p>V tomto p��pad� se nepou�ije standardn� index. Nicm�n�, pou�ije se +funkcion�ln� index, pokud jej vytvo��te </p> +<pre>CREATE INDEX tabindex ON tab (lower(col)); +</pre> +<h3><a name="4.13">4.13</a> Jak v dotazu detekovat, �e polo�ka je NULL?</h3> + +<p>Ur��te pomoc� IS NULL nebo IS NOT NULL</p> + +<h3><a name="4.14">4.14</a> Jak� jsou rozd�ly mezi r�zn�mi znakov�mi typy?</h3> +<pre>Typ Intern� n�zev Pozn�mka +-------------------------------------------------------------------------- +VARCHAR(n) varchar omezeno maxim�ln� d�lkou, bez dopln�n� mezerami +CHAR(n) bpchar �et�zec je dopln�n mezerami do dan� d�lky +TEXT text bez horn�ho limitu na d�lku +BYTEA bytea pole byt� (bezpe�n� lze ulo�it i znak NULL) +"char" char jeden znak +</pre> +<p>S intern�mi n�zvy se setk�te v syst�mov�m katalogu a v n�kter�ch +chybov�ch hl�en�ch.</p> + +<p>Prvn� �ty�i uveden� typy jsou tzv. varlena typy (tj. prvn� �ty�i byty +na disku nesou �daj o d�lce, n�sleduj� samotn� data). Proto skute�n� +pou�it� prostor je v�dy o n�co m�lo v�t�� ne� deklarovan� d�lka. Naopak, +tyto datov� typy jsou komprimov�nty TOASTem, tak�e prostor na disku +m��e b�t ni��� ne� je o�ek�v�no.</p> + +<p>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.</p> + +<p>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.</p> + +<h3><a name="4.15.1">4.15.1</a> Jak vytvo�it serial/auto-increment pole?</h3> + +<p>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:</p> +<pre>CREATE TABLE person ( + id SERIAL, + name TEXT +); +</pre> +je automaticky p�evedeno do +<pre>CREATE SEQUENCE person_id_seq; +CREATE TABLE person ( + id INT4 NOT NULL DEFAULT nextval('person_id_seq'), + name TEXT +); +CREATE UNIQUE INDEX person_id_key ON person(id); +</pre> +<p>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).</p> + +<h3><a name="4.15.2">4.15.2</a> Jak z�skat hodnotu SERIAL po vlo�en� ��dku?</h3> + +<p>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</p> +<pre>newid = execute("SELECT nextval('person_id_seq')"); +execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')"); +</pre> +<p>M��ete pak je�t� pou��t hodnotu newid v dal��ch dotazech, nap�. jako +hodnotu ciz�ho kl��e. N�zev automaticky vytvo�en� sekvence je +tabulka_sloupec_seq.</p> + +<p>Alternativn� m��ete z�skat hodnotu posledn� generovou sekvenc� funkc� +currval() po vlo�en�</p> +<pre>execute("INSERT INTO person (name) VALUES ('Blaise Pascal')"); +new_id = execute("SELECT currval('person_id_seq')"); +</pre> +<p>Kone�n� m��ete pou��t 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().</p> + +<h3><a name="4.15.3">4.15.3</a> Nepovede currval() a nextval() k rozhozen� podm�nek p�i soub�hu s jin�mi u�ivateli?</h3> + +<p>Nikoliv, currval() vrac� hodnotu naposledy generovanou ve va�em +backendu, a ta tud�� nen� spole�n� v�em u�ivatel�m.</p> + +<h3><a name="4.15.4">4.15.4</a> Pro� nen� vygenerovan� ��slo pou�ito p�i p�eru�en� +transakce? Pro� vznikaj� d�ry v ��slov�n� vlastn� sekvenc�/SERIAL +sloupce?</h3> + +<p>K zaji�t�n� efektivnosti soub�hu, jsou hodnoty posloupnosti, kdy� se o n� +po��d�, a sekvence nen� zam�ena do ukon�en� transakce. To zp�sobuje +d�ry v ��slov�n� ze zru�en�ch transakc�.</p> + +<h3><a name="4.16">4.16</a> Co to je OID? Co je to TID?</h3> + +<p>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</p> + +<p>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.</p> + +<p>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</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>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.</p> + +<p>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).</p> + +<h3><a name="4.17">4.17</a> Jak� je v�znam n�kter�ch v�raz� pou�it�ch v PostgreSQL?</h3> + +<p>V n�kter�ch zdrojov�ch k�dech nebo star�� dokumentaci se m��ete setkat +s n�sleduj�c�mi v�razy, kter� maj� �ir�� v�znam. Zde je p��klad +nekter�ch:</p> +<ul> +<li>tabulka, relace, t��da (table, relation, class) +</li><li>��dek, z�znam, ntice (row, record, tuple) +</li><li>sloupec, polo�ka, atribut (column, field, attribute) +</li><li>vyhled�n�, v�b�r (retrieve, select) +</li><li>n�hrada, �prava (replace, update) +</li><li>p�id�n�, vkl�d�n� (append, insert) +</li><li>OID, serial value (OID, serial value) +</li><li>portal, kurzor (portal, cursor) +</li><li>range variable, jm�no tabulky, alias tabulky (range variable, table name, table alias) +</li></ul> +<p>seznam t�chto v�raz� m��ete nal�zt na +<a href="http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html">http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html</a>.</p> + +<h3><a name="4.18">4.18</a> Pro� jsem z�skal chybov� hl�en� "ERROR: Memory exhausted in +AllocSetAlloc()"?</h3> + +<p>Pravd�podobn� do�lo k vy�erp�n� virtu�ln� pam�i na Va�em syst�mu, nebo +j�dro m� n�zk� limit pro ur�it� zdroje. Vyzkou�ejte p�ed startem +posmatera</p> +<pre>ulimit -d 262144 +limit datasize 256m +</pre> +<p>Z�le�� na Va�em shellu, zda budou tyto p��kazy �sp�n�, m�ly by zv��it +limit datov�ho segmentu pro Va�e procesy a umo�nit tak dokon�en� +dotazu. Tyto p��kazy se aplikuj� na aktu�ln� proces a v�echny synovsk� +procesy vytvo�en� po proveden� p��kazu. Pokud m�te probl�my s SQL +klientem proto�e backend vrac� p��li� mnoho dat, zkuste zv��it limity +p�ed startem klienta.</p> + +<h3><a name="4.19">4.19</a> Jak se dozv�m, kterou verzi PostgreSQL pou��v�m?</h3> + +<p>V psql spus�te</p> +<pre>SELECT version(); +</pre> +<h3><a name="4.20">4.20</a> Pro� operace s velk�mi objekty kon�� "invalid large obj descriptor"?</h3> + +<p>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.</p> + +<p>PostgreSQL uvol�uje handle velk�ch objekt� p�i skon�en� transakce. Pokud +budete pracovat s velk�mi objekty mimo transakci, pravd�podobn� dostanete +toto chybov� hl�en�, proto�e handle ji� budou neplatn�.</p> + +<p>Pokud pou��v�te interface podobn� ODBC mus�te nastavit set auto_commit off</p> + +<h3><a name="4.21">4.21</a> Jak vytvo�it sloupec obsahuj�c� implicitn� aktu�ln� datum?</h3> + +<p>Pou�ijte CURRENT_TIMESTAMP</p> +<pre>CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP ); +</pre> +<h3><a name="4.22">4.22</a> Pro� jsou moje vno�en� dotazy pou��vaj�c� IN tak pomal�?</h3> + +<p>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:</p> +<pre>SELECT * FROM tab + WHERE col IN (SELECT subcol FROM subtab); +</pre> +takto +<pre>SELECT * FROM tab + WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col); +</pre> +<p>Pro urychlen� vytvo�ete index pro subcol. Tento v�konnostn� probl�m +byl odstran�n ve verzi 7.4.</p> + +<h3><a name="4.23">4.23</a> Jak prov�st vn�j�� spojen� (outer join)?</h3> + +<p>PostgreSQL podporuje vn�j�� spojen� tabulek standardn�mi SQL +p��kazy. Zde jsou dva p��klady:</p> +<pre>SELECT * FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col); +</pre> +nebo +<pre>SELECT * FROM t1 LEFT OUTER JOIN USING (col); +</pre> +<p>Tyto identick� dotazy napoj� t1.col na t2.col a je�t� p�id� +nep�ipojen� ��dky z t1 (kter� nemaj� obdoby v t2). Prav� spojen� +(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.</p> + +<p>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:</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> +<h3><a name="4.24">4.24</a> Jak prov�st dotaz nap��� n�kolika datab�zemi?</h3> + +<p>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.</p> + +<h3><a name="4.25">4.25</a> M��e funkce vr�tit v�ce ��dk� nebo sloupc�?</h3> + +<p>V PostgreSQL 7.3 m��ete jednodu�e vracet v�ce ��dk� nebo sloupc� z +funkce, viz: +<a href="http://techdocs.postgresql.org/guides/SetReturningFunctions">http://techdocs.postgresql.org/guides/SetReturningFunctions</a>.</p> + +<h3><a name="4.26">4.26</a> Pro� nelze spolehliv� vytv��et a ru�it do�asn� tabulky v +PL/pgSQL funkc�ch?</h3> + +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.<p></p> + +<h3><a name="4.27">4.27</a> Jak� jsou mo�nosti replikace datab�z�?</h3> + +<p>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 <a href="http://gborg.postgresql.org/genpage?replication_research">http://gborg.PostgreSQL.org/genpage?replication_research</a> +najdete jejich seznam. Na �e�en� multi-master replikaci se pracuje na +<a href="http://gborg.postgresql.org/project/pgreplication/projdisplay.php">http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php</a>.</p> + +<h3><a name="4.28">4.28</a> Jak� jsou mo�nosti �ifrov�n� datab�z�?</h3> +<ul> +<li><p>contrib/pgcrypto obsahuje �ifrovac� funkce pou�iteln� v SQL +dotazech.</p> + +</li><li><p>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.</p> + +</li><li><p>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</p> + +</li><li><p>Server m��e b�et na �ifrovan�m souborov�m syst�mu.</p> +</li></ul> +<hr> +<h2>Roz�i�ov�n� PostgreSQL</h2> + +<h3><a name="5.1">5.1</a> Napsal jsem UDF funkci, PostgreSQL v�ak kon�� dump core?</h3> + +<p>Probl�m m��e b�t zp�soben mnoha okolnostmi. Vyzkou�ejte si svoji +funkci nejd��ve v n�jak� jednoduch� aplikaci.</p> + +<h3><a name="5.2">5.2</a> Jak mohu p�isp�t n�jak�mi �ikovn�mi datov�mi typy a funkcemi +do PostgreSQL?</h3> + +<p>Po�lete sv� roz���en� do konference pgsql-hackers, a ono pak mo�n� +skon�� v podadres��i contrib.</p> + +<h3><a name="5.3">5.3</a> Jak napsat funkci v C vracej�c� ntici?</h3> + +<p>Funkce vracej�c� tabulky jsou podporovan� PostgreSQL 7.3 a vy��� pro +jazyky C, PL/PgSQL a SQL. V�ce naleznete v The Programmer's +Guide. P��klady t�chto funkc� pro C naleznete v contrib/tablefunc.</p> + +<h3><a name="5.4">5.4</a> Modifikoval jsem zdrojov� soubory. Tato zm�na nebyla p�i +rekompilaci vzata v potaz. Pro�?</h3> + +<p>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.</p> +</body></html> \ No newline at end of file