Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
5c996884
Commit
5c996884
authored
Nov 01, 2007
by
Bruce Momjian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update Czech FAQ.
Pavel Stehule
parent
6287c31b
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
1417 additions
and
2207 deletions
+1417
-2207
doc/FAQ_czech
doc/FAQ_czech
+775
-1043
doc/src/FAQ/FAQ_czech.html
doc/src/FAQ/FAQ_czech.html
+642
-1164
No files found.
doc/FAQ_czech
View file @
5c996884
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) K
de naleznu ODBC ovladae
pro PostgreSQL?
2.1) K
ter rozhran jsou pouziteln
pro PostgreSQL?
2.2) Jak nstroje lze pout pro PostgreSQL a web?
2.2) Jak nstroje lze pou
z
t 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.
1.5) Kde mohu zskat PostgreSQL?
Server
Pomoc webovho klienta z adresy http://www.postgresql.org/ftp/ nebo
klienta ftp z adresy ftp://ftp.postgresql.org/pub/.
Server me bt na WindowsNT a Win2k provozovn pouze s knihovnou
Cygwin, Cygnus Unix/NT porting library. Vce pgsql/doc/FAQ_MSWIN v
1.6) Jak je posledn verze?
distribuci nebo MS Windows FAQ na adrese
http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN.
Nejnovejs verz PostgreSQL je verze 8.2.5
Na nativnm portu pro MS Win NT/2000/XP se pracuje. Dal informace o
V plnu je uvolnovat kazdorocne jednu velkou verzi a kazdch nekolik
aktulnm stavu PostgreSQL pro Windows naleznet na adrese
mescu mal verze.
http://techdocs.postgresql.org/guides/Windows a
http://momjian.postgresql.org/main/writings/pgsql/win32.html.
1.7) Kde mohu zskat podporu?
Existujc port pro Novell Netware 6 naleznete na
Nejcastejs forma podpory uzivatelum PostgreSQL komunitou je
http://forge.novell.com.
prostrednictvm e-mailu. Na nasem webovm serveru naleznete odkaz na
strnky,kde se muzete prihlsit do elektronick konference. Pro
1.5) Kde mohu zskat PostgreSQL?
zactek jsou doporucen konference general nebo bugs.
Primrnm anonymnm ftp serverem pro PostgreSQL je
Dals cestou je IRC kanl #postgresql na Freenode (irc.freenode.net).
ftp://ftp.PostgreSQL.org/pub. Seznam zrcadel naleznete na naich
K pripojen pouzijte Unixov prkaz irc -x '#postgresql' "$USER"
webovch strnkch.
irc.freenode.net nebo jakkoholiv jinho IRC klienta. V tto sti
existuje jeste spanelsk (#postgresql-es) a francouzsk
1.6) Kde mohu zskat podporu?
(#postgresqlfr) verze. Dals PostgreSQL kanl naleznete na EFNet.
Hlavn mailov konference je: pgsql-general@PostgreSQL.org. Slou k
Seznam spolecnost poskytujc komercn podporu naleznete na adrese
diskuzm ohledn PostgreSQL. Pihlste se zaslnm mailu obsahujc
http://techdocs.postgresql.org/companies.php.
nsledujc dky v tle dopisu (nikoliv v zhlav - subjectu):
subscribe
1.8) Jak a kam hlsit chyby?
end
Vyplnte formulr na adrese
na adresu pgsql-general-request@PostgreSQL.org.
http://www.postgresql.org/support/submitbug. Na nasem ftp serveru
ftp://ftp.postgresql.org/pub/ si overte, ze pouzvte aktuln verzi
Mete si vydat denn pehled (diggest), kter m zhruba 30K denn
PostreSQL.
zprv.
Chyby reportovan prostrednictvm chybovho formulre nebo zaslnm
Konference psql-bugs je urena k zasln zprv o chybch. Pro
mailu do PostgreSQL konference obvykle generuje nsledujc odezvu:
pihlen polete mail se stejnm obsahem jako v pedchozm ppad
* Nejedn se o chybu, a proc
na adresu pgsql-bugs-request@PostgreSQL.org.
* Jedn se o znmou chybu, kter je jiz v seznamu kolu TODO
* Tato chyba byla opravena v aktuln verzi
Do vvojsk konference se pihlste odeslnm dopisu s ji
* Tato chyba byla jiz opravena ve verzi, kter zatm nebyla
zmiovanm obsahem na mailto:pgsql-hackers-request@PostgreSQL.org.
oficilne uvolnena
* Pozadavek na dals doplnujc informace:
Seznam dalch konferenc naleznete na strnkch PostgreSQL:
+ Operacn systm
+ Verze PostgreSQL
http://www.postgresql.org
+ Test reprodukujc chybu
+ Ladc informace
1.7) Jak je posledn verze?
+ Backtrace vstup debuggeru
* Jedn se o zatm nezjistenou chybu, pak muzete cekat
Posledn verze PostgreSQL je 7.4.3. Plnujeme uvolnit vznamnou verzi
+ Zplatu odstranujc chybu, kter bude vlozena do dals velk
kadch est a osm msc.
nebo mal verze
+ Informaci, ze se jedn o chybu, kterou nelze okamzite resit a
1.8) Jak je dostupn dokumentace?
je proto pridna do TODO
Rzn manuly, manulov strnky a nkolik malch testovacch pklad
1.9) Kde najdu informace o znmch chybch nebo nepodporovanch vlastnostech?
jsou sousti distribuce. Podvejte se do adrese /doc. Manuly jsou
pstupn online na http://www.PostgreSQL.org/docs.
PostgreSQL podporuje rozsrenou podmnozinu SQL:2003. V nasem TODO
naleznete seznam znmch chyb, chybejcch vlastnost, a plny do
Na adresch http://www.PostgreSQL.org/docs/awbook.html a
budoucna.
http://www.commandprompt.com/ppbook/ naleznezte dv online knihy o
PostgreSQL. Seznam dostupn literatury je na
Odezva na pozadavek na novou vlastnost PostgreSQL je obvykle:
http://techdocs.PostgreSQL.org/techdocs/bookreviews.php. Soubor
* Pozadavek je jiz v TODO
technickch lnk s tematikou PostgresQL najdete na
* Pozadovan funkce nen chten protoze
http://techdocs.PostgreSQL.org/.
+ Duplikuje jiz existujc funkci, kter respektuje SQL
standard
psql m uiten metapkaz \d slouc k zobrazen informac o
+ Implementac funkce by se prlis zkomplikoval kd bez
typech, opertorech, funkc, agreganch funkc atd.
relevantnho prnosu
+ Funkce by mohla bt nebezpecn nebo nespolehliv
Vce dokumentace naleznete na naich webovch strnkch.
* Pozadavek je pridn do TODO
1.9) Kde najdu seznam znmch chyb nebo nepodporovanch vlastnost?
PostgreSQL nepozv systm pro sledovn chyb, protoze jsme zjistili,
ze je efektivnejs prmo reagovat na maily a udrzovat aktuln TODO. V
PostgreSQL podporuje rozenou podmnoinu SQL-92. V naem TODO
praxi je snaha o co nejrychlejs resen chyb, a chyby, kter by se
najdete seznam znmch chyb, chybjcch vlastnost a seznam
mohly projevit u mnoha uzivatelu jsou opravovny velice rychle. Jedin
vlastnost, kter budou do systmu implementovny v budoucnu (vetn
msto, kde lze dohledat vsechny zmeny, rozsren a opravy v PostgreSQL
priorit).
je CVS log. Poznmky k verzi "Release notes" nezachycuj vsechny
zmeny, k nemz doslo.
1.10) Jak se mohu nauit SQL?
1.10) Jak je dostupn dokumentace?
V knize The PostgreSQL book na
http://www.PostgreSQL.org/docs/awbook.html je vysvtlen jazyk SQL
PostgreSQL obsahuje vynikajc dokumentaci zahrnujc manul,
(vyla esky). Dal dostupnou knihou je
manulov strnky a testovac prklady. Podvejte se do adresre /doc.
http://www.commandprompt.com/ppbook. Kvalitn nvody naleznete na
Manul je prstupn online na http://www.postgresql.org/docs.
http://www.intermedia.net/support/sql/sqltut.shtm, a na
http://sqlcourse.com.
K dispozici jsou zdarma dve online knihy na adresch
http://www.postgresql.org/docs/books/awbook.html a
Dal je Teach Yourself SQL in 21 days, Second Edition na
http://www.commandprompt.com/ppbook/. Dals literaturu lze zakoupit.
http://members.tripod.com/er4ebus/sql/index.htm.
Nejpopulrnejs je od Kerryho Douglase. Seznam dostupn literatury je
na http://techdocs.postgresql.org/techdocs/bookreviews.php. Jeste je
Mnoho uivatel doporuuje The Practical SQL Handbook, Bowman, Judith
kolekce technicky orientovanch clnku tematicky spojench s
S., et al., Addison-Wesley. Jin preferuj The Complete Reference SQL,
PostgreSQL na adrese http://techdocs.postgresql.org/.
Groff et al., McGraw-Hill.
Rdkov klient psql m \d prkazy pro zobrazen informac o typech,
1.11) Nem PostgreSQL problmy s rokem 2000?
opertorech, funkcch, agregacnch funkc, atd. Pouzijte \? pro
zobrazen dostupnch prkazu.
Nem, meme pracovat s datumy po roce 2000 naeho letopotu i ped
rokem 2000 p.n.l.
Dals dokumentaci najdete na nasem webu.
1.12) Jak se pipojit k vvojskmu tmu?
1.11) Jak se mohu naucit SQL?
Nejdve si sthnte nejnovj zdroje a pette si vvojskou
Podvejte se do vse uveden dokumentace. Dals online knihou je
dokumentaci na naem webu nebo v distribuci. Pak se pihlate do
"Teach Yourself SQL in 21 Days, Second Edition" na adrese
konferenc pgsql-hackers a pgsql-patches. Kvalitn zplaty poslejte
http://members.tripod.com/er4ebus/sql/index.htm. Mnoho nasich
do pgsql-patches.
uzivatelu doporucuje knihu The Practical SQL Handbook, Bowman, Judith
S., et al., Addison-Wesley. Dals The Complete Reference SQL, Groff et
Prvo commit m v CVS archivu asi tincti lid. Kad z nich poslal
al., McGraw-Hill.
mnoho kvalitnch zplat, take tehdej commiters mli jistotu, e
budou pedkldat jenom kvalitn zplaty a mohli jim pedlit vt
Dals online tutorily jsou dostupn na adresch:
prva.
* http://www.intermedia.net/support/sql/sqltut.shtm
* http://sqlcourse.com
1.13) Kam podat report o chyb?
* http://www.w3schools.com/sql/default.asp
* http://mysite.verizon.net/Graeme_Birchall/id1.html
Navtivte nai PostgreSQL BugTool strnku na
http://www.PostgreSQL.org/bugs/bugs.php, kter obsahuje nvod a
1.12) Jak se mohu pripojit k tmu vvojru?
smrnice jak podat chybov report.
Prostudujte si Developer's FAQ.
Ovte si na naem ftp serveru ftp://ftp.PostgreSQL.org/pub, zda-li
mte nejnovj verzi PostgreSQL a zda-li k n neexistuj njak
1.13) Jak je na tom PostgreSQL v porovnn s jinmi databzemi?
zplaty.
Software muzeme porovnvat z nekolika ruznch pohledu: vlastnosti,
1.14) Jak je na tom PostgreSQL v porovnn s jinmi databzemi?
vkon, spolehlivost, podpora a cena.
Existuje nkolik hledisek jak porovnvat software: vlastnosti, vkon,
Vlastnosti
spolehlivost, podpora a cena.
PostgreSQL nabz vetsinu funkc funkcionality velkch komercnch DBMS
Vlastnosti
systmu jako jsou: transakce, vnoren dotazy, spouste, referencn
PostgreSQL m hodn spolench vlastnost s velkmi komernmi
integrita a sofistikovan systm zamykn. Poskytujeme urcit funkce,
DBMS, nap. transakce, vnoen dotazy, spout, pohledy,
kter ostatn systmy bezne nepodporuj. Napr. uzivatelem definovan
kontrolu referenn integrity a sofistikovan zamykn.
typy, dedicnost, pravidla (rules), a MVCC architekturu.
Podporuje nkter vlastnosti, kter tyto systmy nemaj,
uivatelem definovan typy, ddinost, pravidla, MVCC
Vkon
redukujc zamykn.
Vkon PostgreSQL je srovnateln s ostatnmi komercnmi nebo Open
Vkon
Source databzemi. V nekterch prpadech je rychlejs, jindy
Vkonnostn je na tom PostgreSQL podobn jako dal komern
pomalejs. Ns vkon je obvykle +/-10% vuci ostatnm databzm.
ale i open source databze, v nem je rychlej, jindy
pomalej. V porovnn s MySQL a podobnmi databzovmi systmy
Spolehlivost
je PostgreSQL rychlej pi vceuivatelskm pstupu,
sloitjch dotazech a zaten read/write dotazy. MySQL je
Uvedomujeme si, ze databze mus bt stoprocentne spolehliv, jinak je
rychlej v jednoduch dotazech s malm potem uivatel.
nepouziteln. Snazme se, aby kazd verze byla dobre otestovna a
Navc, MySQL nepodporuje mnoh vlatnosti zmnn v sekci
obsahovala minimum chyb. Kazd verze je minimlne nekolik mescu v
vlastnosti. Zapracovali jsme na spolehlivosti a podporovanch
beta testovacm rezimu. Do produkcnho rezimu se dostane, az kdyz
vlastnostech, a vkon zvyujeme v kad verzi. Zajmavou
nedochz k dalsm zmenm nebo opravm. Verme, ze jsem vce nez
strnku porovnvajc PostgreSQL a MySQL naleznete na
srovnateln s ostatnmi databzemi v tto oblasti.
http://openacs.org/philosophy/why-not-mysql.html. Za vvojem
MySQL nen Open Source komunita, ale komern spolenost,
Podpora
pestoe svoje produkty distribuuje jako Open Source.
Na nasich internetovch konferencch se setkv velk skupina vvojru
Spolehlivost
a uzivatelu pri resen vyskytujcch se problmu. Nase internetov
Jsme si vdomi, e databze mus bt spolehliv, jinak je
konference umoznuj kontakt velk skupiny vvojru a uzivatelu.
nepouiteln. Sname se zveejovat dobe otestovan, stabiln
Nemuzeme garantovat opravu chyby, ale komercn DBMSs tak vzdy
kd s minimem chyb. Kad verze je vce ne msc v beta
negarantuj resen problmu. Verme ale, ze dky prmmu kontaktu na
testovn, a nae historie verz ukazuje, e meme nabdnout
vvojre, nasi uzivatelskou komunitu, manulum, a dostupnm zdrojovm
stabiln, solidn verze, kter jsou pipraveny pro reln
kdum mme leps podporu nez ostatn DBMSs. Pro ty, kter preferuj
nasazen. V tto oblasti jsme srovnateln s dalmi databzemi.
komercn "per-incident" podporu, existuje spolecnost, kter ji
nabzej (FAQ sekce 1.7.)
Podpora
Na na mailov konferenci mete kontaktovat velkou skupinu
Cena
vvoj a uivatel.problm. Nememe garantovat opravu,
nicmn komern databze tak ne vdy nabdnou opravu. Podle
PostgreSQL lze pouzvat bezplatne (a to i pro komercn pouzit). Tak
ohlas je nae podpora hodnocena lpe ne u jinch DBMS a to
muzete neomezene pouzvat ns kd ve svch produktech s vjimkami
dky pmmu kontaktu s vvoji, velkou komunitou uivatel,
specifikovanmi v nas licenci (prebrme BSD licenci).
kvalitnmi manuly a pstupnm zdrojovm kdem. Pro uivatele,
kte vyaduj podporu ke konkrtnm ppadm, existuje placen
1.14) Je PostgreSQL pripraven na aktuln zavden letnho casu v nekterch
podpora (FAQ sekce 1.6).
zemch?
Cena
Pocnaje verz 8.0.[4+] podporuje PostgreSQL letn cas tak pro USA.
PosgreSQL lze voln pouvat pro nekomern i komern pouit.
Podpora letnho casu (daylight saving time) pro Kanadu a Zpadn
Mete do svch produkt pidat n kd bez omezen, respektive
Austrlii je obsazena ve verzch 8.0.[10+] a 8.1.[6+] a vsech
v souladu s podmnkami na licenn smlouvy (v duchu BSD
nsledujcch verzch. Stars verze pouzvaly systmovou databzi
licence).
casovch zn obsahujc, krome jinho, informaci o tom, zda se pro
danou casovou znu rozlisuje mezi letnm a zimnm casem.
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
Dotazy na klientsk rozhran
advocacy site na http://advocacy.postgresql.org.
User client dotazy
2.1) Kde naleznu ODBC ovladae pro PostgreSQL?
2.1) Kter rozhran jsou pouziteln pro PostgreSQL?
Pro PostgreSQL existuj dva ODBC ovladae - PsqlODBC a OpenLink ODBC.
PostgreSQL se distribuuje pouze s rozhranm pro jazyk C a embedded C.
Vsechna dals rozhran predstavuj nezvisl projekty, kter je treba
PsqlODBC je ke staen na
sthnout z internetu samostatne. Osamostatnen techto projektu
http://gborg.postgresql.org/project/psqlodbc/projdisplay.php.
umoznuje nezvislost vvojovch tmu a moznost vydvat nov verze bez
ohledu na vydn nov verze PostgreSQL.
OpenLink mete zskat na http://www.openlinksw.com. Spolupracuje s
jejich klientskm programovm vybavenm a je dostupn pro vechny jimi
Nekter programovac jazyky jako je napr. PHP obsahuj rozhran pro
podporovan platformy (Win, Mac, Unix, VMS).
PostgreSQL. Rozhran pro jazyky jako je Perl, Tcl, Python a mnoho
dalsch jsou dostupn na adrese: http://gborg.postgresql.org v sekci
Tento ovlada je uren pro ty, kte vyaduj podporu komern
Drivers/Interfaces.
kvality, nicmn freeware verze je dostupn a funkn. Dotazy
zaslejte na postgres95@openlink.co.uk.
2.2) Jak nstroje lze pout pro PostgreSQL a web?
Pkn vod do databzovch technologi zabezpeujcch chod webovch
strnek najdete na http://www.webreview.com.
Pro tvorbu webu existuje excelentn rozhran PHP, kter naleznete na
http://www.php.net.
Pro sloitj ppady se asto pouv Perl a CGI.pm nebo mod_perl.
2.2) Jak nstroje lze pouzt pro PostgreSQL a web?
Dobrm vodem do problematiky databz v prostred webovch strnek
muze bt web http://www.webreview.com.
2.3) Existuje grafick rozhran pro PostgreSQL?
PHP (http://www.php.net) je vynikajcm rozhranm pro tvorbu webu.
Pro PostgreSQL existuje nkolik grafickch rozhran: PgAccess
(http://www.php.net), PgAdmin III (http://www.php.net), RHDB Admin
(http://sources.redhat.com/rhdb/) a Rekall (
http://www.thekompany.com/products/rekall/). Dle jet PhpPgAdmin
(http://phppgadmin.sourceforge.net/) co je rozhran PostgreSQL
zaloen na web technologii.
plnj seznam najdete na
Pro slozitejs lohy se casto pouzv Perl a jeho BDB:Pg rozhran s
http://techdocs.postgresql.org/guides/GUITools
.
podporou CGI - CGI.pm nebo mod_perl(u)
.
2.4) Kter programovac jazyky maj podporu pro PostgreSQL?
2.3) Existuje grafick rozhran pro PostgreSQL?
Vtina programovacch jazyk obsahuje rozhran pro PostgreSQL.
K dispozici je rada grafickch nstroju podporujcch PostgreSQL a to
Podvejte se do roziujcch modul Vaeho programovacho jazyka.
od komercnch nebo open source vvojru. Podrobn seznam naleznete na
adrese http://www.postgresql.org/docs/techdocs.54.
Distribuce PostgreSQL obsahuje tato rozhran:
* C (libpq)
* Embbedded C (ecpg)
* Java (jdbc)
* Python (PyGreSQL)
* TCL (libpgtcl)
Dal rozhran jsou dostupn na http://gborg.postgresql.org v sekci
Drivers/Interfaces.
_________________________________________________________________
_________________________________________________________________
Administrativn dotazy
Administrativn dotazy
3.1) Jak nainstalovat PostgreSQL jinam ne do /usr/local/pgsql?
3.1) Jak nainstalovat PostgreSQL jinam nez do /usr/local/pgsql?
Pouijte volbu --prefix pi sputn configure.
Pri spousten configure nastavte parametr --prefix
3.2) Pi startu postmaster, dostanu chybov hlen Bad System Call nebo
3.2) Jak nastavit pravidla pro prstup z jinch stanic?
core dump. Pro?
Ve vchoz konfiguraci, PostgreSQL umoznuje pouze pripojen z
Dvody mohou bt rzn, ale nejprve zkontrolujte, zda V systm
loklnho uzivatele prostrednictvm Unix domain sockets nebo TCP/IP
podporuje System V extensions. PostgreSQL vyaduje v jde podporu
spojen. Bez modifikace listen_addresses v souboru postgresql.conf, a
sdlen pamti a semafor.
povolen adresy v souboru $PGDATA/pg_hba.conf se nelze pripojit k
PostgreSQL z ostatnch stanic. Zmena vse zmnench parametru vyzaduje
3.3) Pi startu postmastera dostanu hlen o chyb IpcMemoryCreate. Pro?
restart databzovho serveru.
Buto nemte sprvn nakonfigurovanou sdlenou pam v jde nebo
3.3) Jak vyladit databzi na vyss vkon?
musite zvtit jej velikost. Potebn velikost je zvisl na
architektue a na tom, kolik pamovch buffer a backend mte
Vkon systmu muzete ovlivnit ve trech oblastech:
povoleno pro postmastera. Pro vtinu systm s peddefinovanm potem
backend a pamovch buffer je minimum zhruba 1MB. V PostgreSQL
Zmeny dotazu
Administrator's Guide naleznete podrobnj informace o sdlen pamti
a semaforech.
* Pouzitm indexu vcetne cstecnch a funkcionlnch
* Pouzitm COPY msto opakovanch INSERTu
3.4) Pi startu postmastera dostanu hlen o chyb IpcSemaphoreCreate.
* Sloucenm mnoha SQL prkazu do jedn transakce snzenm rezie na
Pro?
commit
* Pouzvnm CLUSTERU, pokud nactte vets pocet rdek podle indexu
Pokud dostane chybovou zprvu IpcSemaphoreCreate: semget failed (No
* Pouzitm klauzule LIMIT v poddotazech
space left on device), pak vae jdro nem dost volnch semafor.
* Pouzitm predpripravench dotazu
PostgreSQL vyaduje jeden semafor pro kad backend v pozad. Doasnm
* Pouzvnm ANALYZE. Tento prkaz aktualizuje statistiky, kter se
eenm je start postmaster s limitem backend. Pouijte pepna -N s
pouzvaj pri optimalizaci dotazu
hodnotou men ne 32. plnm eenm je zven hodnot SEMMNS a
* Pravideln pouzit VACUUM nebo pouzvn pg_autovacuum
SEMMNI jadra.
* Odstranenm indexu pred rozshlmi zmenami v datech
Nefunkn semafory mohou zpsobit pd bhem intenzivnch databzovch
Konfigurace serveru
operac.
Urcit parametry v souboru postgresql.conf maj vliv na vkon serveru.
Pokud se tato chyba vyskytuje jet nkde jinde, mon nemte vbec
Detaily naleznete v prrucce Administrtora v Server Run-time
nakonfigurovny semafory ve vaem jde. V PostgreSQL Administrator's
Environment/Run-time Configuration. Dals komentre naleznete v
Guide najdete podrobnj popis poadavk na sdlenou pamt a
http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.ht
semafory.
ml a http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html.
3.5) Jak povolit nebo zakzat pstup z jinch stanic?
Vber hardware
Pi vchozm nastaven PostgreSQL odepe pstup z jinch stanic ne
Vliv hardware na vkon serveru je popsn v dokumentech
lokln s pouitm UDP. Pstup z jinch stroj nen mon dokud jej
http://candle.pha.pa.us/main/writings/pgsql/hw_performance/index.html
nepovolte nastavenm tcpip_socket v postgresql.conf a urenm zpsobu
a http://www.powerpostgresql.com/PerfList/.
autentifikace v $PGDATA/pg_hba.conf.
3.4) Jak mm ladc prostredky?
3.6) Jak ladit databzov stroj na lep vkon?
Nastavenm log_* promennch v konfiguraci serveru si vynutte logovn
Urit pomohou indexy. Pkaz EXPLAIN ANALYZE Vm umon sledovat jak
dotazu a procesnch statistik, kter Vm mohou pomoci pri laden a
PostgreSQL interpretuje V dotaz a kter indexy pouv.
optimalizaci vkonu.
Pi vt dvce INSERT uvaujte o nhrad pkazem COPY. Ten je
3.5) Co znamen "Sorry, too many clients", kdyz se zkousm pripojit?
mnohem rychlej neli samotn INSERT. Kad pkaz mimo blok BEGIN
WORK/COMMIT se provd ve vlastn transakci. Zvate, zda-li by se
Prekrocil jste vchoz limit, kter je 100 soucasne pripojench
nedalo nkolik pkaz spojit do jedn transakce. Tm se sn reie
uzivatelu. V konfiguraci serveru v postgresql.conf tuto hodnotu muzete
na transakce. Ped provedenm rozshlch zmn zrute indexy, kter po
zvetsit zmenou hodnoty max_connection. Nezapomente restartovat server.
dokonen zmn opt vytvote.
3.6) Proc je nutn dump a obnoven (load) databze pri upgradu PostgreSQL?
Mte nkolik dalch monost, jak zlepit vkon. Mete zakzat
fsyn() pi startu postmastera pepnai -o -F. Tyto pepnae zabrn
Zpusob cslovn je popsn v dokumentaci na
fsync(), tj. zpisu na disk po kad transakci.
http://www.postgresql.org/support/versioning. Instrukce k proveden
migrace na vyss verzi jsou taktz v dokumentaci na adrese
Mete zvit velikost pamovch buffer pouitch backendy tj.
http://www.postgresql.org/docs/current/static/install-upgrading.html.
parametr -B postmasteru. Pokud ale tato hodnota bude pli velk, tak
mon nespustte postmastera jeliko doshnete limitu sdlen pamti.
3.7) Jak hardware bych mel pouzvat?
Kad buffer m 8K a implicitn je 64 buffer.
Jelikoz PC jsou vetsinou kompatibiln, lid maj tendence verit, ze
Dle mete pout pepna -S k zven limitu pamti pro backendy na
vsechna PC jsou stejne kvalitn. Coz nen pravda. Pameti ECC, SCSI a
doasn tdn. Hodnota je mnna v kilobytech a vchoz nastaven je
kvalitn zkladn desky jsou mnohem spolehlivejs a vkonnejs nez
512, tj. 512K.
lacinejs hardware. PostgreSQL pobez na vetsine hardwaru, nicmne
pokud je pro Vs spolehlivost a vkon systmu dulezit, je dobr
Mete pout pkaz CLUSTER, kter uspod fyzicky data v tabulkch
venovat cas nalezen vhodn hardwarov konfigurace. Na nasich
podle indexu. Vce na manulovch strnkch pkazu CLUSTER.
elektronickch konferencch muzete diskutovat o vhodnch konfiguracch
a znackch.
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
Provozn dotazy
4.1) m se li binrn a normln kurzor?
4.1) Jak zskat pouze prvn rdek dotazu? Nhodn rdek?
Popis najdete v manulov strnce DECLARE
Pokud potrebujete pouze nekolik rdku a pokud vte kolik, pouzijte
SELECT LIMIT. Pokud bude mozn pouzt index shodujc se s ORDER BY,
4.2) Jak zskat pouze prvn dek dotazu? Nhodn dek?
je mozn, ze se nebude provdet cel dotaz. Pokud neznte pocet
zznamu, pouzijte kurzor a prkaz FETCH.
Podvejte se do man. strnky pkazu FETCH, nebo pouijte SELECT ...
LIMIT ...
Pro vber nhodnho rdku pouzijte prkaz ve tvaru:
SELECT col
I kdy potebujete zskat pouze prvnch nkolik dk, je teba
FROM tab
zpracovat vechna data, nap. pokud dotaz m ORDER BY. Pokud vak
ORDER BY random()
existuje index, kter odpovd ORDER BY, PostgreSQL me zskat pouze
LIMIT 1;
prvnch n dk a ukonit zpracovn dotazu.
K zskn nhodnho dku pouijte:
SELECT col
FROM tab
ORDER BY random()
LIMIT 1;
4.3) Jak zskm seznam tabulek nebo jinak jak jej zsk psql?
4.2) Jak zskm seznam tabulek, indexu, databz, a definovanch uzivatelu.
Mohu videt dotazy, kter pouzv psql pro zobrazen techto informac?
Pkaz \dt v psql zobraz seznam tabulek. pln seznam pkaz psql
dostanete pkazem \?. Tak se mete podvat do zdrojovch kd psql
V psql prkazem \dt zskte seznam tabulek. pln seznam prkazu psql
do souboru pgsql/src/bin/psql/describe.c. Ten obsahuje SQL pkazy,
zskte prkazem \?. Alternativne si muzete prostudovat zdrojov kd
kter se pouvaj v psql metapkazech. Dle mete spustit psql s
psql - soubor pgsql/src/bin/psql/describe.c, kter obsahuje SQL
pepnaem -E, kter zpsob zobrazen kadho dotazu, kter
prkazy, kter jsou generovny pro zskn vstupu psql "backslash"
zpracovn metapkazu vyvol. PostgreSQL nabz SQLi INFORMATION
prkazu. Tak muzete nastartovat psql s parametrem -E, kter zpusob
SCHEMA s tabulkami obsahujc informace o databzi.
zobrazen vsech SQL prkazu, kter se odeslaj na server. PostgreSQL
tak podporuje SQL standard INFORMACN SCHMATA (standardn systmov
4.4) Jak odstranm sloupec tabulky, jak zmnm jeho typ?
tabulky). Klasickm dotazem do systmovch tabulek zskte pozadovan
informace o strukture databze.
Ponaje verz 7.3 mete pout pkaz ALTER TABLE DROP COLUMN. Ve
starch verzch mete pout nsledujc postup:
Systmov tabulky PostgreSQL (mimo rmec SQL standardu) pouzvaj
BEGIN;
prefix pg_. Pro zjisten struktury databze je muzete pouzt tak, i
LOCK TABLE old_table;
kdyz preferovny jsou dotazy do informacnho schmatu.
SELECT ... -- mimo sloupec, kter chceme odstranit
INTO TABLE new_table;
Seznam vsech databz zskte prkazem psql -l
DROP TABLE old_table;
ALTER TABLE new_table RENAME TO old_table;
Dals inspiraci najdete v souboru pgsql/src/tutorial/syscat.source.
COMMIT;
Obsahuje ilustracn SELECTy potrebn k zskn informac z systmovch
tabulek databze.
4.3) Jak zmenit datov typ sloupce?
Ve verzch 8.0 a pozdejsch jednoduse:
ALTER TABLE ALTER COLUMN TYPE
Pro zmnu typu sloupce je teba provst
:
V starsch verzch
:
BEGIN;
BEGIN;
ALTER TABLE tab ADD COLUMN new_col new_data_type;
ALTER TABLE tab ADD COLUMN new_col new_data_type;
UPDATE tab SET new_col = CAST(old_col AS new_data_type
;
UPDATE tab SET new_col = CAST(old_col AS new_data_type)
;
ALTER TABLE tab DROP COLUMN old_col;
ALTER TABLE tab DROP COLUMN old_col;
COMMIT;
COMMIT;
Po
t provete VACUUM FULL tab - uvolnte tm diskov prostor zabran
Po
zmene spustte prkaz VACUUM FULL, aby doslo k uvolnen diskovho
nyn ji neplatnmi dk
y.
prostoru pouzitho v tu chvli jiz neplatnmi zznam
y.
4.5) Jak je maximln velikost
dku, tabulky a databze?
4.4) Jak je maximln velikost r
dku, tabulky a databze?
PostgreSQL m tato omezen:
PostgreSQL m tato omezen:
Maximln velikost databze: neomezena (existuj 32TB db)
Maximln velikost tabulky: 32 TB
Maximln velikost dky: 1.6 TB
Maximln velikost poloky 1 GB
Maximln poet dk v tabulce: neomezeno
Maximln poet sloupc v tabulce: 250-1600 podle typ
Maximln poet index na tabulce: neomezeno
Ve skutenosti nic nen neomezeno, limitem bv vdy dostupn diskov
pam nebo velikost operan pamti. Pokud mte nkterou z tchto
hodnot neobvykle velkou, me dojt ke snen vkonu.
Maximln velikost tabulky je 32 TB a nevyaduje podporu velkch
soubor operanm systmem. Velk tabulky se ukldaj do nkolika 1 GB
soubor take limity souborovho systmu nejsou podstatn.
Maximln velikost tabulky a maximln poet sloupc meme
zetynsobit nastavenm velikosti bloku na 32K.
4.6) Kolik diskovho prostoru je poteba k uloen dat z
normlnho textovho souboru?
PostgreSQL vyaduje a ptinsobek diskovho prostoru k uloen dat z
Maximln velikost databze: neomezena (existuj 32TB db)
Maximln velikost tabulky: 32 TB
Maximln velikost rdky: 480GB
Maximln velikost polozky 1 GB
Maximln pocet rdku v tabulce: neomezeno
Maximln pocet sloupcu v tabulce: 250-1600 podle typu
Maximln pocet indexu na tabulce: neomezeno
Ve skutecnosti nic nen neomezeno, limitem bv vzdy dostupn diskov
pamet nebo velikost operacn pameti. Pokud mte nekterou z techto
hodnot neobvykle velkou, muze dojt ke snzen vkonu.
Maximln velikost tabulky je 32 TB a nevyzaduje podporu velkch
souboru operacnm systmem. Velk tabulky se ukldaj do nekolika 1 GB
souboru takze limity souborovho systmu nejsou podstatn.
Maximln velikost tabulky a maximln pocet sloupcu muzeme
zectyrnsobit nastavenm velikosti bloku na 32K.
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.
4.5) Kolik diskovho prostoru je potreba k ulozen dat z normlnho textovho
souboru?
PostgreSQL vyzaduje az petinsobek diskovho prostoru k ulozen dat z
textovho souboru.
textovho souboru.
Nap
klad, uvaujme soubor se 100 tisci dky obsahujc na ka
d
Nap
rklad, uvazujme soubor se 100 tisci rdky obsahujc na kaz
d
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 polo
ka a jedna textov
24 byt
u: jedna celocseln poloz
ka a jedna textov
+ 4 byty: ukazatel na strnku k ntici
+ 4 byty: ukazatel na strnku k
e
ntici
------------------------------------------------------
------------------------------------------------------
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 r
dek
-------------------- = 782
strnek (zaokrouhleno nahoru)
----------------------- = 633
strnek (zaokrouhleno nahoru)
128
dek na strnce
158 r
dek 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 re
ii, ale mohou bt tak velk, proto
e
Indexy nemaj tak velkou re
zii, ale mohou bt tak velk, protoz
e
obsahuj indexovan data.
obsahuj indexovan data.
Hodnoty NULL jsou ulo
eny v bitmapch, take spotebu
j jen velmi mlo
Hodnoty NULL jsou ulo
zeny v bitmapch, takze zabra
j 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?
4.7) Jak zjistm, jak se vyhodnocuje muj dotaz?
Podvejte se do manulov strnky pkazu EXPLAIN.
Podvejte se do npovedy k prkazu EXPLAIN.
4.10) Co to je R-tree index?
4.8) Jak pouzt case-(in)sensitive regulrn vraz? Jak pouzt index pro case
insensitive hledn?
R-tree index se pouv pro indexovn prostorovch dat. Hash index
neme obslouit prohledvn oblast. B-tree index me dit
Vyhledvn prostrednictvm regulrnch vzoru zajistuje opertor ~,
vyhledn oblast v jedn dimenzi. R-tree index me podporovat
kter je case-sensitive. Jeho case-insensitive varianta je opertor
hledn v multidimenzionlnch datech. Pouijeme-li napklad R-tree
~*. Case-insensitive variac opertoru LIKE je opertor ILIKE.
index na atributy typu point, pak systm me efektivn odpovdt na
dotaz - vyber vechny body uvnit obdlnk.
Case-insensitive vyhledn se res:
SELECT *
Pvodn nvrh R-tree je Guttman, A. "R-trees: A Dynamic Index
FROM tab
Structure for Spatial Searching." Proceedings of the 1984 ACM SIGMOD
WHERE lower(col) = 'abc';
Int'l Conf on Mgmt of Data, 45-57
Tyto materily naleznete v Stonebraker's "Readings in Database
Systems".
Vestavn R-tree me slouit k indexaci polygon a oblast.
Teoreticky meme R-tree pout i pro vce dimenz (jin ne 3D). Ve
skutenosti ale takov rozen R-tree vyaduje trochu prce a ve
souastnosti chyb dokumentace jak na to.
4.11) Co je Genetic Query Optimizer?
GEQO modul urychluje optimalizaci dotaz pi spojovn mnostv
tabulek metodou Genetickch algoritm (GA). To umouje zskat velkho
mnostv variant spojen pi neplnm prohledvnm.
4.12) Jak provst vyhledvn regulrnho vrazu case sensitiv, insensitiv?
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 *
FROM tab
WHERE lower(col) = 'abc';
V tomto ppad se nepouije standardn index. Nicmn, pouije se
Tento dotaz nepouzije standardn index. Muste pouzt tzv.
funkcionln index
, pokud jej vytvote
:
funkcionln index:
CREATE INDEX tabindex ON tab (lower(col));
CREATE INDEX tabindex ON tab (lower(col));
4.13) Jak v dotazu detekovat, e poloka je NULL?
Pokud index vytvorme jako uniktn, tak muzeme ukldat retezce
obsahujc mal i velk psmena, ale nikoliv retezce, kter se od sebe
Urte pomoc IS NULL nebo IS NOT NULL
odlisuj jen v malch a velkch psmenech. K zajisten zpisu retezce
obsahujc pouze mal nebo pouze velk psmena pouzijte CHECK kontroly
4.14) Jak jsou rozdly mezi rznmi znakovmi typy?
nebo triggery.
Typ Intern nzev Poznmka
4.9) Jak v dotazu detekovat, ze polozka je NULL? Jak bezpecne spojit dva
--------------------------------------------------------------------------
retezce, pokud mohou obsahovat NULL? Lze trdit podle toho, jestli je polozka
VARCHAR(n) varchar omezeno maximln dlkou, bez doplnn mezerami
NULL nebo ne?
CHAR(n) bpchar etzec je doplnn mezerami do dan dlky
TEXT text bez hornho limitu na dlku
Pokud chcete testovat hodnotu NULL pouzijte opertor IS:
BYTEA bytea pole byt (bezpen lze uloit i znak NULL)
SELECT *
"char" char jeden znak
FROM tab
WHERE col IS NULL;
S internmi nzvy se setkte v systmovm katalogu a v nkterch
K spojen retezcu, kter mohou obsahovat hodnotu NULL, pouzvejte
chybovch hlench.
funkci COALESCE(), napr.:
SELECT COALESCE(col1, '') || COALESCE(col2, '')
Prvn tyi uveden typy jsou tzv. varlena typy (tj. prvn tyi byty
FROM tab
na disku nesou daj o dlce, nsleduj samotn data). Proto skuten
pouit prostor je vdy o nco mlo vt ne deklarovan dlka.
Naopak, tyto datov typy jsou komprimovnty TOASTem, take prostor na
disku me bt ni ne je oekvno.
VARCHAR(n) je vhodn pro ukldn text prommn dlky s pevn
stanovenou maximln dlkou. TEXT je pro etzce bez omezen dlky s
maximem jeden gigabajt.
CHAR(n) slou k ukldn etzc stejn dlky. CHAR(n) dopln przdn
znaky do specifikovan dlky, zatmco VARCHAR(n) ulo pouze pedan
znaky. BYTEA je ureno pro ukldn binrnch dat, vetn NULL byte.
Vechny zde popsan typy maj podobn vkonnostn charakteristiky.
4.15.1) Jak vytvoit serial/auto-increment pole?
PostgreSQL podporuje typ SERIAL. Pi jeho pouit se automaticky
vytvo SEQUENCE. Napklad:
CREATE TABLE person (
id SERIAL,
name TEXT
);
je automaticky pevedeno do
Pokud chcete trdit podle hodnoty NULL, pouzijte vraz IS NULL nebo IS
CREATE SEQUENCE person_id_seq;
NOT NULL v klauzuli ORDER. Hodnota pravda m prednost pred hodnotou
CREATE TABLE person (
false a tedy pokud pouzijete:
id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
SELECT *
name TEXT
FROM tab
);
ORDER BY (col IS NOT NULL)
CREATE UNIQUE INDEX person_id_key ON person(id);
Viz dokumentace create_sequence v manulovch strnkch. Dle mete
tak zznamy s NULL budou na zactku setrdench dat.
pout uniktn hodnotu OID kadho dku. Potom ale muste spoutt
pg_dump s pepnaem -o, tak aby zstaly zachovny hodnoty OID (u
4.10) Jak jsou rozdly mezi ruznmi znakovmi typy?
pkazu copy COPY WITH OIDS).
Typ Intern nzev Poznmky
4.15.2) Jak zskat hodnotu SERIAL po vloen dku?
VARCHAR(n) varchar n urcuje maximln dlku
CHAR(n) bpchar retezec je do dan dlky rozsren mezerami
Jednou z monost je zskat budouc hodnotu SERIAL funkc nextval()
TEXT text bez omezen dlky
ped samotnm vloenm a pak ji vloit explicitn. Napklad v jakmsi
BYTEA bytea pole bytu nespecifikovan dlky
pseudojazyku:
"char" char jeden znak
newid = execute("SELECT nextval('person_id_seq')");
execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
Na intern nzvy muzete narazit v systmovm katalogu nebo v nekterch
chybovch hlsench.
Ctyri prvn typy jsou tzv. varlena typy (prvn ctyri byty na disku
jsou obsahuj dlku, ostatn obsahuj vlastn data). Skutecne obsazen
prostor je tedy o neco mlo vets nez deklarovan velikost. Na druhou
stranu, dels retezce jsou komprimovny, takze obsazen prostor na
disku muze bt mens nez se cek.
VARCHAR(n) je vhodn pro ukldn ruzne dlouhch retezcu u kterch
znme dlkov omezen, TEXT pro retezce bez omezen dlky (maximum je
jeden gigabyte).
CHAR(n) se pouzv pro ulozen stejne dlouhch retezcu. CHAR(n) dopln
mezerami na specifikovanou dlku, VARCHAR(n) hodnoty se ukldaj tak
jak jsou. BYTEA je pro ukldn binrnch dat - non ASCII hodnot.
Vsechny zmnen typy maj podobn vkonov charakteristiky.
4.11.1) Jak vytvorit serial/auto-increment polozku?
V PostgreSQL muzete pouzt datov typ SERIAL. Jeho pouzitm se
automaticky vytvor sekvence. Naprklad:
CREATE TABLE person (
id SERIAL,
name TEXT
);
Mete pak jet pout hodnotu newid v dalch dotazech, nap. jako
je automaticky transformovno na:
hodnotu cizho kle. Nzev automaticky vytvoen sekvence je
CREATE SEQUENCE person_id_seq;
tabulka_sloupec_seq.
CREATE TABLE person (
id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
Alternativn mete zskat hodnotu posledn generovou sekvenc funkc
name TEXT
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
Podrobnejs informace najdete v manulu v popisu prkazu
pravdpodobn nejmn penositeln een. V Perlu pi pouit DBI
create_sequence.
modulu Edmunda Mergleho DBD:Pg oid hodnotu zskme
$sth->{pg_oid_status} po kadm $sth->execute().
4.11.2) Jak zskat hodnotu SERIAL po vlozen rdku?
4.15.3) Nepovede currval() a nextval() k rozhozen podmnek pi soubhu s
Nejjednodussm zpusob, jak zskat vygenerovanou hodnotu typu SERIAL,
jinmi uivateli?
je vyuzt klauzuli RETURNING. Pro tabulku z 4.11.1 vypad takto:
INSERT INTO person (name) VALUES ('Blaise Pascal') RETURNING id;
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
Tak muzete pouzt funkci nextvall() a jej vsledek pouzt v prkazu
miliardch. Nebylo hleno, e by se tak nkdy stalo, pesto ale
INSERT, nebo zavolat currval() po proveden prkazu INSERT.
plnujeme odstranit tento limit dv ne se tak stane.
4.11.3) Nezpusob currval() a nextval() problmy ve vce uzivatelskm
TID se pouvaj i identifikaci fyzickch dk s hodnotou bloku a
prostred?
offsetu. TIDs se mn modifikac dk (pouv se jako ukazatel
indexu fyzickho dku).
Ne, currval vrac vzdy hodnotu, kter byla vygenerovna pro vs.
4.17) Jak je vznam nkterch vraz pouitch v PostgreSQL?
4.11.4) Proc nen vygenerovan cslo pouzito pri prerusen transakce?Proc
vznikaj dry v cslovn prostrednictvm sekvence nebo typu SERIAL?
V nkterch zdrojovch kdech nebo star dokumentaci se mete setkat
s nsledujcmi vrazy, kter maj ir vznam. Zde je pklad
Pot co sekvence vygeneruje nov cslo, tak se nedochz k zamcen
nekterch:
sekvence a necek se na spesn nebo nespesn dokoncen transakce.
* tabulka, relace, tda (table, relation, class)
Odvolnm transakce, kter si vyzdala csla sekvence se tato csla
* dek, zznam, ntice (row, record, tuple)
nenvratne ztrat.
* sloupec, poloka, atribut (column, field, attribute)
* vyhledn, vbr (retrieve, select)
4.12) Co to je OID? Co je to CTID?
* nhrada, prava (replace, update)
* pidn, vkldn (append, insert)
V prpade, ze tabulku nezalozme s atributem WITHOUT OIDS, tak m
* OID, serial value (OID, serial value)
kazd rdek uniktn identifikacn cslo OID. Toto cslo je 4 bajtov
* portal, kurzor (portal, cursor)
cel cslo, kter je jedinecn v cel instalaci. Pretece po 4
* range variable, jmno tabulky, alias tabulky (range variable,
miliardch rdku. PostgreSQL pouzv OIDs jako intern linky v
table name, table alias)
internch systmovch tabulkch.
seznam tchto vraz mete nalzt na
K zskn uniktnho csla v nesystmovch tabulkch je vhodnejs
http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary
pouzit typu SERIAL nez OID, jelikoz sekvence SERIAL se pouzv pouze
/glossary.html.
pro jednu tabulku a je tudz mne nchyln na pretecen. Pokud byste
se toho obvali, pouzijte typ SERIAL8.
4.18) Pro jsem zskal chybov hlen "ERROR: Memory exhausted in
AllocSetAlloc()"?
CTID se pouzv k identifikaci konkrtnho fyzickho rdku. CTID se
men pokud je rdek modifikovn nebo znovu nacten. Pouzvaj ho indexy
Pravdpodobn dolo k vyerpn virtuln pami na Vaem systmu,
jako adresaci fyzickch rdku.
nebo jdro m nzk limit pro urit zdroje. Vyzkouejte ped startem
posmatera
4.13) Co znamen chybov hlsen "ERROR: Memory exhausted in
ulimit -d 262144
AllocSetAlloc()"?
limit datasize 256m
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
Zle na Vaem shellu, zda budou tyto pkazy spn, mly by zvit
Mozn, ze se projde pouze jeden prkaz - zlez to na vasem shellu.
limit datovho segmentu pro Vae procesy a umonit tak dokonen
Mel by zvednout limity datovch segmentu vasich procesu na dostatecne
dotazu. Tyto pkazy se aplikuj na aktuln proces a vechny synovsk
velkou hodnotu a snad umoznit dokoncen dotazu. Zmena limitu se bude
procesy vytvoen po proveden pkazu. Pokud mte problmy s SQL
aplikovat pouze na aktuln proces a na vsechny nove vytvoren
klientem protoe backend vrac pli mnoho dat, zkuste zvit limity
procesy. Jestlize mte problm s SQL klientem, protoze vm server
ped startem klienta.
vrtil prlis dat, zkuste to pred startem klienta.
4.19) Jak se dozvm, kterou verzi PostgreSQL pouvm?
4.14) Jak zjistm, kterou verzi PostgreSQL pouzvm?
V psql spuste SELECT version();
V psql napiste:
SELECT version();
4.20) Pro operace s velkmi objekty kon "invalid large obj descriptor"?
Vechny operace s velkmi objekty - lo_open, lo_close, ... muste
spoutt v transakci, tj. mezi pkazy BEGIN WORK a COMMIT.
PostgreSQL uvoluje handle velkch objekt pi skonen transakce.
Pokud budete pracovat s velkmi objekty mimo transakci, pravdpodobn
dostanete toto chybov hlen, protoe handle ji budou neplatn.
Pokud pouvte interface podobn ODBC muste nastavit set auto_commit
off.
4.21) Jak vytvoit sloupec obsahujc implicitn aktuln datum?
Pouijte CURRENT_TIMESTAMP:
CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
4.22) Pro jsou moje vnoen dotazy pouvajc IN tak pomal?
Dvj verze (ped 7.4) spojovali vnoen dotazy k vnjm
sekvennm tenm vsledku poddotazu pro kad dek vnjho dotazu.
Pokud poddotaz vrtil nkolik mlo dk IN bylo rychl. Pro ostatn
ppady je vhodn nahradit IN EXISTS:
SELECT *
FROM tab
WHERE col IN (SELECT subcol FROM subtab);
na:
4.15) Jak vytvorit sloupec, kter bude implicitne obsahovat aktuln cas?
SELECT *
FROM tab
Pouzijte CURRENT_TIMESTAMP:
WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col
);
CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Pro urychlen vytvoete index pro subcol.
4.16) Jak provst vnejs spojen (outer join)?
Ve verzi 7.4 a pozdjch, IN pouv stejn sofistikovanou techniku
PostgreSQL podporuje standardn SQL syntaxi pro vnejs spojen. Zde
spojovn tabulek jako ostatn dotazy a je preferovan ped EXISTS.
jsou dva prklady:
SELECT *
4.23) Jak provst vnj spojen (outer join)?
FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
PostgreSQL podporuje vnj spojen tabulek standardnmi SQL pkazy.
Zde jsou dva pklady:
SELECT *
FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
nebo
nebo
SELECT *
SELECT *
FROM t1 LEFT OUTER JOIN USING (col);
FROM t1 LEFT OUTER JOIN t2 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?
Tyto identick dotazy spoj sloupec t1.col k sloupci t2.col, a jeste
vrt vsechny nesprovan rdky t2 (ty, kter nedohled v t2). RIGHT
PostgreSQL nepodporuje dotazy do jin ne aktuln databze.
JOIN by pripojil vsechny nesprovan rdky z t2. FULL JOIN vrt
vsechny sprovan rdky i vsechny zbvajc rdky z obou tabulek.
contrib/dblink nabz funkce umoujc proveden dotazu v jin
Klcov slovo OUTER je voliteln. Bezn operace JOIN se tak oznacuje
databzi. Klient si me otevt simultln pipojen do rznch db
jako vnitrn spojen.
bez omezen.
4.17) Jak provst dotaz naprc nekolika databzemi?
4.25) Me funkce vrtit vce dk nebo sloupc?
Neexistuje zdn zpusob, jak se v dotazu odkazovat na tabulky z jin
V PostgreSQL 7.3 mete jednodue vracet vce dk nebo sloupc z
nez aktuln databze. A to protoze m systmov tabulky ulozen
funkce, viz:
nezvisle v kazd databzi a nen tak plne zrejm, jak by se dotaz
http://techdocs.postgresql.org/guides/SetReturningFunctions.
proveden naprc databzemi mel chovat.
4.26) Pro nelze spolehliv vytvet a ruit doasn tabulky v PL/pgSQL
Jeden z doplnku dblink umoznuje dotaz nad nekolika tabulkami pomoc
funkcch?
funkc. Druh zpusob je simultln pripojen klienta ke vsem
relevantnm databzm a sloucen vsledku na strane klienta.
Peloen kd PL/pgSQL funkce je uloen ve vyrovnvac pamti, tj.
funkce je pekldna pouze pi zmn kdu, nikoliv ped kadm volnm
4.18) Muze funkce vrtit vce rdku nebo sloupcu?
funkce. Nechtnm vedlejm efektem je, e voln funkce sele, kdy
se funkce odkazuje na doasnou tabulku, pokud tato tabulka byla od
Jde to jednoduse pomoc set-returning funkce. Vce na
pekladu funkce zruena (akoliv ji byla znovu vytvoena a existuje).
http://www.postgresql.org/docs/techdocs.17.
Jedinm eenm problmu je pstup k doasn tabulce pomoc EXECUTE,
tj. dynamick provdn dotazu. Tento pkaz zajist opakovan peklad
4.19) Co je prcinou chyby "relation with OID xxxxx does not exist"?
dotazu pi kadm voln funkce.
Nechtenm vedlejsm efektem kesovn SQL dotazu v PL/pgSQL funkci je
4.27) Jak jsou monosti replikace databz?
problm s neplatnmi odkazy na docasn tabulky, kter byly od prvnho
spusten funkce zruseny a znovu vytvoreny pred dalsm spustenm
Existuje nkolik dostupnch een master/slave replikac, tj umouj
PL/pgSQL funkce. Resenm je pouzt prkaz EXECUTE a to proto, ze
modifikace master databze a slave databzm umouj pouze ten. Na
provdec pln SQL prkazu spoustenho prkazem EXECUTE se vytvr
konci http://gborg.PostgreSQL.org/genpage?replication_research najdete
pokazd znovu (neukld se do cache).
jejich seznam. Na een multi-master replikaci se pracuje na
http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.
Tento problm by se nemel vyskytovat u PostgreSQL verze 8.3 a vyssch
verzch.
4.28) Jak jsou monosti ifrovn databz?
4.20) Jak jsou moznosti replikace databz?
* contrib/pgcrypto obsahuje ifrovac funkce pouiteln v SQL
dotazech.
Replikaci databze umoznuje nekolik technoligi. Kazd m urcit
* K ifrovn penosu dat z klienta na server, mus bt server
vhody a nevhody.
peloen s podporou ssl a pepna ssl v postgresql.conf mus bt
nastaven na hodnotu true. Klient mus mt vytvoen zznam hostssl
Master/Slave replikaci podporuje jeden hlavn server, kter prijm
v pg_hba.conf a tak mt povolen reim ssl. Lze pout i jin
pozadavky na zpis a cten, a nekolik podrzench serveru, kter
prostedky, nejen nativn podporu ssl v PostgreSQL, nap. stunel a
umoznuj pouze cten (SELECT). Nejrozsrenejsm volne dostupnm
ssh.
resenm tohoto typu je Slony-I.
* Hesla uivatel databze jsou zaifrovna ponaje verz 7.3. Ve
starch verzch toto chovn muselo bt vynuceno volbou
Replikace typu Multi-master podporuje existenci nekolika serveru s
PASSWORD_ENCRYPTION v postgresql.conf
povolenm zpisem na vce replikovanch serverech. Toto resen zvysuje
* Server me bet na ifrovanm souborovm systmu.
ztez serveru, protoze je nutn synchronizace serveru.
_________________________________________________________________
Nejrozsrenejsm volne dostupnm resenm je PGCluster.
Roziovn PostgreSQL
Jeste existuje nekolik komercnch a hardware resen replikac
podporujcch ruzn modely replikace.
5.1) Napsal jsem UDF funkci, PostgreSQL vak kon dump core?
4.21) Proc v dotazu nejsou rozpoznny nzvy mch tabulek nebo funkc? Proc
Problm me bt zpsoben mnoha okolnostmi. Vyzkouejte si svoji
jsou velk psmena v nzvech automaticky prevedena na mal psmena?
funkci nejdve v njak jednoduch aplikaci.
Nejcastejsm duvodem nerozpoznn nzvu objektu bylo pouzit vlozen
5.2) Jak mohu pispt njakmi ikovnmi datovmi typy a funkcemi do
nzvu sloupce nebo tabulky mezi uvozovky pri zakldn tabulky. Pokud
PostgreSQL?
se nzev zapse mezi uvozovky, pak je case sensitive, a v dusledku
toho je nutn nzvy techto sloupcu nebo tabulek v SQL prkazech tak
Polete sv rozen do konference pgsql-hackers, a ono pak mon
vkldat mezi uvozovky (pokud obsahuj velk psmena). Nekter
skon v podadresi contrib.
programy, jako je naprklad pgAdmin, automaticky pouzvaj uvozovky.
Takze pokud chcete, aby systm identifikoval identifiktor, muste:
5.3) Jak napsat funkci v C vracejc ntici?
* nepouzvat uvozovky v prkazu CREATE TABLE
* v identifiktoru pouzt pouze mal psmena
Funkce vracejc tabulky jsou podporovan PostgreSQL 7.3 a vy pro
* v dotazech vkldat identifiktory do uvozovek
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
vzata v potaz. Pro?
Makefile nem informace o zvislostech mezi hlavikovmi soubory.
Muste provst make clean a pak make. Pokud pouvte gcc, mete
pout pepna --enable-depend pkazu configure k automatickmu
een zvislost pekladaem.
doc/src/FAQ/FAQ_czech.html
View file @
5c996884
This source diff could not be displayed because it is too large. You can
view the blob
instead.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment