2004-07-11 20:22:51 -04:00
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
< HTML >
< HEAD >
< META name = "generator" content = "HTML Tidy, see www.w3.org" >
< META http-equiv = "Content-Type" content = "text/html; charset=" iso-8859-2 " >
< META http-equiv = "Content-language" content = "cs" >
< META name = "description" lang = "en" content = "Czech translation of FAQ for PostgreSQL" >
< META name = "description" lang = "cs" content = "<22> esk<73> p<> eklad FAQ PostgreSQL" >
< TITLE > PostgreSQL FAQ< / TITLE >
< / HEAD >
< BODY bgcolor = "#ffffff" text = "#000000" link = "#ff0000" vlink = "#a00000"
alink="#0000ff">
< H1 > <EFBFBD> asto kladen<65> dotazy (FAQ) PostgreSQL< / H1 >
< P > Posledn<EFBFBD> aktualizace: St<53> eda 23. <20> ervna 21:10:00 EST 2004< / P >
< P > Sou<EFBFBD> asn<EFBFBD> spr<70> vce: Bruce Momjian (< A href =
"mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us< / A > )< / P >
< P > P<EFBFBD> elo<EFBFBD> il: Pavel St<53> hule (< A href =
"mailto:stehule@kix.fsv.cvut.cz">stehule@kix.fsv.cvut.cz< / A > )< / P >
< P > Aktu<EFBFBD> ln<EFBFBD> verzi tohoto dokumentu naleznete na adrese: < A href =
"http://www.PostgreSQL.org/docs/faqs/FAQ.html">http://www.PostgreSQL.org/docs/faqs/FAQ.html< / A > .
<20> esk<73> p<> eklad na adrese: < A href = "http://www.PostgreSQL.org/docs/faqs/FAQ_czech.html" >
http://www.PostgreSQL.org/docs/faqs/FAQ_czech.html< / A > .< / P >
< P > Odpov<EFBFBD> di na dotazy relevantn<74> ke konkr<6B> tn<74> m platform<72> m
lze nal<61> zt na adrese: < A href = "http://www.PostgreSQL.org/docs/index.html" >
http://www.PostgreSQL.org/docs/index.html< / A > .< / P >
< HR >
< H2 align = "center" > Obecn<EFBFBD> ot<6F> zky< / H2 >
< A href = "#1.1" > 1.1< / A > ) Co je PostgreSQL? Jak se vyslovuje?< BR >
< A href = "#1.2" > 1.2< / A > ) Jak<61> je licence na PostgreSQL?< BR >
< A href = "#1.3" > 1.3< / A > ) Na kter<65> ch Unixex lze spustit PostgreSQL?< BR >
< A href = "#1.4" > 1.4< / A > ) Kter<65> ne-unixov<6F> platformy jsou podporovan<61> ?< 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<64> verze?< BR >
< A href = "#1.8" > 1.8< / A > ) Jak<61> je dostupn<70> dokumentace?< BR >
< A href = "#1.9" > 1.9< / A > ) Kde najdu seznam zn<7A> m<EFBFBD> ch chyb nebo nepodporovan<61> ch vlastnost<73> ?< BR >
< A href = "#1.10" > 1.10< / A > ) Jak se mohu nau<61> it SQL?< BR >
< A href = "#1.11" > 1.11< / A > ) Nem<65> PostgreSQL probl<62> my s rokem 2000?< BR >
< A href = "#1.12" > 1.12< / A > ) Jak se p<> ipojit k v<> voj<6F> <6A> sk<73> mu t<> mu?< BR >
< A href = "#1.13" > 1.13< / A > ) Kam podat report o chyb<79> ?< BR >
< A href = "#1.14" > 1.14< / A > ) Jak je na tom PostgreSQL v porovn<76> n<EFBFBD> s jin<69> mi datab<61> zemi?< BR >
< A href = "#1.15" > 1.15< / A > ) Jak lze finan<61> n<EFBFBD> pomoci PostgreSQL?< BR >
< H2 align = "center" > User client dotazy< / H2 >
< A href = "#2.1" > 2.1< / A > ) Kde naleznu ODBC ovlada<64> e pro PostgreSQL?< BR >
< A href = "#2.2" > 2.2< / A > ) Jak<61> n<> stroje lze pou<6F> <75> t pro PostgreSQL a web?< BR >
< A href = "#2.3" > 2.3< / A > ) Existuje grafick<63> rozhran<61> pro PostgreSQL?< BR >
< A href = "#2.4" > 2.4< / A > ) Kter<65> programovac<61> jazyky maj<61> podporu pro PostgreSQL?< BR >
< H2 align = "center" > Administrativn<EFBFBD> dotazy< / H2 >
< A href = "#3.1" > 3.1< / A > ) Jak nainstalovat PostgreSQL jinam ne<6E> do /usr/local/pgsql?< BR >
< A href = "#3.2" > 3.2< / A > ) P<> i startu postmaster, dostanu chybov<6F> hl<68> <6C> en<65> Bad System Call nebo
core dump. Pro<72> ?< BR >
< A href = "#3.3" > 3.3< / A > ) P<> i startu postmastera dostanu hl<68> <6C> en<65> o chyb<79>
IpcMemoryCreate. Pro<72> ?< BR >
< A href = "#3.4" > 3.4< / A > ) P<> i startu postmastera dostanu hl<68> <6C> en<65> o chyb<79> IpcSemaphoreCreate.
Pro<72> ?< BR >
< A href = "#3.5" > 3.5< / A > ) Jak povolit nebo zak<61> zat p<> <70> stup z jin<69> ch stanic?< BR >
< A href = "#3.6" > 3.6< / A > ) Jak ladit datab<61> zov<6F> stroj na lep<65> <70> v<> kon?< BR >
< A href = "#3.7" > 3.7< / A > ) Jak<61> jsou mo<6D> nosti lad<61> n<EFBFBD> ?< BR >
< A href = "#3.8" > 3.8< / A > ) Pro<72> dostanu "Sorry, too many clients", kdy<64> se zkou<6F> <75> m p<> ipojit?< BR >
< A href = "#3.9" > 3.9< / A > ) K <20> emu slou<6F> <75> adres<65> <73> pgsql_tmp?< BR >
< A href = "#3.10" > 3.10< / A > ) Pro<72> je po<70> adov<6F> no dump a obnoven<65> (load) datab<61> ze b<> hem upgrade
mezi velk<6C> mi verzemi PostgreSQL?< BR >
< H2 align = "center" > Provozn<EFBFBD> dotazy< / H2 >
< A href = "#4.1" > 4.1< / A > ) <20> <> m se li<6C> <69> bin<69> rn<72> a norm<72> ln<6C> kurzor?< BR >
< A href = "#4.2" > 4.2< / A > ) Jak z<> skat pouze prvn<76> <20> <> dek dotazu? N<> hodn<64> <20> <> dek?< BR >
< A href = "#4.3" > 4.3< / A > ) Jak z<> sk<73> m seznam tabulek nebo jinak jak jej z<> sk<73> psql?< BR >
< A href = "#4.4" > 4.4< / A > ) Jak odstran<61> m sloupec tabulky, jak zm<7A> n<EFBFBD> m jeho typ?< BR >
< A href = "#4.5" > 4.5< / A > ) Jak<61> je maxim<69> ln<6C> velikost <20> <> dku, tabulky a datab<61> ze?< BR >
< A href = "#4.6" > 4.6< / A > ) Kolik diskov<6F> ho prostoru je pot<6F> eba k ulo<6C> en<65> dat z norm<72> ln<6C> ho
textov<6F> ho souboru?< BR >
< A href = "#4.7" > 4.7< / A > ) Jak z<> sk<73> m seznam vytvo<76> en<65> ch tabulek, index<65> ,
datab<61> z<EFBFBD> ?< BR >
< A href = "#4.8" > 4.8< / A > ) M<> j dotaz je pomal<61> a nepou<6F> <75> v<EFBFBD> vytvo<76> en<65> indexy. Pro<72> ?< BR >
< A href = "#4.9" > 4.9< / A > ) Jak zjist<73> 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<6F> st vyhled<65> v<EFBFBD> n<EFBFBD> regul<75> rn<72> ho v<> razu case sensitiv,
insensitiv? Jak pou<6F> <75> t index pro case insensitive vyhled<65> v<EFBFBD> n<EFBFBD> ?< BR >
< A href = "#4.13" > 4.13< / A > ) Jak v dotazu detekovat, <20> e polo<6C> ka je NULL?< BR >
< A href = "#4.14" > 4.14< / A > ) Jak<61> jsou rozd<7A> ly mezi r<> zn<7A> mi znakov<6F> mi typy?< BR >
< A href = "#4.15.1" > 4.15.1< / A > ) Jak vytvo<76> it serial/auto-increment pole?< BR >
< A href = "#4.15.2" > 4.15.2< / A > ) Jak z<> skat hodnotu SERIAL po vlo<6C> en<65> <20> <> dku?< BR >
< A href = "#4.15.3" > 4.15.3< / A > ) Nepovede currval() a nextval() k rozhozen<65> podm<64> nek p<> i soub<75> hu s
jin<69> mi u<> ivateli?< BR >
< A href = "#4.15.4" > 4.15.4< / A > ) Pro<72> nen<65> vygenerovan<61> <20> <> slo pou<6F> ito p<> i p<> eru<72> en<65> transakce?
Pro<72> vznikaj<61> d<> ry v <20> <> slov<6F> n<EFBFBD> vlastn<74> sekvenc<6E> /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<61> je v<> znam n<> kter<65> ch v<> raz<61> pou<6F> it<69> ch v PostgreSQL?< BR >
< A href = "#4.18" > 4.18< / A > ) Pro<72> jsem z<> skal chybov<6F> hl<68> <6C> en<65> "ERROR: Memory exhausted in
AllocSetAlloc()"?< BR >
< A href = "#4.19" > 4.19< / A > ) Jak se dozv<7A> m, kterou verzi PostgreSQL pou<6F> <75> v<EFBFBD> m?< BR >
< A href = "#4.20" > 4.20< / A > ) Pro<72> operace s velk<6C> mi objekty kon<6F> <6E> "invalid large obj descriptor"?< BR >
< A href = "#4.21" > 4.21< / A > ) Jak vytvo<76> it sloupec obsahuj<75> c<EFBFBD> implicitn<74> aktu<74> ln<6C> datum?< BR >
< A href = "#4.22" > 4.22< / A > ) Pro<72> jsou moje vno<6E> en<65> dotazy pou<6F> <75> vaj<61> c<EFBFBD> IN tak pomal<61> ?< BR >
< A href = "#4.23" > 4.23< / A > ) Jak prov<6F> st vn<76> j<EFBFBD> <6A> spojen<65> (outer join)?< BR >
< A href = "#4.24" > 4.24< / A > ) Jak prov<6F> st dotaz nap<61> <70> <EFBFBD> n<> kolika datab<61> zemi?< BR >
< A href = "#4.25" > 4.25< / A > ) M<> <4D> e funkce vr<76> tit v<> ce <20> <> dk<64> nebo sloupc<70> ?< BR >
< A href = "#4.26" > 4.26< / A > ) Pro<72> nelze spolehliv<69> vytv<74> <76> et a ru<72> it do<64> asn<73> tabulky
v PL/pgSQL funkc<6B> ch?< BR >
< A href = "#4.27" > 4.27< / A > ) Jak<61> jsou mo<6D> nosti replikace datab<61> z<EFBFBD> ?< BR >
< A href = "#4.28" > 4.28< / A > ) Jak<61> jsou mo<6D> nosti <20> ifrov<6F> n<EFBFBD> datab<61> z<EFBFBD> ?< BR >
< H2 align = "center" > Roz<EFBFBD> i<EFBFBD> ov<EFBFBD> n<EFBFBD> PostgreSQL< / H2 >
< A href = "#5.1" > 5.1< / A > ) Napsal jsem UDF funkci, PostgreSQL v<> ak kon<6F> <6E> dump core?< BR >
< A href = "#5.2" > 5.2< / A > ) Jak mohu p<> isp<73> t n<> jak<61> mi <20> ikovn<76> mi datov<6F> mi typy a funkcemi do
PostgreSQL?< BR >
< A href = "#5.3" > 5.3< / A > ) Jak napsat funkci v C vracej<65> c<EFBFBD> ntici?< BR >
< A href = "#5.4" > 5.4< / A > ) Modifikoval jsem zdrojov<6F> soubory. Tato zm<7A> na nebyla p<> i rekompilaci
vzata v potaz. Pro<72> ?< BR >
< HR >
< H2 align = "center" > Obecn<EFBFBD> ot<6F> zky< / H2 >
2005-03-11 16:46:54 -05:00
< H4 > < A name = "1.1" > 1.1< / A > ) Co je PostgreSQL? Jak se vyslovuje?< / H4 >
2004-07-11 20:22:51 -04:00
< P > PostgreSQL se vyslovuje < I > Post-Gres-Q-L< / I > . Zvukov<6F> z<> znam je
dostupn<70> na adrese < A href = "http://www.postgresql.org/postgresql.mp3" > < / A > .< / P >
< P > PostgreSQL vych<63> z<EFBFBD> z datab<61> ze POSTGRES (a st<73> le je n<> kdy ozna<6E> ov<6F> n
zjednodu<64> en<65> jako Postgres) - v<> zkumn<6D> ho prototypu < SMALL > DBMS< / SMALL > nov<6F>
generace. Z postgresu byl p<> evzat siln<6C> datov<6F> model a bohat<61> soubor
datov<6F> ch typ<79> a jeho dotazovac<61> jazyk PostQuel byl nahrazen roz<6F> <7A> <EFBFBD> enou
podmno<6E> inou jazyka < SMALL > SQL< / SMALL > . PostgreSQL lze pou<6F> <75> vat bez omezen<65> a jeho
zdrojov<6F> k<> dy jsou voln<6C> k dispozici.< / P >
< P > PostgreSQL vyv<79> j<EFBFBD> t<> m v<> voj<6F> <6A> <EFBFBD> p<> ihl<68> <6C> en<65> ch do v<> voj<6F> <6A> sk<73> konference
PostgreSQL. Sou<6F> asn<73> m koordin<69> torem je Marc G. Fournier (< A href =
"mailto:scrappy@PostgreSQL.org">scrappy@PostgreSQL.org< / A > ).
(viz < A href = "#1.6" > 1.6< / A > - jak se zapojit). Tento t<> m je zodpov<6F> dn<64> za ve<76> ker<65> v<> voj
PostgreSQL. Jedn<64> se o ve<76> ejn<6A> projekt, kter<65> nen<65> <20> <> zen <20> <> dnou firmou.
Pokud se chcete zapojit, p<> e<EFBFBD> t<EFBFBD> te si developer's FAQ na adrese < A href =
"http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html">http://www.PostgreSQL.org/docs/faqs/FAQ_DEV.html< / A > < / P >
< P > Autory prvn<76> verze PostgreSQL 1.01 byli Andrew Yu and Jolly Chen. Do
portace, testov<6F> n<EFBFBD> , lad<61> n<EFBFBD> a roz<6F> i<EFBFBD> ov<6F> n<EFBFBD> k<> du se zapojilo mnoho dal<61> <6C> ch
v<> voj<6F> <6A> <EFBFBD> . P<> vodni k<> d Postgresu, ze kter<65> ho PostgreSQL vych<63> z<EFBFBD> , je
v<> sledkem <20> sil<69> mnoha student<6E> a program<61> tor<6F> pracuj<75> c<EFBFBD> ch pod veden<65> m
prof. Michaela Stonebrakera na University of California v Berkley.< / P >
< P > P<EFBFBD> vodn<EFBFBD> n<> zev software z Berkley byl Postgres. Po p<> id<69> n<EFBFBD> jazyka < SMALL > SQL< / SMALL > se
n<> zev zm<7A> nil na Postgres95. Koncem roku 1996 byl RDBMS p<> ejmenov<6F> n na
PostgreSQL.< / P >
< H4 > < A name = "1.2" > 1.2< / A > ) Jak<61> je licence na PostgreSQL?< / H4 >
< P > PostgreSQL je p<> edm<64> tem n<> sleduj<75> c<EFBFBD> ch autorsk<73> ch pr<70> v:< / P >
2007-01-05 17:20:05 -05:00
< P > D<EFBFBD> l<EFBFBD> <EFBFBD> Copyright (c) 1996-2007, PostgreSQL Global Development Group
2005-01-01 17:14:33 -05:00
D<> l<EFBFBD> <6C> Copyright (c) 1994-6, Regents of the University of California< / P >
2004-07-11 20:22:51 -04:00
< P > Ud<EFBFBD> luje se opr<70> vn<76> n<EFBFBD> k u<> it<69> , rozmno<6E> ov<6F> n<EFBFBD> , prov<6F> d<EFBFBD> n<EFBFBD> <20> prav a
roz<6F> i<EFBFBD> ov<6F> n<EFBFBD> tohoto softwaru a dokumentace k n<> mu, pro jak<61> koli <20> <> ely,
bez licen<65> n<EFBFBD> ho poplatku a bez p<> semn<6D> licen<65> n<EFBFBD> smlouvy, za podm<64> nky, <20> e
na v<> ech jeho kopi<70> ch je uvedeno ozn<7A> men<65> o v<> <76> e uveden<65> ch pr<70> vech,
jako<6B> i obsah tohoto a dvou n<> sleduj<75> c<EFBFBD> ch odstavc<76> .< / P >
< P > THE UNIVERSITY OF CALIFORNIA ("KALIFORNSK<53> UNIVERZITA") NEN<45> V <20> <> DN<44> M
P<> <50> PAD<41> ODPOV<4F> DNA <20> <> DN<44> T<> ET<45> OSOB<4F> ZA P<> <50> MOU, NEP<45> <50> MOU, ZVL<56> <4C> TN<54> ,
NAHODILOU NEBO V<> SLEDNOU <20> KODU, V<> ETN<54> U<> L<EFBFBD> HO ZISKU, ZP<5A> SOBENOU U<> IT<49> M
TOHOTO SOFTWARU A DOKUMENTACE K N<> MU, A TO I V P<> <50> PAD<41> , <20> E THE
UNIVERSITY OF CALIFORNIA BYLA INFORMOV<4F> NA O MO<4D> NOSTI VZNIKU TAKOV<4F>
<20> KODY.< / P >
< P > HE UNIVERSITY OF CALIFORNIA ZEJM<4A> NA NEPOSKYTUJE JAK<41> KOLI Z<> RUKY, A TO
NEJEN Z<> RUKY OBCHODOVATELNOSTI A VHODNOSTI TOHOTO V<> ROBKU KE SPECIFICK<43> M
<20> <> EL<45> M. NͮE UVEDEN<45> SOFTWARE JE POSKYTNUT "JAK STOJ<4F> A LE<4C> <45> " A THE
UNIVERSITY OF CALIFORNIA NEN<45> POVINNA ZAJISTIT JEHO <20> DR<44> BU, PODPORU,
AKTUALIZACI, VYLEP<45> EN<45> NEBO MODIFIKACI.< / P >
< P > V<EFBFBD> <EFBFBD> e uveden<65> je BSD licence, b<> <62> n<EFBFBD> licence otev<65> en<65> ho zdroje. Nen<65> zde
<20> <> dn<64> omezen<65> ohledn<64> u<> it<69> k<> du zdroje. Jsme s t<> m spokojeni a nem<65> me v
<20> myslu na t<> to skute<74> nosti cokoli m<> nit.< / P >
< H4 > < A name = "1.3" > 1.3< / A > ) Na kter<65> ch Unixex lze spustit PostgreSQL?< / H4 >
< P > PostgreSQL b<> <62> <EFBFBD> na v<> ech modern<72> ch unixov<6F> ch platform<72> ch. V instala<6C> n<EFBFBD> ch
instrukc<6B> ch naleznete aktu<74> ln<6C> seznam v<> ech platforem na kter<65> ch byla
testov<6F> n<EFBFBD> m ov<6F> <76> ena funkcionalita PostgreSQL.< / P >
< H4 > < A name = "1.4" > 1.4< / A > ) Kter<65> ne-unixov<6F> platformy jsou podporovan<61> ?< / H4 >
< P > < STRONG > Klient< / STRONG > < / P >
< P > Knihovna < I > libpq< / I > , psql a n<> kter<65> dal<61> <6C> moduly byly p<> elo<6C> eny pro MS
Windows. Klienta lze provozovat na MS Windows, ten prost<73> ednictv<74> m
TCP/IP protokolu komunikuje se serverem b<> <62> <EFBFBD> c<EFBFBD> m na n<> kter<65> z
podporovan<61> ch Unixov<6F> ch platforem. K p<> ekladu lze pou<6F> <75> t < I > win32.mak< / I > a
Win32 knihovny < I > libpq< / I > a < I > psql< / I > . K datab<61> zi PostgerSQL lze p<> istupovat skrze
rozhran<61> < SMALL > ODBC< / SMALL > .< / P >
2005-03-11 16:46:54 -05:00
< P > < STRONG > Server< / STRONG > < / P >
2004-07-11 20:22:51 -04:00
< P > Server m<> <6D> e b<> t na WindowsNT a Win2k provozov<6F> n pouze s knihovnou
Cygwin, Cygnus Unix/NT porting library. V<> ce < I > pgsql/doc/FAQ_MSWIN< / I > v
distribuci nebo MS Windows FAQ na adrese
2005-03-11 16:46:54 -05:00
< A href = "http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN" > http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN< / A > .< / P >
2004-07-11 20:22:51 -04:00
< P > Na nativn<76> m portu pro MS Win NT/2000/XP se pracuje. Dal<61> <6C> informace
o aktu<74> ln<6C> m stavu PostgreSQL pro Windows naleznet na adrese
< A href = "http://techdocs.postgresql.org/guides/Windows" > http://techdocs.postgresql.org/guides/Windows< / A > a
< A href = "http://momjian.postgresql.org/main/writings/pgsql/win32.html" >
2005-03-11 16:46:54 -05:00
http://momjian.postgresql.org/main/writings/pgsql/win32.html< / A > .< / P >
2004-07-11 20:22:51 -04:00
< P > Existuj<EFBFBD> c<EFBFBD> port pro Novell Netware 6 naleznete na
< A href = "http://forge.novell.com" > http://forge.novell.com< / A > .< / P >
< H4 > < A name = "1.5" > 1.5< / A > ) Kde mohu z<> skat PostgreSQL?< / H4 >
2003-12-13 11:56:00 -05:00
2004-07-11 20:22:51 -04:00
< P > Prim<EFBFBD> rn<EFBFBD> m anonymn<6D> m ftp serverem pro PostgreSQL je
< A href = "ftp://ftp.PostgreSQL.org/pub" > ftp://ftp.PostgreSQL.org/pub< / A > .
Seznam zrcadel naleznete na na<6E> ich webov<6F> ch str<74> nk<6E> ch.< / P >
2003-12-13 11:56:00 -05:00
2004-07-11 20:22:51 -04:00
< H4 > < A name = "1.6" > 1.6< / A > ) Kde mohu z<> skat podporu?< / H4 >
< P > Hlavn<EFBFBD> mailov<6F> konference je: < A href = "mailto:pgsql-general@PostgreSQL.org" >
pgsql-general@PostgreSQL.org< / A > . Slou<6F> <75> k
diskuz<75> m ohledn<64> PostgreSQL. P<> ihl<68> s<EFBFBD> te se zasl<73> n<EFBFBD> m mailu obsahuj<75> c<EFBFBD>
n<> sleduj<75> c<EFBFBD> <20> <> dky v t<> le dopisu (nikoliv v z<> hlav<61> - subjectu):< / P >
< PRE >
subscribe
end
< / PRE >
2005-03-11 16:46:54 -05:00
< P > na adresu < A href = "mailto:pgsql-general-request@PostgreSQL.org" >
2004-07-11 20:22:51 -04:00
pgsql-general-request@PostgreSQL.org< / A > .< / P >
< P > M<EFBFBD> <EFBFBD> ete si vy<76> <79> dat denn<6E> p<> ehled (diggest), kter<65> m<> zhruba 30K denn<6E>
zpr<70> v.< / P >
< P > Konference psql-bugs je ur<75> ena k zas<61> l<EFBFBD> n<EFBFBD> zpr<70> v o chyb<79> ch. Pro
p<> ihl<68> <6C> en<65> po<70> lete mail se stejn<6A> m obsahem jako v p<> edchoz<6F> m p<> <70> pad<61> na
adresu < A href = "mailto:pgsql-bugs-request@PostgreSQL.org" >
pgsql-bugs-request@PostgreSQL.org< / A > .< / P >
< P > Do v<> voj<6F> <6A> sk<73> konference se p<> ihl<68> s<EFBFBD> te odesl<73> n<EFBFBD> m dopisu s ji<6A> zmi<6D> ovan<61> m
obsahem na mailto:pgsql-hackers-request@PostgreSQL.org.< / P >
< P > Seznam dal<61> <6C> ch konferenc<6E> naleznete na str<74> nk<6E> ch PostgreSQL:< / P >
< BLOCKQUOTE >
2005-03-11 16:46:54 -05:00
< P > < A href = "http://www.postgresql.org" > http://www.postgresql.org< / A > < / P >
2004-07-11 20:22:51 -04:00
< / BLOCKQUOTE >
< H4 > < A name = "1.7" > 1.7< / A > ) Jak<61> je posledn<64> verze?< / H4 >
< P > Posledn<EFBFBD> verze PostgreSQL je 7.4.3. Pl<50> nujeme uvolnit v<> znamnou verzi
ka<6B> d<EFBFBD> ch <20> est a<> osm m<> s<EFBFBD> c<EFBFBD> .< / P >
< H4 > < A name = "1.8" > 1.8< / A > ) Jak<61> je dostupn<70> dokumentace?< / H4 >
< P > R<EFBFBD> zn<EFBFBD> manu<6E> ly, manu<6E> lov<6F> str<74> nky a n<> kolik mal<61> ch testovac<61> ch p<> <70> klad<61>
jsou sou<6F> <75> sti distribuce. Pod<6F> vejte se do adres<65> <73> e < I > /doc< / I > . Manu<6E> ly jsou
p<> <70> stupn<70> online na < A href = "http://www.PostgreSQL.org/docs" > http://www.PostgreSQL.org/docs< / A > .< / P >
< P > Na adres<65> 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<64> online knihy o PostgreSQL. Seznam dostupn<70> literatury je na
< A href = "http://techdocs.PostgreSQL.org/techdocs/bookreviews.php" >
http://techdocs.PostgreSQL.org/techdocs/bookreviews.php< / A > . Soubor
technick<63> ch <20> l<EFBFBD> nk<6E> s tematikou PostgresQL najdete na < A href =
"http://techdocs.PostgreSQL.org/">http://techdocs.PostgreSQL.org/< / A > .< / P >
< P > < I > psql< / I > m<> u<> ite<74> n<EFBFBD> metap<61> <70> kaz \d slou<6F> <75> c<EFBFBD> k zobrazen<65> informac<61> o typech,
oper<65> torech, funkc<6B> , agrega<67> n<EFBFBD> ch funkc<6B> atd.< / P >
< P > V<EFBFBD> ce dokumentace naleznete na na<6E> ich webov<6F> ch str<74> nk<6E> ch.< / P >
< H4 > < A name = "1.9" > 1.9< / A > ) Kde najdu seznam zn<7A> m<EFBFBD> ch chyb nebo nepodporovan<61> ch vlastnost<73> ?< / H4 >
< P > PostgreSQL podporuje roz<6F> <7A> <EFBFBD> enou podmno<6E> inu < SMALL > SQL-92< / SMALL > . V na<6E> em
2005-05-11 12:13:20 -04:00
< A href = "http://www.postgresql.org/docs/faqs.TODO.html" > TODO< / A >
2004-07-11 20:22:51 -04:00
najdete seznam zn<7A> m<EFBFBD> ch chyb, chyb<79> j<EFBFBD> c<EFBFBD> ch vlastnost<73> a seznam vlastnost<73> ,
kter<65> budou do syst<73> mu implementov<6F> ny v budoucnu (v<> etn<74> priorit).< / P >
< H4 > < A name = "1.10" > 1.10< / A > ) Jak se mohu nau<61> it SQL?< / H4 >
< P > V knize The PostgreSQL book na < A href =
"http://www.PostgreSQL.org/docs/awbook.html">
http://www.PostgreSQL.org/docs/awbook.html< / A > je vysv<73> tlen jazyk SQL (vy<76> la
<20> esky). Dal<61> <6C> dostupnou knihou je < A href =
"http://www.commandprompt.com/ppbook">http://www.commandprompt.com/ppbook< / A > .
Kvalitn<74> n<> vody naleznete na < A href =
"http://www.intermedia.net/support/sql/sqltut.shtm">
http://www.intermedia.net/support/sql/sqltut.shtm< / A > , a na
< A href = "http://sqlcourse.com" > http://sqlcourse.com< / A > .< / P >
< P > Dal<EFBFBD> <EFBFBD> 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<65> doporu<72> uje < I > The Practical SQL Handbook< / I > , Bowman, Judith
S., et al., Addison-Wesley. Jin<69> preferuj<75> < I > The Complete Reference SQL< / I > ,
Groff et al., McGraw-Hill.< / P >
< H4 > < A name = "1.11" > 1.11< / A > ) Nem<65> PostgreSQL probl<62> my s rokem 2000?< / H4 >
< P > Nem<EFBFBD> , m<> <6D> eme pracovat s datumy po roce 2000 na<6E> eho letopo<70> tu i p<> ed
rokem 2000 p<> .n.l.< / P >
< H4 > < A name = "1.12" > 1.12< / A > ) Jak se p<> ipojit k v<> voj<6F> <6A> sk<73> mu t<> mu?< / H4 >
< P > Nejd<EFBFBD> <EFBFBD> ve si st<73> hn<68> te nejnov<6F> j<EFBFBD> <6A> zdroje a p<> e<EFBFBD> t<EFBFBD> te si v<> voj<6F> <6A> skou
dokumentaci na na<6E> em webu nebo v distribuci. Pak se p<> ihla<6C> te do
2005-03-11 16:46:54 -05:00
konferenc<6E> < I > pgsql-hackers< / I > a < I > pgsql-patches< / I > . Kvalitn<74> z<> platy pos<6F> lejte do
2004-07-11 20:22:51 -04:00
pgsql-patches.< / P >
< P > Pr<EFBFBD> vo commit m<> v < SMALL > CVS< / SMALL > archivu asi t<> in<69> cti lid<69> . Ka<4B> d<EFBFBD> z nich poslal
mnoho kvalitn<74> ch z<> plat, tak<61> e tehdej<65> <6A> commiters m<> li jistotu, <20> e budou
p<> edkl<6B> dat jenom kvalitn<74> z<> platy a mohli jim p<> ed<65> lit v<> t<EFBFBD> <74> pr<70> va.< / P >
< H4 > < A name = "1.13" > 1.13< / A > ) Kam podat report o chyb<79> ?< / H4 >
< P > Nav<EFBFBD> tivte na<6E> i PostgreSQL BugTool str<74> nku na < A href =
"http://www.PostgreSQL.org/bugs/bugs.php">http://www.PostgreSQL.org/bugs/bugs.php< / A > ,
kter<65> obsahuje n<> vod a sm<73> rnice jak podat chybov<6F> report.< / P >
< P > Ov<EFBFBD> <EFBFBD> te si na na<6E> em ftp serveru < A href = "ftp://ftp.PostgreSQL.org/pub" > ftp://ftp.PostgreSQL.org/pub< / A > ,
zda-li m<> te nejnov<6F> j<EFBFBD> <6A> verzi PostgreSQL a zda-li k n<> neexistuj<75> n<> jak<61> z<> platy.< / P >
< H4 > < A name = "1.14" > 1.14< / A > ) Jak je na tom PostgreSQL v porovn<76> n<EFBFBD> s jin<69> mi datab<61> zemi?< / H4 >
< P > Existuje n<> kolik hledisek jak porovn<76> vat software: vlastnosti, v<> kon,
spolehlivost, podpora a cena.< / P >
< DL >
< DT > < B > Vlastnosti< / B > < / DT >
< DD > PostgreSQL m<> hodn<64> spole<6C> n<EFBFBD> ch vlastnost<73> s velk<6C> mi komer<65> n<EFBFBD> mi
< SMALL > DBMS< / SMALL > , nap<61> . transakce, vno<6E> en<65> dotazy, spou<6F> t<EFBFBD> , pohledy, kontrolu
referen<65> n<EFBFBD> integrity a sofistikovan<61> zamyk<79> n<EFBFBD> . Podporuje n<> kter<65>
vlastnosti, kter<65> tyto syst<73> my nemaj<61> , u<> ivatelem definovan<61> typy,
2005-03-11 16:46:54 -05:00
d<> di<64> nost, pravidla, MVCC redukuj<75> c<EFBFBD> zamyk<79> n<EFBFBD> .< BR > < BR > < / DD >
2004-07-11 20:22:51 -04:00
< DT > < B > V<EFBFBD> kon< / B > < / DT >
< DD > V<EFBFBD> konnostn<EFBFBD> je na tom PostgreSQL podobn<62> jako dal<61> <6C> komer<65> n<EFBFBD> ale
i open source datab<61> ze, v n<> <6E> em je rychlej<65> <6A> , jindy pomalej<65> <6A> .
V porovn<76> n<EFBFBD> s MySQL a podobn<62> mi datab<61> zov<6F> mi syst<73> my je PostgreSQL
rychlej<65> <6A> p<> i v<> ceu<65> ivatelsk<73> m p<> <70> stupu, slo<6C> it<69> j<EFBFBD> <6A> ch dotazech
a zat<61> <74> en<65> read/write dotazy. MySQL je rychlej<65> <6A> v jednodu<64> <75> <EFBFBD> ch
dotazech s mal<61> m po<70> tem u<> ivatel<65> . Nav<61> c, MySQL nepodporuje mnoh<6F>
vlatnosti zm<7A> n<EFBFBD> n<EFBFBD> v sekci < I > vlastnosti< / I > . Zapracovali jsme na
spolehlivosti a podporovan<61> ch vlastnostech, a v<> kon zvy<76> ujeme
v ka<6B> d<EFBFBD> verzi. Zaj<61> mavou str<74> nku porovn<76> vaj<61> c<EFBFBD> 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<65> Open Source komunita, ale komer<65> n<EFBFBD> spole<6C> nost,
p<> esto<74> e svoje produkty distribuuje jako Open Source.< BR > < BR > < / DD >
< DT > < B > Spolehlivost< / B > < / DT >
< DD > Jsme si v<> domi, <20> e datab<61> ze mus<75> b<> t spolehliv<69> , jinak je
nepou<6F> iteln<6C> . Sna<6E> <61> me se zve<76> ej<65> ovat dob<6F> e otestovan<61> , stabiln<6C>
k<> d s minimem chyb. Ka<4B> d<EFBFBD> verze je v<> ce ne<6E> m<> s<EFBFBD> c v beta testov<6F> n<EFBFBD> ,
a na<6E> e historie verz<72> ukazuje, <20> e m<> <6D> eme nab<61> dnout stabiln<6C> , solidn<64>
verze, kter<65> jsou p<> ipraveny pro re<72> ln<6C> nasazen<65> . V t<> to oblasti
2005-03-11 16:46:54 -05:00
jsme srovnateln<6C> s dal<61> <6C> mi datab<61> zemi.< BR > < BR > < / DD >
2004-07-11 20:22:51 -04:00
< DT > < B > Podpora< / B > < / DT >
< DD > Na na<6E> <61> mailov<6F> konferenci m<> <6D> ete kontaktovat velkou skupinu
2003-12-13 11:56:00 -05:00
v<> voj<6F> <6A> <EFBFBD> a u<> ivatel<65> .probl<62> m<EFBFBD> . Nem<65> <6D> eme garantovat opravu,
2004-07-11 20:22:51 -04:00
nicm<63> n<EFBFBD> komer<65> n<EFBFBD> datab<61> ze tak<61> ne v<> dy nab<61> dnou opravu. Podle
ohlas<61> je na<6E> e podpora hodnocena l<> pe ne<6E> u jin<69> ch < SMALL > DBMS< / SMALL > a to
d<> ky p<> <70> m<EFBFBD> mu kontaktu s v<> voj<6F> <6A> i, velkou komunitou u<> ivatel<65> ,
2003-12-13 11:56:00 -05:00
kvalitn<74> mi manu<6E> ly a p<> <70> stupn<70> m zdrojov<6F> m k<> dem. Pro u<> ivatele,
2004-07-11 20:22:51 -04:00
kte<74> <65> vy<76> aduj<75> podporu ke konkr<6B> tn<74> m p<> <70> pad<61> m, existuje placen<65>
podpora (< A href = "#1.6" > FAQ sekce 1.6< / A > ).< BR > < BR > < / DD >
2003-12-13 11:56:00 -05:00
2005-03-11 16:46:54 -05:00
< DT > < B > Cena< / B > < / DT >
2004-07-11 20:22:51 -04:00
< DD > PosgreSQL lze voln<6C> pou<6F> <75> vat pro nekomer<65> n<EFBFBD> i komer<65> n<EFBFBD> pou<6F> it<69> .
M<> <4D> ete do sv<73> ch produkt<6B> p<> idat n<> <6E> k<> d bez omezen<65> , respektive
v souladu s podm<64> nkami na<6E> <61> licen<65> n<EFBFBD> smlouvy (v duchu BSD licence).< BR >
< BR > < / DD >
< / DL >
2003-12-13 11:56:00 -05:00
2004-07-11 20:22:51 -04:00
< H4 > < A name = "1.15" > 1.15< / A > ) Jak lze finan<61> n<EFBFBD> pomoci PostgreSQL?< / H4 >
2003-12-13 11:56:00 -05:00
2004-07-11 20:22:51 -04:00
< P > PosgreSQL m<> prvot<6F> <74> dn<64> infrastrukturu od na<6E> eho za<7A> <61> tku v roce 1996.
Vd<56> <64> <EFBFBD> me za to Marku Fournierovi, kter<65> zalo<6C> il a spravoval tuto
infrastrukturu n<> kolik let.< / P >
2003-12-13 11:56:00 -05:00
2004-07-11 20:22:51 -04:00
< P > Kvalitn<EFBFBD> infrastruktura je velice d<> le<6C> it<69> pro ka<6B> d<EFBFBD> open source
projekt. P<> edch<63> z<EFBFBD> nedorozum<75> n<EFBFBD> m, kter<65> velice zdr<64> uj<75> pokrok v
projektu.< / P >
2003-12-13 11:56:00 -05:00
2004-07-11 20:22:51 -04:00
< P > Tato infrastruktura nen<65> lacin<69> . K jej<65> mu zaji<6A> t<EFBFBD> n<EFBFBD> je t<> eba st<73> le
hradit ur<75> it<69> m<> s<EFBFBD> <73> n<EFBFBD> a jednor<6F> zov<6F> <20> <> stky. Pokud m<> te Vy nebo Va<56> e
spole<6C> nost pen<65> ze, kter<65> n<> m m<> <6D> ete darovat, obra<72> e se na < A href =
"http://store.pgsql.com/shopping/">http://store.pgsql.com/shopping/< / A > a darujte je.< / P >
2003-12-13 11:56:00 -05:00
2004-07-11 20:22:51 -04:00
< P > A<EFBFBD> koliv webov<6F> str<74> nka zmi<6D> uje PostgreSQL, Inc. vklady jsou ur<75> eny pouze
k podpo<70> e projektu PostgreSQL a nepodporuj<75> <20> <> dnou existuj<75> c<EFBFBD>
spole<6C> nost. Pokud to vy<76> adujete, m<> <6D> ete poslat kontrolu na na<6E> i
kontaktn<74> adresu.< / P >
< HR >
2003-12-13 11:56:00 -05:00
2004-07-11 20:22:51 -04:00
< P > Pokud m<> te p<> <70> klad <20> sp<73> <70> n<EFBFBD> ho nasazen<65> PostgreSQL, p<> ihla<6C> t<EFBFBD> se na n<> <6E>
advocacy site na < A href = "http://advocacy.postgresql.org" > http://advocacy.postgresql.org< / A > .< / P >
2003-12-13 11:56:00 -05:00
2004-07-11 20:22:51 -04:00
< H2 align = "center" > User client dotazy< / H2 >
2003-12-13 11:56:00 -05:00
2004-07-11 20:22:51 -04:00
< H4 > < A name = "2.1" > 2.1< / A > ) Kde naleznu < SMALL > ODBC< / SMALL > ovlada<64> e pro PostgreSQL?< / H4 >
2003-12-13 11:56:00 -05:00
2004-07-11 20:22:51 -04:00
< P > Pro PostgreSQL existuj<75> dva < SMALL > ODBC< / SMALL > ovlada<64> e - PsqlODBC a OpenLink ODBC.< / P >
2003-12-13 11:56:00 -05:00
2004-07-11 20:22:51 -04:00
< P > PsqlODBC je ke sta<74> en<65> na < A href =
"http://gborg.postgresql.org/project/psqlodbc/projdisplay.php">
http://gborg.postgresql.org/project/psqlodbc/projdisplay.php< / A > .< / P >
2003-12-13 11:56:00 -05:00
2004-07-11 20:22:51 -04:00
< P > OpenLink m<> <6D> ete z<> skat na < A href = "http://www.openlinksw.com" > http://www.openlinksw.com< / A > .
Spolupracuje s jejich klientsk<73> m programov<6F> m vybaven<65> m a je dostupn<70> pro v<> echny jimi
podporovan<61> platformy (Win, Mac, Unix, VMS).< / P >
2003-12-13 11:56:00 -05:00
2004-07-11 20:22:51 -04:00
< P > Tento ovlada<64> je ur<75> en pro ty, kte<74> <65> vy<76> aduj<75> podporu komer<65> n<EFBFBD> kvality,
nicm<63> n<EFBFBD> freeware verze je dostupn<70> a funk<6E> n<EFBFBD> . Dotazy zas<61> lejte na < A href =
"mailto:postgres95@openlink.co.uk">postgres95@openlink.co.uk< / A > .< / P >
2003-12-13 11:56:00 -05:00
2004-07-11 20:22:51 -04:00
< H4 > < A name = "2.2" > 2.2< / A > ) Jak<61> n<> stroje lze pou<6F> <75> t pro PostgreSQL a web?< / H4 >
2003-12-13 11:56:00 -05:00
2004-07-11 20:22:51 -04:00
< P > P<EFBFBD> kn<EFBFBD> <20> vod do datab<61> zov<6F> ch technologi<67> zabezpe<70> uj<75> c<EFBFBD> ch chod webov<6F> ch
str<74> nek najdete na < A href = "http://www.webreview.com" > http://www.webreview.com< / A > .< / P >
2003-12-13 11:56:00 -05:00
2004-07-11 20:22:51 -04:00
< P > Pro tvorbu webu existuje excelentn<74> rozhran<61> PHP, kter<65> naleznete na
< A href = "http://www.php.net" > http://www.php.net< / A > .< / P >
2003-12-13 11:56:00 -05:00
2004-07-11 20:22:51 -04:00
< P > Pro slo<6C> it<69> j<EFBFBD> <6A> p<> <70> pady se <20> asto pou<6F> <75> v<EFBFBD> Perl a CGI.pm nebo mod_perl.< / P >
2003-12-13 11:56:00 -05:00
2004-07-11 20:22:51 -04:00
< H4 > < A name = "2.3" > 2.3< / A > ) Existuje grafick<63> rozhran<61> pro PostgreSQL?< / H4 >
2003-12-13 11:56:00 -05:00
2004-07-11 20:22:51 -04:00
< P > Pro PostgreSQL existuje n<> kolik grafick<63> ch rozhran<61> : PgAccess
(< A href = "http://www.php.net" > http://www.php.net< / A > ), PgAdmin III
(< A href = "http://www.php.net" > http://www.php.net< / A > ), RHDB Admin
(< A href = "http://sources.redhat.com/rhdb/" > http://sources.redhat.com/rhdb/< / A > ) a Rekall (
< A href = "http://www.thekompany.com/products/rekall/" > http://www.thekompany.com/products/rekall/< / A > ).
D<> le je<6A> t<EFBFBD> PhpPgAdmin
(< A href = "http://phppgadmin.sourceforge.net/" > http://phppgadmin.sourceforge.net/< / A > ) co<63> je rozhran<61> PostgreSQL
zalo<6C> en<65> na web technologii.< / P >
2003-12-13 11:56:00 -05:00
2004-07-11 20:22:51 -04:00
< P > <EFBFBD> pln<EFBFBD> j<EFBFBD> <EFBFBD> seznam najdete na < A href =
"http://techdocs.postgresql.org/guides/GUITools">http://techdocs.postgresql.org/guides/GUITools< / A > .< / P >
2003-12-13 11:56:00 -05:00
2004-07-11 20:22:51 -04:00
< H4 > < A name = "2.4" > 2.4< / A > ) Kter<65> programovac<61> jazyky maj<61> podporu pro PostgreSQL?< / H4 >
2003-12-13 11:56:00 -05:00
2004-07-11 20:22:51 -04:00
< P > V<EFBFBD> t<EFBFBD> ina programovac<61> ch jazyk<79> obsahuje rozhran<61> pro PostgreSQL.
Pod<6F> vejte se do roz<6F> i<EFBFBD> uj<75> c<EFBFBD> ch modul<75> Va<56> eho programovac<61> ho jazyka.< / P >
2003-12-13 11:56:00 -05:00
2004-07-11 20:22:51 -04:00
< P > Distribuce PostgreSQL obsahuje tato rozhran<61> :< / 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<EFBFBD> <EFBFBD> rozhran<61> jsou dostupn<70> na < A href = "http://gborg.postgresql.org" > http://gborg.postgresql.org< / A >
v sekci < I > Drivers/Interfaces< / I > .< / P >
< HR >
2003-12-13 11:56:00 -05:00
2004-07-11 20:22:51 -04:00
< H2 align = "center" > Administrativn<EFBFBD> dotazy< / H2 >
2003-12-13 11:56:00 -05:00
2004-07-11 20:22:51 -04:00
< H4 > < A name = "3.1" > 3.1< / A > ) Jak nainstalovat PostgreSQL jinam ne<6E> do /usr/local/pgsql?< / H4 >
2003-12-13 11:56:00 -05:00
2004-07-11 20:22:51 -04:00
< P > Pou<EFBFBD> ijte volbu < I > --prefix< / I > p<> i spu<70> t<EFBFBD> n<EFBFBD> configure.< / P >
2003-12-13 11:56:00 -05:00
2004-07-11 20:22:51 -04:00
< H4 > < A name = "3.2" > 3.2< / A > ) P<> i startu postmaster, dostanu chybov<6F> hl<68> <6C> en<65> Bad System Call
nebo core dump. Pro<72> ?< / H4 >
< P > D<EFBFBD> vody mohou b<> t r<> zn<7A> , ale nejprve zkontrolujte, zda V<> <56> syst<73> m
podporuje System V extensions. PostgreSQL vy<76> aduje v j<> d<EFBFBD> e podporu
sd<73> len<65> pam<61> ti a semafor<6F> .< / P >
< H4 > < A name = "3.3" > 3.3< / A > ) P<> i startu postmastera dostanu hl<68> <6C> en<65> o chyb<79> IpcMemoryCreate. Pro<72> ?< / H4 >
2003-12-13 11:56:00 -05:00
2004-07-11 20:22:51 -04:00
< P > Bu<EFBFBD> to nem<65> te spr<70> vn<76> nakonfigurovanou sd<73> lenou pam<61> <6D> v j<> d<EFBFBD> e nebo musite
zv<7A> t<EFBFBD> it jej<65> velikost. Pot<6F> ebn<62> velikost je z<> visl<73> na architektu<74> e a na
tom, kolik pam<61> <6D> ov<6F> ch buffer<65> a backend<6E> m<> te povoleno pro postmastera.
Pro v<> t<EFBFBD> inu syst<73> m<EFBFBD> s p<> eddefinovan<61> m po<70> tem backend<6E> a pam<61> <6D> ov<6F> ch
buffer<65> je minimum zhruba 1MB. V PostgreSQL Administrator's Guide
naleznete podrobn<62> j<EFBFBD> <6A> informace o sd<73> len<65> pam<61> ti a semaforech.< / P >
2003-12-13 11:56:00 -05:00
2004-07-11 20:22:51 -04:00
< H4 > < A name = "3.4" > 3.4< / A > ) P<> i startu postmastera dostanu hl<68> <6C> en<65> o chyb<79> IpcSemaphoreCreate.
Pro<72> ?< / H4 >
2003-12-13 11:56:00 -05:00
2004-07-11 20:22:51 -04:00
< P > Pokud dostane chybovou zpr<70> vu IpcSemaphoreCreate: semget failed (No
space left on device), pak va<76> e j<> dro nem<65> dost voln<6C> ch semafor<6F> .
PostgreSQL vy<76> aduje jeden semafor pro ka<6B> d<EFBFBD> backend v pozad<61> . Do<44> asn<73> m
<20> e<EFBFBD> en<65> m je start < I > postmaster< / I > s limitem backend<6E> . Pou<6F> ijte p<> ep<65> na<6E> < I > -N< / I > s
hodnotou men<65> <6E> ne<6E> 32. <20> pln<6C> m <20> e<EFBFBD> en<65> m je zv<7A> <76> en<65> hodnot < SMALL > SEMMNS< / SMALL >
a < SMALL > SEMMNI< / SMALL > jadra.< / P >
2003-12-13 11:56:00 -05:00
2004-07-11 20:22:51 -04:00
< P > Nefunk<EFBFBD> n<EFBFBD> semafory mohou zp<7A> sobit p<> d b<> hem intenzivn<76> ch datab<61> zov<6F> ch
operac<61> .< / P >
< P > Pokud se tato chyba vyskytuje je<6A> t<EFBFBD> n<> kde jinde, mo<6D> n<EFBFBD> nem<65> te v<> bec
nakonfigurov<6F> ny semafory ve va<76> em j<> d<EFBFBD> e. V PostgreSQL Administrator's
Guide najdete podrobn<62> j<EFBFBD> <6A> popis po<70> adavk<76> na sd<73> lenou pam<61> t a semafory.< / P >
< H4 > < A name = "3.5" > 3.5< / A > ) Jak povolit nebo zak<61> zat p<> <70> stup z jin<69> ch stanic?< / H4 >
2003-12-13 11:56:00 -05:00
2004-07-11 20:22:51 -04:00
< P > P<EFBFBD> i v<> choz<6F> m nastaven<65> PostgreSQL odep<65> e p<> <70> stup z jin<69> ch stanic ne<6E>
lok<6F> ln<6C> s pou<6F> it<69> m UDP. P<> <50> stup z jin<69> ch stroj<6F> nen<65> mo<6D> n<EFBFBD> dokud
jej nepovol<6F> te nastaven<65> m tcpip_socket v postgresql.conf < B > a< / B > ur<75> en<65> m
zp<7A> sobu autentifikace v < I > $PGDATA/pg_hba.conf< / I > .< / P >
< H4 > < A name = "3.6" > 3.6< / A > ) Jak ladit datab<61> zov<6F> stroj na lep<65> <70> v<> kon?< / H4 >
< P > Ur<EFBFBD> it<EFBFBD> pomohou indexy. P<> <50> kaz < SMALL > EXPLAIN ANALYZE< / SMALL > V<> m umo<6D> n<EFBFBD> sledovat
jak PostgreSQL interpretuje V<> <56> dotaz a kter<65> indexy pou<6F> <75> v<EFBFBD> .< / P >
< P > P<EFBFBD> i v<> t<EFBFBD> <74> d<> vce INSERT<52> uva<76> ujte o n<> hrad<61> p<> <70> kazem < SMALL > COPY< / SMALL > . Ten je mnohem
rychlej<65> <6A> ne<6E> li samotn<74> < SMALL > INSERT< / SMALL > . Ka<4B> d<EFBFBD> p<> <70> kaz mimo blok < SMALL > BEGIN WORK/COMMIT< / SMALL >
se prov<6F> d<EFBFBD> ve vlastn<74> transakci. Zva<76> te, zda-li by se nedalo n<> kolik
p<> <70> kaz<61> spojit do jedn<64> transakce. T<> m se sn<73> <6E> <EFBFBD> re<72> ie na transakce. P<> ed
proveden<65> m rozs<7A> hl<68> ch zm<7A> n zru<72> te indexy, kter<65> po dokon<6F> en<65> zm<7A> n op<6F> t
vytvo<76> te.< / P >
< P > M<EFBFBD> te n<> kolik dal<61> <6C> ch mo<6D> nost<73> , jak zlep<65> it v<> kon. M<> <4D> ete zak<61> zat < I > fsyn()< / I >
p<> i startu postmastera p<> ep<65> na<6E> i < I > -o -F< / I > . Tyto p<> ep<65> na<6E> e zabr<62> n<EFBFBD> < I > fsync()< / I > ,
tj. z<> pisu na disk po ka<6B> d<EFBFBD> transakci.< / P >
< P > M<EFBFBD> <EFBFBD> ete zv<7A> <76> it velikost pam<61> <6D> ov<6F> ch buffer<65> pou<6F> it<69> ch backendy tj.
parametr < I > -B< / I > postmasteru. Pokud ale tato hodnota bude p<> <70> li<6C> velk<6C> , tak
mo<6D> n<EFBFBD> nespust<73> te postmastera jeliko<6B> dos<6F> hnete limitu sd<73> len<65> pam<61> ti.
Ka<4B> d<EFBFBD> buffer m<> 8K a implicitn<74> je 64 buffer<65> .< / P >
< P > D<EFBFBD> le m<> <6D> ete pou<6F> <75> t p<> ep<65> na<6E> < I > -S< / I > k zv<7A> <76> en<65> limitu pam<61> ti pro backendy na
do<64> asn<73> t<> <74> d<EFBFBD> n<EFBFBD> . Hodnota je m<> n<EFBFBD> na v kilobytech a v<> choz<6F> nastaven<65> je
512, tj. 512K.< / P >
< P > M<EFBFBD> <EFBFBD> ete pou<6F> <75> t p<> <70> kaz < SMALL > CLUSTER< / SMALL > , kter<65> uspo<70> <6F> d<EFBFBD> fyzicky data v tabulk<6C> ch
podle indexu. V<> ce na manu<6E> lov<6F> ch str<74> nk<6E> ch p<> <70> kazu < SMALL > CLUSTER< / SMALL > .< / P >
< H4 > < A name = "3.7" > 3.7< / A > ) Jak<61> jsou mo<6D> nosti lad<61> n<EFBFBD> ?< / H4 >
< P > M<EFBFBD> te n<> kolik mo<6D> nost<73> jak se dostat k u<> ite<74> n<EFBFBD> m stavov<6F> m informac<61> m.< / P >
< P > Zaprv<EFBFBD> , p<> i p<> ekladu pou<6F> ijte p<> ep<65> na<6E> < I > --enable-cassert< / I > , t<> m se zapne
monitorov<6F> n<EFBFBD> a n<> sledn<64> zastaven<65> aplikace, kdy<64> se proces v backendu
dostane do neo<65> ek<65> van<61> ho stavu.< / P >
< P > Jak postmaster tak postgres m<> n<> kolik p<> ep<65> na<6E> <61> umo<6D> <6F> uj<75> c<EFBFBD> ch lad<61> n<EFBFBD> .
Postmaster nastartujte tak, abyste si byli jisti, <20> e je standartn<74>
v<> stup a standartn<74> chybov<6F> v<> stup p<> esm<73> rov<6F> n do souboru logu,
nap<61> <70> klad:< / P >
< PRE >
cd /usr/local/pgsql
2005-03-11 16:46:54 -05:00
./bin/postmaster > server.log 2>& 1 &
2004-07-11 20:22:51 -04:00
< / PRE >
< P > T<EFBFBD> m se vytvo<76> <6F> log v adres<65> <73> i PostgreSQL, Tento soubor obsahuje u<> ite<74> n<EFBFBD>
informace o probl<62> mech a chyb<79> ch vyskytl<74> ch se na serveru. Postmaster m<>
p<> ep<65> na<6E> < I > -d< / I > ur<75> uj<75> c<EFBFBD> , jak podrobn<62> maj<61> b<> t reportovan<61> informace, tj.
debug level. Pozor, p<> i velk<6C> hodnot<6F> debug levelu rychle roste velikost
souboru logu.< / P >
< P > Pokud neb<65> <62> <EFBFBD> postmaster, m<> <6D> ete spustit backend PostgreSQL z p<> <70> kazov<6F>
<20> <> dky a napsat sv<73> j < SMALL > SQL< / SMALL > dotaz p<> <70> mo v backendu (doporu<72> eno < B > pouze< / B > pro
lad<61> n<EFBFBD> ). Dotaz je v tomto p<> <70> pad<61> ukon<6F> en novou <20> <> dkou, nikoliv
st<73> edn<64> kem. Pokud m<> te aplikaci p<> elo<6C> enou s lad<61> c<EFBFBD> mi symboly, m<> <6D> ete
pou<6F> <75> t debbuger k monitorov<6F> n<EFBFBD> procesu. Pokud nen<65> backend spu<70> t<EFBFBD> n
postmasterem, pak neb<65> <62> <EFBFBD> ve sv<73> m obvykl<6B> m prost<73> ed<65> a tud<75> <64> n<> kter<65>
probl<62> my dan<61> interakc<6B> mezi backendy nemohou b<> t nasimulov<6F> ny.< / P >
< P > Pokud b<> <62> <EFBFBD> < I > postmaster< / I > , spus<75> e < I > psql< / I > v jednom okn<6B> a pak si zjist<73> te < SMALL > PID< / SMALL >
procesu postgres pou<6F> it<69> ho psql. V debuggeru sep<65> ipojte k postgresql
< SMALL > PID< / SMALL > . Pak nastavte breakpointy v debuggeru a zadejte dotaz v psql. Pokud
lad<61> te startup postgresu, pak nastavte PGOPTIONS="-W n" a spus<75> e < I > psql< / I > .
Tento p<> ep<65> na<6E> zp<7A> sob<6F> pauzu n sekund, tak<61> e budete m<> t <20> as se p<> ipojit
k procesu, a nastavit breakpointy a pokra<72> ovat v startup posloupnosti.< / P >
< P > Pro lad<61> n<EFBFBD> a m<> <6D> en<65> v<> konu mohou b<> t u<> ite<74> n<EFBFBD> p<> ep<65> na<6E> e < I > -s, -A< / I > a < I > -t< / I >
programu postgres (backend).< / P >
< P > M<EFBFBD> <EFBFBD> ete prov<6F> st p<> eklad s profilac<61> , tak abyste vid<69> li kolik <20> asu
zab<61> raj<61> jednotliv<69> funkce. Soubory s profily backend<6E> jsou ulo<6C> eny v
adres<65> <73> i < I > pgsql/data/base/dbname< / I > . Profil klienta pak v jeho aktu<74> ln<6C> m
adres<65> <73> i. Korektn<74> profilace v prost<73> ed<65> Linux po<70> aduje konfiguraci
syst<73> mu s parametrem < I > -DLINUX_PROFILE< / I > .< / P >
< H4 > < A name = "3.8" > 3.8< / A > ) Pro<72> dostanu "Sorry, too many clients", kdy<64> se zkou<6F> <75> m p<> ipojit?< / H4 >
< P > Zvy<EFBFBD> te limit postmastera na maxim<69> ln<6C> po<70> et sou<6F> asn<73> spu<70> t<EFBFBD> n<EFBFBD> ch
backend<6E> .< / P >
< P > V<EFBFBD> choz<EFBFBD> hodnota je 32 backend<6E> . Tuto hodnotu zv<7A> <76> <EFBFBD> te zastaven<65> m a
op<6F> tovn<76> m spu<70> t<EFBFBD> n<EFBFBD> m postmastera s parametrem < I > -N< / I > nebo <20> pravou
< I > postgresql.conf< / I > .< / P >
< P > P<EFBFBD> i zv<7A> <76> en<65> hodnoty < I > -N< / I > nad 32 mus<75> te zv<7A> <76> it hodnotu < I > -B< / I > nad v<> choz<6F> 64,
< I > -B< / I > mus<75> b<> t minim<69> ln<6C> dvakr<6B> t v<> t<EFBFBD> <74> , nebo je<6A> t<EFBFBD> l<> pe v<> ce. Pravd<76> podobn<62>
zjist<73> te, <20> e pro velk<6C> po<70> et proces<65> backendu je nutn<74> zv<7A> <76> it n<> kter<65>
parametry j<> dra. Jsou to p<> edev<65> <76> m maxim<69> ln<6C> velikost sd<73> len<65> pam<61> ti
< SMALL > SHMMAX< / SMALL > , maxim<69> ln<6C> po<70> et semaf<61> r<EFBFBD> < SMALL > SEMMNS< / SMALL > a < SMALL > SEMMNI< / SMALL > , maxim<69> ln<6C> po<70> et
proces<65> < SMALL > NPROC< / SMALL > , maxim<69> ln<6C> po<70> et proces<65> u<> ivatele < SMALL > MAXUPRC< / SMALL > a maxim<69> ln<6C>
po<70> et otev<65> en<65> ch soubor<6F> < SMALL > NFILE< / SMALL > a < SMALL > NINODE< / SMALL > . D<> vod pro omezen<65> maxim<69> ln<6C> ho
po<70> tu backend<6E> je fakt, <20> e by mohlo doj<6F> t k vy<76> erp<72> n<EFBFBD> zdroj<6F> Va<56> eho
syst<73> mu.< / P >
< H4 > < A name = "3.9" > 3.9< / A > ) K <20> emu slou<6F> <75> adres<65> <73> pgsql_tmp?< / H4 >
< P > Tento adres<65> <73> obsahuje do<64> asn<73> soubory vytvo<76> en<65> exekutorem dotaz<61> .
Nap<61> <70> klad, kdy<64> je nutn<74> t<> <74> d<EFBFBD> n<EFBFBD> k zaji<6A> t<EFBFBD> n<EFBFBD> < SMALL > ORDER BY< / SMALL > a t<> <74> d<EFBFBD> n<EFBFBD> m<> v<> t<EFBFBD> <74>
n<> roky na prostor ne<6E> povoluje parametr < I > -S< / I > backendu, pak je vytvo<76> en
do<64> asn<73> soubor k ulo<6C> en<65> extra <20> daj<61> .< / P >
< P > Do<EFBFBD> asn<EFBFBD> soubory jsou obvykle maz<61> ny automaticky, ale m<> <6D> e se st<73> t, <20> e
b<> hem t<> <74> d<EFBFBD> n<EFBFBD> server spadne. Zastaven<65> a dal<61> <6C> start postmastera zajist<73>
odstran<61> n<EFBFBD> soubor<6F> s t<> chto adres<65> <73> <EFBFBD> .< / P >
< H4 > < A name = "3.10" > 3.10< / A > ) Pro<72> je po<70> adov<6F> no dump a obnoven<65> (load) datab<61> ze b<> hem
upgrade mezi velk<6C> mi verzemi PostgreSQL?< / H4 >
< P > PostgreSQL se minim<69> ln<6C> m<> n<EFBFBD> b<> hem mal<61> ch verz<72> , tak<61> e nap<61> . p<> i upgrade
z 7.2 na 7.2.1 nen<65> nutn<74> dump a load datab<61> ze. Ale v<> ynamn<6D> verze <20> asto
m<> n<EFBFBD> intern<72> form<72> t syst<73> mov<6F> ch tabulek a datov<6F> ch soubor<6F> . Tyto zm<7A> ny
jsou natolik rozs<7A> hl<68> , <20> e nelze zajistit zp<7A> tnou kompatibilitu pro
datov<6F> soubory. Dump ulo<6C> <6F> data v obecn<63> m form<72> tu, tak<61> e mohou b<> t
na<6E> tena a pou<6F> <75> v<EFBFBD> na v nov<6F> m intern<72> m form<72> tu.< / P >
< HR >
< H2 align = "center" > Provozn<EFBFBD> dotazy< / H2 >
< H4 > < A name = "4.1" > 4.1< / A > ) <20> <> m se li<6C> <69> bin<69> rn<72> a norm<72> ln<6C> kurzor?< / H4 >
< P > Popis najdete v manu<6E> lov<6F> str<74> nce < SMALL > DECLARE< / SMALL > < / P >
< H4 > < A name = "4.2" > 4.2< / A > ) Jak z<> skat pouze prvn<76> <20> <> dek dotazu? N<> hodn<64> <20> <> dek?< / H4 >
< P > Pod<EFBFBD> vejte se do man. str<74> nky p<> <70> kazu < SMALL > FETCH< / SMALL > , nebo pou<6F> ijte < SMALL > SELECT< / SMALL > ...
< SMALL > LIMIT< / SMALL > ...< / P >
< P > I kdy<64> pot<6F> ebujete z<> skat pouze prvn<76> ch n<> kolik <20> <> dk<64> , je t<> eba
zpracovat v<> echna data, nap<61> . pokud dotaz m<> < SMALL > ORDER BY< / SMALL > . Pokud v<> ak
existuje index, kter<65> odpov<6F> d<EFBFBD> < SMALL > ORDER BY< / SMALL > , PostgreSQL m<> <6D> e z<> skat
pouze prvn<76> ch n <20> <> dk<64> a ukon<6F> it zpracov<6F> n<EFBFBD> dotazu.< / P >
< P > K z<> sk<73> n<EFBFBD> n<> hodn<64> ho <20> <> dku pou<6F> ijte:< / P >
< PRE >
SELECT col
FROM tab
ORDER BY random()
LIMIT 1;
< / PRE >
< H4 > < A name = "4.3" > 4.3< / A > ) Jak z<> sk<73> m seznam tabulek nebo jinak jak jej z<> sk<73> psql?< / H4 >
< P > P<EFBFBD> <EFBFBD> kaz \dt v psql zobraz<61> seznam tabulek. <20> pln<6C> seznam p<> <70> kaz<61> < I > psql< / I >
dostanete p<> <70> kazem \?. Tak<61> se m<> <6D> ete pod<6F> vat do zdrojov<6F> ch k<> d<EFBFBD> < I > psql< / I >
do souboru < I > pgsql/src/bin/psql/describe.c< / I > . Ten obsahuje < SMALL > SQL< / SMALL > p<> <70> kazy,
kter<65> se pou<6F> <75> vaj<61> v psql metap<61> <70> kazech. D<> le m<> <6D> ete spustit < I > psql< / I >
s p<> ep<65> na<6E> em < I > -E< / I > , kter<65> zp<7A> sob<6F> zobrazen<65> ka<6B> d<EFBFBD> ho dotazu, kter<65>
zpracov<6F> n<EFBFBD> metap<61> <70> kazu vyvol<6F> . PostgreSQL nab<61> z<EFBFBD> SQLi INFORMATION
SCHEMA s tabulkami obsahuj<75> c<EFBFBD> informace o datab<61> zi.< / P >
< H4 > < A name = "4.4" > 4.4< / A > ) Jak odstran<61> m sloupec tabulky, jak zm<7A> n<EFBFBD> m jeho typ?< / H4 >
< P > Po<EFBFBD> <EFBFBD> naje verz<72> 7.3 m<> <6D> ete pou<6F> <75> t p<> <70> kaz < SMALL > ALTER TABLE DROP COLUMN< / SMALL > . Ve
star<61> <72> ch verz<72> ch m<> <6D> ete pou<6F> <75> t n<> sleduj<75> c<EFBFBD> postup:< / P >
< PRE >
BEGIN;
LOCK TABLE old_table;
SELECT ... -- mimo sloupec, kter<65> chceme odstranit
INTO TABLE new_table;
DROP TABLE old_table;
ALTER TABLE new_table RENAME TO old_table;
COMMIT;
< / PRE >
< P > Pro zm<7A> nu typu sloupce je t<> eba prov<6F> 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 >
Pot<6F> prove<76> te < I > VACUUM FULL tab< / I > - uvoln<6C> te t<> m diskov<6F> prostor zabran<61>
nyn<79> ji<6A> neplatn<74> mi <20> <> dky.
< H4 > < A name = "4.5" > 4.5< / A > ) Jak<61> je maxim<69> ln<6C> velikost <20> <> dku, tabulky a datab<61> ze?< / H4 >
< P > PostgreSQL m<> tato omezen<65> :< / P >
< PRE >
Maxim<69> ln<6C> velikost datab<61> ze: neomezena (existuj<75> 32TB db)
Maxim<69> ln<6C> velikost tabulky: 32 TB
Maxim<69> ln<6C> velikost <20> <> dky: 1.6 TB
Maxim<69> ln<6C> velikost polo<6C> ky 1 GB
Maxim<69> ln<6C> po<70> et <20> <> dk<64> v tabulce: neomezeno
Maxim<69> ln<6C> po<70> et sloupc<70> v tabulce: 250-1600 podle typ<79>
Maxim<69> ln<6C> po<70> et index<65> na tabulce: neomezeno
< / PRE >
< P > Ve skute<74> nosti nic nen<65> neomezeno, limitem b<> v<EFBFBD> v<> dy dostupn<70> diskov<6F>
pam<61> <6D> nebo velikost opera<72> n<EFBFBD> pam<61> ti. Pokud m<> te n<> kterou z t<> chto hodnot
neobvykle velkou, m<> <6D> e doj<6F> t ke sn<73> <6E> en<65> v<> konu.< / P >
< P > Maxim<EFBFBD> ln<EFBFBD> velikost tabulky je 32 TB a nevy<76> aduje podporu velk<6C> ch soubor<6F>
opera<72> n<EFBFBD> m syst<73> mem. Velk<6C> tabulky se ukl<6B> daj<61> do n<> kolika 1 GB soubor<6F>
tak<61> e limity souborov<6F> ho syst<73> mu nejsou podstatn<74> .< / P >
< P > Maxim<EFBFBD> ln<EFBFBD> velikost tabulky a maxim<69> ln<6C> po<70> et sloupc<70> m<> <6D> eme
ze<7A> ty<74> n<EFBFBD> sobit nastaven<65> m velikosti bloku na 32K.< / P >
< H4 > < A name = "4.6" > 4.6< / A > ) Kolik diskov<6F> ho prostoru je pot<6F> eba k ulo<6C> en<65> dat z < / H4 >
norm<72> ln<6C> ho textov<6F> ho souboru?
< P > PostgreSQL vy<76> aduje a<> p<> tin<69> sobek diskov<6F> ho prostoru k ulo<6C> en<65> dat z
textov<6F> ho souboru.< / P >
< P > Nap<EFBFBD> <EFBFBD> klad, uva<76> ujme soubor se 100 tis<69> ci <20> <> dky obsahuj<75> c<EFBFBD> na ka<6B> d<EFBFBD> <20> <> dce
cel<65> <20> <> slo a textov<6F> popis. Text je v pr<70> m<EFBFBD> ru dvacet byt<79> dlouh<75> .
Textov<6F> soubor bude 2.8 MB dlouh<75> . Velikost datab<61> ze obsahuj<75> c<EFBFBD>
odpov<6F> daj<61> c<EFBFBD> data bude zhruba 6.4 MB.< / P >
< PRE >
36 byt<79> : hlavi<76> ka <20> <> dku (p<> ibli<6C> n<EFBFBD> )
24 byt<79> : jedna celo<6C> <6F> seln<6C> polo<6C> ka a jedna textov<6F>
+ 4 byty: ukazatel na str<74> nku k ntici
------------------------------------------------------
64 byt<79> na <20> <> dek
Velikost datov<6F> str<74> nky PostgreSQL je 8KB
8192 byt<79> na str<74> nce
---------------------- = 128 <20> <> dek na str<74> nku
64 byt<79> za <20> <> dek
100000 <20> <> dek
-------------------- = 782 str<74> nek (zaokrouhleno nahoru)
128 <20> <> dek na str<74> nce
782 * 8192 = 6, 406, 144 byt<79> (6.4 MB)
< / PRE >
< P > Indexy nemaj<61> tak velkou re<72> ii, ale mohou b<> t tak<61> velk<6C> , proto<74> e
obsahuj<75> indexovan<61> data.< / P >
< P > Hodnoty < SMALL > NULL< / SMALL > jsou ulo<6C> eny v bitmap<61> ch, tak<61> e spot<6F> ebuj<75> jen velmi m<> lo
diskov<6F> ho prostoru.< / P >
< H4 > < A name = "4.7" > 4.7< / A > ) Jak z<> sk<73> m seznam vytvo<76> en<65> ch tabulek, index<65> , datab<61> z<EFBFBD> ?< / H4 >
< P > < I > psql< / I > m<> sadu metap<61> <70> kaz<61> k zobrazen<65> t<> chto informac<61> . Jejich seznam
z<> sk<73> te p<> <70> kazem \?. D<> le se m<> <6D> ete pod<6F> vat na obsah syst<73> mov<6F> ch tabulek
za<7A> <61> naj<61> c<EFBFBD> ch < I > pg_< / I > . Spu<70> t<EFBFBD> n<EFBFBD> < I > psql< / I > s parametrem < I > -l< / I > provede v<> pis n<> zv<7A>
v<> ech datab<61> z<EFBFBD> .< / P >
< P > Soubor < I > pgsql/src/tutorial/syscat.source< / I > obsahuje < SMALL > SELECT< / SMALL > y p<> istupuj<75> c<EFBFBD> k
syst<73> mov<6F> m tabulk<6C> mm.< / P >
< H4 > < A name = "4.8" > 4.8< / A > ) M<> j dotaz je pomal<61> a nepou<6F> <75> v<EFBFBD> vytvo<76> en<65> indexy. Pro<72> ?< / H4 >
< P > Ka<EFBFBD> d<EFBFBD> dotaz nemus<75> nutn<74> pou<6F> <75> t existuj<75> c<EFBFBD> indexy. Index se pou<6F> ije
tehdy, kdy<64> je tabulka v<> t<EFBFBD> <74> ne<6E> ur<75> it<69> minim<69> ln<6C> velikost, a dotaz
vyb<79> r<EFBFBD> pouze procentu<74> ln<6C> malou <20> <> st <20> <> dk<64> tabulky. To proto, <20> e n<> hodn<64>
p<> <70> stup k disku dan<61> <20> ten<65> m indexu m<> <6D> e b<> t pomalej<65> <6A> ne<6E> line<6E> rn<72> <20> ten<65>
tabulky nebo sekven<65> n<EFBFBD> <20> ten<65> .< / P >
< P > PostgreSQL rozhoduje o pou<6F> it<69> index<65> na z<> klad<61> statistiky p<> <70> stup<75> k
tabulce. Tyto statistiky se shroma<6D> <61> uj<75> p<> <70> kazy < SMALL > VACUUM ANALYZE< / SMALL > nebo
< SMALL > ANALYZE< / SMALL > . D<> ky statistik<69> m m<> optimizer informaci o po<70> tu <20> <> dek v tabulce
a m<> <6D> e l<> pe rozhodnout o pou<6F> it<69> index<65> . Statistiky se uplatn<74> p<> i
ur<75> en<65> optim<69> ln<6C> ho po<70> ad<61> a metody spojen<65> tabulek. Statistiky by se
m<> li aktualizovat opakovan<61> , tak jak se m<> n<EFBFBD> obsah tabulek.< / P >
< P > Indexy nejsou oby<62> ejn<6A> pou<6F> ity pro set<65> <74> d<EFBFBD> n<EFBFBD> nebo spojen<65> tabulek.
Sekven<65> n<EFBFBD> zpracov<6F> n<EFBFBD> n<> sledovan<61> explicitn<74> m t<> <74> d<EFBFBD> n<EFBFBD> m je oby<62> ejn<6A>
rychlej<65> <6A> ne<6E> indexn<78> <20> ten<65> na velk<6C> tabulce.< / P >
< P > Jinak je tomu v p<> <70> pad<61> pou<6F> it<69> < SMALL > LIMIT< / SMALL > a < SMALL > ORDER BY< / SMALL > , p<> i kter<65> m se v<> t<EFBFBD> inou
index pou<6F> ije, v<> sledkem je pouze mal<61> <20> <> st tabulky. Funkce MAX() a
2005-03-11 16:46:54 -05:00
MIN() nepou<6F> <75> vaj<61> indexy, ale je mo<6D> n<EFBFBD> tut<75> <74> hodnotu z<> skat:< / P >
2004-07-11 20:22:51 -04:00
< PRE >
SELECT col
FROM tab
ORDER BY col [ DESC ]
LIMIT 1;
< / PRE >
< P > Pokud si mysl<73> te, <20> e optimizer myln<6C> zvolil sekven<65> n<EFBFBD> prohled<65> v<EFBFBD> n<EFBFBD>
tabulky, pou<6F> ijte p<> <70> kaz < CODE > SET enable_seqscan TO 'off'< / CODE > a zkuste zda je
indexn<78> prohled<65> v<EFBFBD> n<EFBFBD> rychlej<65> <6A> .< / P >
< P > P<EFBFBD> i vyhled<65> v<EFBFBD> n<EFBFBD> na z<> klad<61> vzoru jako je nap<61> . oper<65> tor < SMALL > LIKE< / SMALL > nebo < I > ~< / I > se
indexy pou<6F> <75> j<EFBFBD> pouze za ur<75> it<69> ch skute<74> nost<73> :< / P >
< UL >
< LI > za<EFBFBD> <EFBFBD> tek hledan<61> ho vzoru mus<75> b<> t ukotven k za<7A> <61> tku, tj.
< UL >
< LI > vzor < SMALL > LIKE< / SMALL > nesm<73> za<7A> <61> nat < I > %< / I > < / LI >
< LI > < I > ~< / I > regul<75> rn<72> v<> raz mus<75> za<7A> <61> nat < I > ^< / I > < / LI >
2005-03-11 16:46:54 -05:00
< / UL > < / LI >
2004-07-11 20:22:51 -04:00
< LI > vzor nesm<73> za<7A> <61> nat intervalem, nap<61> . [a-e]< / LI >
< LI > vyhled<EFBFBD> van<EFBFBD> , kter<65> nen<65> Case sensitiv jako je < SMALL > ILIKE< / SMALL > nebo < I > ~*< / I >
nepou<6F> <75> v<EFBFBD> indexy. M<> <4D> ete ale pou<6F> <75> t funkcion<6F> ln<6C> indexy, kter<65> jsou
pos<6F> ny v sekci < A href = "#4.12" > 4.12< / A > < / LI >
< LI > p<EFBFBD> i inicializaci datab<61> ze (< I > initdb< / I > ) mus<75> b<> t pou<6F> ito C locale
(pozn. p<> ekladatele - tud<75> <64> v na<6E> ich podm<64> nk<6E> ch nepou<6F> iteln<6C> ,
nepracovalo by <20> esk<73> t<> <74> d<EFBFBD> n<EFBFBD> ).< / LI >
< / UL >
< H4 > < A name = "4.9" > 4.9< / A > ) Jak zjist<73> m, jak optimizer dotazu vyhodnocuje m<> j dotaz?< / H4 >
Pod<6F> vejte se do manu<6E> lov<6F> str<74> nky p<> <70> kazu < SMALL > EXPLAIN< / SMALL > .
< H4 > < A name = "4.10" > 4.10< / A > ) Co to je R-tree index?< / H4 >
< P > R-tree index se pou<6F> <75> v<EFBFBD> pro indexov<6F> n<EFBFBD> prostorov<6F> ch dat. Hash index
nem<65> <6D> e obslou<6F> it prohled<65> v<EFBFBD> n<EFBFBD> oblast<73> . B-tree index m<> <6D> e <20> <> dit vyhled<65> n<EFBFBD>
oblast<73> v jedn<64> dimenzi. R-tree index m<> <6D> e podporovat hled<65> n<EFBFBD> v
multidimenzion<6F> ln<6C> ch datech. Pou<6F> ijeme-li nap<61> <70> klad R-tree index na
atributy typu < I > point< / I > , pak syst<73> m m<> <6D> e efektivn<76> odpov<6F> d<EFBFBD> t na dotaz -
vyber v<> echny body uvnit<69> obd<62> ln<6C> k<EFBFBD> .< / P >
< P > P<EFBFBD> vodn<EFBFBD> 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<72> ly naleznete v Stonebraker's "Readings in Database Systems".< / P >
< P > Vestav<EFBFBD> n<EFBFBD> R-tree m<> <6D> e slou<6F> it k indexaci polygon<6F> a oblast<73> . Teoreticky
m<> <6D> eme R-tree pou<6F> <75> t i pro v<> ce dimenz<6E> (jin<69> ne<6E> 3D). Ve skute<74> nosti
ale takov<6F> roz<6F> <7A> <EFBFBD> en<65> R-tree vy<76> aduje trochu pr<70> ce a ve sou<6F> astnosti
chyb<79> dokumentace jak na to.< / P >
< H4 > < A name = "4.11" > 4.11< / A > ) Co je Genetic Query Optimizer?< / H4 >
< P > < SMALL > GEQO< / SMALL > modul urychluje optimalizaci dotaz<61> p<> i spojov<6F> n<EFBFBD> mno<6E> stv<74> tabulek
metodou Genetick<63> ch algoritm<74> (GA). To umo<6D> <6F> uje z<> skat velk<6C> ho mno<6E> stv<74>
variant spojen<65> p<> i ne<6E> pln<6C> m prohled<65> v<EFBFBD> n<EFBFBD> m.< / P >
< H4 > < A name = "4.12" > 4.12< / A > ) Jak prov<6F> st vyhled<65> v<EFBFBD> n<EFBFBD> regul<75> rn<72> ho v<> razu case sensitiv,
insensitiv? Jak pou<6F> <75> t index pro case insensitive vyhled<65> v<EFBFBD> n<EFBFBD> ?< / H4 >
< P > Oper<EFBFBD> tor < I > ~< / I > slou<6F> <75> k porov<6F> n<EFBFBD> s regul<75> rn<72> m v<> razem, jeho modifikace < I > *~< / I >
p<> edstavuje case insensitive vyhled<65> v<EFBFBD> n<EFBFBD> . Jedn<64> se o obdobu < SMALL > LIKE< / SMALL > a
< SMALL > ILIKE< / SMALL > .< / P >
< P > Pro vyhled<65> v<EFBFBD> n<EFBFBD> bez ohledu na velk<6C> mal<61> p<> smena pou<6F> ijeme:< / P >
< PRE >
SELECT *
FROM tab
WHERE lower(col) = 'abc';
< / PRE >
V tomto p<> <70> pad<61> se nepou<6F> ije standardn<64> index. Nicm<63> n<EFBFBD> , pou<6F> ije se
funkcion<6F> ln<6C> index, pokud jej vytvo<76> <6F> te:
< PRE >
CREATE INDEX tabindex ON tab (lower(col));
< / PRE >
< H4 > < A name = "4.13" > 4.13< / A > ) Jak v dotazu detekovat, <20> e polo<6C> ka je NULL?< / H4 >
< P > Ur<EFBFBD> <EFBFBD> te pomoc<6F> < SMALL > IS NULL< / SMALL > nebo < SMALL > IS NOT NULL< / SMALL > < / P >
< H4 > < A name = "4.14" > 4.14< / A > ) Jak<61> jsou rozd<7A> ly mezi r<> zn<7A> mi znakov<6F> mi typy?< / H4 >
< PRE >
Typ Intern<72> n<> zev Pozn<7A> mka
2003-12-13 11:56:00 -05:00
--------------------------------------------------------------------------
2004-07-11 20:22:51 -04:00
VARCHAR(n) varchar omezeno maxim<69> ln<6C> d<> lkou, bez dopln<6C> n<EFBFBD> mezerami
CHAR(n) bpchar <20> et<65> zec je dopln<6C> n mezerami do dan<61> d<> lky
TEXT text bez horn<72> ho limitu na d<> lku
BYTEA bytea pole byt<79> (bezpe<70> n<EFBFBD> lze ulo<6C> it i znak NULL)
"char" char jeden znak
< / PRE >
< P > S intern<72> mi n<> zvy se setk<74> te v syst<73> mov<6F> m katalogu a v n<> kter<65> ch
chybov<6F> ch hl<68> <6C> en<65> ch.< / P >
< P > Prvn<EFBFBD> <20> ty<74> i uveden<65> typy jsou tzv. varlena typy (tj. prvn<76> <20> ty<74> i byty na
disku nesou <20> daj o d<> lce, n<> sleduj<75> samotn<74> data). Proto skute<74> n<EFBFBD>
pou<6F> it<69> prostor je v<> dy o n<> co m<> lo v<> t<EFBFBD> <74> ne<6E> deklarovan<61> d<> lka. Naopak,
tyto datov<6F> typy jsou komprimov<6F> nty < SMALL > TOAST< / SMALL > em, tak<61> e prostor na disku m<> <6D> e
b<> t ni<6E> <69> <EFBFBD> ne<6E> je o<> ek<65> v<EFBFBD> no.< / P >
< P > < SMALL > VARCHAR(n)< / SMALL > je vhodn<64> pro ukl<6B> d<EFBFBD> n<EFBFBD> text<78> promm<6D> n<EFBFBD> d<> lky s pevn<76>
stanovenou maxim<69> ln<6C> d<> lkou. < SMALL > TEXT< / SMALL > je pro <20> et<65> zce bez omezen<65> d<> lky s
maximem jeden gigabajt.< / P >
< P > < SMALL > CHAR(n)< / SMALL > slou<6F> <75> k ukl<6B> d<EFBFBD> n<EFBFBD> <20> et<65> zc<7A> stejn<6A> d<> lky. < SMALL > CHAR(n)< / SMALL > dopln<6C> pr<70> zdn<64>
znaky do specifikovan<61> d<> lky, zat<61> mco VARCHAR(n) ulo<6C> <6F> pouze p<> edan<61>
znaky. < SMALL > BYTEA< / SMALL > je ur<75> eno pro ukl<6B> d<EFBFBD> n<EFBFBD> bin<69> rn<72> ch dat, v<> etn<74> < SMALL > NULL< / SMALL > byte.
V<> echny zde popsan<61> typy maj<61> podobn<62> v<> konnostn<74> charakteristiky.< / P >
< H4 > < A name = "4.15.1" > 4.15.1< / A > ) Jak vytvo<76> it serial/auto-increment pole?< / H4 >
< P > PostgreSQL podporuje typ < SMALL > SERIAL< / SMALL > . P<> i jeho pou<6F> it<69> se automaticky vytvo<76> <6F>
SEQUENCE. Nap<61> <70> 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 >
Viz dokumentace < I > create_sequence< / I > v manu<6E> lov<6F> ch str<74> nk<6E> ch. D<> le m<> <6D> ete
pou<6F> <75> t unik<69> tn<74> hodnotu < I > OID< / I > ka<6B> d<EFBFBD> ho <20> <> dku. Potom ale mus<75> te spou<6F> t<EFBFBD> t
< I > pg_dump< / I > s p<> ep<65> na<6E> em < I > -o< / I > , tak aby z<> staly zachov<6F> ny hodnoty < SMALL > OID< / SMALL > (u
p<> <70> kazu copy < SMALL > COPY WITH OIDS< / SMALL > ).
< H4 > < A name = "4.15.2" > 4.15.2< / A > ) Jak z<> skat hodnotu < SMALL > SERIAL< / SMALL > po vlo<6C> en<65> <20> <> dku?< / H4 >
< P > Jednou z mo<6D> nost<73> je z<> skat budouc<75> hodnotu < SMALL > SERIAL< / SMALL > funkc<6B> < I > nextval()< / I > p<> ed
samotn<74> m vlo<6C> en<65> m a pak ji vlo<6C> it explicitn<74> . Nap<61> <70> klad v jak<61> 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<EFBFBD> <EFBFBD> ete pak je<6A> t<EFBFBD> pou<6F> <75> t hodnotu newid v dal<61> <6C> ch dotazech, nap<61> . jako
hodnotu ciz<69> ho kl<6B> <6C> e. N<> zev automaticky vytvo<76> en<65> sekvence je
< I > tabulka_sloupec_seq< / I > .< / P >
< P > Alternativn<EFBFBD> m<> <6D> ete z<> skat hodnotu posledn<64> generovou sekvenc<6E> funkc<6B>
< I > currval()< / I > po vlo<6C> en<65> :< / P >
< PRE >
execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
new_id = execute("SELECT currval('person_id_seq')");
< / PRE >
< P > Kone<EFBFBD> n<EFBFBD> m<> <6D> ete pou<6F> <75> t < SMALL > OID< / SMALL > hodnotu vr<76> cenou p<> <70> kazem < SMALL > INSERT< / SMALL > , ale to je
pravd<76> podobn<62> nejm<6A> n<EFBFBD> p<> enositeln<6C> <20> e<EFBFBD> en<65> . V Perlu p<> i pou<6F> it<69> DBI
modulu Edmunda Mergleho DBD:Pg oid hodnotu z<> sk<73> me < I > $sth->{pg_oid_status}< / I >
2005-03-11 16:46:54 -05:00
po ka<6B> d<EFBFBD> m < I > $sth->execute()< / I > .< / P >
2004-07-11 20:22:51 -04:00
< H4 > < A name = "4.15.3" > 4.15.3< / A > ) Nepovede < I > currval()< / I > a < I > nextval()< / I > k rozhozen<65>
podm<64> nek p<> i soub<75> hu s jin<69> mi u<> ivateli?< / H4 >
< P > Nikoliv, < I > currval()< / I > vrac<61> hodnotu naposledy generovanou ve va<76> em
backendu, a ta tud<75> <64> nen<65> spole<6C> n<EFBFBD> v<> em u<> ivatel<65> m.< / P >
< H4 > < A name = "4.15.4" > 4.15.4< / A > ) Pro<72> nen<65> vygenerovan<61> <20> <> slo pou<6F> ito p<> i p<> eru<72> en<65> transakce?
Pro<72> vznikaj<61> d<> ry v <20> <> slov<6F> n<EFBFBD> vlastn<74> sekvenc<6E> /SERIAL sloupce?< / H4 >
< P > K zaji<6A> t<EFBFBD> n<EFBFBD> efektivnosti soub<75> hu, jsou hodnoty posloupnosti, kdy<64> se o
n<> po<70> <6F> d<EFBFBD> , a sekvence nen<65> zam<61> ena do ukon<6F> en<65> transakce. To zp<7A> sobuje
d<> ry v <20> <> slov<6F> n<EFBFBD> ze zru<72> en<65> ch transakc<6B> .< / P >
< H4 > < A name = "4.16" > 4.16< / A > ) Co to je < SMALL > OID< / SMALL > ? Co je to < SMALL > TID< / SMALL > ?< / H4 >
< P > Ka<EFBFBD> d<EFBFBD> <20> <> dek vytvo<76> en<65> v PostgreSQL z<> sk<73> jedine<6E> n<EFBFBD> < SMALL > OID< / SMALL > . V<> echna < SMALL > OID< / SMALL >
generovan<61> b<> hem inicializace datab<61> ze jsou men<65> <6E> ne<6E> 16384
(include/access/transam.h). V<> echna < SMALL > OID< / SMALL > generovan<61> na po<70> adavek
u<> ivatele jsou rovna nebo vy<76> <79> <EFBFBD> t<> to hodnot<6F> . Norm<72> ln<6C> , v<> echna < SMALL > OID< / SMALL > jsou
jedine<6E> n<EFBFBD> nejen uvnit<69> tabulky nebo datab<61> ze, ale v r<> mci cel<65> instalace
PostgreSQL< / P >
< P > PostgreSQL pou<6F> <75> v<EFBFBD> < SMALL > OID< / SMALL > ve sv<73> m intern<72> m syst<73> mu tabulek k vytvo<76> en<65>
relac<61> . Tato < SMALL > OID< / SMALL > mohou b<> t pou<6F> ita k identifikaci konkr<6B> tn<74> ho u<> ivatele
a pou<6F> ita v spojen<65> . Pro < SMALL > OID< / SMALL > hodnoty je doporu<72> en typ < SMALL > OID< / SMALL > . Nad t<> mto
sloupcem m<> <6D> ete vytvo<76> it index pro urychlen<65> p<> <70> stupu.< / P >
< P > < SMALL > OID< / SMALL > jsou d<> na v<> em <20> <> dk<64> m z centr<74> ln<6C> oblasti a jsou pou<6F> ita v ka<6B> d<EFBFBD>
datab<61> zi. Pokud pot<6F> ebujete zm<7A> nit < SMALL > OID< / SMALL > , nebo chcete zkop<6F> rovat tabulku s
p<> vodn<64> mi < SMALL > OID< / SMALL > , lze pou<6F> <75> 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 > < SMALL > OID< / SMALL > jsou ulo<6C> ena jako 4bajtov<6F> integer a p<> ete<74> ou po <20> ty<74> ech miliard<72> ch.
Nebylo hl<68> <6C> eno, <20> e by se tak n<> kdy stalo, p<> esto ale pl<70> nujeme odstranit
tento limit d<> <64> v ne<6E> se tak stane.< / P >
< P > < SMALL > TID< / SMALL > se pou<6F> <75> vaj<61> i identifikaci fyzick<63> ch <20> <> dk<64> s hodnotou bloku a
offsetu. TIDs se m<> n<EFBFBD> modifikac<61> <20> <> dk<64> (pou<6F> <75> v<EFBFBD> se jako ukazatel indexu
fyzick<63> ho <20> <> dku).< / P >
< H4 > < A name = "4.17" > 4.17< / A > ) Jak<61> je v<> znam n<> kter<65> ch v<> raz<61> pou<6F> it<69> ch v PostgreSQL?< / H4 >
< P > V n<> kter<65> ch zdrojov<6F> ch k<> dech nebo star<61> <72> dokumentaci se m<> <6D> ete setkat s
n<> sleduj<75> c<EFBFBD> mi v<> razy, kter<65> maj<61> <20> ir<69> <72> v<> znam. Zde je p<> <70> klad nekter<65> ch:< / P >
< UL >
< LI > tabulka, relace, t<> <74> da (table, relation, class)< / LI >
< LI > <20> <> dek, z<> znam, ntice (row, record, tuple)< / LI >
< LI > sloupec, polo<6C> ka, atribut (column, field, attribute)< / LI >
< LI > vyhled<65> n<EFBFBD> , v<> b<EFBFBD> r (retrieve, select)< / LI >
< LI > n<> hrada, <20> prava (replace, update)< / LI >
< LI > p<> id<69> n<EFBFBD> , vkl<6B> d<EFBFBD> n<EFBFBD> (append, insert)< / LI >
< LI > OID, serial value (OID, serial value)< / LI >
< LI > portal, kurzor (portal, cursor)< / LI >
2005-03-11 16:46:54 -05:00
< LI > range variable, jm<6A> no tabulky, alias tabulky (range
2004-07-11 20:22:51 -04:00
variable, table name, table alias)< / LI >
< / UL >
< P > seznam t<> chto v<> raz<61> m<> <6D> ete nal<61> 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 >
< H4 > < A name = "4.18" > 4.18< / A > ) Pro<72> jsem z<> skal chybov<6F> hl<68> <6C> en<65> "ERROR: Memory exhausted in AllocSetAlloc()"?< / H4 >
< P > Pravd<EFBFBD> podobn<EFBFBD> do<64> lo k vy<76> erp<72> n<EFBFBD> virtu<74> ln<6C> pam<61> <6D> i na Va<56> em syst<73> mu, nebo
j<> dro m<> n<> zk<7A> limit pro ur<75> it<69> zdroje. Vyzkou<6F> ejte p<> ed startem
posmatera< / P >
< PRE >
ulimit -d 262144
limit datasize 256m
< / PRE >
< P > Z<EFBFBD> le<EFBFBD> <EFBFBD> na Va<56> em shellu, zda budou tyto p<> <70> kazy <20> sp<73> <70> n<EFBFBD> , m<> ly by zv<7A> <76> it
limit datov<6F> ho segmentu pro Va<56> e procesy a umo<6D> nit tak dokon<6F> en<65> dotazu.
Tyto p<> <70> kazy se aplikuj<75> na aktu<74> ln<6C> proces a v<> echny synovsk<73> procesy
vytvo<76> en<65> po proveden<65> p<> <70> kazu. Pokud m<> te probl<62> my s SQL klientem
proto<74> e backend vrac<61> p<> <70> li<6C> mnoho dat, zkuste zv<7A> <76> it limity p<> ed
startem klienta.< / P >
< H4 > < A name = "4.19" > 4.19< / A > ) Jak se dozv<7A> m, kterou verzi PostgreSQL pou<6F> <75> v<EFBFBD> m?< / H4 >
< P > V psql spus<75> te < CODE > SELECT version();< / CODE > < / P >
< H4 > < A name = "4.20" > 4.20< / A > ) Pro<72> operace s velk<6C> mi objekty kon<6F> <6E> "invalid large obj descriptor"?< / H4 >
< P > V<EFBFBD> echny operace s velk<6C> mi objekty - < CODE > lo_open< / CODE > , < CODE > lo_close< / CODE > , ... mus<75> te
spou<6F> t<EFBFBD> t v transakci, tj. mezi p<> <70> kazy < CODE > BEGIN WORK< / CODE > a < CODE > COMMIT< / CODE > .< / P >
< P > PostgreSQL uvol<6F> uje handle velk<6C> ch objekt<6B> p<> i skon<6F> en<65> transakce. Pokud
budete pracovat s velk<6C> mi objekty mimo transakci, pravd<76> podobn<62>
dostanete toto chybov<6F> hl<68> <6C> en<65> , proto<74> e handle ji<6A> budou neplatn<74> .< / P >
Pokud pou<6F> <75> v<EFBFBD> te interface podobn<62> < SMALL > ODBC< / SMALL > mus<75> te nastavit < CODE > set
auto_commit off< / CODE > .
< H4 > < A name = "4.21" > 4.21< / A > ) Jak vytvo<76> it sloupec obsahuj<75> c<EFBFBD> implicitn<74> aktu<74> ln<6C> datum?< / H4 >
< P > Pou<EFBFBD> ijte < I > CURRENT_TIMESTAMP< / I > :< / P >
< PRE >
< CODE >
CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
< / CODE >
< / PRE >
< H4 > < A name = "4.22" > 4.22< / A > ) Pro<72> jsou moje vno<6E> en<65> dotazy pou<6F> <75> vaj<61> c<EFBFBD> IN tak pomal<61> ?< / H4 >
< P > D<EFBFBD> <EFBFBD> v<EFBFBD> j<EFBFBD> <EFBFBD> verze (p<> ed 7.4) spojovali vno<6E> en<65> dotazy k vn<76> j<EFBFBD> <6A> m sekven<65> n<EFBFBD> m
<20> ten<65> m v<> sledku poddotazu pro ka<6B> d<EFBFBD> <20> <> dek vn<76> j<EFBFBD> <6A> ho dotazu. Pokud poddotaz
vr<76> til n<> kolik m<> lo <20> <> dk<64> < SMALL > IN< / SMALL > bylo rychl<68> . Pro ostatn<74> p<> <70> pady je vhodn<64>
2005-03-11 16:46:54 -05:00
nahradit < SMALL > IN< / SMALL > < SMALL > EXISTS< / SMALL > :< / P >
2004-07-11 20:22:51 -04:00
< PRE >
SELECT *
FROM tab
WHERE col IN (SELECT subcol FROM subtab);
< / PRE >
2005-03-11 16:46:54 -05:00
< p > na:< / p >
2004-07-11 20:22:51 -04:00
< PRE >
SELECT *
FROM tab
WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
< / PRE >
< P > Pro urychlen<65> vytvo<76> ete index pro subcol. < / P >
< P > Ve verzi 7.4 a pozd<7A> j<EFBFBD> <6A> ch, < SMALL > IN< / SMALL > pou<6F> <75> v<EFBFBD> stejn<6A> sofistikovanou techniku
spojov<6F> n<EFBFBD> tabulek jako ostatn<74> dotazy a je preferovan<61> p<> ed < SMALL > EXISTS< / SMALL > .< / P >
< H4 > < A name = "4.23" > 4.23< / A > ) Jak prov<6F> st vn<76> j<EFBFBD> <6A> spojen<65> (outer join)?< / H4 >
< P > PostgreSQL podporuje vn<76> j<EFBFBD> <6A> spojen<65> tabulek standardn<64> mi SQL p<> <70> kazy.
Zde jsou dva p<> <70> 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<63> dotazy napoj<6F> t1.col na t2.col a je<6A> t<EFBFBD> p<> id<69> nep<65> ipojen<65>
<20> <> dky z t1 (kter<65> nemaj<61> obdoby v t2). Prav<61> spojen<65> (< SMALL > RIGHT JOIN< / SMALL > ) p<> id<69>
nep<65> ipojen<65> <20> <> dky z t2. < SMALL > FULL JOIN< / SMALL > vr<76> t<EFBFBD> v<> echny <20> <> dky, v<> etn<74>
nep<65> ipojen<65> ch z tbulek t1 a t2. Kl<4B> <6C> ov<6F> slovo < SMALL > OUTER< / SMALL > je nepovinn<6E> a v<> <76> e
se na < SMALL > LEFT< / SMALL > , < SMALL > RIGHT< / SMALL > a < SMALL > FULL< / SMALL > join. B<> <42> n<EFBFBD>
spojen<65> se naz<61> v<EFBFBD> < SMALL > INNER JOIN< / SMALL > .< / P >
< P > V d<> <64> v<EFBFBD> j<EFBFBD> <6A> ch verz<72> ch se vn<76> j<EFBFBD> <6A> spojen<65> tabulek mohlo simulovat pomoc<6F>
< SMALL > UNION< / SMALL > a < SMALL > NOT IN< / SMALL > . Nap<61> <70> klad pro spojen<65> tabulek tab1 a tab2, je
n<> sleduj<75> c<EFBFBD> dotaz ekvivalentn<74> k vn<76> j<EFBFBD> <6A> mu spojen<65> dvou tabulek:< / P >
< PRE >
SELECT tab1.col2, tab2.col2
FROM tab1, tab2
WHERE tab1.col1 = tab2.col1
UNION ALL
SELECT tab1.col2, NULL
FROM tab1
WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
ORDER BY col1;
< / PRE >
< H4 > < A name = "4.24" > 4.24< / A > ) Jak prov<6F> st dotaz z v<> ce datab<61> z<EFBFBD> ?< / H4 >
< P > PostgreSQL nepodporuje dotazy do jin<69> ne<6E> aktu<74> ln<6C> datab<61> ze.< / P >
< P > < I > contrib/dblink< / I > nab<61> z<EFBFBD> funkce umo<6D> <6F> uj<75> c<EFBFBD> proveden<65> dotazu v jin<69>
datab<61> zi. Klient si m<> <6D> e otev<65> <76> t simult<6C> ln<6C> p<> ipojen<65> do r<> zn<7A> ch
db bez omezen<65> .< / P >
< H4 > < A name = "4.25" > 4.25< / A > ) M<> <4D> e funkce vr<76> tit v<> ce <20> <> dk<64> nebo sloupc<70> ?< / H4 >
< P > V PostgreSQL 7.3 m<> <6D> ete jednodu<64> e vracet v<> ce <20> <> dk<64> nebo sloupc<70> z
funkce, viz:
2005-03-11 16:46:54 -05:00
< A href = "http://techdocs.postgresql.org/guides/SetReturningFunctions" > http://techdocs.postgresql.org/guides/SetReturningFunctions< / A > .< / P >
2004-07-11 20:22:51 -04:00
< H4 > < A name = "4.26" > 4.26< / A > ) Pro<72> nelze spolehliv<69> vytv<74> <76> et a ru<72> it do<64> asn<73> tabulky v PL/pgSQL funkc<6B> ch?< / H4 >
< P > P<EFBFBD> elo<EFBFBD> en<EFBFBD> k<> d PL/pgSQL funkce je ulo<6C> en ve vyrovn<76> vac<61> pam<61> ti, tj.
funkce je p<> ekl<6B> d<EFBFBD> na pouze p<> i zm<7A> n<EFBFBD> k<> du, nikoliv p<> ed ka<6B> d<EFBFBD> m vol<6F> n<EFBFBD> m
funkce. Necht<68> n<EFBFBD> m vedlej<65> <6A> m efektem je, <20> e vol<6F> n<EFBFBD> funkce sel<65> e, kdy<64> se
funkce odkazuje na do<64> asnou tabulku, pokud tato tabulka byla od p<> ekladu
funkce zru<72> ena (a<> koliv ji<6A> byla znovu vytvo<76> ena a existuje). Jedin<69> m
<20> e<EFBFBD> en<65> m probl<62> mu je p<> <70> stup k do<64> asn<73> tabulce pomoc<6F> < SMALL > EXECUTE< / SMALL > , tj.
dynamick<63> prov<6F> d<EFBFBD> n<EFBFBD> dotazu. Tento p<> <70> kaz zajist<73> opakovan<61> p<> eklad
dotazu p<> i ka<6B> d<EFBFBD> m vol<6F> n<EFBFBD> funkce.< / P >
< H4 > < A name = "4.27" > 4.27< / A > ) Jak<61> jsou mo<6D> nosti replikace datab<61> z<EFBFBD> ?< / H4 >
< P > Existuje n<> kolik dostupn<70> ch <20> e<EFBFBD> en<65> master/slave replikac<61> , tj umo<6D> <6F> uj<75>
modifikace master datab<61> ze a slave datab<61> z<EFBFBD> m umo<6D> <6F> uj<75> pouze <20> ten<65> . Na
konci < A href = "http://gborg.PostgreSQL.org/genpage?replication_research" > http://gborg.PostgreSQL.org/genpage?replication_research< / A > najdete
jejich seznam. Na <20> e<EFBFBD> en<65> multi-master replikaci se pracuje na
< A href = "http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php" > http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php< / A > .< / P >
< H4 > < A name = "4.28" > 4.28< / A > ) Jak<61> jsou mo<6D> nosti <20> ifrov<6F> n<EFBFBD> datab<61> z<EFBFBD> ?< / H4 >
< UL >
< LI > < I > contrib/pgcrypto< / I > obsahuje <20> ifrovac<61> funkce pou<6F> iteln<6C> v SQL
dotazech.< / LI >
< LI > K <20> ifrov<6F> n<EFBFBD> p<> enosu dat z klienta na server, mus<75> b<> t server
p<> elo<6C> en s podporou < I > ssl< / I > a p<> ep<65> na<6E> < I > ssl< / I > v < I > postgresql.conf< / I > mus<75> b<> t
nastaven na hodnotu true. Klient mus<75> m<> t vytvo<76> en z<> znam hostssl v
< I > pg_hba.conf< / I > a tak<61> m<> t povolen re<72> im < I > ssl< / I > . Lze pou<6F> <75> t i jin<69>
prost<73> edky, nejen nativn<76> podporu ssl v PostgreSQL, nap<61> . stunel a
ssh.< / LI >
< LI > Hesla u<> ivatel<65> datab<61> ze jsou za<7A> ifrov<6F> na po<70> <6F> naje verz<72> 7.3. Ve
star<61> <72> ch verz<72> ch toto chov<6F> n<EFBFBD> muselo b<> t vynuceno volbou
< I > PASSWORD_ENCRYPTION< / I > v < I > postgresql.conf< / I > < / LI >
< LI > Server m<> <6D> e b<> <62> et na <20> ifrovan<61> m souborov<6F> m syst<73> mu.< / LI >
< / UL >
< HR >
< H2 align = "center" > Roz<EFBFBD> i<EFBFBD> ov<EFBFBD> n<EFBFBD> PostgreSQL< / H2 >
< H4 > < A name = "5.1" > 5.1< / A > ) Napsal jsem UDF funkci, PostgreSQL v<> ak kon<6F> <6E> dump core?< / H4 >
< P > Probl<EFBFBD> m m<> <6D> e b<> t zp<7A> soben mnoha okolnostmi. Vyzkou<6F> ejte si svoji funkci
nejd<6A> <64> ve v n<> jak<61> jednoduch<63> aplikaci.< / P >
< H4 > < A name = "5.2" > 5.2< / A > ) Jak mohu p<> isp<73> t n<> jak<61> mi <20> ikovn<76> mi datov<6F> mi typy a funkcemi do PostgreSQL?< / H4 >
< P > Po<EFBFBD> lete sv<73> roz<6F> <7A> <EFBFBD> en<65> do konference pgsql-hackers, a ono pak mo<6D> n<EFBFBD>
skon<6F> <6E> v podadres<65> <73> i contrib.< / P >
< H4 > < A name = "5.3" > 5.3< / A > ) Jak napsat funkci v C vracej<65> c<EFBFBD> ntici?< / H4 >
< P > Funkce vracej<65> c<EFBFBD> tabulky jsou podporovan<61> PostgreSQL 7.3 a vy<76> <79> <EFBFBD> pro
jazyky C, PL/PgSQL a SQL. V<> ce naleznete v The Programmer's Guide.
P<> <50> klady t<> chto funkc<6B> pro C naleznete v < I > contrib/tablefunc< / I > .< / P >
< H4 > < A name = "5.4" > 5.4< / A > ) Modifikoval jsem zdrojov<6F> soubory. Tato zm<7A> na nebyla p<> i rekompilaci vzata v potaz. Pro<72> ?< / H4 >
< P > < I > Makefile< / I > nem<65> informace o z<> vislostech mezi hlavi<76> kov<6F> mi soubory. Mus<75> te
prov<6F> st < I > make clean< / I > a pak < I > make< / I > . Pokud pou<6F> <75> v<EFBFBD> te < SMALL > gcc< / SMALL > , m<> <6D> ete pou<6F> <75> t
p<> ep<65> na<6E> < I > --enable-depend< / I > p<> <70> kazu < I > configure< / I > k automatick<63> mu <20> e<EFBFBD> en<65>
z<> vislost<73> p<> eklada<64> em.< / P >
< / BODY >
2005-03-11 16:46:54 -05:00
< / HTML >