2
Frequently Asked Questions
4
Casto kladen� dotazy (FAQ) PostgreSQL
6
Posledn� aktualizace: 29. r�jna 2007 (aktualizov�no pro PostgreSQL
9
Soucasn� spr�vce: Bruce Momjian (bruce@momjian.us)
11
Prelozil: Pavel Stehule (pavel.stehule@gmail.com)
13
Nejaktu�lnejs� verzi tohoto dokumentu naleznete na adrese
14
http://www.postgresql.org/files/documentation/faqs/FAQ.html
16
Odpovedi na ot�zky v�zan� na konkr�tn� platformy naleznete na adrese
17
http://www.postgresql.org/docs/faq/.
18
_________________________________________________________________
22
1.1) Co je to PostgreSQL? Jak� je spr�vn� v�slovnost slova PostgreSQL?
23
1.2) Kdo r�d� v�voj PostgreSQL?
24
1.3) Pod jakou licenc� je PostgreSQL?
25
1.4) Na kter�ch platform�ch lze provozovat PostgreSQL?
26
1.5) Kde mohu z�skat PostgreSQL?
27
1.6) Jak� je posledn� verze?
28
1.7) Kde mohu z�skat podporu?
29
1.8) Jak a kam hl�sit chyby?
30
1.9) Kde najdu informace o zn�m�ch chyb�ch nebo nepodporovan�ch
32
1.10) Jak� je dostupn� dokumentace?
33
1.11) Jak se mohu naucit SQL?
34
1.12) Jak se mohu pripojit k t�mu v�voj�ru?
35
1.13) Jak je na tom PostgreSQL v porovn�n� s jin�mi datab�zemi?
36
1.14) Je PostgreSQL pripraven na aktu�ln� zav�den� letn�ho casu v
39
Dotazy na klientsk� rozhran�
41
2.1) Kter� rozhran� jsou pouziteln� pro PostgreSQL?
42
2.2) Jak� n�stroje lze pouz�t pro PostgreSQL a web?
43
2.3) Existuje grafick� rozhran� pro PostgreSQL?
45
Administrativn� dotazy
47
3.1) Jak nainstalovat PostgreSQL jinam nez do /usr/local/pgsql?
48
3.2) Jak nastavit pravidla pro pr�stup z jin�ch stanic?
49
3.3) Jak vyladit datab�zi na vyss� v�kon?
50
3.4) Jak� m�m lad�c� prostredky?
51
3.5) Co znamen� "Sorry, too many clients", kdyz se zkous�m pripojit?
52
3.6) Proc je nutn� dump a obnoven� (load) datab�ze pri upgradu
54
3.7) Jak� hardware bych mel pouz�vat?
58
4.1) Jak z�skat pouze prvn� r�dek dotazu? N�hodn� r�dek?
59
4.2) Jak z�sk�m seznam tabulek, indexu, datab�z�, a definovan�ch
60
uzivatelu. Mohu videt dotazy, kter� pouz�v� psql pro zobrazen� techto
62
4.3) Jak zmenit datov� typ sloupce?
63
4.4) Jak� je maxim�ln� velikost r�dku, tabulky a datab�ze?
64
4.5) Kolik diskov�ho prostoru je potreba k ulozen� dat z norm�ln�ho
66
4.6) Muj dotaz je pomal� a nepouz�v� vytvoren� indexy. Proc?
67
4.7) Jak zjist�m, jak se vyhodnocuje muj dotaz?
68
4.8) Jak pouz�t case-(in)sensitive regul�rn� v�raz? Jak pouz�t index
69
pro case insensitive hled�n�?
70
4.9) Jak v dotazu detekovat, ze polozka je NULL? Jak bezpecne spojit
71
dva retezce, pokud mohou obsahovat NULL? Lze tr�dit podle toho, jestli
72
je polozka NULL nebo ne?
73
4.10) Jak� jsou rozd�ly mezi ruzn�mi znakov�mi typy?
74
4.11.1) Jak vytvorit serial/auto-increment polozku?
75
4.11.2) Jak z�skat hodnotu SERIAL po vlozen� r�dku?
76
4.11.3) Nezpusob� currval() a nextval() probl�my ve v�ce uzivatelsk�m
78
4.11.4) Proc nen� vygenerovan� c�slo pouzito pri prerusen�
79
transakce?Proc vznikaj� d�ry v c�slov�n� prostrednictv�m sekvence nebo
81
4.12) Co to je OID? Co je to CTID?
82
4.13) Co znamen� chybov� hl�sen� "ERROR: Memory exhausted in
84
4.14) Jak zjist�m, kterou verzi PostgreSQL pouz�v�m?
85
4.15) Jak vytvorit sloupec, kter� bude implicitne obsahovat aktu�ln�
87
4.16) Jak prov�st vnejs� spojen� (outer join)?
88
4.17) Jak prov�st dotaz napr�c nekolika datab�zemi?
89
4.18) Muze funkce vr�tit v�ce r�dku nebo sloupcu?
90
4.19) Co je pr�cinou chyby "relation with OID xxxxx does not exist"?
91
4.20) Jak� jsou moznosti replikace datab�z�?
92
4.21) Proc v dotazu nejsou rozpozn�ny n�zvy m�ch tabulek nebo funkc�?
93
Proc jsou velk� p�smena v n�zvech automaticky prevedena na mal�
95
_________________________________________________________________
99
1.1) Co je to PostgreSQL? Jak� je spr�vn� v�slovnost slova PostgreSQL?
101
V�slovnost PostgreSQL je Post-Gres-Q-L , nebo zjednodusene Postgres .
102
V rade jazyku je slovo PostgreSQL obt�zne vysloviteln�, proto se v
103
hovoru casto pouz�v� zjednodusen� forma n�zvu. Pro ty, kter� by si
104
r�di poslechli v�slovnost, je k dispozici audioz�znam v MP3 form�tu.
106
PostgreSQL je relacn� datab�ze s nekter�mi objektov�mi rysy, kter� m�
107
moznosti tradicn�ch komercn�ch datab�zov�ch syst�mu s nekolika
108
rozs�ren�mi, kter� lze naj�t v DBMS syst�mech pr�st� generace.
109
Pouz�v�n� PostgreSQL nen� omezen� a vesker� zdrojov� k�dy jsou volne
112
Za v�vojem PostgreSQL je mezin�rodn� skupina nez�visl�ch v�voj�ru
113
navz�jem komunikuj�c�ch prostrednictv�m internetu. Tento projekt nen�
114
r�zen z�dnou obchodn� organizac�. Pokud se chcete pridat k projektu,
115
prectete si v�voj�rsk� FAQ na adrese
116
http://www.postgresql.org/files/documentation/faqs/FAQ_DEV.html .
118
1.2) Kdo r�d� v�voj PostgreSQL?
120
Pokud budete hledat organizaci r�d�c� v�voj PostgreSQL, budete
121
zklam�ni. Nic takov�ho neexistuje. Existuj� pouze "core" a CVS skupiny
122
uzivatelu, ale ty existuj� v�ce z administr�torsk�ch duvodu nez z
123
organizacn�ch. Projekt je smerov�n komunitou v�voj�ru a uzivatelu, ke
124
kter� se kdokoliv muze pripojit. Jedin� co potrebuje, je prihl�sit se
125
do elektronick� konference. V�ce ve v�voj�rsk�m FAQ.
127
1.3) Pod jakou licenc� je PostgreSQL?
129
PostgreSQL je predmetem n�sleduj�c�ch autorsk�ch pr�v:
131
D�lc� Copyright (c) 1996-2009, PostgreSQL Global Development Group
132
D�lc� Copyright (c) 1994-6, Regents of the University of California
134
Udeluje se opr�vnen� k uzit�, rozmnozov�n�, prov�den� �prav a
135
rozsirov�n� tohoto softwaru a dokumentace k nemu, pro jak�koli �cely,
136
bez licencn�ho poplatku a bez p�semn� licencn� smlouvy, za podm�nky,
137
ze na vsech jeho kopi�ch je uvedeno ozn�men� o v�se uveden�ch pr�vech,
138
jakoz i obsah tohoto a dvou n�sleduj�c�ch odstavcu.
140
THE UNIVERSITY OF CALIFORNIA ("KALIFORNSK� UNIVERZITA") NEN� V Z�DN�M
141
PR�PADE ODPOVEDNA Z�DN� TRET� OSOBE ZA PR�MOU, NEPR�MOU, ZVL�STN�,
142
NAHODILOU NEBO V�SLEDNOU SKODU, VCETNE USL�HO ZISKU, ZPUSOBENOU UZIT�M
143
TOHOTO SOFTWARU A DOKUMENTACE K NEMU, A TO I V PR�PADE, ZE THE
144
UNIVERSITY OF CALIFORNIA BYLA INFORMOV�NA O MOZNOSTI VZNIKU TAKOV�
147
THE UNIVERSITY OF CALIFORNIA ZEJM�NA NEPOSKYTUJE JAK�KOLI Z�RUKY, A TO
148
NEJEN Z�RUKY OBCHODOVATELNOSTI A VHODNOSTI TOHOTO V�ROBKU KE
149
SPECIFICK�M �CELUM. N�ZE UVEDEN� SOFTWARE JE POSKYTNUT "JAK STOJ� A
150
LEZ�" A THE UNIVERSITY OF CALIFORNIA NEN� POVINNA ZAJISTIT JEHO
151
�DRZBU, PODPORU, AKTUALIZACI, VYLEPSEN� NEBO MODIFIKACI.
153
V�se uveden� je BSD licence, bezn� licence otevren�ho zdroje. Nen� zde
154
z�dn� omezen� ohledne uzit� k�du zdroje. Jsme s t�m spokojeni a nem�me
155
v �myslu na t�to skutecnosti cokoli menit.
157
1.4) Na kter�ch platform�ch lze provozovat PostgreSQL?
159
Strucne receno, PostgreSQL bez� na vsech modern�ch unixov�ch
160
syst�mech. Seznam tech, u kter�ch probehlo testov�n�, naleznete v
161
instalacn�ch instrukc�ch.
163
PostreSQL tak� bez� nativne na vsech Microsof Windows syst�mech
164
odvozen�ch z Microsoft Windows NT jako jsou Windows 2000SP4, WindowsXP
165
a Windows2003. Instalacn� bal�cek naleznete na adrese
166
http://pgfoundry.org/projects/pginstaller. Na stars�ch syst�mech s
167
jeste MS-DOS j�drem lze spustit PostgreSQL s emulacn�m programem
170
D�le existuje port pro Novell Netware 6 port na adrese
171
http://forge.novell.com, a pro OS/2 verze (eComStation) na adrese
172
http://hobbes.nmsu.edu/cgi-bin/h-search?sh=1&button=Search&key=postgre
173
SQL&stype=all&sort=type&dir=%2F .
175
1.5) Kde mohu z�skat PostgreSQL?
177
Pomoc� webov�ho klienta z adresy http://www.postgresql.org/ftp/ nebo
178
klienta ftp z adresy ftp://ftp.postgresql.org/pub/.
180
1.6) Jak� je posledn� verze?
182
Nejnovejs� verz� PostgreSQL je verze 8.2.5
184
V pl�nu je uvolnovat kazdorocne jednu velkou verzi a kazd�ch nekolik
187
1.7) Kde mohu z�skat podporu?
189
Nejcastejs� forma podpory uzivatelum PostgreSQL komunitou je
190
prostrednictv�m e-mailu. Na nasem webov�m serveru naleznete odkaz na
191
str�nky,kde se muzete prihl�sit do elektronick� konference. Pro
192
zac�tek jsou doporucen� konference general nebo bugs.
194
Dals� cestou je IRC kan�l #postgresql na Freenode (irc.freenode.net).
195
K pripojen� pouzijte Unixov� pr�kaz irc -x '#postgresql' "$USER"
196
irc.freenode.net nebo jak�koholiv jin�ho IRC klienta. V t�to s�ti
197
existuje jeste spanelsk� (#postgresql-es) a francouzsk�
198
(#postgresqlfr) verze. Dals� PostgreSQL kan�l naleznete na EFNet.
200
Seznam spolecnost� poskytuj�c� komercn� podporu naleznete na adrese
201
http://techdocs.postgresql.org/companies.php.
203
1.8) Jak a kam hl�sit chyby?
205
Vyplnte formul�r na adrese
206
http://www.postgresql.org/support/submitbug. Na nasem ftp serveru
207
ftp://ftp.postgresql.org/pub/ si overte, ze pouz�v�te aktu�ln� verzi
210
Chyby reportovan� prostrednictv�m chybov�ho formul�re nebo zasl�n�m
211
mailu do PostgreSQL konference obvykle generuje n�sleduj�c� odezvu:
212
* Nejedn� se o chybu, a proc
213
* Jedn� se o zn�mou chybu, kter� je jiz v seznamu �kolu TODO
214
* Tato chyba byla opravena v aktu�ln� verzi
215
* Tato chyba byla jiz opravena ve verzi, kter� zat�m nebyla
217
* Pozadavek na dals� doplnuj�c� informace:
220
+ Test reprodukuj�c� chybu
222
+ Backtrace v�stup debuggeru
223
* Jedn� se o zat�m nezjistenou chybu, pak muzete cekat
224
+ Z�platu odstranuj�c� chybu, kter� bude vlozena do dals� velk�
226
+ Informaci, ze se jedn� o chybu, kterou nelze okamzite resit a
227
je proto prid�na do TODO
229
1.9) Kde najdu informace o zn�m�ch chyb�ch nebo nepodporovan�ch vlastnostech?
231
PostgreSQL podporuje rozs�renou podmnozinu SQL:2003. V nasem TODO
232
naleznete seznam zn�m�ch chyb, chybej�c�ch vlastnost�, a pl�ny do
235
Odezva na pozadavek na novou vlastnost PostgreSQL je obvykle:
236
* Pozadavek je jiz v TODO
237
* Pozadovan� funkce nen� chten� protoze
238
+ Duplikuje jiz existuj�c� funkci, kter� respektuje SQL
240
+ Implementac� funkce by se pr�lis zkomplikoval k�d bez
242
+ Funkce by mohla b�t nebezpecn� nebo nespolehliv�
243
* Pozadavek je prid�n do TODO
245
PostgreSQL nepoz�v� syst�m pro sledov�n� chyb, protoze jsme zjistili,
246
ze je efektivnejs� pr�mo reagovat na maily a udrzovat aktu�ln� TODO. V
247
praxi je snaha o co nejrychlejs� resen� chyb, a chyby, kter� by se
248
mohly projevit u mnoha uzivatelu jsou opravov�ny velice rychle. Jedin�
249
m�sto, kde lze dohledat vsechny zmeny, rozs�ren� a opravy v PostgreSQL
250
je CVS log. Pozn�mky k verzi "Release notes" nezachycuj� vsechny
253
1.10) Jak� je dostupn� dokumentace?
255
PostgreSQL obsahuje vynikaj�c� dokumentaci zahrnuj�c� manu�l,
256
manu�lov� str�nky a testovac� pr�klady. Pod�vejte se do adres�re /doc.
257
Manu�l je pr�stupn� online na http://www.postgresql.org/docs.
259
K dispozici jsou zdarma dve online knihy na adres�ch
260
http://www.postgresql.org/docs/books/awbook.html a
261
http://www.commandprompt.com/ppbook/. Dals� literaturu lze zakoupit.
262
Nejpopul�rnejs� je od Kerryho Douglase. Seznam dostupn� literatury je
263
na http://techdocs.postgresql.org/techdocs/bookreviews.php. Jeste je
264
kolekce technicky orientovan�ch cl�nku tematicky spojen�ch s
265
PostgreSQL na adrese http://techdocs.postgresql.org/.
267
R�dkov� klient psql m� \d pr�kazy pro zobrazen� informac� o typech,
268
oper�torech, funkc�ch, agregacn�ch funkc�, atd. Pouzijte \? pro
269
zobrazen� dostupn�ch pr�kazu.
271
Dals� dokumentaci najdete na nasem webu.
273
1.11) Jak se mohu naucit SQL?
275
Pod�vejte se do v�se uveden� dokumentace. Dals� online knihou je
276
"Teach Yourself SQL in 21 Days, Second Edition" na adrese
277
http://members.tripod.com/er4ebus/sql/index.htm. Mnoho nasich
278
uzivatelu doporucuje knihu The Practical SQL Handbook, Bowman, Judith
279
S., et al., Addison-Wesley. Dals� The Complete Reference SQL, Groff et
282
Dals� online tutori�ly jsou dostupn� na adres�ch:
283
* http://www.intermedia.net/support/sql/sqltut.shtm
284
* http://sqlcourse.com
285
* http://www.w3schools.com/sql/default.asp
286
* http://mysite.verizon.net/Graeme_Birchall/id1.html
288
1.12) Jak se mohu pripojit k t�mu v�voj�ru?
290
Prostudujte si Developer's FAQ.
292
1.13) Jak je na tom PostgreSQL v porovn�n� s jin�mi datab�zemi?
294
Software muzeme porovn�vat z nekolika ruzn�ch pohledu: vlastnosti,
295
v�kon, spolehlivost, podpora a cena.
299
PostgreSQL nab�z� vetsinu funkc� funkcionality velk�ch komercn�ch DBMS
300
syst�mu jako jsou: transakce, vnoren� dotazy, spouste, referencn�
301
integrita a sofistikovan� syst�m zamyk�n�. Poskytujeme urcit� funkce,
302
kter� ostatn� syst�my bezne nepodporuj�. Napr. uzivatelem definovan�
303
typy, dedicnost, pravidla (rules), a MVCC architekturu.
307
V�kon PostgreSQL je srovnateln� s ostatn�mi komercn�mi nebo Open
308
Source datab�zemi. V nekter�ch pr�padech je rychlejs�, jindy
309
pomalejs�. N�s v�kon je obvykle +/-10% vuci ostatn�m datab�z�m.
313
Uvedomujeme si, ze datab�ze mus� b�t stoprocentne spolehliv�, jinak je
314
nepouziteln�. Snaz�me se, aby kazd� verze byla dobre otestov�na a
315
obsahovala minimum chyb. Kazd� verze je minim�lne nekolik mes�cu v
316
beta testovac�m rezimu. Do produkcn�ho rezimu se dostane, az kdyz
317
nedoch�z� k dals�m zmen�m nebo oprav�m. Ver�me, ze jsem v�ce nez
318
srovnateln� s ostatn�mi datab�zemi v t�to oblasti.
322
Na nasich internetov�ch konferenc�ch se setk�v� velk� skupina v�voj�ru
323
a uzivatelu pri resen� vyskytuj�c�ch se probl�mu. Nase internetov�
324
konference umoznuj� kontakt velk� skupiny v�voj�ru a uzivatelu.
325
Nemuzeme garantovat opravu chyby, ale komercn� DBMSs tak� vzdy
326
negarantuj� resen� probl�mu. Ver�me ale, ze d�ky pr�m�mu kontaktu na
327
v�voj�re, nasi uzivatelskou komunitu, manu�lum, a dostupn�m zdrojov�m
328
k�dum m�me leps� podporu nez ostatn� DBMSs. Pro ty, kter� preferuj�
329
komercn� "per-incident" podporu, existuje spolecnost�, kter� ji
330
nab�zej� (FAQ sekce 1.7.)
334
PostgreSQL lze pouz�vat bezplatne (a to i pro komercn� pouzit�). Tak�
335
muzete neomezene pouz�vat n�s k�d ve sv�ch produktech s v�jimkami
336
specifikovan�mi v nas� licenci (preb�r�me BSD licenci).
338
1.14) Je PostgreSQL pripraven na aktu�ln� zav�den� letn�ho casu v nekter�ch
341
Poc�naje verz� 8.0.[4+] podporuje PostgreSQL letn� cas tak� pro USA.
342
Podpora letn�ho casu (daylight saving time) pro Kanadu a Z�padn�
343
Austr�lii je obsazena ve verz�ch 8.0.[10+] a 8.1.[6+] a vsech
344
n�sleduj�c�ch verz�ch. Stars� verze pouz�valy syst�movou datab�zi
345
casov�ch z�n obsahuj�c�, krome jin�ho, informaci o tom, zda se pro
346
danou casovou z�nu rozlisuje mezi letn�m a zimn�m casem.
347
_________________________________________________________________
349
Dotazy na klientsk� rozhran�
351
2.1) Kter� rozhran� jsou pouziteln� pro PostgreSQL?
353
PostgreSQL se distribuuje pouze s rozhran�m pro jazyk C a embedded C.
354
Vsechna dals� rozhran� predstavuj� nez�visl� projekty, kter� je treba
355
st�hnout z internetu samostatne. Osamostatnen� techto projektu
356
umoznuje nez�vislost v�vojov�ch t�mu a moznost vyd�vat nov� verze bez
357
ohledu na vyd�n� nov� verze PostgreSQL.
359
Nekter� programovac� jazyky jako je napr. PHP obsahuj� rozhran� pro
360
PostgreSQL. Rozhran� pro jazyky jako je Perl, Tcl, Python a mnoho
361
dals�ch jsou dostupn� na adrese: http://gborg.postgresql.org v sekci
364
2.2) Jak� n�stroje lze pouz�t pro PostgreSQL a web?
366
Dobr�m �vodem do problematiky datab�z� v prostred� webov�ch str�nek
367
muze b�t web http://www.webreview.com.
369
PHP (http://www.php.net) je vynikaj�c�m rozhran�m pro tvorbu webu.
371
Pro slozitejs� �lohy se casto pouz�v� Perl a jeho BDB:Pg rozhran� s
372
podporou CGI - CGI.pm nebo mod_perl(u).
374
2.3) Existuje grafick� rozhran� pro PostgreSQL?
376
K dispozici je rada grafick�ch n�stroju podporuj�c�ch PostgreSQL a to
377
od komercn�ch nebo open source v�voj�ru. Podrobn� seznam naleznete na
378
adrese http://www.postgresql.org/docs/techdocs.54.
379
_________________________________________________________________
381
Administrativn� dotazy
383
3.1) Jak nainstalovat PostgreSQL jinam nez do /usr/local/pgsql?
385
Pri spousten� configure nastavte parametr --prefix
387
3.2) Jak nastavit pravidla pro pr�stup z jin�ch stanic?
389
Ve v�choz� konfiguraci, PostgreSQL umoznuje pouze pripojen� z
390
lok�ln�ho uzivatele prostrednictv�m Unix domain sockets nebo TCP/IP
391
spojen�. Bez modifikace listen_addresses v souboru postgresql.conf, a
392
povolen� adresy v souboru $PGDATA/pg_hba.conf se nelze pripojit k
393
PostgreSQL z ostatn�ch stanic. Zmena v�se zm�nen�ch parametru vyzaduje
394
restart datab�zov�ho serveru.
396
3.3) Jak vyladit datab�zi na vyss� v�kon?
398
V�kon syst�mu muzete ovlivnit ve trech oblastech:
402
* Pouzit�m indexu vcetne c�stecn�ch a funkcion�ln�ch
403
* Pouzit�m COPY m�sto opakovan�ch INSERTu
404
* Sloucen�m mnoha SQL pr�kazu do jedn� transakce sn�zen�m rezie na
406
* Pouz�v�n�m CLUSTERU, pokud nac�t�te vets� pocet r�dek podle indexu
407
* Pouzit�m klauzule LIMIT v poddotazech
408
* Pouzit�m predpripraven�ch dotazu
409
* Pouz�v�n�m ANALYZE. Tento pr�kaz aktualizuje statistiky, kter� se
410
pouz�vaj� pri optimalizaci dotazu
411
* Pravideln� pouzit� VACUUM nebo pouz�v�n� pg_autovacuum
412
* Odstranen�m indexu pred rozs�hl�mi zmenami v datech
416
Urcit� parametry v souboru postgresql.conf maj� vliv na v�kon serveru.
417
Detaily naleznete v pr�rucce Administr�tora v Server Run-time
418
Environment/Run-time Configuration. Dals� koment�re naleznete v
419
http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.ht
420
ml a http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html.
424
Vliv hardware na v�kon serveru je pops�n v dokumentech
425
http://candle.pha.pa.us/main/writings/pgsql/hw_performance/index.html
426
a http://www.powerpostgresql.com/PerfList/.
428
3.4) Jak� m�m lad�c� prostredky?
430
Nastaven�m log_* promenn�ch v konfiguraci serveru si vynut�te logov�n�
431
dotazu a procesn�ch statistik, kter� V�m mohou pomoci pri laden� a
434
3.5) Co znamen� "Sorry, too many clients", kdyz se zkous�m pripojit?
436
Prekrocil jste v�choz� limit, kter� je 100 soucasne pripojen�ch
437
uzivatelu. V konfiguraci serveru v postgresql.conf tuto hodnotu muzete
438
zvetsit zmenou hodnoty max_connection. Nezapomente restartovat server.
440
3.6) Proc je nutn� dump a obnoven� (load) datab�ze pri upgradu PostgreSQL?
442
Zpusob c�slov�n� je pops�n v dokumentaci na
443
http://www.postgresql.org/support/versioning. Instrukce k proveden�
444
migrace na vyss� verzi jsou takt�z v dokumentaci na adrese
445
http://www.postgresql.org/docs/current/static/install-upgrading.html.
447
3.7) Jak� hardware bych mel pouz�vat?
449
Jelikoz PC jsou vetsinou kompatibiln�, lid� maj� tendence verit, ze
450
vsechna PC jsou stejne kvalitn�. Coz nen� pravda. Pameti ECC, SCSI a
451
kvalitn� z�kladn� desky jsou mnohem spolehlivejs� a v�konnejs� nez
452
lacinejs� hardware. PostgreSQL pobez� na vetsine hardwaru, nicm�ne
453
pokud je pro V�s spolehlivost a v�kon syst�mu dulezit�, je dobr�
454
venovat cas nalezen� vhodn� hardwarov� konfigurace. Na nasich
455
elektronick�ch konferenc�ch muzete diskutovat o vhodn�ch konfigurac�ch
457
_________________________________________________________________
461
4.1) Jak z�skat pouze prvn� r�dek dotazu? N�hodn� r�dek?
463
Pokud potrebujete pouze nekolik r�dku a pokud v�te kolik, pouzijte
464
SELECT LIMIT. Pokud bude mozn� pouz�t index shoduj�c� se s ORDER BY,
465
je mozn�, ze se nebude prov�det cel� dotaz. Pokud nezn�te pocet
466
z�znamu, pouzijte kurzor a pr�kaz FETCH.
468
Pro v�ber n�hodn�ho r�dku pouzijte pr�kaz ve tvaru:
474
4.2) Jak z�sk�m seznam tabulek, indexu, datab�z�, a definovan�ch uzivatelu.
475
Mohu videt dotazy, kter� pouz�v� psql pro zobrazen� techto informac�?
477
V psql pr�kazem \dt z�sk�te seznam tabulek. �pln� seznam pr�kazu psql
478
z�sk�te pr�kazem \?. Alternativne si muzete prostudovat zdrojov� k�d
479
psql - soubor pgsql/src/bin/psql/describe.c, kter� obsahuje SQL
480
pr�kazy, kter� jsou generov�ny pro z�sk�n� v�stupu psql "backslash"
481
pr�kazu. Tak� muzete nastartovat psql s parametrem -E, kter� zpusob�
482
zobrazen� vsech SQL pr�kazu, kter� se odes�laj� na server. PostgreSQL
483
tak� podporuje SQL standard INFORMACN� SCH�MATA (standardn� syst�mov�
484
tabulky). Klasick�m dotazem do syst�mov�ch tabulek z�sk�te pozadovan�
485
informace o strukture datab�ze.
487
Syst�mov� tabulky PostgreSQL (mimo r�mec SQL standardu) pouz�vaj�
488
prefix pg_. Pro zjisten� struktury datab�ze je muzete pouz�t tak�, i
489
kdyz preferov�ny jsou dotazy do informacn�ho sch�matu.
491
Seznam vsech datab�z� z�sk�te pr�kazem psql -l
493
Dals� inspiraci najdete v souboru pgsql/src/tutorial/syscat.source.
494
Obsahuje ilustracn� SELECTy potrebn� k z�sk�n� informac� z syst�mov�ch
497
4.3) Jak zmenit datov� typ sloupce?
499
Ve verz�ch 8.0 a pozdejs�ch jednoduse:
500
ALTER TABLE ALTER COLUMN TYPE
504
ALTER TABLE tab ADD COLUMN new_col new_data_type;
505
UPDATE tab SET new_col = CAST(old_col AS new_data_type);
506
ALTER TABLE tab DROP COLUMN old_col;
509
Po zmene spustte pr�kaz VACUUM FULL, aby doslo k uvolnen� diskov�ho
510
prostoru pouzit�ho v tu chv�li jiz neplatn�mi z�znamy.
512
4.4) Jak� je maxim�ln� velikost r�dku, tabulky a datab�ze?
514
PostgreSQL m� tato omezen�:
516
Maxim�ln� velikost datab�ze: neomezena (existuj� 32TB db)
517
Maxim�ln� velikost tabulky: 32 TB
518
Maxim�ln� velikost r�dky: 480GB
519
Maxim�ln� velikost polozky 1 GB
520
Maxim�ln� pocet r�dku v tabulce: neomezeno
521
Maxim�ln� pocet sloupcu v tabulce: 250-1600 podle typu
522
Maxim�ln� pocet indexu na tabulce: neomezeno
524
Ve skutecnosti nic nen� neomezeno, limitem b�v� vzdy dostupn� diskov�
525
pamet nebo velikost operacn� pameti. Pokud m�te nekterou z techto
526
hodnot neobvykle velkou, muze doj�t ke sn�zen� v�konu.
528
Maxim�ln� velikost tabulky je 32 TB a nevyzaduje podporu velk�ch
529
souboru operacn�m syst�mem. Velk� tabulky se ukl�daj� do nekolika 1 GB
530
souboru takze limity souborov�ho syst�mu nejsou podstatn�.
532
Maxim�ln� velikost tabulky a maxim�ln� pocet sloupcu muzeme
533
zectyrn�sobit nastaven�m velikosti bloku na 32K.
535
Indexy jsou povolen� pouze na sloupc�ch jejichz d�lka je mens� nez
536
2000 znaku. Pokud tuto d�lku prekroc�me a index potrebujeme pro
537
zajisten� jednoznacnosti, je vhodnejs� pouz�t funkcion�ln� index nad
538
MD5 funkc� nebo fulltextov� index.
540
4.5) Kolik diskov�ho prostoru je potreba k ulozen� dat z norm�ln�ho textov�ho
543
PostgreSQL vyzaduje az petin�sobek diskov�ho prostoru k ulozen� dat z
546
Napr�klad, uvazujme soubor se 100 tis�ci r�dky obsahuj�c� na kazd�
547
r�dce cel� c�slo a textov� popis. Text je v prumerne dvacet bytu
548
dlouh�. Textov� soubor bude 2.8 MB dlouh�. Velikost datab�ze
549
obsahuj�c� odpov�daj�c� data bude zhruba 5.2 MB.
550
24 bytu: hlavicka r�dku (priblizne)
551
24 bytu: jedna celoc�seln� polozka a jedna textov�
552
+ 4 byty: ukazatel na str�nku k entici
553
------------------------------------------------------
556
Velikost datov� str�nky PostgreSQL je 8192 bytu (8KB)
558
---------------------- = 158 r�dek na str�nku
562
----------------------- = 633 str�nek (zaokrouhleno nahoru)
565
633 datov�ch str�nek * 8192 bytu na kazdou str�nku = 5,185,536 bytu (5.2 MB)
567
Indexy nemaj� tak velkou rezii, ale mohou b�t tak� velk�, protoze
568
obsahuj� indexovan� data.
570
Hodnoty NULL jsou ulozeny v bitmap�ch, takze zab�raj� jen velmi m�lo
573
4.6) Muj dotaz je pomal� a nepouz�v� vytvoren� indexy. Proc?
575
Kazd� dotaz nemus� nutne pouz�t existuj�c� indexy. Index se pouzije
576
tehdy, kdyz je tabulka vets� nez urcit� minim�ln� velikost, a dotaz
577
vyb�r� pouze procentu�lne malou c�st r�dku tabulky. To proto, ze
578
n�hodn� pr�stup k disku dan� cten�m indexu muze b�t pomalejs� nez
579
line�rn� cten� tabulky nebo sekvencn� cten�.
581
PostgreSQL rozhoduje o pouzit� indexu na z�klade statistiky pr�stupu k
582
tabulce. Tyto statistiky se shromazduj� pr�kazy VACUUM ANALYZE nebo
583
ANALYZE. D�ky statistik�m m� optimizer informaci o poctu r�dek v
584
tabulce a muze l�pe rozhodnout o pouzit� indexu. Statistiky se uplatn�
585
pri urcen� optim�ln�ho porad� a metody spojen� tabulek. Statistiky by
586
se meli aktualizovat opakovane, tak jak se men� obsah tabulek.
588
Indexy nejsou obycejne pouzity pro setr�den� nebo spojen� tabulek.
589
Sekvencn� zpracov�n� n�sledovan� explicitn�m tr�den�m je obycejne
590
rychlejs� nez pouzit� indexu na velk� tabulce.
592
Jinak je tomu v pr�pade pouzit� LIMIT a ORDER BY, pri kter�m se
593
vetsinou index pouzije, jelikoz je v�sledkem pouze mal� c�st tabulky.
595
Pokud si mysl�te, ze optimizer mylne zvolil sekvencn� prohled�v�n�
596
tabulky, pouzijte pr�kaz SET enable_seqscan TO 'off' a zkuste zda je
597
prohled�v�n� s indexem rychlejs�.
599
Pri vyhled�v�n� na z�klade vzoru jako je napr. oper�tor LIKE nebo ~ se
600
indexy pouzij� pouze za urcit�ch skutecnost�:
601
* zac�tek hledan�ho vzoru mus� b�t ukotven k zac�tku, tj.
602
+ vzor LIKE nesm� zac�nat %
603
+ ~ regul�rn� v�raz mus� zac�nat ^
604
* vzor nesm� zac�nat intervalem, napr. [a-e]
605
* vyhled�van�, kter� nen� Case sensitiv jako je ILIKE nebo ~*
606
nepouz�v� indexy. Muzete ale pouz�t funkcion�ln� indexy, kter�
607
jsou pops�ny v sekci 4.8
608
* pri inicializaci datab�ze (initdb) mus� b�t pouzito C locale nebo
609
vytvorte speci�ln� text_pattern_index, kter� umozn�, pri
610
respektov�n� zm�nen�ch podm�nek pouzit� indexu operac� LIKE. Pro
611
vyhled�v�n� cel�ch slov je mozn� a v�hodn� pouz�t fulltext.
613
4.7) Jak zjist�m, jak se vyhodnocuje muj dotaz?
615
Pod�vejte se do n�povedy k pr�kazu EXPLAIN.
617
4.8) Jak pouz�t case-(in)sensitive regul�rn� v�raz? Jak pouz�t index pro case
620
Vyhled�v�n� prostrednictv�m regul�rn�ch vzoru zajistuje oper�tor ~,
621
kter� je case-sensitive. Jeho case-insensitive varianta je oper�tor
622
~*. Case-insensitive variac� oper�toru LIKE je oper�tor ILIKE.
624
Case-insensitive vyhled�n� se res�:
627
WHERE lower(col) = 'abc';
629
Tento dotaz nepouzije standardn� index. Mus�te pouz�t tzv.
631
CREATE INDEX tabindex ON tab (lower(col));
633
Pokud index vytvor�me jako unik�tn�, tak muzeme ukl�dat retezce
634
obsahuj�c� mal� i velk� p�smena, ale nikoliv retezce, kter� se od sebe
635
odlisuj� jen v mal�ch a velk�ch p�smenech. K zajisten� z�pisu retezce
636
obsahuj�c� pouze mal� nebo pouze velk� p�smena pouzijte CHECK kontroly
639
4.9) Jak v dotazu detekovat, ze polozka je NULL? Jak bezpecne spojit dva
640
retezce, pokud mohou obsahovat NULL? Lze tr�dit podle toho, jestli je polozka
643
Pokud chcete testovat hodnotu NULL pouzijte oper�tor IS:
648
K spojen� retezcu, kter� mohou obsahovat hodnotu NULL, pouz�vejte
649
funkci COALESCE(), napr.:
650
SELECT COALESCE(col1, '') || COALESCE(col2, '')
653
Pokud chcete tr�dit podle hodnoty NULL, pouzijte v�raz IS NULL nebo IS
654
NOT NULL v klauzuli ORDER. Hodnota pravda m� prednost pred hodnotou
655
false a tedy pokud pouzijete:
658
ORDER BY (col IS NOT NULL)
660
tak z�znamy s NULL budou na zac�tku setr�den�ch dat.
662
4.10) Jak� jsou rozd�ly mezi ruzn�mi znakov�mi typy?
664
Typ Intern� n�zev Pozn�mky
665
VARCHAR(n) varchar n urcuje maxim�ln� d�lku
666
CHAR(n) bpchar retezec je do dan� d�lky rozs�ren mezerami
667
TEXT text bez omezen� d�lky
668
BYTEA bytea pole bytu nespecifikovan� d�lky
669
"char" char jeden znak
671
Na intern� n�zvy muzete narazit v syst�mov�m katalogu nebo v nekter�ch
674
Ctyri prvn� typy jsou tzv. varlena typy (prvn� ctyri byty na disku
675
jsou obsahuj� d�lku, ostatn� obsahuj� vlastn� data). Skutecne obsazen�
676
prostor je tedy o neco m�lo vets� nez deklarovan� velikost. Na druhou
677
stranu, dels� retezce jsou komprimov�ny, takze obsazen� prostor na
678
disku muze b�t mens� nez se cek�.
680
VARCHAR(n) je vhodn� pro ukl�d�n� ruzne dlouh�ch retezcu u kter�ch
681
zn�me d�lkov� omezen�, TEXT pro retezce bez omezen� d�lky (maximum je
684
CHAR(n) se pouz�v� pro ulozen� stejne dlouh�ch retezcu. CHAR(n) dopln�
685
mezerami na specifikovanou d�lku, VARCHAR(n) hodnoty se ukl�daj� tak
686
jak jsou. BYTEA je pro ukl�d�n� bin�rn�ch dat - non ASCII hodnot.
687
Vsechny zm�nen� typy maj� podobn� v�konov� charakteristiky.
689
4.11.1) Jak vytvorit serial/auto-increment polozku?
691
V PostgreSQL muzete pouz�t datov� typ SERIAL. Jeho pouzit�m se
692
automaticky vytvor� sekvence. Napr�klad:
693
CREATE TABLE person (
698
je automaticky transformov�no na:
699
CREATE SEQUENCE person_id_seq;
700
CREATE TABLE person (
701
id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
705
Podrobnejs� informace najdete v manu�lu v popisu pr�kazu
708
4.11.2) Jak z�skat hodnotu SERIAL po vlozen� r�dku?
710
Nejjednoduss�m zpusob, jak z�skat vygenerovanou hodnotu typu SERIAL,
711
je vyuz�t klauzuli RETURNING. Pro tabulku z 4.11.1 vypad� takto:
712
INSERT INTO person (name) VALUES ('Blaise Pascal') RETURNING id;
714
Tak� muzete pouz�t funkci nextvall() a jej� v�sledek pouz�t v pr�kazu
715
INSERT, nebo zavolat currval() po proveden� pr�kazu INSERT.
717
4.11.3) Nezpusob� currval() a nextval() probl�my ve v�ce uzivatelsk�m
720
Ne, currval vrac� vzdy hodnotu, kter� byla vygenerov�na pro v�s.
722
4.11.4) Proc nen� vygenerovan� c�slo pouzito pri prerusen� transakce?Proc
723
vznikaj� d�ry v c�slov�n� prostrednictv�m sekvence nebo typu SERIAL?
725
Pot� co sekvence vygeneruje nov� c�slo, tak se nedoch�z� k zamcen�
726
sekvence a necek� se na �spesn� nebo ne�spesn� dokoncen� transakce.
727
Odvol�n�m transakce, kter� si vyz�dala c�sla sekvence se tato c�sla
730
4.12) Co to je OID? Co je to CTID?
732
V pr�pade, ze tabulku nezaloz�me s atributem WITHOUT OIDS, tak m�
733
kazd� r�dek unik�tn� identifikacn� c�slo OID. Toto c�slo je 4 bajtov�
734
cel� c�slo, kter� je jedinecn� v cel� instalaci. Pretece po 4
735
miliard�ch r�dku. PostgreSQL pouz�v� OIDs jako intern� linky v
736
intern�ch syst�mov�ch tabulk�ch.
738
K z�sk�n� unik�tn�ho c�sla v nesyst�mov�ch tabulk�ch je vhodnejs�
739
pouzit� typu SERIAL nez OID, jelikoz sekvence SERIAL se pouz�v� pouze
740
pro jednu tabulku a je tud�z m�ne n�chyln� na pretecen�. Pokud byste
741
se toho ob�vali, pouzijte typ SERIAL8.
743
CTID se pouz�v� k identifikaci konkr�tn�ho fyzick�ho r�dku. CTID se
744
men� pokud je r�dek modifikov�n nebo znovu nacten. Pouz�vaj� ho indexy
745
jako adresaci fyzick�ch r�dku.
747
4.13) Co znamen� chybov� hl�sen� "ERROR: Memory exhausted in
750
Pravdepodobne jste vycerpal dostupnou virtu�ln� pamet, nebo tvuj
751
kernel m� pr�lis n�zk� limity u urcit�ch zdroju. Pred startem
752
PostgreSQL vyzkousejte:
756
Mozn�, ze se projde pouze jeden pr�kaz - z�lez� to na vasem shellu.
757
Mel by zvednout limity datov�ch segmentu vasich procesu na dostatecne
758
velkou hodnotu a snad umoznit dokoncen� dotazu. Zmena limitu se bude
759
aplikovat pouze na aktu�ln� proces a na vsechny nove vytvoren�
760
procesy. Jestlize m�te probl�m s SQL klientem, protoze v�m server
761
vr�til pr�lis dat, zkuste to pred startem klienta.
763
4.14) Jak zjist�m, kterou verzi PostgreSQL pouz�v�m?
768
4.15) Jak vytvorit sloupec, kter� bude implicitne obsahovat aktu�ln� cas?
770
Pouzijte CURRENT_TIMESTAMP:
771
CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
773
4.16) Jak prov�st vnejs� spojen� (outer join)?
775
PostgreSQL podporuje standardn� SQL syntaxi pro vnejs� spojen�. Zde
778
FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
782
FROM t1 LEFT OUTER JOIN t2 USING (col);
784
Tyto identick� dotazy spoj� sloupec t1.col k sloupci t2.col, a jeste
785
vr�t� vsechny nesp�rovan� r�dky t2 (ty, kter� nedohled� v t2). RIGHT
786
JOIN by pripojil vsechny nesp�rovan� r�dky z t2. FULL JOIN vr�t�
787
vsechny sp�rovan� r�dky i vsechny zb�vaj�c� r�dky z obou tabulek.
788
Kl�cov� slovo OUTER je voliteln�. Bezn� operace JOIN se tak� oznacuje
789
jako vnitrn� spojen�.
791
4.17) Jak prov�st dotaz napr�c nekolika datab�zemi?
793
Neexistuje z�dn� zpusob, jak se v dotazu odkazovat na tabulky z jin�
794
nez aktu�ln� datab�ze. A to protoze m� syst�mov� tabulky ulozen�
795
nez�visle v kazd� datab�zi a nen� tak �plne zrejm�, jak by se dotaz
796
proveden� napr�c datab�zemi mel chovat.
798
Jeden z doplnku dblink umoznuje dotaz nad nekolika tabulkami pomoc�
799
funkc�. Druh� zpusob je simult�ln� pripojen� klienta ke vsem
800
relevantn�m datab�z�m a sloucen� v�sledku na strane klienta.
802
4.18) Muze funkce vr�tit v�ce r�dku nebo sloupcu?
804
Jde to jednoduse pomoc� set-returning funkce. V�ce na
805
http://www.postgresql.org/docs/techdocs.17.
807
4.19) Co je pr�cinou chyby "relation with OID xxxxx does not exist"?
809
Nechten�m vedlejs�m efektem kesov�n� SQL dotazu v PL/pgSQL funkci je
810
probl�m s neplatn�mi odkazy na docasn� tabulky, kter� byly od prvn�ho
811
spusten� funkce zruseny a znovu vytvoreny pred dals�m spusten�m
812
PL/pgSQL funkce. Resen�m je pouz�t pr�kaz EXECUTE a to proto, ze
813
prov�dec� pl�n SQL pr�kazu spousten�ho pr�kazem EXECUTE se vytv�r�
814
pokazd� znovu (neukl�d� se do cache).
816
Tento probl�m by se nemel vyskytovat u PostgreSQL verze 8.3 a vyss�ch
819
4.20) Jak� jsou moznosti replikace datab�z�?
821
Replikaci datab�ze umoznuje nekolik technoligi�. Kazd� m� urcit�
824
Master/Slave replikaci podporuje jeden hlavn� server, kter� prij�m�
825
pozadavky na z�pis a cten�, a nekolik podr�zen�ch serveru, kter�
826
umoznuj� pouze cten� (SELECT). Nejrozs�renejs�m volne dostupn�m
827
resen�m tohoto typu je Slony-I.
829
Replikace typu Multi-master podporuje existenci nekolika serveru s
830
povolen�m z�pisem na v�ce replikovan�ch serverech. Toto resen� zvysuje
831
z�tez serveru, protoze je nutn� synchronizace serveru.
832
Nejrozs�renejs�m volne dostupn�m resen�m je PGCluster.
834
Jeste existuje nekolik komercn�ch a hardware resen� replikac�
835
podporuj�c�ch ruzn� modely replikace.
837
4.21) Proc v dotazu nejsou rozpozn�ny n�zvy m�ch tabulek nebo funkc�? Proc
838
jsou velk� p�smena v n�zvech automaticky prevedena na mal� p�smena?
840
Nejcastejs�m duvodem nerozpozn�n� n�zvu objektu bylo pouzit� vlozen�
841
n�zvu sloupce nebo tabulky mezi uvozovky pri zakl�d�n� tabulky. Pokud
842
se n�zev zap�se mezi uvozovky, pak je case sensitive, a v dusledku
843
toho je nutn� n�zvy techto sloupcu nebo tabulek v SQL pr�kazech tak�
844
vkl�dat mezi uvozovky (pokud obsahuj� velk� p�smena). Nekter�
845
programy, jako je napr�klad pgAdmin, automaticky pouz�vaj� uvozovky.
846
Takze pokud chcete, aby syst�m identifikoval identifik�tor, mus�te:
847
* nepouz�vat uvozovky v pr�kazu CREATE TABLE
848
* v identifik�toru pouz�t pouze mal� p�smena
849
* v dotazech vkl�dat identifik�tory do uvozovek