~ubuntu-branches/ubuntu/lucid/postgresql-8.4/lucid-proposed

« back to all changes in this revision

Viewing changes to doc/FAQ_czech

  • Committer: Bazaar Package Importer
  • Author(s): Martin Pitt
  • Date: 2009-09-06 14:11:13 UTC
  • mfrom: (1.1.5 upstream)
  • Revision ID: james.westby@ubuntu.com-20090906141113-qf5f3hkw7n036jfy
Tags: 8.4.1-1
* Urgency medium due to security fix.
* New upstream security/bug fix release:
  - Disallow "RESET ROLE" and "RESET SESSION AUTHORIZATION" inside
    security-definer functions. This covers a case that was missed in the
    previous patch that disallowed "SET ROLE" and "SET SESSION
    AUTHORIZATION" inside security-definer functions. [CVE-2007-6600]
  - Fix WAL page header initialization at the end of archive recovery.
    This could lead to failure to process the WAL in a subsequent archive
    recovery.
  - Fix "cannot make new WAL entries during recovery" error.
  - Fix problem that could make expired rows visible after a crash.
    This bug involved a page status bit potentially not being set
    correctly after a server crash.
  - Make "LOAD" of an already-loaded loadable module into a no-op.
    Formerly, "LOAD" would attempt to unload and re-load the module,
    but this is unsafe and not all that useful.
  - Make window function PARTITION BY and ORDER BY items always be
    interpreted as simple expressions.
    In 8.4.0 these lists were parsed following the rules used for
    top-level GROUP BY and ORDER BY lists. But this was not correct per
    the SQL standard, and it led to possible circularity.
  - Fix several errors in planning of semi-joins. These led to wrong query
    results in some cases where IN or EXISTS was used together with another
    join.
  - Fix handling of whole-row references to subqueries that are within
    an outer join. An example is SELECT COUNT(ss.-) FROM ... LEFT JOIN
    (SELECT ...) ss ON .... Here, ss.- would be treated as
    ROW(NULL,NULL,...) for null-extended join rows, which is not the same as
    a simple NULL.  Now it is treated as a simple NULL.
  - Fix locale handling with plperl. This bug could cause the server's
    locale setting to change when a plperl function is called, leading to
    data corruption.
  - Fix handling of reloptions to ensure setting one option doesn't
    force default values for others.
  - Ensure that a "fast shutdown" request will forcibly terminate open
    sessions, even if a "smart shutdown" was already in progress.
  - Avoid memory leak for array_agg() in GROUP BY queries.
  - Treat to_char(..., 'TH') as an uppercase ordinal suffix with
    'HH'/'HH12'.  It was previously handled as 'th'.
  - Include the fractional part in the result of EXTRACT(second) and
    EXTRACT(milliseconds) for time and time with time zone inputs.
    This has always worked for floating-point datetime configurations,
    but was broken in the integer datetime code.
  - Fix overflow for INTERVAL 'x ms' when "x" is more than 2 million
    and integer datetimes are in use.
  - Improve performance when processing toasted values in index scans.
    This is particularly useful for PostGIS.
  - Fix a typo that disabled commit_delay.
  - Output early-startup messages to "postmaster.log" if the server is
    started in silent mode. Previously such error messages were discarded,
    leading to difficulty in debugging.
  - Remove translated FAQs. They are now on the wiki. The main FAQ was moved
    to the wiki some time ago.
  - Fix pg_ctl to not go into an infinite loop if "postgresql.conf" is
    empty.
  - Fix several errors in pg_dump's --binary-upgrade mode. pg_dump
    --binary-upgrade is used by pg_migrator.
  - Fix "contrib/xml2"'s xslt_process() to properly handle the maximum
    number of parameters (twenty).
  - Improve robustness of libpq's code to recover from errors during
    "COPY FROM STDIN".
  - Avoid including conflicting readline and editline header files when
    both libraries are installed.
  - Work around gcc bug that causes "floating-point exception" instead
    of "division by zero" on some platforms.
* debian/control: Bump Standards-Version to 3.8.3 (no changes necessary).

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
 
2
 
                          Frequently Asked Questions
3
 
                                       
4
 
   Casto kladen� dotazy (FAQ) PostgreSQL
5
 
   
6
 
   Posledn� aktualizace: 29. r�jna 2007 (aktualizov�no pro PostgreSQL
7
 
   8.3)
8
 
   
9
 
   Soucasn� spr�vce: Bruce Momjian (bruce@momjian.us)
10
 
   
11
 
   Prelozil: Pavel Stehule (pavel.stehule@gmail.com)
12
 
   
13
 
   Nejaktu�lnejs� verzi tohoto dokumentu naleznete na adrese
14
 
   http://www.postgresql.org/files/documentation/faqs/FAQ.html
15
 
   
16
 
   Odpovedi na ot�zky v�zan� na konkr�tn� platformy naleznete na adrese
17
 
   http://www.postgresql.org/docs/faq/.
18
 
     _________________________________________________________________
19
 
   
20
 
                               Obecn� ot�zky
21
 
                                      
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
31
 
   vlastnostech?
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
37
 
   nekter�ch zem�ch?
38
 
   
39
 
                        Dotazy na klientsk� rozhran�
40
 
                                      
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?
44
 
   
45
 
                           Administrativn� dotazy
46
 
                                      
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
53
 
   PostgreSQL?
54
 
   3.7) Jak� hardware bych mel pouz�vat?
55
 
   
56
 
                              Provozn� dotazy
57
 
                                      
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
61
 
   informac�?
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
65
 
   textov�ho souboru?
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
77
 
   prostred�?
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
80
 
   typu SERIAL?
81
 
   4.12) Co to je OID? Co je to CTID?
82
 
   4.13) Co znamen� chybov� hl�sen� "ERROR: Memory exhausted in
83
 
   AllocSetAlloc()"?
84
 
   4.14) Jak zjist�m, kterou verzi PostgreSQL pouz�v�m?
85
 
   4.15) Jak vytvorit sloupec, kter� bude implicitne obsahovat aktu�ln�
86
 
   cas?
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�
94
 
   p�smena?
95
 
     _________________________________________________________________
96
 
   
97
 
                               Obecn� ot�zky
98
 
                                      
99
 
  1.1) Co je to PostgreSQL? Jak� je spr�vn� v�slovnost slova PostgreSQL?
100
 
  
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.
105
 
   
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
110
 
   dostupn�.
111
 
   
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 .
117
 
   
118
 
  1.2) Kdo r�d� v�voj PostgreSQL?
119
 
  
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.
126
 
   
127
 
  1.3) Pod jakou licenc� je PostgreSQL?
128
 
  
129
 
   PostgreSQL je predmetem n�sleduj�c�ch autorsk�ch pr�v:
130
 
   
131
 
   D�lc� Copyright (c) 1996-2009, PostgreSQL Global Development Group
132
 
   D�lc� Copyright (c) 1994-6, Regents of the University of California
133
 
   
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.
139
 
   
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�
145
 
   SKODY.
146
 
   
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.
152
 
   
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.
156
 
   
157
 
  1.4) Na kter�ch platform�ch lze provozovat PostgreSQL?
158
 
  
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.
162
 
   
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
168
 
   Cygwin.
169
 
   
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 .
174
 
   
175
 
  1.5) Kde mohu z�skat PostgreSQL?
176
 
  
177
 
   Pomoc� webov�ho klienta z adresy http://www.postgresql.org/ftp/ nebo
178
 
   klienta ftp z adresy ftp://ftp.postgresql.org/pub/.
179
 
   
180
 
  1.6) Jak� je posledn� verze?
181
 
  
182
 
   Nejnovejs� verz� PostgreSQL je verze 8.2.5
183
 
   
184
 
   V pl�nu je uvolnovat kazdorocne jednu velkou verzi a kazd�ch nekolik
185
 
   mes�cu mal� verze.
186
 
   
187
 
  1.7) Kde mohu z�skat podporu?
188
 
  
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.
193
 
   
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.
199
 
   
200
 
   Seznam spolecnost� poskytuj�c� komercn� podporu naleznete na adrese
201
 
   http://techdocs.postgresql.org/companies.php.
202
 
   
203
 
  1.8) Jak a kam hl�sit chyby?
204
 
  
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
208
 
   PostreSQL.
209
 
   
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
216
 
       ofici�lne uvolnena
217
 
     * Pozadavek na dals� doplnuj�c� informace:
218
 
          + Operacn� syst�m
219
 
          + Verze PostgreSQL
220
 
          + Test reprodukuj�c� chybu
221
 
          + Lad�c� informace
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�
225
 
            nebo mal� verze
226
 
          + Informaci, ze se jedn� o chybu, kterou nelze okamzite resit a
227
 
            je proto prid�na do TODO
228
 
       
229
 
  1.9) Kde najdu informace o zn�m�ch chyb�ch nebo nepodporovan�ch vlastnostech?
230
 
  
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
233
 
   budoucna.
234
 
   
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
239
 
            standard
240
 
          + Implementac� funkce by se pr�lis zkomplikoval k�d bez
241
 
            relevantn�ho pr�nosu
242
 
          + Funkce by mohla b�t nebezpecn� nebo nespolehliv�
243
 
     * Pozadavek je prid�n do TODO
244
 
       
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
251
 
   zmeny, k nemz doslo.
252
 
   
253
 
  1.10) Jak� je dostupn� dokumentace?
254
 
  
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.
258
 
   
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/.
266
 
   
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.
270
 
   
271
 
   Dals� dokumentaci najdete na nasem webu.
272
 
   
273
 
  1.11) Jak se mohu naucit SQL?
274
 
  
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
280
 
   al., McGraw-Hill.
281
 
   
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
287
 
       
288
 
  1.12) Jak se mohu pripojit k t�mu v�voj�ru?
289
 
  
290
 
   Prostudujte si Developer's FAQ.
291
 
   
292
 
  1.13) Jak je na tom PostgreSQL v porovn�n� s jin�mi datab�zemi?
293
 
  
294
 
   Software muzeme porovn�vat z nekolika ruzn�ch pohledu: vlastnosti,
295
 
   v�kon, spolehlivost, podpora a cena.
296
 
   
297
 
    Vlastnosti
298
 
    
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.
304
 
   
305
 
    V�kon
306
 
    
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.
310
 
   
311
 
    Spolehlivost
312
 
    
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.
319
 
   
320
 
    Podpora
321
 
    
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.)
331
 
   
332
 
    Cena
333
 
    
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).
337
 
   
338
 
  1.14) Je PostgreSQL pripraven na aktu�ln� zav�den� letn�ho casu v nekter�ch
339
 
  zem�ch?
340
 
  
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
 
     _________________________________________________________________
348
 
   
349
 
                        Dotazy na klientsk� rozhran�
350
 
                                      
351
 
  2.1) Kter� rozhran� jsou pouziteln� pro PostgreSQL?
352
 
  
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.
358
 
   
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
362
 
   Drivers/Interfaces.
363
 
   
364
 
  2.2) Jak� n�stroje lze pouz�t pro PostgreSQL a web?
365
 
  
366
 
   Dobr�m �vodem do problematiky datab�z� v prostred� webov�ch str�nek
367
 
   muze b�t web http://www.webreview.com.
368
 
   
369
 
   PHP (http://www.php.net) je vynikaj�c�m rozhran�m pro tvorbu webu.
370
 
   
371
 
   Pro slozitejs� �lohy se casto pouz�v� Perl a jeho BDB:Pg rozhran� s
372
 
   podporou CGI - CGI.pm nebo mod_perl(u).
373
 
   
374
 
  2.3) Existuje grafick� rozhran� pro PostgreSQL?
375
 
  
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
 
     _________________________________________________________________
380
 
   
381
 
                           Administrativn� dotazy
382
 
                                      
383
 
  3.1) Jak nainstalovat PostgreSQL jinam nez do /usr/local/pgsql?
384
 
  
385
 
   Pri spousten� configure nastavte parametr --prefix
386
 
   
387
 
  3.2) Jak nastavit pravidla pro pr�stup z jin�ch stanic?
388
 
  
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.
395
 
   
396
 
  3.3) Jak vyladit datab�zi na vyss� v�kon?
397
 
  
398
 
   V�kon syst�mu muzete ovlivnit ve trech oblastech:
399
 
   
400
 
    Zmeny dotazu
401
 
    
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
405
 
       commit
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
413
 
       
414
 
    Konfigurace serveru
415
 
    
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.
421
 
   
422
 
    V�ber hardware
423
 
    
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/.
427
 
   
428
 
  3.4) Jak� m�m lad�c� prostredky?
429
 
  
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
432
 
   optimalizaci v�konu.
433
 
   
434
 
  3.5) Co znamen� "Sorry, too many clients", kdyz se zkous�m pripojit?
435
 
  
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.
439
 
   
440
 
  3.6) Proc je nutn� dump a obnoven� (load) datab�ze pri upgradu PostgreSQL?
441
 
  
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.
446
 
   
447
 
  3.7) Jak� hardware bych mel pouz�vat?
448
 
  
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
456
 
   a znack�ch.
457
 
     _________________________________________________________________
458
 
   
459
 
                              Provozn� dotazy
460
 
                                      
461
 
  4.1) Jak z�skat pouze prvn� r�dek dotazu? N�hodn� r�dek?
462
 
  
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.
467
 
   
468
 
   Pro v�ber n�hodn�ho r�dku pouzijte pr�kaz ve tvaru:
469
 
SELECT col
470
 
FROM tab
471
 
ORDER BY random()
472
 
LIMIT 1;
473
 
 
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�?
476
 
  
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.
486
 
   
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.
490
 
   
491
 
   Seznam vsech datab�z� z�sk�te pr�kazem psql -l
492
 
   
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
495
 
   tabulek datab�ze.
496
 
   
497
 
  4.3) Jak zmenit datov� typ sloupce?
498
 
  
499
 
   Ve verz�ch 8.0 a pozdejs�ch jednoduse:
500
 
ALTER TABLE ALTER COLUMN TYPE
501
 
 
502
 
   V stars�ch verz�ch:
503
 
BEGIN;
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;
507
 
COMMIT;
508
 
 
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.
511
 
   
512
 
  4.4) Jak� je maxim�ln� velikost r�dku, tabulky a datab�ze?
513
 
  
514
 
   PostgreSQL m� tato omezen�:
515
 
   
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
523
 
   
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.
527
 
   
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�.
531
 
   
532
 
   Maxim�ln� velikost tabulky a maxim�ln� pocet sloupcu muzeme
533
 
   zectyrn�sobit nastaven�m velikosti bloku na 32K.
534
 
   
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.
539
 
   
540
 
  4.5) Kolik diskov�ho prostoru je potreba k ulozen� dat z norm�ln�ho textov�ho
541
 
  souboru?
542
 
  
543
 
   PostgreSQL vyzaduje az petin�sobek diskov�ho prostoru k ulozen� dat z
544
 
   textov�ho souboru.
545
 
   
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
 
   ------------------------------------------------------
554
 
    52 bytu na r�dek
555
 
 
556
 
   Velikost datov� str�nky PostgreSQL je 8192 bytu (8KB)
557
 
 8192 bytu na str�nce
558
 
---------------------- = 158 r�dek na str�nku
559
 
  52 bytu za r�dek
560
 
 
561
 
100000 r�dek
562
 
----------------------- = 633 str�nek (zaokrouhleno nahoru)
563
 
   158 r�dek na str�nce
564
 
 
565
 
633 datov�ch str�nek * 8192 bytu na kazdou str�nku = 5,185,536 bytu (5.2 MB)
566
 
 
567
 
   Indexy nemaj� tak velkou rezii, ale mohou b�t tak� velk�, protoze
568
 
   obsahuj� indexovan� data.
569
 
   
570
 
   Hodnoty NULL jsou ulozeny v bitmap�ch, takze zab�raj� jen velmi m�lo
571
 
   diskov�ho prostoru.
572
 
   
573
 
  4.6) Muj dotaz je pomal� a nepouz�v� vytvoren� indexy. Proc?
574
 
  
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�.
580
 
   
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.
587
 
   
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.
591
 
   
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.
594
 
   
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�.
598
 
   
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.
612
 
       
613
 
  4.7) Jak zjist�m, jak se vyhodnocuje muj dotaz?
614
 
  
615
 
   Pod�vejte se do n�povedy k pr�kazu EXPLAIN.
616
 
   
617
 
  4.8) Jak pouz�t case-(in)sensitive regul�rn� v�raz? Jak pouz�t index pro case
618
 
  insensitive hled�n�?
619
 
  
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.
623
 
   
624
 
   Case-insensitive vyhled�n� se res�:
625
 
SELECT *
626
 
FROM tab
627
 
WHERE lower(col) = 'abc';
628
 
 
629
 
   Tento dotaz nepouzije standardn� index. Mus�te pouz�t tzv.
630
 
   funkcion�ln� index:
631
 
CREATE INDEX tabindex ON tab (lower(col));
632
 
 
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
637
 
   nebo triggery.
638
 
   
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
641
 
  NULL nebo ne?
642
 
  
643
 
   Pokud chcete testovat hodnotu NULL pouzijte oper�tor IS:
644
 
   SELECT *
645
 
   FROM tab
646
 
   WHERE col IS NULL;
647
 
 
648
 
   K spojen� retezcu, kter� mohou obsahovat hodnotu NULL, pouz�vejte
649
 
   funkci COALESCE(), napr.:
650
 
   SELECT COALESCE(col1, '') || COALESCE(col2, '')
651
 
   FROM tab
652
 
 
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:
656
 
   SELECT *
657
 
   FROM tab
658
 
   ORDER BY (col IS NOT NULL)
659
 
 
660
 
   tak z�znamy s NULL budou na zac�tku setr�den�ch dat.
661
 
   
662
 
  4.10) Jak� jsou rozd�ly mezi ruzn�mi znakov�mi typy?
663
 
  
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
670
 
   
671
 
   Na intern� n�zvy muzete narazit v syst�mov�m katalogu nebo v nekter�ch
672
 
   chybov�ch hl�sen�ch.
673
 
   
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�.
679
 
   
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
682
 
   jeden gigabyte).
683
 
   
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.
688
 
   
689
 
  4.11.1) Jak vytvorit serial/auto-increment polozku?
690
 
  
691
 
   V PostgreSQL muzete pouz�t datov� typ SERIAL. Jeho pouzit�m se
692
 
   automaticky vytvor� sekvence. Napr�klad:
693
 
CREATE TABLE person (
694
 
  id   SERIAL,
695
 
  name TEXT
696
 
);
697
 
 
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'),
702
 
  name TEXT
703
 
);
704
 
 
705
 
   Podrobnejs� informace najdete v manu�lu v popisu pr�kazu
706
 
   create_sequence.
707
 
   
708
 
  4.11.2) Jak z�skat hodnotu SERIAL po vlozen� r�dku?
709
 
  
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;
713
 
 
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.
716
 
   
717
 
  4.11.3) Nezpusob� currval() a nextval() probl�my ve v�ce uzivatelsk�m
718
 
  prostred�?
719
 
  
720
 
   Ne, currval vrac� vzdy hodnotu, kter� byla vygenerov�na pro v�s.
721
 
   
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?
724
 
  
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
728
 
   nen�vratne ztrat�.
729
 
   
730
 
  4.12) Co to je OID? Co je to CTID?
731
 
  
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.
737
 
   
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.
742
 
   
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.
746
 
   
747
 
  4.13) Co znamen� chybov� hl�sen� "ERROR: Memory exhausted in
748
 
  AllocSetAlloc()"?
749
 
  
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:
753
 
ulimit -d 262144
754
 
limit datasize 256m
755
 
 
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.
762
 
   
763
 
  4.14) Jak zjist�m, kterou verzi PostgreSQL pouz�v�m?
764
 
  
765
 
   V psql napiste:
766
 
SELECT version();
767
 
 
768
 
  4.15) Jak vytvorit sloupec, kter� bude implicitne obsahovat aktu�ln� cas?
769
 
  
770
 
   Pouzijte CURRENT_TIMESTAMP:
771
 
CREATE TABLE test (x int, modtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
772
 
 
773
 
  4.16) Jak prov�st vnejs� spojen� (outer join)?
774
 
  
775
 
   PostgreSQL podporuje standardn� SQL syntaxi pro vnejs� spojen�. Zde
776
 
   jsou dva pr�klady:
777
 
SELECT *
778
 
FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
779
 
 
780
 
   nebo
781
 
SELECT *
782
 
FROM t1 LEFT OUTER JOIN t2 USING (col);
783
 
 
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�.
790
 
   
791
 
  4.17) Jak prov�st dotaz napr�c nekolika datab�zemi?
792
 
  
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.
797
 
   
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.
801
 
   
802
 
  4.18) Muze funkce vr�tit v�ce r�dku nebo sloupcu?
803
 
  
804
 
   Jde to jednoduse pomoc� set-returning funkce. V�ce na
805
 
   http://www.postgresql.org/docs/techdocs.17.
806
 
   
807
 
  4.19) Co je pr�cinou chyby "relation with OID xxxxx does not exist"?
808
 
  
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).
815
 
   
816
 
   Tento probl�m by se nemel vyskytovat u PostgreSQL verze 8.3 a vyss�ch
817
 
   verz�ch.
818
 
   
819
 
  4.20) Jak� jsou moznosti replikace datab�z�?
820
 
  
821
 
   Replikaci datab�ze umoznuje nekolik technoligi�. Kazd� m� urcit�
822
 
   v�hody a nev�hody.
823
 
   
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.
828
 
   
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.
833
 
   
834
 
   Jeste existuje nekolik komercn�ch a hardware resen� replikac�
835
 
   podporuj�c�ch ruzn� modely replikace.
836
 
   
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?
839
 
  
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