Commit 5c996884 authored by Bruce Momjian's avatar Bruce Momjian

Update Czech FAQ.

Pavel Stehule
parent 6287c31b
asto kladen dotazy (FAQ) PostgreSQL Frequently Asked Questions
Posledn aktualizace: Steda 23. ervna 21:10:00 EST 2004 Casto kladen dotazy (FAQ) PostgreSQL
Souasn sprvce: Bruce Momjian (pgman@candle.pha.pa.us) Posledn aktualizace: 29. rjna 2007 (aktualizovno pro PostgreSQL
8.3)
Peloil: Pavel Sthule (stehule@kix.fsv.cvut.cz) Soucasn sprvce: Bruce Momjian (bruce@momjian.us)
Aktuln verzi tohoto dokumentu naleznete na adrese: Prelozil: Pavel Stehule (pavel.stehule@gmail.com)
http://www.PostgreSQL.org/docs/faqs/FAQ.html. esk peklad na adrese:
http://www.PostgreSQL.org/docs/faqs/FAQ_czech.html.
Odpovdi na dotazy relevantn ke konkrtnm platformm lze nalzt na Nejaktulnejs verzi tohoto dokumentu naleznete na adrese
adrese: http://www.PostgreSQL.org/docs/index.html. http://www.postgresql.org/files/documentation/faqs/FAQ.html
Odpovedi na otzky vzan na konkrtn platformy naleznete na adrese
http://www.postgresql.org/docs/faq/.
_________________________________________________________________ _________________________________________________________________
Obecn otzky Obecn otzky
1.1) Co je PostgreSQL? Jak se vyslovuje? 1.1) Co je to PostgreSQL? Jak je sprvn vslovnost slova PostgreSQL?
1.2) Jak je licence na PostgreSQL? 1.2) Kdo rd vvoj PostgreSQL?
1.3) Na kterch Unixex lze spustit PostgreSQL? 1.3) Pod jakou licenc je PostgreSQL?
1.4) Kter ne-unixov platformy jsou podporovan? 1.4) Na kterch platformch lze provozovat PostgreSQL?
1.5) Kde mohu zskat PostgreSQL? 1.5) Kde mohu zskat PostgreSQL?
1.6) Kde mohu zskat podporu? 1.6) Jak je posledn verze?
1.7) Kde je posledn verze? 1.7) Kde mohu zskat podporu?
1.8) Jak je dostupn dokumentace? 1.8) Jak a kam hlsit chyby?
1.9) Kde najdu seznam znmch chyb nebo nepodporovanch vlastnost? 1.9) Kde najdu informace o znmch chybch nebo nepodporovanch
1.10) Jak se mohu nauit SQL? vlastnostech?
1.11) Nem PostgreSQL problmy s rokem 2000? 1.10) Jak je dostupn dokumentace?
1.12) Jak se pipojit k vvojskmu tmu? 1.11) Jak se mohu naucit SQL?
1.13) Kam podat report o chyb? 1.12) Jak se mohu pripojit k tmu vvojru?
1.14) Jak je na tom PostgreSQL v porovnn s jinmi databzemi? 1.13) Jak je na tom PostgreSQL v porovnn s jinmi databzemi?
1.15) Jak lze finann pomoci PostgreSQL? 1.14) Je PostgreSQL pripraven na aktuln zavden letnho casu v
nekterch zemch?
User client dotazy
Dotazy na klientsk rozhran
2.1) Kde naleznu ODBC ovladae pro PostgreSQL?
2.2) Jak nstroje lze pout pro PostgreSQL a web? 2.1) Kter rozhran jsou pouziteln pro PostgreSQL?
2.2) Jak nstroje lze pouzt pro PostgreSQL a web?
2.3) Existuje grafick rozhran pro PostgreSQL? 2.3) Existuje grafick rozhran pro PostgreSQL?
2.4) Kter programovac jazyky maj podporu pro PostgreSQL?
Administrativn dotazy Administrativn dotazy
3.1) Jak nainstalovat PostgreSQL jinam ne do /usr/local/pgsql? 3.1) Jak nainstalovat PostgreSQL jinam nez do /usr/local/pgsql?
3.2) Pi startu postmaster, dostanu chybov hlen Bad System Call 3.2) Jak nastavit pravidla pro prstup z jinch stanic?
nebo core dump. Pro? 3.3) Jak vyladit databzi na vyss vkon?
3.3) Pi startu postmastera dostanu hlen o chyb IpcMemoryCreate. 3.4) Jak mm ladc prostredky?
Pro? 3.5) Co znamen "Sorry, too many clients", kdyz se zkousm pripojit?
3.4) Pi startu postmastera dostanu hlen o chyb 3.6) Proc je nutn dump a obnoven (load) databze pri upgradu
IpcSemaphoreCreate. Pro? PostgreSQL?
3.5) Jak povolit nebo zakzat pstup z jinch stanic? 3.7) Jak hardware bych mel pouzvat?
3.6) Jak ladit databzov stroj na lep vkon?
3.7) Jak jsou monosti ladn?
3.8) Pro dostanu "Sorry, too many clients", kdy se zkoum pipojit?
3.9) K emu slou adres pgsql_tmp?
3.10) Pro je poadovno dump a obnoven (load) databze bhem upgrade
mezi velkmi verzemi PostgreSQL?
Provozn dotazy Provozn dotazy
4.1) m se li binrn a normln kurzor? 4.1) Jak zskat pouze prvn rdek dotazu? Nhodn rdek?
4.2) Jak zskat pouze prvn dek dotazu? Nhodn dek? 4.2) Jak zskm seznam tabulek, indexu, databz, a definovanch
4.3) Jak zskm seznam tabulek nebo jinak jak jej zsk psql? uzivatelu. Mohu videt dotazy, kter pouzv psql pro zobrazen techto
4.4) Jak odstranm sloupec tabulky, jak zmnm jeho typ? informac?
4.5) Jak je maximln velikost dku, tabulky a databze? 4.3) Jak zmenit datov typ sloupce?
4.6) Kolik diskovho prostoru je poteba k uloen dat z normlnho 4.4) Jak je maximln velikost rdku, tabulky a databze?
4.5) Kolik diskovho prostoru je potreba k ulozen dat z normlnho
textovho souboru? textovho souboru?
4.7) Jak zskm seznam vytvoench tabulek, index, databz? 4.6) Muj dotaz je pomal a nepouzv vytvoren indexy. Proc?
4.8) Mj dotaz je pomal a nepouv vytvoen indexy. Pro? 4.7) Jak zjistm, jak se vyhodnocuje muj dotaz?
4.9) Jak zjistm, jak optimizer dotazu vyhodnocuje mj dotaz? 4.8) Jak pouzt case-(in)sensitive regulrn vraz? Jak pouzt index
4.10) Co to je R-tree index? pro case insensitive hledn?
4.11) Co je Genetic Query Optimizer? 4.9) Jak v dotazu detekovat, ze polozka je NULL? Jak bezpecne spojit
4.12) Jak provst vyhledvn regulrnho vrazu case sensitiv, dva retezce, pokud mohou obsahovat NULL? Lze trdit podle toho, jestli
insensitiv? Jak pout index pro case insensitive vyhledvn? je polozka NULL nebo ne?
4.13) Jak v dotazu detekovat, e poloka je NULL? 4.10) Jak jsou rozdly mezi ruznmi znakovmi typy?
4.14) Jak jsou rozdly mezi rznmi znakovmi typy? 4.11.1) Jak vytvorit serial/auto-increment polozku?
4.15.1) Jak vytvoit serial/auto-increment pole? 4.11.2) Jak zskat hodnotu SERIAL po vlozen rdku?
4.15.2) Jak zskat hodnotu SERIAL po vloen dku? 4.11.3) Nezpusob currval() a nextval() problmy ve vce uzivatelskm
4.15.3) Nepovede currval() a nextval() k rozhozen podmnek pi prostred?
soubhu s jinmi uivateli? 4.11.4) Proc nen vygenerovan cslo pouzito pri prerusen
4.15.4) Pro nen vygenerovan slo pouito pi peruen transakce? transakce?Proc vznikaj dry v cslovn prostrednictvm sekvence nebo
Pro vznikaj dry v slovn vlastn sekvenc/SERIAL sloupce? typu SERIAL?
4.16) Co to je OID? Co je to TID? 4.12) Co to je OID? Co je to CTID?
4.17) Jak je vznam nkterch vraz pouitch v PostgreSQL? 4.13) Co znamen chybov hlsen "ERROR: Memory exhausted in
4.18) Pro jsem zskal chybov hlen "ERROR: Memory exhausted in
AllocSetAlloc()"? AllocSetAlloc()"?
4.19) Jak se dozvm, kterou verzi PostgreSQL pouvm? 4.14) Jak zjistm, kterou verzi PostgreSQL pouzvm?
4.20) Pro operace s velkmi objekty kon "invalid large obj 4.15) Jak vytvorit sloupec, kter bude implicitne obsahovat aktuln
descriptor"? cas?
4.21) Jak vytvoit sloupec obsahujc implicitn aktuln datum? 4.16) Jak provst vnejs spojen (outer join)?
4.22) Pro jsou moje vnoen dotazy pouvajc IN tak pomal? 4.17) Jak provst dotaz naprc nekolika databzemi?
4.23) Jak provst vnj spojen (outer join)? 4.18) Muze funkce vrtit vce rdku nebo sloupcu?
4.24) Jak provst dotaz nap nkolika databzemi? 4.19) Co je prcinou chyby "relation with OID xxxxx does not exist"?
4.25) Me funkce vrtit vce dk nebo sloupc? 4.20) Jak jsou moznosti replikace databz?
4.26) Pro nelze spolehliv vytvet a ruit doasn tabulky v 4.21) Proc v dotazu nejsou rozpoznny nzvy mch tabulek nebo funkc?
PL/pgSQL funkcch? Proc jsou velk psmena v nzvech automaticky prevedena na mal
4.27) Jak jsou monosti replikace databz? psmena?
4.28) Jak jsou monosti ifrovn databz?
Roziovn PostgreSQL
5.1) Napsal jsem UDF funkci, PostgreSQL vak kon dump core?
5.2) Jak mohu pispt njakmi ikovnmi datovmi typy a funkcemi do
PostgreSQL?
5.3) Jak napsat funkci v C vracejc ntici?
5.4) Modifikoval jsem zdrojov soubory. Tato zmna nebyla pi
rekompilaci vzata v potaz. Pro?
_________________________________________________________________ _________________________________________________________________
Obecn otzky Obecn otzky
1.1) Co je PostgreSQL? Jak se vyslovuje? 1.1) Co je to PostgreSQL? Jak je sprvn vslovnost slova PostgreSQL?
PostgreSQL se vyslovuje Post-Gres-Q-L. Zvukov zznam je dostupn na Vslovnost PostgreSQL je Post-Gres-Q-L , nebo zjednodusene Postgres .
adrese . V rade jazyku je slovo PostgreSQL obtzne vysloviteln, proto se v
hovoru casto pouzv zjednodusen forma nzvu. Pro ty, kter by si
PostgreSQL vychz z databze POSTGRES (a stle je nkdy oznaovn rdi poslechli vslovnost, je k dispozici audiozznam v MP3 formtu.
zjednoduen jako Postgres) - vzkumnho prototypu DBMS nov generace.
Z postgresu byl pevzat siln datov model a bohat soubor datovch PostgreSQL je relacn databze s nektermi objektovmi rysy, kter m
typ a jeho dotazovac jazyk PostQuel byl nahrazen rozenou moznosti tradicnch komercnch databzovch systmu s nekolika
podmnoinou jazyka SQL. PostgreSQL lze pouvat bez omezen a jeho rozsrenmi, kter lze najt v DBMS systmech prst generace.
zdrojov kdy jsou voln k dispozici. Pouzvn PostgreSQL nen omezen a vesker zdrojov kdy jsou volne
dostupn.
PostgreSQL vyvj tm vvoj pihlench do vvojsk konference
PostgreSQL. Souasnm koordintorem je Marc G. Fournier Za vvojem PostgreSQL je mezinrodn skupina nezvislch vvojru
(scrappy@PostgreSQL.org). (viz 1.6 - jak se zapojit). Tento tm je navzjem komunikujcch prostrednictvm internetu. Tento projekt nen
zodpovdn za veker vvoj PostgreSQL. Jedn se o veejn projekt, rzen zdnou obchodn organizac. Pokud se chcete pridat k projektu,
kter nen zen dnou firmou. Pokud se chcete zapojit, pette si prectete si vvojrsk FAQ na adrese
developer's FAQ na adrese http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html .
http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html
1.2) Kdo rd vvoj PostgreSQL?
Autory prvn verze PostgreSQL 1.01 byli Andrew Yu and Jolly Chen. Do
portace, testovn, ladn a roziovn kdu se zapojilo mnoho Pokud budete hledat organizaci rdc vvoj PostgreSQL, budete
dalch vvoj . Pvodni kd Postgresu, ze kterho PostgreSQL zklamni. Nic takovho neexistuje. Existuj pouze "core" a CVS skupiny
vychz, je vsledkem sil mnoha student a programtor pracujcch uzivatelu, ale ty existuj vce z administrtorskch duvodu nez z
pod vedenm prof. Michaela Stonebrakera na University of California v organizacnch. Projekt je smerovn komunitou vvojru a uzivatelu, ke
Berkley. kter se kdokoliv muze pripojit. Jedin co potrebuje, je prihlsit se
do elektronick konference. Vce ve vvojrskm FAQ.
Pvodn nzev software z Berkley byl Postgres. Po pidn jazyka SQL
se nzev zmnil na Postgres95. Koncem roku 1996 byl RDBMS pejmenovn 1.3) Pod jakou licenc je PostgreSQL?
na PostgreSQL.
PostgreSQL je predmetem nsledujcch autorskch prv:
1.2) Jak je licence na PostgreSQL?
Dlc Copyright (c) 1996-2005, PostgreSQL Global Development Group
PostgreSQL je pedmtem nsledujcch autorskch prv: Dlc Copyright (c) 1994-6, Regents of the University of California
Dl Copyright (c) 1996-2007, PostgreSQL Global Development Group Udeluje se oprvnen k uzit, rozmnozovn, provden prav a
Dl Copyright (c) 1994-6, Regents of the University of California rozsirovn tohoto softwaru a dokumentace k nemu, pro jakkoli cely,
bez licencnho poplatku a bez psemn licencn smlouvy, za podmnky,
Udluje se oprvnn k uit, rozmnoovn, provdn prav a ze na vsech jeho kopich je uvedeno oznmen o vse uvedench prvech,
roziovn tohoto softwaru a dokumentace k nmu, pro jakkoli ely, jakoz i obsah tohoto a dvou nsledujcch odstavcu.
bez licennho poplatku a bez psemn licenn smlouvy, za podmnky,
e na vech jeho kopich je uvedeno oznmen o ve uvedench prvech, THE UNIVERSITY OF CALIFORNIA ("KALIFORNSK UNIVERZITA") NEN V ZDNM
jako i obsah tohoto a dvou nsledujcch odstavc. PRPADE ODPOVEDNA ZDN TRET OSOBE ZA PRMOU, NEPRMOU, ZVLSTN,
NAHODILOU NEBO VSLEDNOU SKODU, VCETNE USLHO ZISKU, ZPUSOBENOU UZITM
THE UNIVERSITY OF CALIFORNIA ("KALIFORNSK UNIVERZITA") NEN V DNM TOHOTO SOFTWARU A DOKUMENTACE K NEMU, A TO I V PRPADE, ZE THE
PPAD ODPOVDNA DN TET OSOB ZA PMOU, NEPMOU, ZVLTN, UNIVERSITY OF CALIFORNIA BYLA INFORMOVNA O MOZNOSTI VZNIKU TAKOV
NAHODILOU NEBO VSLEDNOU KODU, VETN ULHO ZISKU, ZPSOBENOU UITM SKODY.
TOHOTO SOFTWARU A DOKUMENTACE K NMU, A TO I V PPAD, E THE
UNIVERSITY OF CALIFORNIA BYLA INFORMOVNA O MONOSTI VZNIKU TAKOV THE UNIVERSITY OF CALIFORNIA ZEJMNA NEPOSKYTUJE JAKKOLI ZRUKY, A TO
KODY. NEJEN ZRUKY OBCHODOVATELNOSTI A VHODNOSTI TOHOTO VROBKU KE
SPECIFICKM CELUM. NZE UVEDEN SOFTWARE JE POSKYTNUT "JAK STOJ A
HE UNIVERSITY OF CALIFORNIA ZEJMNA NEPOSKYTUJE JAKKOLI ZRUKY, A TO LEZ" A THE UNIVERSITY OF CALIFORNIA NEN POVINNA ZAJISTIT JEHO
NEJEN ZRUKY OBCHODOVATELNOSTI A VHODNOSTI TOHOTO VROBKU KE DRZBU, PODPORU, AKTUALIZACI, VYLEPSEN NEBO MODIFIKACI.
SPECIFICKM ELM. NͮE UVEDEN SOFTWARE JE POSKYTNUT "JAK STOJ A
LE" A THE UNIVERSITY OF CALIFORNIA NEN POVINNA ZAJISTIT JEHO Vse uveden je BSD licence, bezn licence otevrenho zdroje. Nen zde
DRBU, PODPORU, AKTUALIZACI, VYLEPEN NEBO MODIFIKACI. zdn omezen ohledne uzit kdu zdroje. Jsme s tm spokojeni a nemme
v myslu na tto skutecnosti cokoli menit.
Ve uveden je BSD licence, bn licence otevenho zdroje. Nen zde
dn omezen ohledn uit kdu zdroje. Jsme s tm spokojeni a nemme 1.4) Na kterch platformch lze provozovat PostgreSQL?
v myslu na tto skutenosti cokoli mnit.
Strucne receno, PostgreSQL bez na vsech modernch unixovch
1.3) Na kterch Unixex lze spustit PostgreSQL? systmech. Seznam tech, u kterch probehlo testovn, naleznete v
instalacnch instrukcch.
PostgreSQL b na vech modernch unixovch platformch. V
instalanch instrukcch naleznete aktuln seznam vech platforem na PostreSQL tak bez nativne na vsech Microsof Windows systmech
kterch byla testovnm ovena funkcionalita PostgreSQL. odvozench z Microsoft Windows NT jako jsou Windows 2000SP4, WindowsXP
a Windows2003. Instalacn balcek naleznete na adrese
1.4) Kter ne-unixov platformy jsou podporovan? http://pgfoundry.org/projects/pginstaller. Na starsch systmech s
jeste MS-DOS jdrem lze spustit PostgreSQL s emulacnm programem
Klient Cygwin.
Knihovna libpq, psql a nkter dal moduly byly peloeny pro MS Dle existuje port pro Novell Netware 6 port na adrese
Windows. Klienta lze provozovat na MS Windows, ten prostednictvm http://forge.novell.com, a pro OS/2 verze (eComStation) na adrese
TCP/IP protokolu komunikuje se serverem bcm na nkter z http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgre
podporovanch Unixovch platforem. K pekladu lze pout win32.mak a SQL&stype=all&sort=type&dir=%2F .
Win32 knihovny libpq a psql. K databzi PostgerSQL lze pistupovat
skrze rozhran ODBC.
Server
Server me bt na WindowsNT a Win2k provozovn pouze s knihovnou
Cygwin, Cygnus Unix/NT porting library. Vce pgsql/doc/FAQ_MSWIN v
distribuci nebo MS Windows FAQ na adrese
http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN.
Na nativnm portu pro MS Win NT/2000/XP se pracuje. Dal informace o
aktulnm stavu PostgreSQL pro Windows naleznet na adrese
http://techdocs.postgresql.org/guides/Windows a
http://momjian.postgresql.org/main/writings/pgsql/win32.html.
Existujc port pro Novell Netware 6 naleznete na
http://forge.novell.com.
1.5) Kde mohu zskat PostgreSQL? 1.5) Kde mohu zskat PostgreSQL?
Primrnm anonymnm ftp serverem pro PostgreSQL je Pomoc webovho klienta z adresy http://www.postgresql.org/ftp/ nebo
ftp://ftp.PostgreSQL.org/pub. Seznam zrcadel naleznete na naich klienta ftp z adresy ftp://ftp.postgresql.org/pub/.
webovch strnkch.
1.6) Jak je posledn verze?
1.6) Kde mohu zskat podporu?
Nejnovejs verz PostgreSQL je verze 8.2.5
Hlavn mailov konference je: pgsql-general@PostgreSQL.org. Slou k
diskuzm ohledn PostgreSQL. Pihlste se zaslnm mailu obsahujc V plnu je uvolnovat kazdorocne jednu velkou verzi a kazdch nekolik
nsledujc dky v tle dopisu (nikoliv v zhlav - subjectu): mescu mal verze.
subscribe
end 1.7) Kde mohu zskat podporu?
na adresu pgsql-general-request@PostgreSQL.org. Nejcastejs forma podpory uzivatelum PostgreSQL komunitou je
prostrednictvm e-mailu. Na nasem webovm serveru naleznete odkaz na
Mete si vydat denn pehled (diggest), kter m zhruba 30K denn strnky,kde se muzete prihlsit do elektronick konference. Pro
zprv. zactek jsou doporucen konference general nebo bugs.
Konference psql-bugs je urena k zasln zprv o chybch. Pro Dals cestou je IRC kanl #postgresql na Freenode (irc.freenode.net).
pihlen polete mail se stejnm obsahem jako v pedchozm ppad K pripojen pouzijte Unixov prkaz irc -x '#postgresql' "$USER"
na adresu pgsql-bugs-request@PostgreSQL.org. irc.freenode.net nebo jakkoholiv jinho IRC klienta. V tto sti
existuje jeste spanelsk (#postgresql-es) a francouzsk
(#postgresqlfr) verze. Dals PostgreSQL kanl naleznete na EFNet.
Seznam spolecnost poskytujc komercn podporu naleznete na adrese
http://techdocs.postgresql.org/companies.php.
1.8) Jak a kam hlsit chyby?
Vyplnte formulr na adrese
http://www.postgresql.org/support/submitbug. Na nasem ftp serveru
ftp://ftp.postgresql.org/pub/ si overte, ze pouzvte aktuln verzi
PostreSQL.
Chyby reportovan prostrednictvm chybovho formulre nebo zaslnm
mailu do PostgreSQL konference obvykle generuje nsledujc odezvu:
* Nejedn se o chybu, a proc
* Jedn se o znmou chybu, kter je jiz v seznamu kolu TODO
* Tato chyba byla opravena v aktuln verzi
* Tato chyba byla jiz opravena ve verzi, kter zatm nebyla
oficilne uvolnena
* Pozadavek na dals doplnujc informace:
+ Operacn systm
+ Verze PostgreSQL
+ Test reprodukujc chybu
+ Ladc informace
+ Backtrace vstup debuggeru
* Jedn se o zatm nezjistenou chybu, pak muzete cekat
+ Zplatu odstranujc chybu, kter bude vlozena do dals velk
nebo mal verze
+ Informaci, ze se jedn o chybu, kterou nelze okamzite resit a
je proto pridna do TODO
1.9) Kde najdu informace o znmch chybch nebo nepodporovanch vlastnostech?
PostgreSQL podporuje rozsrenou podmnozinu SQL:2003. V nasem TODO
naleznete seznam znmch chyb, chybejcch vlastnost, a plny do
budoucna.
Odezva na pozadavek na novou vlastnost PostgreSQL je obvykle:
* Pozadavek je jiz v TODO
* Pozadovan funkce nen chten protoze
+ Duplikuje jiz existujc funkci, kter respektuje SQL
standard
+ Implementac funkce by se prlis zkomplikoval kd bez
relevantnho prnosu
+ Funkce by mohla bt nebezpecn nebo nespolehliv
* Pozadavek je pridn do TODO
PostgreSQL nepozv systm pro sledovn chyb, protoze jsme zjistili,
ze je efektivnejs prmo reagovat na maily a udrzovat aktuln TODO. V
praxi je snaha o co nejrychlejs resen chyb, a chyby, kter by se
mohly projevit u mnoha uzivatelu jsou opravovny velice rychle. Jedin
msto, kde lze dohledat vsechny zmeny, rozsren a opravy v PostgreSQL
je CVS log. Poznmky k verzi "Release notes" nezachycuj vsechny
zmeny, k nemz doslo.
1.10) Jak je dostupn dokumentace?
PostgreSQL obsahuje vynikajc dokumentaci zahrnujc manul,
manulov strnky a testovac prklady. Podvejte se do adresre /doc.
Manul je prstupn online na http://www.postgresql.org/docs.
K dispozici jsou zdarma dve online knihy na adresch
http://www.postgresql.org/docs/books/awbook.html a
http://www.commandprompt.com/ppbook/. Dals literaturu lze zakoupit.
Nejpopulrnejs je od Kerryho Douglase. Seznam dostupn literatury je
na http://techdocs.postgresql.org/techdocs/bookreviews.php. Jeste je
kolekce technicky orientovanch clnku tematicky spojench s
PostgreSQL na adrese http://techdocs.postgresql.org/.
Rdkov klient psql m \d prkazy pro zobrazen informac o typech,
opertorech, funkcch, agregacnch funkc, atd. Pouzijte \? pro
zobrazen dostupnch prkazu.
Dals dokumentaci najdete na nasem webu.
1.11) Jak se mohu naucit SQL?
Podvejte se do vse uveden dokumentace. Dals online knihou je
"Teach Yourself SQL in 21 Days, Second Edition" na adrese
http://members.tripod.com/er4ebus/sql/index.htm. Mnoho nasich
uzivatelu doporucuje knihu The Practical SQL Handbook, Bowman, Judith
S., et al., Addison-Wesley. Dals The Complete Reference SQL, Groff et
al., McGraw-Hill.
Dals online tutorily jsou dostupn na adresch:
* http://www.intermedia.net/support/sql/sqltut.shtm
* http://sqlcourse.com
* http://www.w3schools.com/sql/default.asp
* http://mysite.verizon.net/Graeme_Birchall/id1.html
1.12) Jak se mohu pripojit k tmu vvojru?
Prostudujte si Developer's FAQ.
1.13) Jak je na tom PostgreSQL v porovnn s jinmi databzemi?
Software muzeme porovnvat z nekolika ruznch pohledu: vlastnosti,
vkon, spolehlivost, podpora a cena.
Do vvojsk konference se pihlste odeslnm dopisu s ji Vlastnosti
zmiovanm obsahem na mailto:pgsql-hackers-request@PostgreSQL.org.
Seznam dalch konferenc naleznete na strnkch PostgreSQL:
http://www.postgresql.org
1.7) Jak je posledn verze?
Posledn verze PostgreSQL je 7.4.3. Plnujeme uvolnit vznamnou verzi PostgreSQL nabz vetsinu funkc funkcionality velkch komercnch DBMS
kadch est a osm msc. systmu jako jsou: transakce, vnoren dotazy, spouste, referencn
integrita a sofistikovan systm zamykn. Poskytujeme urcit funkce,
kter ostatn systmy bezne nepodporuj. Napr. uzivatelem definovan
typy, dedicnost, pravidla (rules), a MVCC architekturu.
1.8) Jak je dostupn dokumentace? Vkon
Rzn manuly, manulov strnky a nkolik malch testovacch pklad Vkon PostgreSQL je srovnateln s ostatnmi komercnmi nebo Open
jsou sousti distribuce. Podvejte se do adrese /doc. Manuly jsou Source databzemi. V nekterch prpadech je rychlejs, jindy
pstupn online na http://www.PostgreSQL.org/docs. pomalejs. Ns vkon je obvykle +/-10% vuci ostatnm databzm.
Na adresch http://www.PostgreSQL.org/docs/awbook.html a Spolehlivost
http://www.commandprompt.com/ppbook/ naleznezte dv online knihy o
PostgreSQL. Seznam dostupn literatury je na
http://techdocs.PostgreSQL.org/techdocs/bookreviews.php. Soubor
technickch lnk s tematikou PostgresQL najdete na
http://techdocs.PostgreSQL.org/.
psql m uiten metapkaz \d slouc k zobrazen informac o Uvedomujeme si, ze databze mus bt stoprocentne spolehliv, jinak je
typech, opertorech, funkc, agreganch funkc atd. nepouziteln. Snazme se, aby kazd verze byla dobre otestovna a
obsahovala minimum chyb. Kazd verze je minimlne nekolik mescu v
beta testovacm rezimu. Do produkcnho rezimu se dostane, az kdyz
nedochz k dalsm zmenm nebo opravm. Verme, ze jsem vce nez
srovnateln s ostatnmi databzemi v tto oblasti.
Vce dokumentace naleznete na naich webovch strnkch. Podpora
1.9) Kde najdu seznam znmch chyb nebo nepodporovanch vlastnost? Na nasich internetovch konferencch se setkv velk skupina vvojru
a uzivatelu pri resen vyskytujcch se problmu. Nase internetov
konference umoznuj kontakt velk skupiny vvojru a uzivatelu.
Nemuzeme garantovat opravu chyby, ale komercn DBMSs tak vzdy
negarantuj resen problmu. Verme ale, ze dky prmmu kontaktu na
vvojre, nasi uzivatelskou komunitu, manulum, a dostupnm zdrojovm
kdum mme leps podporu nez ostatn DBMSs. Pro ty, kter preferuj
komercn "per-incident" podporu, existuje spolecnost, kter ji
nabzej (FAQ sekce 1.7.)
PostgreSQL podporuje rozenou podmnoinu SQL-92. V naem TODO Cena
najdete seznam znmch chyb, chybjcch vlastnost a seznam
vlastnost, kter budou do systmu implementovny v budoucnu (vetn
priorit).
1.10) Jak se mohu nauit SQL? PostgreSQL lze pouzvat bezplatne (a to i pro komercn pouzit). Tak
muzete neomezene pouzvat ns kd ve svch produktech s vjimkami
specifikovanmi v nas licenci (prebrme BSD licenci).
V knize The PostgreSQL book na 1.14) Je PostgreSQL pripraven na aktuln zavden letnho casu v nekterch
http://www.PostgreSQL.org/docs/awbook.html je vysvtlen jazyk SQL zemch?
(vyla esky). Dal dostupnou knihou je
http://www.commandprompt.com/ppbook. Kvalitn nvody naleznete na
http://www.intermedia.net/support/sql/sqltut.shtm, a na
http://sqlcourse.com.
Dal je Teach Yourself SQL in 21 days, Second Edition na Pocnaje verz 8.0.[4+] podporuje PostgreSQL letn cas tak pro USA.
http://members.tripod.com/er4ebus/sql/index.htm. Podpora letnho casu (daylight saving time) pro Kanadu a Zpadn
Austrlii je obsazena ve verzch 8.0.[10+] a 8.1.[6+] a vsech
nsledujcch verzch. Stars verze pouzvaly systmovou databzi
casovch zn obsahujc, krome jinho, informaci o tom, zda se pro
danou casovou znu rozlisuje mezi letnm a zimnm casem.
_________________________________________________________________
Mnoho uivatel doporuuje The Practical SQL Handbook, Bowman, Judith Dotazy na klientsk rozhran
S., et al., Addison-Wesley. Jin preferuj The Complete Reference SQL,
Groff et al., McGraw-Hill.
1.11) Nem PostgreSQL problmy s rokem 2000? 2.1) Kter rozhran jsou pouziteln pro PostgreSQL?
Nem, meme pracovat s datumy po roce 2000 naeho letopotu i ped PostgreSQL se distribuuje pouze s rozhranm pro jazyk C a embedded C.
rokem 2000 p.n.l. Vsechna dals rozhran predstavuj nezvisl projekty, kter je treba
sthnout z internetu samostatne. Osamostatnen techto projektu
umoznuje nezvislost vvojovch tmu a moznost vydvat nov verze bez
ohledu na vydn nov verze PostgreSQL.
1.12) Jak se pipojit k vvojskmu tmu? Nekter programovac jazyky jako je napr. PHP obsahuj rozhran pro
PostgreSQL. Rozhran pro jazyky jako je Perl, Tcl, Python a mnoho
dalsch jsou dostupn na adrese: http://gborg.postgresql.org v sekci
Drivers/Interfaces.
Nejdve si sthnte nejnovj zdroje a pette si vvojskou 2.2) Jak nstroje lze pouzt pro PostgreSQL a web?
dokumentaci na naem webu nebo v distribuci. Pak se pihlate do
konferenc pgsql-hackers a pgsql-patches. Kvalitn zplaty poslejte
do pgsql-patches.
Prvo commit m v CVS archivu asi tincti lid. Kad z nich poslal Dobrm vodem do problematiky databz v prostred webovch strnek
mnoho kvalitnch zplat, take tehdej commiters mli jistotu, e muze bt web http://www.webreview.com.
budou pedkldat jenom kvalitn zplaty a mohli jim pedlit vt
prva.
1.13) Kam podat report o chyb? PHP (http://www.php.net) je vynikajcm rozhranm pro tvorbu webu.
Navtivte nai PostgreSQL BugTool strnku na Pro slozitejs lohy se casto pouzv Perl a jeho BDB:Pg rozhran s
http://www.PostgreSQL.org/bugs/bugs.php, kter obsahuje nvod a podporou CGI - CGI.pm nebo mod_perl(u).
smrnice jak podat chybov report.
Ovte si na naem ftp serveru ftp://ftp.PostgreSQL.org/pub, zda-li 2.3) Existuje grafick rozhran pro PostgreSQL?
mte nejnovj verzi PostgreSQL a zda-li k n neexistuj njak
zplaty.
1.14) Jak je na tom PostgreSQL v porovnn s jinmi databzemi? K dispozici je rada grafickch nstroju podporujcch PostgreSQL a to
od komercnch nebo open source vvojru. Podrobn seznam naleznete na
adrese http://www.postgresql.org/docs/techdocs.54.
_________________________________________________________________
Existuje nkolik hledisek jak porovnvat software: vlastnosti, vkon, Administrativn dotazy
spolehlivost, podpora a cena.
Vlastnosti 3.1) Jak nainstalovat PostgreSQL jinam nez do /usr/local/pgsql?
PostgreSQL m hodn spolench vlastnost s velkmi komernmi
DBMS, nap. transakce, vnoen dotazy, spout, pohledy,
kontrolu referenn integrity a sofistikovan zamykn.
Podporuje nkter vlastnosti, kter tyto systmy nemaj,
uivatelem definovan typy, ddinost, pravidla, MVCC
redukujc zamykn.
Vkon Pri spousten configure nastavte parametr --prefix
Vkonnostn je na tom PostgreSQL podobn jako dal komern
ale i open source databze, v nem je rychlej, jindy
pomalej. V porovnn s MySQL a podobnmi databzovmi systmy
je PostgreSQL rychlej pi vceuivatelskm pstupu,
sloitjch dotazech a zaten read/write dotazy. MySQL je
rychlej v jednoduch dotazech s malm potem uivatel.
Navc, MySQL nepodporuje mnoh vlatnosti zmnn v sekci
vlastnosti. Zapracovali jsme na spolehlivosti a podporovanch
vlastnostech, a vkon zvyujeme v kad verzi. Zajmavou
strnku porovnvajc PostgreSQL a MySQL naleznete na
http://openacs.org/philosophy/why-not-mysql.html. Za vvojem
MySQL nen Open Source komunita, ale komern spolenost,
pestoe svoje produkty distribuuje jako Open Source.
Spolehlivost 3.2) Jak nastavit pravidla pro prstup z jinch stanic?
Jsme si vdomi, e databze mus bt spolehliv, jinak je
nepouiteln. Sname se zveejovat dobe otestovan, stabiln
kd s minimem chyb. Kad verze je vce ne msc v beta
testovn, a nae historie verz ukazuje, e meme nabdnout
stabiln, solidn verze, kter jsou pipraveny pro reln
nasazen. V tto oblasti jsme srovnateln s dalmi databzemi.
Podpora Ve vchoz konfiguraci, PostgreSQL umoznuje pouze pripojen z
Na na mailov konferenci mete kontaktovat velkou skupinu loklnho uzivatele prostrednictvm Unix domain sockets nebo TCP/IP
vvoj a uivatel.problm. Nememe garantovat opravu, spojen. Bez modifikace listen_addresses v souboru postgresql.conf, a
nicmn komern databze tak ne vdy nabdnou opravu. Podle povolen adresy v souboru $PGDATA/pg_hba.conf se nelze pripojit k
ohlas je nae podpora hodnocena lpe ne u jinch DBMS a to PostgreSQL z ostatnch stanic. Zmena vse zmnench parametru vyzaduje
dky pmmu kontaktu s vvoji, velkou komunitou uivatel, restart databzovho serveru.
kvalitnmi manuly a pstupnm zdrojovm kdem. Pro uivatele,
kte vyaduj podporu ke konkrtnm ppadm, existuje placen
podpora (FAQ sekce 1.6).
Cena 3.3) Jak vyladit databzi na vyss vkon?
PosgreSQL lze voln pouvat pro nekomern i komern pouit.
Mete do svch produkt pidat n kd bez omezen, respektive
v souladu s podmnkami na licenn smlouvy (v duchu BSD
licence).
1.15) Jak lze finann pomoci PostgreSQL?
PosgreSQL m prvotdn infrastrukturu od naeho zatku v roce 1996.
Vdme za to Marku Fournierovi, kter zaloil a spravoval tuto
infrastrukturu nkolik let.
Kvalitn infrastruktura je velice dleit pro kad open source
projekt. Pedchz nedorozumnm, kter velice zdruj pokrok v
projektu.
Tato infrastruktura nen lacin. K jejmu zajitn je teba stle
hradit urit msn a jednorzov stky. Pokud mte Vy nebo Vae
spolenost penze, kter nm mete darovat, obrae se na
http://store.pgsql.com/shopping/ a darujte je.
Akoliv webov strnka zmiuje PostgreSQL, Inc. vklady jsou ureny
pouze k podpoe projektu PostgreSQL a nepodporuj dnou existujc
spolenost. Pokud to vyadujete, mete poslat kontrolu na nai
kontaktn adresu.
_________________________________________________________________
Pokud mte pklad spnho nasazen PostgreSQL, pihlat se na n Vkon systmu muzete ovlivnit ve trech oblastech:
advocacy site na http://advocacy.postgresql.org.
User client dotazy Zmeny dotazu
2.1) Kde naleznu ODBC ovladae pro PostgreSQL? * Pouzitm indexu vcetne cstecnch a funkcionlnch
* Pouzitm COPY msto opakovanch INSERTu
* Sloucenm mnoha SQL prkazu do jedn transakce snzenm rezie na
commit
* Pouzvnm CLUSTERU, pokud nactte vets pocet rdek podle indexu
* Pouzitm klauzule LIMIT v poddotazech
* Pouzitm predpripravench dotazu
* Pouzvnm ANALYZE. Tento prkaz aktualizuje statistiky, kter se
pouzvaj pri optimalizaci dotazu
* Pravideln pouzit VACUUM nebo pouzvn pg_autovacuum
* Odstranenm indexu pred rozshlmi zmenami v datech
Pro PostgreSQL existuj dva ODBC ovladae - PsqlODBC a OpenLink ODBC. Konfigurace serveru
PsqlODBC je ke staen na Urcit parametry v souboru postgresql.conf maj vliv na vkon serveru.
http://gborg.postgresql.org/project/psqlodbc/projdisplay.php. Detaily naleznete v prrucce Administrtora v Server Run-time
Environment/Run-time Configuration. Dals komentre naleznete v
http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.ht
ml a http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html.
OpenLink mete zskat na http://www.openlinksw.com. Spolupracuje s Vber hardware
jejich klientskm programovm vybavenm a je dostupn pro vechny jimi
podporovan platformy (Win, Mac, Unix, VMS).
Tento ovlada je uren pro ty, kte vyaduj podporu komern Vliv hardware na vkon serveru je popsn v dokumentech
kvality, nicmn freeware verze je dostupn a funkn. Dotazy http://candle.pha.pa.us/main/writings/pgsql/hw_performance/index.html
zaslejte na postgres95@openlink.co.uk. a http://www.powerpostgresql.com/PerfList/.
2.2) Jak nstroje lze pout pro PostgreSQL a web? 3.4) Jak mm ladc prostredky?
Pkn vod do databzovch technologi zabezpeujcch chod webovch Nastavenm log_* promennch v konfiguraci serveru si vynutte logovn
strnek najdete na http://www.webreview.com. dotazu a procesnch statistik, kter Vm mohou pomoci pri laden a
optimalizaci vkonu.
Pro tvorbu webu existuje excelentn rozhran PHP, kter naleznete na 3.5) Co znamen "Sorry, too many clients", kdyz se zkousm pripojit?
http://www.php.net.
Pro sloitj ppady se asto pouv Perl a CGI.pm nebo mod_perl. Prekrocil jste vchoz limit, kter je 100 soucasne pripojench
uzivatelu. V konfiguraci serveru v postgresql.conf tuto hodnotu muzete
zvetsit zmenou hodnoty max_connection. Nezapomente restartovat server.
2.3) Existuje grafick rozhran pro PostgreSQL? 3.6) Proc je nutn dump a obnoven (load) databze pri upgradu PostgreSQL?
Pro PostgreSQL existuje nkolik grafickch rozhran: PgAccess Zpusob cslovn je popsn v dokumentaci na
(http://www.php.net), PgAdmin III (http://www.php.net), RHDB Admin http://www.postgresql.org/support/versioning. Instrukce k proveden
(http://sources.redhat.com/rhdb/) a Rekall ( migrace na vyss verzi jsou taktz v dokumentaci na adrese
http://www.thekompany.com/products/rekall/). Dle jet PhpPgAdmin http://www.postgresql.org/docs/current/static/install-upgrading.html.
(http://phppgadmin.sourceforge.net/) co je rozhran PostgreSQL
zaloen na web technologii.
plnj seznam najdete na 3.7) Jak hardware bych mel pouzvat?
http://techdocs.postgresql.org/guides/GUITools.
2.4) Kter programovac jazyky maj podporu pro PostgreSQL? Jelikoz PC jsou vetsinou kompatibiln, lid maj tendence verit, ze
vsechna PC jsou stejne kvalitn. Coz nen pravda. Pameti ECC, SCSI a
kvalitn zkladn desky jsou mnohem spolehlivejs a vkonnejs nez
lacinejs hardware. PostgreSQL pobez na vetsine hardwaru, nicmne
pokud je pro Vs spolehlivost a vkon systmu dulezit, je dobr
venovat cas nalezen vhodn hardwarov konfigurace. Na nasich
elektronickch konferencch muzete diskutovat o vhodnch konfiguracch
a znackch.
_________________________________________________________________
Vtina programovacch jazyk obsahuje rozhran pro PostgreSQL. Provozn dotazy
Podvejte se do roziujcch modul Vaeho programovacho jazyka.
Distribuce PostgreSQL obsahuje tato rozhran: 4.1) Jak zskat pouze prvn rdek dotazu? Nhodn rdek?
* C (libpq)
* Embbedded C (ecpg)
* Java (jdbc)
* Python (PyGreSQL)
* TCL (libpgtcl)
Dal rozhran jsou dostupn na http://gborg.postgresql.org v sekci Pokud potrebujete pouze nekolik rdku a pokud vte kolik, pouzijte
Drivers/Interfaces. SELECT LIMIT. Pokud bude mozn pouzt index shodujc se s ORDER BY,
_________________________________________________________________ je mozn, ze se nebude provdet cel dotaz. Pokud neznte pocet
zznamu, pouzijte kurzor a prkaz FETCH.
Administrativn dotazy Pro vber nhodnho rdku pouzijte prkaz ve tvaru:
SELECT col
FROM tab
ORDER BY random()
LIMIT 1;
3.1) Jak nainstalovat PostgreSQL jinam ne do /usr/local/pgsql? 4.2) Jak zskm seznam tabulek, indexu, databz, a definovanch uzivatelu.
Mohu videt dotazy, kter pouzv psql pro zobrazen techto informac?
Pouijte volbu --prefix pi sputn configure. V psql prkazem \dt zskte seznam tabulek. pln seznam prkazu psql
zskte prkazem \?. Alternativne si muzete prostudovat zdrojov kd
psql - soubor pgsql/src/bin/psql/describe.c, kter obsahuje SQL
prkazy, kter jsou generovny pro zskn vstupu psql "backslash"
prkazu. Tak muzete nastartovat psql s parametrem -E, kter zpusob
zobrazen vsech SQL prkazu, kter se odeslaj na server. PostgreSQL
tak podporuje SQL standard INFORMACN SCHMATA (standardn systmov
tabulky). Klasickm dotazem do systmovch tabulek zskte pozadovan
informace o strukture databze.
3.2) Pi startu postmaster, dostanu chybov hlen Bad System Call nebo Systmov tabulky PostgreSQL (mimo rmec SQL standardu) pouzvaj
core dump. Pro? prefix pg_. Pro zjisten struktury databze je muzete pouzt tak, i
kdyz preferovny jsou dotazy do informacnho schmatu.
Dvody mohou bt rzn, ale nejprve zkontrolujte, zda V systm
podporuje System V extensions. PostgreSQL vyaduje v jde podporu
sdlen pamti a semafor.
3.3) Pi startu postmastera dostanu hlen o chyb IpcMemoryCreate. Pro?
Buto nemte sprvn nakonfigurovanou sdlenou pam v jde nebo
musite zvtit jej velikost. Potebn velikost je zvisl na
architektue a na tom, kolik pamovch buffer a backend mte
povoleno pro postmastera. Pro vtinu systm s peddefinovanm potem
backend a pamovch buffer je minimum zhruba 1MB. V PostgreSQL
Administrator's Guide naleznete podrobnj informace o sdlen pamti
a semaforech.
3.4) Pi startu postmastera dostanu hlen o chyb IpcSemaphoreCreate.
Pro?
Pokud dostane chybovou zprvu IpcSemaphoreCreate: semget failed (No
space left on device), pak vae jdro nem dost volnch semafor.
PostgreSQL vyaduje jeden semafor pro kad backend v pozad. Doasnm
eenm je start postmaster s limitem backend. Pouijte pepna -N s
hodnotou men ne 32. plnm eenm je zven hodnot SEMMNS a
SEMMNI jadra.
Nefunkn semafory mohou zpsobit pd bhem intenzivnch databzovch
operac.
Pokud se tato chyba vyskytuje jet nkde jinde, mon nemte vbec
nakonfigurovny semafory ve vaem jde. V PostgreSQL Administrator's
Guide najdete podrobnj popis poadavk na sdlenou pamt a
semafory.
3.5) Jak povolit nebo zakzat pstup z jinch stanic?
Pi vchozm nastaven PostgreSQL odepe pstup z jinch stanic ne
lokln s pouitm UDP. Pstup z jinch stroj nen mon dokud jej
nepovolte nastavenm tcpip_socket v postgresql.conf a urenm zpsobu
autentifikace v $PGDATA/pg_hba.conf.
3.6) Jak ladit databzov stroj na lep vkon?
Urit pomohou indexy. Pkaz EXPLAIN ANALYZE Vm umon sledovat jak
PostgreSQL interpretuje V dotaz a kter indexy pouv.
Pi vt dvce INSERT uvaujte o nhrad pkazem COPY. Ten je
mnohem rychlej neli samotn INSERT. Kad pkaz mimo blok BEGIN
WORK/COMMIT se provd ve vlastn transakci. Zvate, zda-li by se
nedalo nkolik pkaz spojit do jedn transakce. Tm se sn reie
na transakce. Ped provedenm rozshlch zmn zrute indexy, kter po
dokonen zmn opt vytvote.
Mte nkolik dalch monost, jak zlepit vkon. Mete zakzat
fsyn() pi startu postmastera pepnai -o -F. Tyto pepnae zabrn
fsync(), tj. zpisu na disk po kad transakci.
Mete zvit velikost pamovch buffer pouitch backendy tj.
parametr -B postmasteru. Pokud ale tato hodnota bude pli velk, tak
mon nespustte postmastera jeliko doshnete limitu sdlen pamti.
Kad buffer m 8K a implicitn je 64 buffer.
Dle mete pout pepna -S k zven limitu pamti pro backendy na
doasn tdn. Hodnota je mnna v kilobytech a vchoz nastaven je
512, tj. 512K.
Mete pout pkaz CLUSTER, kter uspod fyzicky data v tabulkch
podle indexu. Vce na manulovch strnkch pkazu CLUSTER.
3.7) Jak jsou monosti ladn?
Mte nkolik monost jak se dostat k uitenm stavovm informacm.
Zaprv, pi pekladu pouijte pepna --enable-cassert, tm se zapne
monitorovn a nsledn zastaven aplikace, kdy se proces v backendu
dostane do neoekvanho stavu.
Jak postmaster tak postgres m nkolik pepna umoujcch ladn.
Postmaster nastartujte tak, abyste si byli jisti, e je standartn
vstup a standartn chybov vstup pesmrovn do souboru logu,
napklad:
cd /usr/local/pgsql
./bin/postmaster > server.log 2>&1 &
Tm se vytvo log v adresi PostgreSQL, Tento soubor obsahuje
uiten informace o problmech a chybch vyskytlch se na serveru.
Postmaster m pepna -d urujc, jak podrobn maj bt reportovan
informace, tj. debug level. Pozor, pi velk hodnot debug levelu
rychle roste velikost souboru logu.
Pokud neb postmaster, mete spustit backend PostgreSQL z pkazov
dky a napsat svj SQL dotaz pmo v backendu (doporueno pouze pro
ladn). Dotaz je v tomto ppad ukonen novou dkou, nikoliv
stednkem. Pokud mte aplikaci peloenou s ladcmi symboly, mete
pout debbuger k monitorovn procesu. Pokud nen backend sputn
postmasterem, pak neb ve svm obvyklm prosted a tud nkter
problmy dan interakc mezi backendy nemohou bt nasimulovny.
Pokud b postmaster, spuse psql v jednom okn a pak si zjistte PID
procesu postgres pouitho psql. V debuggeru sepipojte k postgresql
PID. Pak nastavte breakpointy v debuggeru a zadejte dotaz v psql.
Pokud ladte startup postgresu, pak nastavte PGOPTIONS="-W n" a spuse
psql. Tento pepna zpsob pauzu n sekund, take budete mt as se
pipojit k procesu, a nastavit breakpointy a pokraovat v startup
posloupnosti.
Pro ladn a men vkonu mohou bt uiten pepnae -s, -A a -t
programu postgres (backend).
Mete provst peklad s profilac, tak abyste vidli kolik asu
zabraj jednotliv funkce. Soubory s profily backend jsou uloeny v
adresi pgsql/data/base/dbname. Profil klienta pak v jeho aktulnm
adresi. Korektn profilace v prosted Linux poaduje konfiguraci
systmu s parametrem -DLINUX_PROFILE.
3.8) Pro dostanu "Sorry, too many clients", kdy se zkoum pipojit?
Zvyte limit postmastera na maximln poet souasn sputnch
backend.
Vchoz hodnota je 32 backend. Tuto hodnotu zvte zastavenm a
optovnm sputnm postmastera s parametrem -N nebo pravou
postgresql.conf.
Pi zven hodnoty -N nad 32 muste zvit hodnotu -B nad vchoz 64,
-B mus bt minimln dvakrt vt, nebo jet lpe vce.
Pravdpodobn zjistte, e pro velk poet proces backendu je nutn
zvit nkter parametry jdra. Jsou to pedevm maximln velikost
sdlen pamti SHMMAX, maximln poet semafr SEMMNS a SEMMNI,
maximln poet proces NPROC, maximln poet proces uivatele
MAXUPRC a maximln poet otevench soubor NFILE a NINODE. Dvod pro
omezen maximlnho potu backend je fakt, e by mohlo dojt k
vyerpn zdroj Vaeho systmu.
3.9) K emu slou adres pgsql_tmp?
Tento adres obsahuje doasn soubory vytvoen exekutorem dotaz.
Napklad, kdy je nutn tdn k zajitn ORDER BY a tdn m
vt nroky na prostor ne povoluje parametr -S backendu, pak je
vytvoen doasn soubor k uloen extra daj.
Doasn soubory jsou obvykle mazny automaticky, ale me se stt, e
bhem tdn server spadne. Zastaven a dal start postmastera
zajist odstrann soubor s tchto adres.
3.10) Pro je poadovno dump a obnoven (load) databze bhem upgrade mezi
velkmi verzemi PostgreSQL?
PostgreSQL se minimln mn bhem malch verz, take nap. pi
upgrade z 7.2 na 7.2.1 nen nutn dump a load databze. Ale vynamn
verze asto mn intern formt systmovch tabulek a datovch
soubor. Tyto zmny jsou natolik rozshl, e nelze zajistit zptnou
kompatibilitu pro datov soubory. Dump ulo data v obecnm formtu,
take mohou bt natena a pouvna v novm internm formtu.
_________________________________________________________________
Provozn dotazy Seznam vsech databz zskte prkazem psql -l
4.1) m se li binrn a normln kurzor? Dals inspiraci najdete v souboru pgsql/src/tutorial/syscat.source.
Obsahuje ilustracn SELECTy potrebn k zskn informac z systmovch
tabulek databze.
Popis najdete v manulov strnce DECLARE 4.3) Jak zmenit datov typ sloupce?
4.2) Jak zskat pouze prvn dek dotazu? Nhodn dek? Ve verzch 8.0 a pozdejsch jednoduse:
ALTER TABLE ALTER COLUMN TYPE
Podvejte se do man. strnky pkazu FETCH, nebo pouijte SELECT ... V starsch verzch:
LIMIT ... 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;
I kdy potebujete zskat pouze prvnch nkolik dk, je teba Po zmene spustte prkaz VACUUM FULL, aby doslo k uvolnen diskovho
zpracovat vechna data, nap. pokud dotaz m ORDER BY. Pokud vak prostoru pouzitho v tu chvli jiz neplatnmi zznamy.
existuje index, kter odpovd ORDER BY, PostgreSQL me zskat pouze
prvnch n dk a ukonit zpracovn dotazu.
K zskn nhodnho dku pouijte: 4.4) Jak je maximln velikost rdku, tabulky a databze?
SELECT col
FROM tab
ORDER BY random()
LIMIT 1;
4.3) Jak zskm seznam tabulek nebo jinak jak jej zsk psql?
Pkaz \dt v psql zobraz seznam tabulek. pln seznam pkaz psql
dostanete pkazem \?. Tak se mete podvat do zdrojovch kd psql
do souboru pgsql/src/bin/psql/describe.c. Ten obsahuje SQL pkazy,
kter se pouvaj v psql metapkazech. Dle mete spustit psql s
pepnaem -E, kter zpsob zobrazen kadho dotazu, kter
zpracovn metapkazu vyvol. PostgreSQL nabz SQLi INFORMATION
SCHEMA s tabulkami obsahujc informace o databzi.
4.4) Jak odstranm sloupec tabulky, jak zmnm jeho typ?
Ponaje verz 7.3 mete pout pkaz ALTER TABLE DROP COLUMN. Ve
starch verzch mete pout nsledujc 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 zmnu typu sloupce je teba provst:
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 provete VACUUM FULL tab - uvolnte tm diskov prostor zabran
nyn ji neplatnmi dky.
4.5) Jak je maximln velikost dku, tabulky a databze?
PostgreSQL m tato omezen: PostgreSQL m tato omezen:
Maximln velikost databze: neomezena (existuj 32TB db) Maximln velikost databze: neomezena (existuj 32TB db)
Maximln velikost tabulky: 32 TB Maximln velikost tabulky: 32 TB
Maximln velikost dky: 1.6 TB Maximln velikost rdky: 480GB
Maximln velikost poloky 1 GB Maximln velikost polozky 1 GB
Maximln poet dk v tabulce: neomezeno Maximln pocet rdku v tabulce: neomezeno
Maximln poet sloupc v tabulce: 250-1600 podle typ Maximln pocet sloupcu v tabulce: 250-1600 podle typu
Maximln poet index na tabulce: neomezeno Maximln pocet indexu na tabulce: neomezeno
Ve skutenosti nic nen neomezeno, limitem bv vdy dostupn diskov Ve skutecnosti nic nen neomezeno, limitem bv vzdy dostupn diskov
pam nebo velikost operan pamti. Pokud mte nkterou z tchto pamet nebo velikost operacn pameti. Pokud mte nekterou z techto
hodnot neobvykle velkou, me dojt ke snen vkonu. hodnot neobvykle velkou, muze dojt ke snzen vkonu.
Maximln velikost tabulky je 32 TB a nevyaduje podporu velkch Maximln velikost tabulky je 32 TB a nevyzaduje podporu velkch
soubor operanm systmem. Velk tabulky se ukldaj do nkolika 1 GB souboru operacnm systmem. Velk tabulky se ukldaj do nekolika 1 GB
soubor take limity souborovho systmu nejsou podstatn. souboru takze limity souborovho systmu nejsou podstatn.
Maximln velikost tabulky a maximln poet sloupc meme Maximln velikost tabulky a maximln pocet sloupcu muzeme
zetynsobit nastavenm velikosti bloku na 32K. zectyrnsobit nastavenm velikosti bloku na 32K.
4.6) Kolik diskovho prostoru je poteba k uloen dat z Indexy jsou povolen pouze na sloupcch jejichz dlka je mens nez
2000 znaku. Pokud tuto dlku prekrocme a index potrebujeme pro
zajisten jednoznacnosti, je vhodnejs pouzt funkcionln index nad
MD5 funkc nebo fulltextov index.
normlnho textovho souboru? 4.5) Kolik diskovho prostoru je potreba k ulozen dat z normlnho textovho
souboru?
PostgreSQL vyaduje a ptinsobek diskovho prostoru k uloen dat z PostgreSQL vyzaduje az petinsobek diskovho prostoru k ulozen dat z
textovho souboru. textovho souboru.
Napklad, uvaujme soubor se 100 tisci dky obsahujc na kad Naprklad, uvazujme soubor se 100 tisci rdky obsahujc na kazd
dce cel slo a textov popis. Text je v prmru dvacet byt rdce cel cslo a textov popis. Text je v prumerne dvacet bytu
dlouh. Textov soubor bude 2.8 MB dlouh. Velikost databze dlouh. Textov soubor bude 2.8 MB dlouh. Velikost databze
obsahujc odpovdajc data bude zhruba 6.4 MB. obsahujc odpovdajc data bude zhruba 5.2 MB.
36 byt: hlavika dku (piblin) 24 bytu: hlavicka rdku (priblizne)
24 byt: jedna celoseln poloka a jedna textov 24 bytu: jedna celocseln polozka a jedna textov
+ 4 byty: ukazatel na strnku k ntici + 4 byty: ukazatel na strnku k entici
------------------------------------------------------ ------------------------------------------------------
64 byt na dek 52 bytu na rdek
Velikost datov strnky PostgreSQL je 8KB
8192 byt na strnce Velikost datov strnky PostgreSQL je 8192 bytu (8KB)
---------------------- = 128 dek na strnku 8192 bytu na strnce
64 byt za dek ---------------------- = 158 rdek na strnku
52 bytu za rdek
100000 dek 100000 rdek
-------------------- = 782 strnek (zaokrouhleno nahoru) ----------------------- = 633 strnek (zaokrouhleno nahoru)
128 dek na strnce 158 rdek na strnce
782 * 8192 = 6, 406, 144 byt (6.4 MB) 633 datovch strnek * 8192 bytu na kazdou strnku = 5,185,536 bytu (5.2 MB)
Indexy nemaj tak velkou reii, ale mohou bt tak velk, protoe Indexy nemaj tak velkou rezii, ale mohou bt tak velk, protoze
obsahuj indexovan data. obsahuj indexovan data.
Hodnoty NULL jsou uloeny v bitmapch, take spotebuj jen velmi mlo Hodnoty NULL jsou ulozeny v bitmapch, takze zabraj jen velmi mlo
diskovho prostoru. diskovho prostoru.
4.7) Jak zskm seznam vytvoench tabulek, index, databz? 4.6) Muj dotaz je pomal a nepouzv vytvoren indexy. Proc?
psql m sadu metapkaz k zobrazen tchto informac. Jejich seznam Kazd dotaz nemus nutne pouzt existujc indexy. Index se pouzije
zskte pkazem \?. Dle se mete podvat na obsah systmovch tehdy, kdyz je tabulka vets nez urcit minimln velikost, a dotaz
tabulek zanajcch pg_. Sputn psql s parametrem -l provede vpis vybr pouze procentulne malou cst rdku tabulky. To proto, ze
nzv vech databz. nhodn prstup k disku dan ctenm indexu muze bt pomalejs nez
linern cten tabulky nebo sekvencn cten.
Soubor pgsql/src/tutorial/syscat.source obsahuje SELECTy pistupujc
k systmovm tabulkmm. PostgreSQL rozhoduje o pouzit indexu na zklade statistiky prstupu k
tabulce. Tyto statistiky se shromazduj prkazy VACUUM ANALYZE nebo
4.8) Mj dotaz je pomal a nepouv vytvoen indexy. Pro? ANALYZE. Dky statistikm m optimizer informaci o poctu rdek v
tabulce a muze lpe rozhodnout o pouzit indexu. Statistiky se uplatn
Kad dotaz nemus nutn pout existujc indexy. Index se pouije pri urcen optimlnho porad a metody spojen tabulek. Statistiky by
tehdy, kdy je tabulka vt ne urit minimln velikost, a dotaz se meli aktualizovat opakovane, tak jak se men obsah tabulek.
vybr pouze procentuln malou st dk tabulky. To proto, e
nhodn pstup k disku dan tenm indexu me bt pomalej ne Indexy nejsou obycejne pouzity pro setrden nebo spojen tabulek.
linern ten tabulky nebo sekvenn ten. Sekvencn zpracovn nsledovan explicitnm trdenm je obycejne
rychlejs nez pouzit indexu na velk tabulce.
PostgreSQL rozhoduje o pouit index na zklad statistiky pstup k
tabulce. Tyto statistiky se shromauj pkazy VACUUM ANALYZE nebo Jinak je tomu v prpade pouzit LIMIT a ORDER BY, pri kterm se
ANALYZE. Dky statistikm m optimizer informaci o potu dek v vetsinou index pouzije, jelikoz je vsledkem pouze mal cst tabulky.
tabulce a me lpe rozhodnout o pouit index. Statistiky se uplatn
pi uren optimlnho poad a metody spojen tabulek. Statistiky by Pokud si myslte, ze optimizer mylne zvolil sekvencn prohledvn
se mli aktualizovat opakovan, tak jak se mn obsah tabulek. tabulky, pouzijte prkaz SET enable_seqscan TO 'off' a zkuste zda je
prohledvn s indexem rychlejs.
Indexy nejsou obyejn pouity pro setdn nebo spojen tabulek.
Sekvenn zpracovn nsledovan explicitnm tdnm je obyejn Pri vyhledvn na zklade vzoru jako je napr. opertor LIKE nebo ~ se
rychlej ne indexn ten na velk tabulce. indexy pouzij pouze za urcitch skutecnost:
* zactek hledanho vzoru mus bt ukotven k zactku, tj.
Jinak je tomu v ppad pouit LIMIT a ORDER BY, pi kterm se + vzor LIKE nesm zacnat %
vtinou index pouije, vsledkem je pouze mal st tabulky. Funkce + ~ regulrn vraz mus zacnat ^
MAX() a MIN() nepouvaj indexy, ale je mon tut hodnotu zskat: * vzor nesm zacnat intervalem, napr. [a-e]
SELECT col
FROM tab
ORDER BY col [ DESC ]
LIMIT 1;
Pokud si myslte, e optimizer myln zvolil sekvenn prohledvn
tabulky, pouijte pkaz SET enable_seqscan TO 'off' a zkuste zda je
indexn prohledvn rychlej.
Pi vyhledvn na zklad vzoru jako je nap. opertor LIKE nebo ~ se
indexy pouj pouze za uritch skutenost:
* zatek hledanho vzoru mus bt ukotven k zatku, tj.
+ vzor LIKE nesm zanat %
+ ~ regulrn vraz mus zanat ^
* vzor nesm zanat intervalem, nap. [a-e]
* vyhledvan, kter nen Case sensitiv jako je ILIKE nebo ~* * vyhledvan, kter nen Case sensitiv jako je ILIKE nebo ~*
nepouv indexy. Mete ale pout funkcionln indexy, kter nepouzv indexy. Muzete ale pouzt funkcionln indexy, kter
jsou posny v sekci 4.12 jsou popsny v sekci 4.8
* pi inicializaci databze (initdb) mus bt pouito C locale * pri inicializaci databze (initdb) mus bt pouzito C locale nebo
(pozn. pekladatele - tud v naich podmnkch nepouiteln, vytvorte speciln text_pattern_index, kter umozn, pri
nepracovalo by esk tdn). respektovn zmnench podmnek pouzit indexu operac LIKE. Pro
vyhledvn celch slov je mozn a vhodn pouzt fulltext.
4.9) Jak zjistm, jak optimizer dotazu vyhodnocuje mj dotaz?
Podvejte se do manulov strnky pkazu EXPLAIN. 4.7) Jak zjistm, jak se vyhodnocuje muj dotaz?
4.10) Co to je R-tree index? Podvejte se do npovedy k prkazu EXPLAIN.
R-tree index se pouv pro indexovn prostorovch dat. Hash index 4.8) Jak pouzt case-(in)sensitive regulrn vraz? Jak pouzt index pro case
neme obslouit prohledvn oblast. B-tree index me dit insensitive hledn?
vyhledn oblast v jedn dimenzi. R-tree index me podporovat
hledn v multidimenzionlnch datech. Pouijeme-li napklad R-tree
index na atributy typu point, pak systm me efektivn odpovdt na
dotaz - vyber vechny body uvnit obdlnk.
Pvodn nvrh R-tree je Guttman, A. "R-trees: A Dynamic Index Vyhledvn prostrednictvm regulrnch vzoru zajistuje opertor ~,
Structure for Spatial Searching." Proceedings of the 1984 ACM SIGMOD kter je case-sensitive. Jeho case-insensitive varianta je opertor
Int'l Conf on Mgmt of Data, 45-57 ~*. Case-insensitive variac opertoru LIKE je opertor ILIKE.
Tyto materily naleznete v Stonebraker's "Readings in Database Case-insensitive vyhledn se res:
Systems". SELECT *
FROM tab
WHERE lower(col) = 'abc';
Vestavn R-tree me slouit k indexaci polygon a oblast. Tento dotaz nepouzije standardn index. Muste pouzt tzv.
Teoreticky meme R-tree pout i pro vce dimenz (jin ne 3D). Ve funkcionln index:
skutenosti ale takov rozen R-tree vyaduje trochu prce a ve CREATE INDEX tabindex ON tab (lower(col));
souastnosti chyb dokumentace jak na to.
4.11) Co je Genetic Query Optimizer? Pokud index vytvorme jako uniktn, tak muzeme ukldat retezce
obsahujc mal i velk psmena, ale nikoliv retezce, kter se od sebe
odlisuj jen v malch a velkch psmenech. K zajisten zpisu retezce
obsahujc pouze mal nebo pouze velk psmena pouzijte CHECK kontroly
nebo triggery.
GEQO modul urychluje optimalizaci dotaz pi spojovn mnostv 4.9) Jak v dotazu detekovat, ze polozka je NULL? Jak bezpecne spojit dva
tabulek metodou Genetickch algoritm (GA). To umouje zskat velkho retezce, pokud mohou obsahovat NULL? Lze trdit podle toho, jestli je polozka
mnostv variant spojen pi neplnm prohledvnm. NULL nebo ne?
4.12) Jak provst vyhledvn regulrnho vrazu case sensitiv, insensitiv? Pokud chcete testovat hodnotu NULL pouzijte opertor IS:
Jak pout index pro case insensitive vyhledvn?
Opertor ~ slou k porovn s regulrnm vrazem, jeho modifikace *~
pedstavuje case insensitive vyhledvn. Jedn se o obdobu LIKE a
ILIKE.
Pro vyhledvn bez ohledu na velk mal psmena pouijeme:
SELECT * SELECT *
FROM tab FROM tab
WHERE lower(col) = 'abc'; WHERE col IS NULL;
V tomto ppad se nepouije standardn index. Nicmn, pouije se K spojen retezcu, kter mohou obsahovat hodnotu NULL, pouzvejte
funkcionln index, pokud jej vytvote: funkci COALESCE(), napr.:
CREATE INDEX tabindex ON tab (lower(col)); SELECT COALESCE(col1, '') || COALESCE(col2, '')
FROM tab
4.13) Jak v dotazu detekovat, e poloka je NULL? Pokud chcete trdit podle hodnoty NULL, pouzijte vraz IS NULL nebo IS
NOT NULL v klauzuli ORDER. Hodnota pravda m prednost pred hodnotou
false a tedy pokud pouzijete:
SELECT *
FROM tab
ORDER BY (col IS NOT NULL)
Urte pomoc IS NULL nebo IS NOT NULL tak zznamy s NULL budou na zactku setrdench dat.
4.14) Jak jsou rozdly mezi rznmi znakovmi typy? 4.10) Jak jsou rozdly mezi ruznmi znakovmi typy?
Typ Intern nzev Poznmka Typ Intern nzev Poznmky
-------------------------------------------------------------------------- VARCHAR(n) varchar n urcuje maximln dlku
VARCHAR(n) varchar omezeno maximln dlkou, bez doplnn mezerami CHAR(n) bpchar retezec je do dan dlky rozsren mezerami
CHAR(n) bpchar etzec je doplnn mezerami do dan dlky TEXT text bez omezen dlky
TEXT text bez hornho limitu na dlku BYTEA bytea pole bytu nespecifikovan dlky
BYTEA bytea pole byt (bezpen lze uloit i znak NULL) "char" char jeden znak
"char" char jeden znak
S internmi nzvy se setkte v systmovm katalogu a v nkterch Na intern nzvy muzete narazit v systmovm katalogu nebo v nekterch
chybovch hlench. chybovch hlsench.
Prvn tyi uveden typy jsou tzv. varlena typy (tj. prvn tyi byty Ctyri prvn typy jsou tzv. varlena typy (prvn ctyri byty na disku
na disku nesou daj o dlce, nsleduj samotn data). Proto skuten jsou obsahuj dlku, ostatn obsahuj vlastn data). Skutecne obsazen
pouit prostor je vdy o nco mlo vt ne deklarovan dlka. prostor je tedy o neco mlo vets nez deklarovan velikost. Na druhou
Naopak, tyto datov typy jsou komprimovnty TOASTem, take prostor na stranu, dels retezce jsou komprimovny, takze obsazen prostor na
disku me bt ni ne je oekvno. disku muze bt mens nez se cek.
VARCHAR(n) je vhodn pro ukldn text prommn dlky s pevn VARCHAR(n) je vhodn pro ukldn ruzne dlouhch retezcu u kterch
stanovenou maximln dlkou. TEXT je pro etzce bez omezen dlky s znme dlkov omezen, TEXT pro retezce bez omezen dlky (maximum je
maximem jeden gigabajt. jeden gigabyte).
CHAR(n) slou k ukldn etzc stejn dlky. CHAR(n) dopln przdn CHAR(n) se pouzv pro ulozen stejne dlouhch retezcu. CHAR(n) dopln
znaky do specifikovan dlky, zatmco VARCHAR(n) ulo pouze pedan mezerami na specifikovanou dlku, VARCHAR(n) hodnoty se ukldaj tak
znaky. BYTEA je ureno pro ukldn binrnch dat, vetn NULL byte. jak jsou. BYTEA je pro ukldn binrnch dat - non ASCII hodnot.
Vechny zde popsan typy maj podobn vkonnostn charakteristiky. Vsechny zmnen typy maj podobn vkonov charakteristiky.
4.15.1) Jak vytvoit serial/auto-increment pole? 4.11.1) Jak vytvorit serial/auto-increment polozku?
PostgreSQL podporuje typ SERIAL. Pi jeho pouit se automaticky V PostgreSQL muzete pouzt datov typ SERIAL. Jeho pouzitm se
vytvo SEQUENCE. Napklad: automaticky vytvor sekvence. Naprklad:
CREATE TABLE person ( CREATE TABLE person (
id SERIAL, id SERIAL,
name TEXT name TEXT
); );
je automaticky pevedeno do je automaticky transformovno na:
CREATE SEQUENCE person_id_seq; CREATE SEQUENCE person_id_seq;
CREATE TABLE person ( CREATE TABLE person (
id INT4 NOT NULL DEFAULT nextval('person_id_seq'), id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
name TEXT name TEXT
); );
CREATE UNIQUE INDEX person_id_key ON person(id);
Viz dokumentace create_sequence v manulovch strnkch. Dle mete
pout uniktn hodnotu OID kadho dku. Potom ale muste spoutt
pg_dump s pepnaem -o, tak aby zstaly zachovny hodnoty OID (u
pkazu copy COPY WITH OIDS).
4.15.2) Jak zskat hodnotu SERIAL po vloen dku?
Jednou z monost je zskat budouc hodnotu SERIAL funkc nextval()
ped samotnm vloenm a pak ji vloit explicitn. Napklad v jakmsi
pseudojazyku:
newid = execute("SELECT nextval('person_id_seq')");
execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
Mete pak jet pout hodnotu newid v dalch dotazech, nap. jako
hodnotu cizho kle. Nzev automaticky vytvoen sekvence je
tabulka_sloupec_seq.
Alternativn mete zskat hodnotu posledn generovou sekvenc funkc
currval() po vloen:
execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
new_id = execute("SELECT currval('person_id_seq')");
Konen mete pout OID hodnotu vrcenou pkazem INSERT, ale to je
pravdpodobn nejmn penositeln een. V Perlu pi pouit DBI
modulu Edmunda Mergleho DBD:Pg oid hodnotu zskme
$sth->{pg_oid_status} po kadm $sth->execute().
4.15.3) Nepovede currval() a nextval() k rozhozen podmnek pi soubhu s
jinmi uivateli?
Nikoliv, currval() vrac hodnotu naposledy generovanou ve vaem
backendu, a ta tud nen spolen vem uivatelm.
4.15.4) Pro nen vygenerovan slo pouito pi peruen transakce? Pro
vznikaj dry v slovn vlastn sekvenc/SERIAL sloupce?
K zajitn efektivnosti soubhu, jsou hodnoty posloupnosti, kdy se o
n pod, a sekvence nen zamena do ukonen transakce. To zpsobuje
dry v slovn ze zruench transakc.
4.16) Co to je OID? Co je to TID?
Kad dek vytvoen v PostgreSQL zsk jedinen OID. Vechna OID
generovan bhem inicializace databze jsou men ne 16384
(include/access/transam.h). Vechna OID generovan na poadavek
uivatele jsou rovna nebo vy tto hodnot. Normln, vechna OID
jsou jedinen nejen uvnit tabulky nebo databze, ale v rmci cel
instalace PostgreSQL
PostgreSQL pouv OID ve svm internm systmu tabulek k vytvoen
relac. Tato OID mohou bt pouita k identifikaci konkrtnho
uivatele a pouita v spojen. Pro OID hodnoty je doporuen typ OID.
Nad tmto sloupcem mete vytvoit index pro urychlen pstupu.
OID jsou dna vem dkm z centrln oblasti a jsou pouita v kad
databzi. Pokud potebujete zmnit OID, nebo chcete zkoprovat tabulku
s pvodnmi OID, lze pout:
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 uloena jako 4bajtov integer a peteou po tyech
miliardch. Nebylo hleno, e by se tak nkdy stalo, pesto ale
plnujeme odstranit tento limit dv ne se tak stane.
TID se pouvaj i identifikaci fyzickch dk s hodnotou bloku a
offsetu. TIDs se mn modifikac dk (pouv se jako ukazatel
indexu fyzickho dku).
4.17) Jak je vznam nkterch vraz pouitch v PostgreSQL?
V nkterch zdrojovch kdech nebo star dokumentaci se mete setkat
s nsledujcmi vrazy, kter maj ir vznam. Zde je pklad
nekterch:
* tabulka, relace, tda (table, relation, class)
* dek, zznam, ntice (row, record, tuple)
* sloupec, poloka, atribut (column, field, attribute)
* vyhledn, vbr (retrieve, select)
* nhrada, prava (replace, update)
* pidn, vkldn (append, insert)
* OID, serial value (OID, serial value)
* portal, kurzor (portal, cursor)
* range variable, jmno tabulky, alias tabulky (range variable,
table name, table alias)
seznam tchto vraz mete nalzt na
http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary
/glossary.html.
4.18) Pro jsem zskal chybov hlen "ERROR: Memory exhausted in
AllocSetAlloc()"?
Pravdpodobn dolo k vyerpn virtuln pami na Vaem systmu,
nebo jdro m nzk limit pro urit zdroje. Vyzkouejte ped startem
posmatera
ulimit -d 262144
limit datasize 256m
Zle na Vaem shellu, zda budou tyto pkazy spn, mly by zvit
limit datovho segmentu pro Vae procesy a umonit tak dokonen
dotazu. Tyto pkazy se aplikuj na aktuln proces a vechny synovsk
procesy vytvoen po proveden pkazu. Pokud mte problmy s SQL
klientem protoe backend vrac pli mnoho dat, zkuste zvit limity
ped startem klienta.
4.19) Jak se dozvm, kterou verzi PostgreSQL pouvm?
V psql spuste SELECT version();
4.20) Pro operace s velkmi objekty kon "invalid large obj descriptor"?
Vechny operace s velkmi objekty - lo_open, lo_close, ... muste Podrobnejs informace najdete v manulu v popisu prkazu
spoutt v transakci, tj. mezi pkazy BEGIN WORK a COMMIT. create_sequence.
PostgreSQL uvoluje handle velkch objekt pi skonen transakce. 4.11.2) Jak zskat hodnotu SERIAL po vlozen rdku?
Pokud budete pracovat s velkmi objekty mimo transakci, pravdpodobn
dostanete toto chybov hlen, protoe handle ji budou neplatn.
Pokud pouvte interface podobn ODBC muste nastavit set auto_commit
off.
4.21) Jak vytvoit sloupec obsahujc implicitn aktuln datum? Nejjednodussm zpusob, jak zskat vygenerovanou hodnotu typu SERIAL,
je vyuzt klauzuli RETURNING. Pro tabulku z 4.11.1 vypad takto:
INSERT INTO person (name) VALUES ('Blaise Pascal') RETURNING id;
Pouijte CURRENT_TIMESTAMP: Tak muzete pouzt funkci nextvall() a jej vsledek pouzt v prkazu
INSERT, nebo zavolat currval() po proveden prkazu INSERT.
CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP ); 4.11.3) Nezpusob currval() a nextval() problmy ve vce uzivatelskm
prostred?
4.22) Pro jsou moje vnoen dotazy pouvajc IN tak pomal? Ne, currval vrac vzdy hodnotu, kter byla vygenerovna pro vs.
Dvj verze (ped 7.4) spojovali vnoen dotazy k vnjm 4.11.4) Proc nen vygenerovan cslo pouzito pri prerusen transakce?Proc
sekvennm tenm vsledku poddotazu pro kad dek vnjho dotazu. vznikaj dry v cslovn prostrednictvm sekvence nebo typu SERIAL?
Pokud poddotaz vrtil nkolik mlo dk IN bylo rychl. Pro ostatn
ppady je vhodn nahradit IN EXISTS:
SELECT *
FROM tab
WHERE col IN (SELECT subcol FROM subtab);
na: Pot co sekvence vygeneruje nov cslo, tak se nedochz k zamcen
SELECT * sekvence a necek se na spesn nebo nespesn dokoncen transakce.
FROM tab Odvolnm transakce, kter si vyzdala csla sekvence se tato csla
WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col); nenvratne ztrat.
Pro urychlen vytvoete index pro subcol. 4.12) Co to je OID? Co je to CTID?
Ve verzi 7.4 a pozdjch, IN pouv stejn sofistikovanou techniku V prpade, ze tabulku nezalozme s atributem WITHOUT OIDS, tak m
spojovn tabulek jako ostatn dotazy a je preferovan ped EXISTS. kazd rdek uniktn identifikacn cslo OID. Toto cslo je 4 bajtov
cel cslo, kter je jedinecn v cel instalaci. Pretece po 4
miliardch rdku. PostgreSQL pouzv OIDs jako intern linky v
internch systmovch tabulkch.
4.23) Jak provst vnj spojen (outer join)? K zskn uniktnho csla v nesystmovch tabulkch je vhodnejs
pouzit typu SERIAL nez OID, jelikoz sekvence SERIAL se pouzv pouze
pro jednu tabulku a je tudz mne nchyln na pretecen. Pokud byste
se toho obvali, pouzijte typ SERIAL8.
PostgreSQL podporuje vnj spojen tabulek standardnmi SQL pkazy. CTID se pouzv k identifikaci konkrtnho fyzickho rdku. CTID se
Zde jsou dva pklady: men pokud je rdek modifikovn nebo znovu nacten. Pouzvaj ho indexy
SELECT * jako adresaci fyzickch rdku.
FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
nebo 4.13) Co znamen chybov hlsen "ERROR: Memory exhausted in
SELECT * AllocSetAlloc()"?
FROM t1 LEFT OUTER JOIN USING (col);
Tyto identick dotazy napoj t1.col na t2.col a jet pid
nepipojen dky z t1 (kter nemaj obdoby v t2). Prav spojen
(RIGHT JOIN) pid nepipojen dky z t2. FULL JOIN vrt vechny
dky, vetn nepipojench z tbulek t1 a t2. Klov slovo OUTER je
nepovinn a ve se na LEFT, RIGHT a FULL join. Bn spojen se
nazv INNER JOIN.
V dvjch verzch se vnj spojen tabulek mohlo simulovat pomoc
UNION a NOT IN. Napklad pro spojen tabulek tab1 a tab2, je
nsledujc dotaz ekvivalentn k vnjmu 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 provst dotaz z vce databz?
PostgreSQL nepodporuje dotazy do jin ne aktuln databze.
contrib/dblink nabz funkce umoujc proveden dotazu v jin
databzi. Klient si me otevt simultln pipojen do rznch db
bez omezen.
4.25) Me funkce vrtit vce dk nebo sloupc?
V PostgreSQL 7.3 mete jednodue vracet vce dk nebo sloupc z
funkce, viz:
http://techdocs.postgresql.org/guides/SetReturningFunctions.
4.26) Pro nelze spolehliv vytvet a ruit doasn tabulky v PL/pgSQL
funkcch?
Peloen kd PL/pgSQL funkce je uloen ve vyrovnvac pamti, tj.
funkce je pekldna pouze pi zmn kdu, nikoliv ped kadm volnm
funkce. Nechtnm vedlejm efektem je, e voln funkce sele, kdy
se funkce odkazuje na doasnou tabulku, pokud tato tabulka byla od
pekladu funkce zruena (akoliv ji byla znovu vytvoena a existuje).
Jedinm eenm problmu je pstup k doasn tabulce pomoc EXECUTE,
tj. dynamick provdn dotazu. Tento pkaz zajist opakovan peklad
dotazu pi kadm voln funkce.
4.27) Jak jsou monosti replikace databz?
Existuje nkolik dostupnch een master/slave replikac, tj umouj
modifikace master databze a slave databzm umouj pouze ten. Na
konci http://gborg.PostgreSQL.org/genpage?replication_research najdete
jejich seznam. Na een multi-master replikaci se pracuje na
http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.
4.28) Jak jsou monosti ifrovn databz?
* contrib/pgcrypto obsahuje ifrovac funkce pouiteln v SQL
dotazech.
* K ifrovn penosu dat z klienta na server, mus bt server
peloen s podporou ssl a pepna ssl v postgresql.conf mus bt
nastaven na hodnotu true. Klient mus mt vytvoen zznam hostssl
v pg_hba.conf a tak mt povolen reim ssl. Lze pout i jin
prostedky, nejen nativn podporu ssl v PostgreSQL, nap. stunel a
ssh.
* Hesla uivatel databze jsou zaifrovna ponaje verz 7.3. Ve
starch verzch toto chovn muselo bt vynuceno volbou
PASSWORD_ENCRYPTION v postgresql.conf
* Server me bet na ifrovanm souborovm systmu.
_________________________________________________________________
Roziovn PostgreSQL Pravdepodobne jste vycerpal dostupnou virtuln pamet, nebo tvuj
kernel m prlis nzk limity u urcitch zdroju. Pred startem
PostgreSQL vyzkousejte:
ulimit -d 262144
limit datasize 256m
5.1) Napsal jsem UDF funkci, PostgreSQL vak kon dump core? Mozn, ze se projde pouze jeden prkaz - zlez to na vasem shellu.
Mel by zvednout limity datovch segmentu vasich procesu na dostatecne
velkou hodnotu a snad umoznit dokoncen dotazu. Zmena limitu se bude
aplikovat pouze na aktuln proces a na vsechny nove vytvoren
procesy. Jestlize mte problm s SQL klientem, protoze vm server
vrtil prlis dat, zkuste to pred startem klienta.
Problm me bt zpsoben mnoha okolnostmi. Vyzkouejte si svoji 4.14) Jak zjistm, kterou verzi PostgreSQL pouzvm?
funkci nejdve v njak jednoduch aplikaci.
5.2) Jak mohu pispt njakmi ikovnmi datovmi typy a funkcemi do V psql napiste:
PostgreSQL? SELECT version();
Polete sv rozen do konference pgsql-hackers, a ono pak mon 4.15) Jak vytvorit sloupec, kter bude implicitne obsahovat aktuln cas?
skon v podadresi contrib.
5.3) Jak napsat funkci v C vracejc ntici? Pouzijte CURRENT_TIMESTAMP:
CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
Funkce vracejc tabulky jsou podporovan PostgreSQL 7.3 a vy pro 4.16) Jak provst vnejs spojen (outer join)?
jazyky C, PL/PgSQL a SQL. Vce naleznete v The Programmer's Guide.
Pklady tchto funkc pro C naleznete v contrib/tablefunc.
5.4) Modifikoval jsem zdrojov soubory. Tato zmna nebyla pi rekompilaci PostgreSQL podporuje standardn SQL syntaxi pro vnejs spojen. Zde
vzata v potaz. Pro? jsou dva prklady:
SELECT *
FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
Makefile nem informace o zvislostech mezi hlavikovmi soubory. nebo
Muste provst make clean a pak make. Pokud pouvte gcc, mete SELECT *
pout pepna --enable-depend pkazu configure k automatickmu FROM t1 LEFT OUTER JOIN t2 USING (col);
een zvislost pekladaem.
Tyto identick dotazy spoj sloupec t1.col k sloupci t2.col, a jeste
vrt vsechny nesprovan rdky t2 (ty, kter nedohled v t2). RIGHT
JOIN by pripojil vsechny nesprovan rdky z t2. FULL JOIN vrt
vsechny sprovan rdky i vsechny zbvajc rdky z obou tabulek.
Klcov slovo OUTER je voliteln. Bezn operace JOIN se tak oznacuje
jako vnitrn spojen.
4.17) Jak provst dotaz naprc nekolika databzemi?
Neexistuje zdn zpusob, jak se v dotazu odkazovat na tabulky z jin
nez aktuln databze. A to protoze m systmov tabulky ulozen
nezvisle v kazd databzi a nen tak plne zrejm, jak by se dotaz
proveden naprc databzemi mel chovat.
Jeden z doplnku dblink umoznuje dotaz nad nekolika tabulkami pomoc
funkc. Druh zpusob je simultln pripojen klienta ke vsem
relevantnm databzm a sloucen vsledku na strane klienta.
4.18) Muze funkce vrtit vce rdku nebo sloupcu?
Jde to jednoduse pomoc set-returning funkce. Vce na
http://www.postgresql.org/docs/techdocs.17.
4.19) Co je prcinou chyby "relation with OID xxxxx does not exist"?
Nechtenm vedlejsm efektem kesovn SQL dotazu v PL/pgSQL funkci je
problm s neplatnmi odkazy na docasn tabulky, kter byly od prvnho
spusten funkce zruseny a znovu vytvoreny pred dalsm spustenm
PL/pgSQL funkce. Resenm je pouzt prkaz EXECUTE a to proto, ze
provdec pln SQL prkazu spoustenho prkazem EXECUTE se vytvr
pokazd znovu (neukld se do cache).
Tento problm by se nemel vyskytovat u PostgreSQL verze 8.3 a vyssch
verzch.
4.20) Jak jsou moznosti replikace databz?
Replikaci databze umoznuje nekolik technoligi. Kazd m urcit
vhody a nevhody.
Master/Slave replikaci podporuje jeden hlavn server, kter prijm
pozadavky na zpis a cten, a nekolik podrzench serveru, kter
umoznuj pouze cten (SELECT). Nejrozsrenejsm volne dostupnm
resenm tohoto typu je Slony-I.
Replikace typu Multi-master podporuje existenci nekolika serveru s
povolenm zpisem na vce replikovanch serverech. Toto resen zvysuje
ztez serveru, protoze je nutn synchronizace serveru.
Nejrozsrenejsm volne dostupnm resenm je PGCluster.
Jeste existuje nekolik komercnch a hardware resen replikac
podporujcch ruzn modely replikace.
4.21) Proc v dotazu nejsou rozpoznny nzvy mch tabulek nebo funkc? Proc
jsou velk psmena v nzvech automaticky prevedena na mal psmena?
Nejcastejsm duvodem nerozpoznn nzvu objektu bylo pouzit vlozen
nzvu sloupce nebo tabulky mezi uvozovky pri zakldn tabulky. Pokud
se nzev zapse mezi uvozovky, pak je case sensitive, a v dusledku
toho je nutn nzvy techto sloupcu nebo tabulek v SQL prkazech tak
vkldat mezi uvozovky (pokud obsahuj velk psmena). Nekter
programy, jako je naprklad pgAdmin, automaticky pouzvaj uvozovky.
Takze pokud chcete, aby systm identifikoval identifiktor, muste:
* nepouzvat uvozovky v prkazu CREATE TABLE
* v identifiktoru pouzt pouze mal psmena
* v dotazech vkldat identifiktory do uvozovek
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment