]> granicus.if.org Git - postgresql/blob - doc/FAQ_hungarian
Fix up pg_dump to emit shell-type definitions at the proper time, to
[postgresql] / doc / FAQ_hungarian
1                                 PostgreSQL GyIK
2
3  Utolso modosítás dátuma: 2005 május 9.
4
5  Fordítás aktualizálása: 2005 június
6
7  A GyIK karbantartoja: Bruce Momjian (pgman@candle.pha.pa.us)
8
9  Fordíto: Hornyák Lászlo
10  (laszlo.hornyak.nospam@gmail.com)
11
12  A legfrissebb verzio itt érhetõ el (angol):
13
14  http://www.PostgreSQL.org/docs/faq-english.html.
15
16  Legfrissebb magyar nyelvû verzio:
17
18  http://hackers.forgeahead.hu/space/PostgreSQL/GYIK
19
20  Platform specifikus kérdések:
21
22  http://www.PostgreSQL.org/users-lounge/docs/faq.html.
23
24      ----------------------------------------------------------------------
25
26 Általános kérdések
27
28    1.1 Mi a PostgreSQL? Hogy kell kimondani?
29    1.2 Mik a PostgreSQL felhasználási feltételei?
30    1.3 Milyen UNIX operácios rendszereken fut PostgreSQL?
31    1.4 Milyen nem UNIX operácios rendszerek elérhetõek?
32    1.5 Hogyan tudok PostgreSQL-t szerezni?
33    1.6 Hogyan kapok terméktámogatást?
34    1.7 Melyik a legfrissebb kiadás?
35    1.8 Milyen dokumentácio áll rendelkezésre?
36    1.9 Hogyan találok informáciot hibákrol vagy hiányzo funkcionalításrol?
37    1.10 Hogy tanuljam meg az SQL nyelvet?
38    1.11 A PostgreSQL 2000. év kompatibilis?
39    1.12 Hogyan lehet csatlakozni a fejlesztõ csapathoz?
40    1.13 Hogyan küldjek hibajelentést?
41    1.14 Milyen a PostgreSQL más DBMS-ekkel összehasonlítva?
42    1.15 Hogyan tudom üzletileg segiteni a PostgreSQL-t?
43    1.16 Ki irányítja a PostgreSQL-t?
44
45 Felhasználoi kliens kérdések
46
47    2.1 Van ODBC meghajto PostgreSQL-hez?
48    2.2 Milyen eszközök állnak rendelkezésre PostgreSQL Web fejlesztésekhez?
49    2.3 Van a PostgreSQL-hez grafikus felhasználoi felület ? Riport generátor?
50    Beágyazott lekérdezõ nyelv felület?
51    2.4 Milyen programozási nyelvekkel lehet elérni a PostgreSQL szervert?
52
53 Adminisztrácios kérdések
54
55    3.1 Hogyan tudom a PostgreSQL-t /usr/local/pgsql -tõl eltérõ helyre
56    installálni?
57    3.2 AMikor elindítom a postmaster-t, egy "Bad System Call"-t vagy core
58    dump-ot kapok. Miért?
59    3.3 Amikor megprobálom inditani a postmaster-t, "IpcMemoryCreate" hibákat
60    kapok. Miért?
61    3.4 Amikor megprobálom inditani a postmaster-t, "IpcSemaphoreCreate"
62    hibákat kapok. Miért?
63    3.5 Hogyan tudom kontrollálni a más gépekrõl érkezõ kapcsolat kéréseket?
64    3.6 Hogyan tudom nagyobb teljesítményre hangolni az adatbázisomat?
65    3.7 Milyen hibakeresõ lehetõségek érhetõek el?
66    3.8 Miért kapok "Sorry, too many clients" hibát csatlakozásnál?
67    3.9 Mi van pgsql_tmp könyvtárban?
68    3.10 Miért kell dumpolni és újratölteni PostgreSQL kiadás váltásánál?
69
70 Mûködtetési kérdések
71
72    4.1 Mi a különbség a bináris és a normál kurzorok között?
73    4.2 Hogyan tudom select-elni a lekérdezés elsõ pár sorát?
74    4.3 Hogy tudom kilistázni a táblákat vagy más dolgokat a PostgreSQL-ben?
75    4.4 Hogyan tudok eltávolítani egy oszlopot egy táblábol?
76    4.5 Mi a maximális mérete egy sornak, egy táblának vagy egy adatbázisnak?
77    4.6 Mekkora adatbázis lemez terület szükséges egy tipikus szöveg állomány
78    tárolásához?
79    4.7 Hogy tudhatom meg milyen táblák, indexek, adatbázisok vagy
80    felhasználok vannak definiálva?
81    4.8 A lekérdezéseim lassúak, vagy nem használják az indexeket. Miért?
82    4.9 Hogy tudom ellenõrizni, hogy optimalizálta a lekérdezés optimalizálo a
83    lekérdezésem?
84    4.10 Mi az R-tree index?
85    4.11 Mi a Genetic Query Optimizer?
86    4.12 Hogyan tudok regexp keresést és case-insensitive regexp keresést
87    használni? Hogyan tudok indexet használni case-insensitive kereséshez?
88    4.13 Hogyan tudom észlelni egy lekérdezésban, ha egy mezõ NULL?
89    4.14 Mi a különbség a különbözõ karaktertípusok között?
90    4.15.1 Hogyan tudok létrehozni automatikusan növekvõ értékû mezõt?
91    4.15.2 Hogyan kaphatom meg egy SERIAL beszúrás értékét?
92    4.15.3 A currval() és a nextval() nem teremt holtpont veszélyes helyzetet
93    a felhasználok között?
94    4.15.4 Miért nem használodnak fel újra a sequence számok tranzakcio abort
95    esetén? Miért vannak problémák a serial oszlopok számozásával?
96    4.16 Mi a OID? Mi a TID?
97    4.17 Mi a PostgreSQL-ben használt kifejezések jelentése?
98    4.18 Miért kapom ezt a hibát: "ERROR: Memory exhausted in
99    AllocSetAlloc()"?
100    4.19 Hogyan tudhatom meg PostgreSQL, milyen verziot futtatok?
101    4.20 Miért kapok "invalid large obj descriptor" hibát nagy objektumok
102    kezelésénél?
103    4.21 Hogy hozhatok létre olyan oszlopot, aminek alapértelmezett érétke a
104    jelenlegi idõ?
105    4.22 Miért olyan lassúak az al-lekérdezéseim IN-nel?
106    4.23 Hogyan tudok outer join-t végrehajtani?
107    4.24 Hogyan tudok több adatbázison végrehajtani lekérdezést?
108    4.25 Hogy tudok több soros vagy oszlopos eredményt visszaadni egy
109    funkciobol?
110    4.26 Miért nem tudom megbizhatoan létrehozni és törölni az átmeneti
111    táblákat a PL/pgSQL funkciokban?
112    4.27 Milyen replikácios lehetõségek vannak?
113    4.28 Milyen kodolási lehetõségek vannak?
114
115 A PostgreSQL kiterjesztése
116
117    5.1) Írtam egy felhasználoi funkciot. Miért core dumpol az adatbázis
118    amikor használom?
119    5.2) Hogyan lehet új adattípusokat és funkciokat hozzáadni a PostgreSQL
120    disztribúciohoz?
121    5.3) Hogyan lehet olyan C funkciot írni, ami Tuple-t ad vissza? (több
122    soros több oszlopos eredmények)
123    5.4) Megváltoztattam egy forrás állományt. Miért nem változik a bináris
124    újrafordítás után?
125
126      ----------------------------------------------------------------------
127
128 Általános kérdések
129
130    1.1 Mi a PostgreSQL? Hogy kell kimondani?
131
132    Így ejstd ki: Post-Gres-Q-L.
133
134    (Vagy talán inkább töltsd le a kis mp3-at a PostgreSQL homepage-rõl)
135
136    A PostgreSQL a POSTGRES adatbázis management rendszer egy kiegészítése,
137    ami egy következõ generácios DBMS kutatási prototípus. Megtartja a
138    POSTGRES adatmodellét és gazdag adattípus választékát, de a PostQuel
139    lekérdezõ nyelvet az SQL egy kiterjesztett verziojával helyettesíti. A
140    PostgreSQL szabad és a teljes forráskod hozzáférhetõ.
141
142    A PostgreSQL fejlesztését egy csapat végzi, amelynek minden tagja
143    megtalálhato a PostgreSQL fejlesztõi levelezési listán. A jelenlegi
144    koordinátor Marc G. Fournier (scrappyp@PostgreSQL.org). Ez a csapat
145    felelõs minden fejlesztésért. <>A PostgreSQL 1.01 alkotoi Andrew Yu és
146    Jolly Chen voltak. Sokan járultak hozzá portolással, teszteléssel,
147    hibakereséssel és fejlesztéssel. Az eredeti Postgres kod, amibõl a
148    PostgreSQL származik Michael Stonebraker professzor irányítása alatt
149    fejlesztettek az egyetem programozoi, tanuloi és végzett tanuloi. <>
150
151    A szoftver eredeti neve Postgres volt. Amikor SQL funkcionalítással
152    egészítették ki 1995-ben, a nevét Postgres95-re változtatták. 1996 végén
153    kapta mai nevét.
154
155    1.2 Mik a PostgreSQL felhasználási feltételei?
156
157     Az eredeti angol copyright szöveg:
158
159     --------------------
160
161     PostgreSQL is subject to the following COPYRIGHT:
162
163     PostgreSQL Data Base Management System
164
165     Portions copyright (c) 1996-2002, PostgreSQL Global Development Group
166
167     Portions Copyright (c) 1994-6 Regents of the University of California
168
169     Permission to use, copy, modify, and distribute this software and its
170
171     documentation for any purpose, without fee, and without a written
172
173     agreement is hereby granted, provided that the above copyright notice
174
175     and this paragraph and the following two paragraphs appear in all
176
177     copies.
178
179     IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
180
181     FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
182
183     INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND
184
185     ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN
186
187     ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
188
189     THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
190
191     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
192
193     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
194
195     PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
196
197     CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
198
199     UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
200
201     --------------------
202
203    Ami nagyon leegyszerûsítve azt jelenti, hogy jogod van használni a
204    szoftvert mindenféle ellenszolgáltatás (pénz, stb) nélkül, a forrás kodot
205    modosíthatod, és továbbadhatod, DE semmilyen, a szoftver használatábol
206    következõ károsodásért nem vállal garanciát a fejlesztõ. A fenti a BSD
207    licensz, egy klasszikus nyilt-forráskod licensz. Nem tartalmaz
208    megszorításokat arra, hogy a forráskodot hogyan használod fel.
209
210    Kedveljük ezt a licensz formát és nem áll szándékunkban megváltoztatni.
211
212    1.3 Milyen UNIX operácios rendszereken fut PostgreSQL?
213
214    Általában minden UNIX-kompatibilis operácios rendszer képes arra hogy
215    futtassa a PostgreSQL-t. Azokat a platformokat, amiken tesztelték a
216    kiadást megtalálhatod a installácios utasítások között.
217
218    1.4 Milyen nem UNIX operácios rendszerek elérhetõek?
219
220    Kliens
221
222    A libpq C függvénykönyvtárat, a psql-t és más felületeket le lehet úgy
223    fordítani, hogy fussanak MS Windows operácios rendszereken. Ebben az
224    esetben a kliens MS Windows-on fut és TCP/IP segítségével kommunikál a
225    Unixon futo szerverrel. A "win32.mak" állomány a kiadás része, ennek
226    segítségével lehet Win32 platformokra lefordítani a libpq-t és a psql-t. A
227    PostgreSQL ODBC kliensekkel is képes kommunikálni.
228
229    Szerver
230
231    <>Az adatbázis szerver Cygwin segítségével fut Windows NT és Win2k
232    rendszereken. További informácio találhato a pgsql/doc/FAQ_MSWIN
233    állományban és a MS Windows FAQ-ban a következõ helyen:
234    http://www.PostgreSQL.org/docs/faq-mswin.html.  Natív MS Windows
235    NT/2000/XP portok jelenleg fejlesztés alatt állnak.
236
237    1.5 Hogyan tudok PostgreSQL-t szerezni?
238
239    Az elsõdleges anonim ftp oldal: ftp://ftp.PostgreSQL.org/pub.
240
241    A tükör oldalak listája megtalálhato a fõ weboldalunkon.
242
243    1.6 Hogyan kapok terméktámogatást?
244
245    Az elsõdleges lista a pgsql-general@postgresql.org. Ez használhato a
246    PostgreSQL-lel kapcsolatos párbeszédekre. Ha fel szeretnél íratkozni,
247    küldj egy levelet a következõ tartalommal (nem tárggyal) a
248    pgsql-general-request@postgresql.org címre:
249
250  subscribe
251
252  end
253
254    Van egy hibákkal kapcsolatos levelezési lista is:
255    pgsql-bugs-request@PostgreSQL.org a következõ tartalommal:
256
257  subscribe
258
259  end
260
261    A fejleszto"i levelezési lista: pgsql-hackers-request@PostgreSQL.org a
262    következõ tartalommal:
263
264  subscribe
265
266  end
267
268    Egyéb levelezési listák találhatoak a weboldalunkon:
269    http://www.PostgreSQL.org
270
271    Van egy IRC csatorna is #PostgreSQL néven ahol felteheted kérédseid. A
272    következõ unix paranccsal csatlakozhatsz:
273
274    irc -c '#PostgreSQL' "$USER" irc.phoenix.net.
275
276    A kereskedelmi terméktámogatást nyújto cégek listája elérhetö itt:
277    http://www.PostgreSQL.org/users-lounge/commercial-support.html
278
279    Magyar nyelvu" levelezési lista nincs, de ha tudok segiteni a fenit e-mail
280    cimemen elérheto" vagyok.
281
282    1.7 Melyik a legfrissebb kiadás?
283
284    A legfrissebb PostgreSQL kiadás a 8.0.
285
286    A tervek szerint minden évben lesz egy nagyobb fejlesztéseket tartalmazo
287    kiadás, míg a kisebb fejlesztéseket néhány havonta adjuk ki.
288
289    1.8 Milyen dokumentácio áll rendelkezésre?
290
291    Számos kézikönyv, man oldalak és kis teszt példák találhatoak a kiadásban
292    a doc/ könyvtár alatt. Az interneten is olvashatod a dokumentáciot a
293    következõ címen:
294
295    http://www.PostgreSQL.org/users-lounge/docs/.
296
297    Két PostgreSQL könyv érhetõ el az interneten a
298    http://www.PostgreSQL.org/docs/awbook.html és a
299    http://www.commandprompt.com/ppbook/ címeken. A megvásárolhato könyvek
300    listája itt találhato: http://www.ca.PostgreSQL.org/books/. A
301    PostgreSQL-lel kapcsolatos technikai jellegû cikkek gyûjteménye:
302    http://techdocs.PostgreSQL.org/.
303
304    A psql parancs rendelkezik néhány \d utasítással, amellyekkel listázhatoak
305    az operátorok, a funkciok, stb.
306
307    A website is tartalmaz további dokumentáciokat.
308
309    1.9 Hogyan találok informáciot hibákrol vagy hiányzo funkcionalításrol?
310
311    A PostgreSQLaz SQL-92 szabvány egy kiegészítése. Nézd meg a TODO listákat
312    ha érdekelnek az ismert hibák.
313
314    1.10 Hogy tanuljam meg az SQL nyelvet?
315
316    A PostgreSQL könyv a http://www.PostgreSQL.org/docs/awbook.html címen
317    tartalmaz SQL alapokat. Elérhetõ egy másik SQL könyv is a
318    http://www.commandprompt.com/ppbook címen. Egy szép oktato anyag találhato
319    a http://www.intermedia.net/support/sql/sqltut.shtm, a
320    http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM és a
321    http://sqlcourse.com oldalakon.
322
323    Egy másik lehetõség a "Tanítsd magad 21 nap alatt SQL-re, második kiadás"
324    a http://members.tripod.com/er4ebus/sql/index.htm.
325
326    Sok felhasználonak tetszett a gyakorlati SQL könyv ("The Practical SQL
327    Handbook").
328
329    1.11 A PostgreSQL 2000. év kompatibilis?
330
331    Igen, könnyedén kezeli a 2000 utáni és idõszámításunk elött 2000 elötti
332    dátumokat is.
333
334    1.12 Hogyan lehet csatlakozni a fejlesztõ csapathoz?
335
336    Elösször is töltsd le a forráskodot, és olvasd el a PostgreSQL
337    fejlesztõi dokumnetáciot a web oldalunkon vagy a kiadásban. Ezután
338    íratkozz fel a pgsql-hackers és a pgsql-patches levelezési listákra.
339    Végül pedig küldj be magas szinvonalú patch-eket a pgsql-patches listára.
340
341    Van egy pár ember, akiknek commit privilégiumuk a PostgreSQL CVS fán.
342    Õk olyan sok magas szinvonalú patch-et küldtek be, hogy az addigi
343    csapat már nem tudta követni, és nem volt kétségünk arrol, hogy a
344    patch-ek amiket õk küldenek jo minõségû.
345
346    1.13 Hogyan küldjek hibajelentést?
347
348    Látogass el a BugTool oldalra:
349    http://www.PostgreSQL.org/bugs/bugs.php
350    Itt megtalálod követendõ utasításokat.
351
352    Ellenõrizd az ftp oldalunkon is, hogy nincs-e újabb verzio vagy folt.
353    ftp://ftp.PostgreSQL.org/pub
354
355    1.14 Milyen a PostgreSQL más DBMS-ekkel összehasonlítva?
356
357    Számos nézõpontbol lehet vizsgálni a szoftvert: képességek, teljesítmény
358    megbízhatoság, támogatottság és ár.
359
360    Képességek: A PostgreSQL rendelkezik a nagy, kereskedelmi DBMS-ek
361    képességeivel: tranzakciok, al-lekérdezések, triggerek, nézetek, külsõ
362    kulcsok, integrítás és kifinoult zármechanizmusok. Van néhány képessége,
363    ami a kereskedelmi adatbázisokbol hiányzik, mint például a felhasználo
364    által definiált típusok, öröklõdés, szabályok és verzio kontroll a
365    zárolási viták redukálásáért.
366
367    Teljesítmény: A PostgreSQL teljesítménye hasonlít a kereskedelmi és más
368    nyílt adatbázis szerverekéhez. Lehet bizonyos esetekben lassabb, másokban
369    gyorsabb. A MySQL nevû tanulo RDBMS például gyorsabban hajt végre
370    insert/update mûveleteket, mivel a tranzakciokat elsumákolja. Persze a
371    MySQL nem rendelkezik a képességek részben felsoroltak nagy részével. Mi a
372    megbízhatoságra és a képességekre építünk, bár a teljesítmény is nõ minden
373    kiadással. Van egy érdekes oldal a MySQL és a PostgreSQL
374    összehasonlításával a http://openacs.org/philosophy/why-not-mysql.html
375    címen.
376
377    Megbízhatoság: Tudjuk hogy ha egy DBMS nem megbízhato, akkor teljesen
378    haszontalan. Igyekszünk jol tesztelt, stabil kodot kiadni, amiben a lehetõ
379    legkevesebb hiba van. Minden kiadás elött eltellik legalább 1 honap béta
380    teszt, és a kiadási történet is azt mutatja, hogy stabil kodot adunk ki,
381    ami készen áll a produktív felhasználásra. Úgy gondoljuk, felülmúlunk más
382    adatbázis szoftvereket ezen a téren.
383
384    Támogatás: A levelezési listáink kapcsolatot teremtenek a fejlesztõk és
385    felhasználok csoportjával , akik segítenek a problémák megoldásában. Bár
386    nem tudjuk garantálni hogy ki tudjuk javítani a hibát, más, kereskedelmi
387    adatbázis cégek sem tudják. A fejlesztõ csoport közvetlen elérési
388    lehetõsége, a közösség, a dokumentácio és a forráskod gyakran támogatást
389    biztosít, mint más adatbázisoknál. Van kereskedelmi, alkalmi támogatás
390    azoknak, akiknek szüksége van rá (lásd: 1.6).
391
392    Ár: A PostgreSQL szabad bármilyen felhasználásra, akár kereskedelmire is.
393    A termékhez hozzáadhatod a saját forráskodjaidat korlátozás nélkül.
394
395    1.15 Hogyan tudom üzletileg segiteni a PostgreSQL-t?
396
397    A PostgreSQL elsõ osztályú infrastruktúrával rendelkezik, amit 1996-ban
398    indítottunk el. Mindent Marc Fourniernek köszönhetünk, aki létrehozta és
399    karbantartja a rendszert.
400
401    A minõségi infrastruktúra nagyon fontos egy nyilt forrású szoftver
402    esetében. Megvéd az olyan fennakadásoktol, amelyek komoly késéseket
403    okoznak a fejlesztésekben. Természetesen ez az infrastruktúra nem olcso.
404    Számos havi és állando kiadásunk van. Ha a cégednek van pénze, amivel
405    támogatná erõfeszítéseinket, kérlek látogass el a
406    http://store.pgsql.com/shopping/ oldalra.
407
408    Bár a weboldal "PostgreSQL, Inc"-ként említi, a hozzájárulások kizárolag a
409    PostgreSQL fejlesztésre értendoek, és nem egy meghatározott cégnek. Ha
410    jobban tetszik, küldhetsz csekket is a kapcsolati címek bármelyikére.
411
412    1.16 Ki irányítja a PostgreSQL-t?
413
414    Ha központi bizottságot, ellenörzo" céget keresel a PostgreSQL mögött, add
415    fel, nincs ilyesmi. Létezik egy mag és CVS commiter csoport, de ez inkáb
416    adminisztrativ mint ellenörzo" célú. A projectet fejleszto"k és
417    felhasználok közössége irányítja, amihez bárki csatlakozhat. Csupán annyit
418    kell tenned hogy felíratkozol a levelezo"listékra és részt veszel a
419    beszélgetésekben.
420
421      ----------------------------------------------------------------------
422
423 Felhasználoi kliens kérdések
424
425    2.1 Van ODBC meghajto PostgreSQL-hez?
426
427    Két ODBC meghajto érhetõ el: PsqlODBC és a OpenLink ODBC.
428
429    A PsqlODBC a PostgreSQL kiadás része. További informácio találhato a 
430    ftp://ftp.PostgreSQL.org/pub/odbc/ oldalon.
431
432    Az OpenLink ODBC-t a http://www.openlinksw.com címrõl töltheted le. Ez az
433    õ szabványos ODBC kliens szoftverükkel mûködik, így minden
434
435    általuk támogatott platformon (Win, Mac, Unix, VMS) elérhetõ lesz  a
436    PostgreSQL szerver.
437
438    Talán olyan vevõknek fogják eladni, akik kereskedelmi minõségû terméket
439    szeretnének kapni, de a freeware verzio mindig elérhetõ lesz. Kérdéseidet
440    a termékkel kapcsolatban a postgres95@openlink.co.uk címen teheted fel.
441
442    Olvasd el az ODBC fejezetet is a programozok kézikönyvében!
443
444    2.2 Milyen eszközök állnak rendelkezésre PostgreSQL Web fejlesztésekhez?
445
446    Egy szép bemutato olvashato az adatbázissal támogatott web oldalanrol a
447    http://www.webreview.com weboldalon.
448
449    A web integráciohoz a PHP egy kivállo szoftver. Letölthetõ a
450    http://www.php.net címrõl.
451
452    Komplexebb esetekre sokan használják a Perl felületet és a CGI.pm vagy a
453    mod_perl-t.
454
455    2.3 Van a PostgreSQL-hez grafikus felhasználoi felület?
456
457    Van egy szép PgAccess nevû grafikus felületünk, ami riport generátorként
458    is használhato. A weboldalát megtalálod a http://www.pgaccess.org/ címen.
459
460    A http://techdocs.postgresql.org/guides/GUITools oldalon találhatsz egy
461    pontos és részltes listát.
462
463    2.4 Milyen programozási nyelvekkel lehet elérni a PostgreSQL szervert?
464
465    A következök:
466
467      * C (libpq)
468      * C++ (libpq++)
469      * Embedded C (ecpg)
470      * Java (jdbc)
471      * Perl (DBD::Pg and perl5)
472      * ODBC (odbc)
473      * Python (PyGreSQL)
474      * TCL (libpgtcl)
475      * C Easy API (libpgeasy)
476      * PHP ('pg_' functions, Pear::DB)
477    További programozási felületek érhetõek el a
478    http://www.PostgreSQL.org/interfaces.html és a
479    http://gborg.PostgreSQL.org oldalakon.
480
481      ----------------------------------------------------------------------
482
483 Adminisztrácios kérdések
484
485    3.1 Hogyan tudom a PostgreSQL-t /usr/local/pgsql -tõl eltérõ helyre
486    installálni?
487
488    A configure script --prefix paraméterének használatával.
489
490    3.2 AMikor elindítom a postmaster-t, egy "Bad System Call"-t vagy core
491    dump-ot kapok. Miért?
492
493    Számos probléma lehet, de legelösször ellenõrizd le, hogy a kerneled
494    System V kiegészítésekkel rendelkezik-e. A PostgreSQL használja a kernel
495    osztott memoria és szemafor API-ját.
496
497    3.3 Amikor megprobálom inditani a postmaster-t, "IpcMemoryCreate" hibákat
498    kapok. Miért?
499
500    Vagy nincs megfelelõen konfigurálva a kerneled osztott memoria támogatása
501    vagy meg kell nagyobbítanod a maximális osztott memoria méretet.
502
503    A pontos méret szükséglet függ az architektúrádtol és attol hogy hány
504    buffert és processzt konfigurálsz a postmasternek. Legalább 1 MB területre
505    szükséged van. A PostgreSQL Adminisztrácio kézikönyvben olvashatsz
506    részletesebb informáciokat az osztott memoriárol és a szemaforokrol.
507
508    3.4) Amikor megprobálom inditani a postmaster-t, "IpcSemaphoreCreate"
509    hibákat kapok. Miért?
510
511    Ha a hibaüzenet ez: " IpcSemaphoreCreate: semget failed (No space left on
512    device)", akkor a kerneled konfigurácioja nem tesz lehetõvé elegendõ
513    szemafort. A PostgreSQL szerver processzenként 1 szemafort igényel. Egy
514    átmeneti megoldás lehet az hogy a postmastert kevesebb maximális processz
515    számmal inditod el. Használd a -D paramétert. Egy sokkal megfelelõbb
516    megoldás az ha növeled a kerneled SEMMNS és SEMMNI paramétereit.
517
518    A hibás szemaforok is adatázis lerobbanásához is vezethet nagy terhelés
519    esetén.Ha a hibaüzenet valami más, lehet hogy nincs szemaforok támogatás
520
521    forditva a kerneledbe. Olvasd el a PostgreSQL adminisztrátorok
522    kézikönyvében az osztott memoriárol és a szemaforokrol szolo fejezetet.
523
524    3.5) Hogyan tudom kontrollálni a más gépekrõl érkezõ kapcsolat kéréseket?
525
526    Alapértelmezésben a PostgreSQL a helyi kapcsolatokat Unix socketekkel
527    valosítja meg. Más gépek nem lesznek képesek csatlakozni, ha nem
528    engedélyezed azt -i opcioval a postmasternek, és nem állítod be host a
529    alapú azonosítást a pg_hba.conf állományban. Ezzel válnak lehetõvé a
530    TCP/IP kapcsolatok.
531
532    3.6) Hogyan tudom nagyobb teljesítményre hangolni az adatbázisomat?
533
534    Az indexelés feltétlenül gyorsítja a lekérdezéseket. Az EXPLAIN parancs
535    lehetõvé teszi hogy lásd, hogy a PostgreSQL miként interpretálja a
536    lekérdezést és melyik indexet használja.
537
538    Ha sok INSERT mûveletet hajtassz végre, csináld nagy kötegekben a COPY
539    paranccsal. Ez sokkal gyorsabb mint az egyedi INSERT parancsok. Másodszor:
540    Azok a mûveletek, amelyek nincsenek tranzakcio blokkon belül, azok saját
541    tranzakciot indítanak. Sok mûveletet érdemes egy tranzakcion belül
542    végrehajtani. Ez csökkenti a tranzakcio kezelés többletidejét. Az
543    indexeket javasolt a nagy adatváltozások elött eltávolítani, majd újra
544    létrehozni.
545
546    Számos teljesítmény javíto lehetõség van. Kikapcsolhatod az fsync()
547    mûveletet a postmaster -o -F opciokval valo indításakor. Így nem fog az
548    amugy lassú fsync() függvény meghívodni minden tranzakcio végén.
549
550    Használhatod a postmaster -B opcioját is az osztott memoria szegmens
551    méretének növeléséhez. Ha az értéket túl magasra állítod, lehet hogy a
552    postmaster nem indul el, mert túllépted az operácios rendszer által 
553    megengedett méretet. Minden buffer 8K méretû és alapértelmezésban 64
554    buffer van.
555
556    A -S opcioval növelheted a szerver átmeneti rendezésekre fenntartott
557    memoria területét. Az értéket kilobyteban add meg. Az alapértelmezett
558    érték 512K.
559
560    Használhatod a CLUSTER utasítást is, hogy a táblákat egy indexnek
561    megfelelõen csoportosítsd. Olvasd el a CLUSTER kézikönyv oldalt további
562    részletekért.
563
564    Hardver kiválasztásában segíthet:
565    http://candle.pha.pa.us/main/writings/pgsql/hw_performance/index.html és
566    http://www.powerpostgresql.com/PerfList/.
567
568    A postgresql.conf beállitásaival kapcsolatos tudnivalok:
569    http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.html
570    és http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html.
571
572    3.7) Milyen hibakeresõ lehetõségek érhetõek el?
573
574    A PostgreSQL számos lehetöséggel rendelkezik ami értékes lehet a
575    hibakeresésnél.
576
577    Elösször is, futtathatod a configure scriptet --enable-cassert opcioval,
578    sok assert() funkciohivás ellenörzi a program futását és megállitja ha
579    valami vératlan hiba történik.
580
581    Mind a postmaster és a postgres számos hibakeresö lehetüséggel
582    rendelkezik. Mindig amikor elinditod a postmastert, gyözödj meg rola, hogy
583    a kimenetet log állományba küldöd. Igy:
584
585    cd /usr/local/pgsql
586
587    ./bin/postmaster >server.log 2>&1 &
588
589    Ez egy server.log állományt hoz létre a felsö PostgreSQL könyvtárban. Ez
590    az állomány tartlamaz majd számos hasznos informáciot a szerverrel
591    kapcsolatos problémákrol és hibákrol. A postmaster -d opciojával lehet
592    részletesebb hibakeresö informáciot kapni. A -d opciohoz meg kell
593    határozni egy hiba szintet. Vigyázz, a magas hibakeresö szint nagy log
594    állományt okozhat.
595
596    Ha a postmaster nem fut, akkor futtathatod a postgres szervert
597    parancssorbol is, és az SQL kifejezést közvetlenül ennek adhatod át. Ez
598    csak hibakeresés esetében javasolt. Az új sor a kifejezés végét jelenti,
599    nem a pontosvesszö. Ha hibakeresö opciokkal forditottad a szervert,
600    használhatsz egy debuggert is hogy lásd hogy mi történik. Mivel igy a
601    szervert nem a postmaster inditotta, nem többfelhasználos környezetként
602    fut, igy a zárolási és a szerverek közötti kommunikácios hiba jelenségek
603    nem jelentkeznek.
604
605    Ha már fut a postmaster, indits egy psql-t, és nézd meg a szerver processz
606    PID-jét! Egy debuggert használhatsz a processzhez csatlakozáshoz.
607    Beállithatsz töréspontokat és elindithatsz lekérdezéseket. Ha a postgres
608    inditásban keresel hibát, a PGOPTIONS környezeti változot állitsd be "-W
609    n" értékre. Ez n másodperc várakozást idéz elö, igy tudsz csatlakozni a
610    processzhez, el tdsz hejezni töréspontokat, majd folytathatod a indítást.
611
612    A postgres program -s, -A és -t opcioi is nagyon hasznosak lehetnek
613    hibakeresésnél és teljesítmény mérésnél.
614
615    Profiling lehtöséggel is fordithatod a szervert, hogy lásd melyik funkciok
616    foglalják el a futási idõt. A szerver profile állományai a
617    pgsql/data/base/dbname könzvtárba kerülnek, a kliens profile állományok az
618    aktuális könyvtárba. Linuxon ehhez szükséges a -DLINUX_PROFILE fordítási
619    direktiva.
620
621    3.8) Miért kapok "Sorry, too many clients" (Túl sok kliens)
622    hibát csatlakozásnál?
623
624    Növelned kell a postmaster egyidejûleg futtatott szerver processz szám
625    korlátját.
626
627    Az alapértelmezett korlát 32 processz. Ezt növelhetjed úgy, hogy
628    újrainditod a postmastert és -N opcioval meghatárotod az új értéket, vagy
629    modositod a postgresql.conf-ot.
630
631    Ne felejtsd el, hogy ha növeled a szerver processzek maximális számát,
632    akkor bufferek számát is növelned kell, legalább a processzek számának
633    kétszeresére. Nagy processz számokesetében valoszinüleg a Unix
634    konfigurácios paramétereken is növelni kell. Ellenörizd a SHMMAX (az
635    osztott memoria szegmensek maximális mérete), a SEMMNS és a SEMMNI (a
636    szemaforok maximális száma), az NPROC (a processzek maximális száma), a
637    MAXUPRC (felhasználonkénti maximális processz szám) és a NFILE és NINODE
638    (a megnzitott állománzok maximális száma) paramétereket. A PostgreSQL
639    azért korlátozza külön a processz számot, hogy a rendszeredet ne
640    terhelhesse meg túlságosan.
641
642    A PostgreSQL 6.5 verzioban a maximális szerver processz szám 64 volt és a
643    modositáshoz bele kellett irni a include/storage/sinvaladt.h állományba és
644    újra kellett forditani a servert.
645
646    3.9) Mi van pgsql_tmp könyvtárban?
647
648    Ez a könyvtár a lekérdezés végrehajto által létrehezott átmeneti
649    állományokat tartalmazza. Például ha egy rendezést kell végrehajtani egy
650    ORDER BY kifejezés miatt és a m?velet több memoriát vesz igénybe, mint
651    amennyit a -S paraméter megenged, akkor az átmeneti könyvtárban hoz létre
652    egy állományt a fennmarado adat tárolására.
653
654    Az átmeneti állományok többnyire törl?dnek, de meg is maradhat ha például
655    váratlan hibával leáll a szerver egy rendezés közben. Inditáskor és
656    leállitáskor ezeket az állományokat törli a postmaster.
657
658    3.10) Miért kell dumpolni és újratölteni PostgreSQL kiadás váltásánál?
659
660    A PostgreSQL csapat csak aprobb változtatásokat hajt végre a kisebb
661    kiadások között, igy ha 7.2 verziorol állsz át 7.2.1 verziora, akkor nem
662    szükséges kidumplonod az adatbázist. A nagy kiadások esetében (például
663    verziorol 7.3-ra áttérésnél) változik a belsiõ adatstruktúrák és
664    adatállományok formátuma. Ezek a változások gyakran nagyon összetettek,
665    ezért inkáb nem tartunk fenn visszafelé kompatibilitást. A dump az adatot
666    általános formátumban irja ki, majd az új formátumban lehet azt
667    visszatöleni.
668
669    Azokban a kiadásokban, amelyek között az adat formátum nem változik, a
670    pg_upgrade program használhato dumpolás és helyreállitás nélkül.
671
672      ----------------------------------------------------------------------
673
674 Mûködtetési kérdések
675
676    4.1) Mi a különbség a bináris és a normál kurzorok között?
677
678    Nézd meg a DECLARE dokumentácioját.
679
680    4.2) Hogyan tudom select-elni a lekérdezés elsõ pár sorát?
681
682    Olvasd el a FETCH dokumentácioját, vagy használd a SELECT LIMIT-et.
683
684    Az egész lekérdezést végre kell hajtani, még akkor is, ha csak az elsõ pár
685    sort akarod megkapni. Gondolj arra, hogy a lekérdezésben lehet ORDER BY
686    is. Ha van olyan index, ami megfelel az ORDER BY kifejezésednek, a
687    PostgreSQL képes lehet az elsö néhány rekord visszaadására, vagy a teljes
688    lekérdezésnek le kell futnia, amig a kért rekordok le nem generálodnak.
689
690    4.3) Hogy tudom kilistázni a táblákat vagy más dolgokat a PostgreSQL-ben?
691
692    Elolvashatod a psql forrás kodjában a pgsql/src/bin/psql/describe.c
693    állományban. Ez SQL parancsokat tartalmaz, amelyek azokat a kimeneteket
694    állitják elö, amiket a per jellel kezdödö parancsok adnak vissza.
695
696    4.4) Hogyan tudok eltávolítani egy oszlopot egy táblábol?
697
698    Ez a funkcionalitás a 7.3 verziotül kezdve érhetö el az ALTER TABLE DROP
699    COLUMN -nal. A régebbi vertiokban igy lehet végrehajtani:
700
701  BEGIN;
702
703  LOCK TABLE old_table;
704
705  SELECT ... -- minden oszlopot, kivétel amit törölni szeretnél
706
707  INTO TABLE new_table
708
709  FROM old_table;
710
711  DROP TABLE old_table;
712
713  ALTER TABLE new_table RENAME TO old_table;
714
715  COMMIT;
716
717     4.5) Mi a maximális mérete egy sornak, egy táblának vagy egy adatbázisnak?
718
719    A korlátok:
720
721      * adatbázis: korlátlan (1 TB az általunk ismert lagnagyobb)
722
723      * tábla: 16 TB
724
725      * rekord/sor 1.6TB
726
727      * mezö 1 GB
728
729      * a tábla sorainak száma: korlátlan
730
731      * a tábla oszlopainak száma: 250-1600 az oszlop nevektõl függöen
732
733      * A tábla indexeinek száma: korlátlan
734
735    Természetesen nem igazán korlátlan, de a tárterület, memoria és egyéb
736    külsö tényezök korlátozzák. A teljesitmény romolhat, ha ezek az értékek
737    szokatlanul nagyok.
738
739    A 16 TB-os legnagyobb tábla méret nem igényel nagy állomány támogatást. A
740    nagy táblák több 1 GB méretü állományba kerölnek, igy az állomány rendszer
741    korlátai nem lényegesek.
742
743    A maximális tábla méret és az oszlopok maximális oszlop szám növelhetö, ha
744    az alapértelmezett blokkméretet 32k-ra növeled.
745
746    4.6) Mekkora adatbázis lemez terület szükséges egy tipikus szöveg állomány
747    tárolásához?
748
749    A PostgreSQL akár a szöveg állomány helyigényének ötszörösét is
750    elfoglalhatja.
751
752    Képzelj el például, egy 100.000 soros szöveget, aminek minde sora egy
753    számbol és egy szövegbõl áll. Tegyük el, hogy átlagosan 20 byte hosszú
754    szövegek. Ez a szövegállomány körülbelül 2.8 MB helyet foglalna el. A
755    tábla ami a fenti adatszerkezetet eltárolná, körülbelül 6.4 MB-os lenne.
756    Ezt a következöképpen számolhatjuk ki:
757
758    36 byte: sor fejléc
759
760  24 byte: egy int mezö + egy szöveg mezö
761
762  4 byte: mutato
763
764  ---------------------------------------
765
766  64 byte soronkent.
767
768    Az adat oldal mérete a PostgreSQL-ben 8192 byte, igy 8192 / 64 = 128
769    rekord adatbázis oldalanként (lefelé kerekitve).
770
771  100000 rekord / 128 rekord oldalanként = 782 adat oldal
772  (felelé kerekitve).
773
774  782 adatbázis oldal * 8192 byte olalanként = 6,406,144
775  byte (6.4 MB)
776
777    Az indexek nem foglalnak túl sokat, de tartalmazzák az indexelt adatot,
778    igy ezek is lehetnek nagyok.
779
780    A NULL értékek bittérképben vannak tárolva, igy kevés helyet foglanak.
781
782    4.7) Hogy tudhatom meg milyen táblák, indexek, adatbázisok vagy
783    felhasználok
784
785    vannak definiálva?
786
787    A psql-ben találsz számos '\' karakterrel kezdödö utasítást az ilyen
788    informáciok listázására. A '\?' segitségével tudot kilistázni ezeketa
789    parancsokat. Ezen kivül vannak rendszer táblák, amelyek nevei 'pg_'-vel
790    kezdödnek.
791
792    Probáld ki a pgsql/src/tutorial/syscat.source állományt is. Ez sok példát
793    tartalmaz az rendszertáblákon végrehajtott SELECT-ekröl.
794
795    4.8) A lekérdezéseim lassúak, vagy nem használják az indexeket. Miért?
796
797    Az indexeket nem használja a szerver minden lekérdezésnél automatikusan.
798    Csak akkor használ indexet, ha a tábla mérete egy megadott also határ
799    felett van, és a lekérdezés csak a sorok egy kis részét érinti. Ez azért
800    van, mert a véletlen hozzáférés még mindig lassabb lehet mint az tábla
801    szekvenciális olvasása.
802
803    Hogy a PostgreSQL meg tudja határozni hogy kell-e indexet használni,
804    léteznie kell egy statisztikának a táblárol. Ez a statisztikai adatok a
805    VAACUM ANALYZE vagy az egyszerû ANALYZE mûveletek során jönnek létre. A
806    statisztikai adatok felhasználásával az optimalizálo meg tudja határozni,
807    hogy hány sor van a táblában, és el tudja dönteni, hogy használjon-e
808    indexet. A statisztiaki adatgyüjtést idõnként végre kell hajtani, ahogy a
809    tábla adatai változnak.
810
811    Az indexeket normális esetben nem használja az ORDER BY vagy az OUTER
812    JOIN. A szekvenciális olvasás általában gyorsabb, mint az index keresés
813    egy nagy táblában. Bár a LIMIT az ORDER BY-val kombinálva használhat
814    indexet, mert a tábla csak kis része érintett. Bár a MIN és MAX SQL
815    funkciok sem használják az indexeket, ezeket az értékeket egy ORDER BY +
816    LIMIT lekérdezéssel is le lehet kérdezni:
817
818  SELECT col
819
820  FROM tab
821
822  ORDER BY col [ DESC ]
823
824  LIMIT 1;
825
826    Amikor helyettesítõ jel operátorokat használsz, mint a LIKE kulcsszo vagy
827    a ~, az indexeket csak bizonyos körülmények között lehet használni:
828
829    A keresõ string kezdete a keresési minta elején kell hogy legyen. Például:
830
831      * A LIKE minták nem kezdõdhetnek % jellel.
832      *  ~ (regexp) kifejezések nem kezdõdhetnek ^ jellel.
833      * A keresési kifejezés nem kezdõdhet karakter osztállyal.
834      * A case-insensitive keresés (ILIKE, ~*) nem használnak indexet ehelyett
835        funkcionális indexet használnak, amit a 4.12 pontban találhatsz.
836      * Az alapértelmezett C hellyel kell futtatni az initdb-t.
837    4.9) Hogy tudom ellenõrizni, hogy optimalizálta a lekérdezés optimalizálo
838    a lekérdezésem?
839
840    Olvasd el a dokumentácio EXPLAIN-rol szolo részét.
841
842    4.10) Mi az R-tree index?
843
844    Az R-tree index a térbeli adat indexelésére alkalmas. Egy hash index nem
845    képes tartomány keresésekre. A B-tree index csak egy dimenzion kezeli a
846    tartomány kereséseket. Például ha az indexet egy pont (point adattípus)
847    típusú mez.re építjük, gyorsabban kezeli az olyan jellegü lekérdezéseket,
848    mint egy adott körben
849
850    találhato pontok.
851
852    Az R-tree tervezési mintát eredetileg leíro szöveg: Guttman, A. "R-trees:
853    A Dynamic Index Structure for Spatial Searching." Proceedings of the 1984
854    ACM SIGMOD Int'l Conf on Mgmt of Data, 45-57.
855
856    Ezt olvashatod Stonebraker "Readings in Database Systems" c. könyvében.
857
858    A beépített R-tree kezelni tudják a sokszögeket (polygon adattípus) és a
859    dobozokat (box). Elméletileg, az R-tree kiterjeszthetõ további dimenziokra
860    is. Gyakorlatilag ezen dolgoznod kell egy kicsit, és még nincs
861    dokumentácionk arrol hogy az hogyan mûködik.
862
863    4.11) Mi a Genetic Query Optimizer?
864
865    A GEQO modul a lekérdezés optimalizácio sebességét növeli nagy mennyiségû
866    tábla összekapcsolása esetén. Lehetõvé teszi a nagy lekérdezések
867    végrehajtását nem teljes kereséssel.
868
869    4.12) Hogyan tudok regexp keresést és case-insensitive regexp keresést
870    használni? Hogyan tudok indexet használni case-insensitive kereséshez?
871
872    A ~ operátor hajt végre reguláris kifejezés (regexp) értelmezést, a ~*
873    ennek case-insensitive változata. A LIKE case-insensitive változata az
874    ILIKE.
875
876    A case-insensitive egyenlõség mûveleteket általában igy hajtjuk végre:
877
878    SELECT *
879
880  FROM tab
881
882  WHERE lower(col) = 'abc';
883
884    Ez nem fog indexet használni, bár létrehozhatsz egy funkcio indexet:
885
886  CREATE INDEX tabindex ON tab (lower(col));
887
888    4.13) Hogyan tudom észlelni egy lekérdezésben, ha egy mezõ NULL?
889
890    Használd "IS NULL"-t és az "IS NOT NULL"-t.
891
892    4.14) Mi a különbség a különbözõ karaktertípusok között?
893
894      * "char" egy karakter hosszú string
895      * CHAR(n) bpchar üres hellyel a megadott n hosszúságig
896      * VARCHAR(n) varchar méret maximális hossz meghatározásával, a lefogllat
897        terület is változo hosszú lesz
898      * TEXT nincs meghatározott felso" korlát
899      * BYTEA változo hosszúságú byte-tömb
900
901    Látni fogod a belsõ elnevezésüket, ha tanulmányozod a rendszertáblákatés
902    néhány hibaüzenetet.
903
904    Az utobbi négy a "varlena" típusok, ami a tárolásuk modjára utal: az elsõ
905    4 byte a lemezen a hosszúság, a többi az adat. A valodi méret tehát
906    nagyobb mint a deklarált hosszúság.Ezek azadatok tömöritve tárolodnak el,
907    igy kevesebb helyet foglalnek el az elöre számitottnál.
908
909    A CHAR(n) a legjobb megoldás, ha stabil hosszúságú stringet tárolsz. A
910    VARCHAR(n) jo arra az esetekre, ha a hosszúság változik, de van felsõ
911    korlátja. A TEXT típus korlátlan hosszúságú (1 GB-ig) szövegek tárolására
912    alklamas. A BYTEA bináris adatok tárolására van. A teljesitmény mutatoi
913    hasonloak ezenek a típusoknak.
914
915    4.15.1) Hogyan tudok létrehozni automatikusan növekvõ értékû mezõt?
916
917    A PostgreSQL rendelkezik egy SERIAL adattípussal. Ez egy szekvenciát és
918    egy indexet hoz létre az oszlopon. Például ez:
919
920  CREATE TABLE person (
921
922  id SERIAL,
923
924  name TEXT
925
926  );
927
928    ugyanezt jelenti:
929
930  CREATE SEQUENCE person_id_seq;
931
932  CREATE TABLE person (
933
934  id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
935
936  name TEXT
937
938  );
939
940  CREATE UNIQUE INDEX person_id_key ON person ( id );
941
942    A szekvenciákkal kapcsolatban olvasd el a create_sequence man oldalt. A
943    sor OID-jét is használhatod egyedi azonositoként, bár ebben az esetben
944    figyelj a pg_gump használatánál a -o opciora (COPY WITH OIDS, másolás
945    OID-dal), hogy meg?rizd az értékeket.
946
947    4.15.2) Hogyan kaphatom meg egy SERIAL beszúrás értékét?
948
949    Egy megoldás erre az, ha a nextval() funkcioval megszerzed az értéket még
950    mielött beszúrnád az adatot a táblába. Erre itt láthatsz egy példát:
951
952  new_id = execute("SELECT nextval('person_id_seq')");
953
954  execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise
955  Pascal')");
956
957    Esetleg lekérdezheted a szekvencia állapotát a sor beszúrása után.
958
959  execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
960
961  new_id = execute("SELECT currval('person_id_seq')");
962
963    Végül pedig, használhatod a visszaadott OID értéket is, bár ez a lehetõ
964    legkevésbé portolhato. Perl DBI-ben, Edmund Mergl DBD::Pg moduljában az
965    OID érték használhato a $sth->execute() után ($sth->{pg_oid_status}).
966
967    4.15.3) A currval() és a nextval() nem teremt holtpont veszélyes helyzetet
968    a felhasználok között?
969
970    Nem. A currval() funkcio a szerver processzed által adott értéket adja
971    vissza, nem pedig a többi szerver processz által adottat.
972
973    4.15.4) Miért nem használodnak fel újra a sequence számok tranzakcio abort
974    esetén?
975
976    Miért vannak problémák a serial oszlopok számozásával?
977
978    A párhuzamosság fejlesztése érdekében a sorozat számokat kérésre adja ki a
979    szerver futo tranzakcioknak, és azokat nem zárja, amig a tranzakcio véget
980    nem ér. Ez jukakat okoz a számozásokban a visszaforditott tranzakciok
981    miatt.
982
983    4.16) Mi a OID? Mi a TID?
984
985    Az OID a PostgreSQL egyedi sor azonositoja. Minden sor, ami létrejön a
986    szerveren, kap egy OID-t. Minden OID, amit az initdb alatt jön létre 16384
987    alatt van (lásd include/access/transam.h). Minden, felhasználo által
988    létrehozott OID legalább ennyi. Alapértelmezésben, az OID nem csak a
989    táblában vagy az adatbázisban egyedi, hanem a teljes PostgreSQL adatbázis
990    rendszerben.
991
992    A PostgreSQL az OID-okat a belsö tábláiban használja a sorok táblák között
993    összekapcsolásához. Ezek az OID-k használhatoak a rekordok azonositására
994    is amikor táblákat csatol össze a szerver (JOIN). Az OID-ot használhatod
995    mezö típusként is, és indexelheted is.
996
997    Az OID érték egy központi területröl származik, amit minden szerver
998    processz használ. Ha az OID-ot valami másra szeretnéd cserélni:
999
1000    CREATE TABLE new_table(old_oid oid, mycol int);
1001
1002  SELECT old_oid, mycol INTO new FROM old;
1003
1004  COPY new TO '/tmp/pgtable';
1005
1006  DELETE FROM new;
1007
1008  COPY new WITH OIDS FROM '/tmp/pgtable';
1009
1010    Az OID 4 byte-os integer értékként tárolodik, igy 4 milliárdnál
1011    túlcsordul. Még soha senki nem jelezte hogy ez történt volna, és ezt a
1012    korlátot igyekszünk eltávolitani, még mielött bárki észrevenné.
1013
1014    A TID a fizikai sorok blokk és offszet címmel valo azonositására szolgál.
1015    A TID változik minden rekord modositás és törlés alkalmával. Ezeket az
1016    indexek használják hogy a fizikai sort gyorsan megtalálják.
1017
1018    4.17) Mi a PostgreSQL-ben használt kifejezések jelentése?
1019
1020    Néhol a forrás kodban és a dokumnetácioban találhatoak kifejezések,
1021    amelyek általánosabb jelentéssel bírnak. Itt van néhány:
1022
1023      * tábla (table), relácio (relation), osztály (class)
1024      * sor (row), rekord (record), tuple (nincs magyar jelentés)
1025      * oszlop (column), mezö (field), attributum (attribute)
1026      * retrieve, select
1027      * helyettesit (replace), modosit (update)
1028      * hozzáfûz (append), beszúr (insert)
1029      * OID, sorozat érték (serial value)
1030      * portal, cursor
1031      * range variable, tábla név, tábla alias
1032    Az általános adatbázis kifejezések összefoglaloját itt olvashato:
1033
1034    http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html
1035
1036    4.18) Miért kapom ezt a hibát: "ERROR: Memory exhausted in
1037    AllocSetAlloc()"?
1038
1039    Lehet hogy elfogyott a virtuális memoriád, vagy a kerneled erõforrás
1040    korlátai alacsonyak. Probáld ki ezt mielött elinditanád a postmastert:
1041
1042  ulimit -d 262144
1043
1044  limit datasize 256m
1045
1046    A shelltõl függõen ezek közül csak az egyik fut majd le, de a processzek
1047    adatszegmensét sokkal magasabbra állitja, ami talán elég lesz a lekérdezés
1048    végrehajtásához. Ez az utasítás a jelenlegi processzre (a shelled)
1049    érvényes, és minden általa létrehozott processzre. Ha problémád van az SQL
1050    klienssel, mert a szerver túl nagy adatot küld vissza, probáld meg e
1051    klienssel is ugyanezt.
1052
1053    4.19) Hogyan tudhatom meg PostgreSQL, milyen verziot futtatok?
1054
1055    A psql programban select version();
1056
1057    4.20) Miért kapok "invalid large obj descriptor" hibát nagy objektumok
1058    kezelésénél?
1059
1060    A nagy objektumok kezelését egy tranzakcios blokkban helyezd el. (BEGIN és
1061    COMMIT között)
1062
1063    Jelenleg a PostgreSQL ezt a szabályt azzal teszi kötelezõvé, hogy a
1064    tranzakcio végén a nagy objektumokat lezárja, igy a tranzakcio után az
1065    elsõ mûvelet amit az objektumon végrahajtanál hibás lesz.
1066
1067    Ha olyan programozási felületet használsz mint az ODBC vagy a JDBC akkor
1068    valoszinûleg ki kell kapcsolnod az auto-commit-ot.
1069
1070    4.21) Hogy hozhatok létre olyan oszlopot, aminek alapértelmezett érétke a
1071    jelenlegi idõ?
1072
1073    Használd a CURRENT_TIMESTAMP -ot:
1074
1075  CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
1076
1077    4.22) Miért olyan lassúak az al-lekérdezéseim IN-nel?
1078
1079    Jelenleg az al-lekérdezéseket a külsõ lekérdezéshez csatoljuk. Ha az
1080    allekérdezés csak kevés sort eredményez és a külsõ lekérdezés sokat, akkor
1081    az IN is gyors. Az EXISTS kulcsszo használatával gyorsithatod a
1082    lekérdezéseket.
1083
1084    SELECT *
1085
1086  FROM tab
1087
1088  WHERE col IN (SELECT subcol FROM subtab);
1089
1090    EXISTS használatával:
1091
1092  SELECT *
1093
1094  FROM tab
1095
1096  WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
1097
1098    Ahhoz hogy ez gyorsan fusson le, a subcol indexelt oszlopnak kell hogy
1099    legyen. Reméljük ezt a korlátot sikerül hamarosan legyõznünk.
1100
1101    4.23) Hogyan tudok outer join-t végrehajtani?
1102
1103    A PostgreSQL a szabványos SQL szintaktikát követi. Itt van két példa:
1104
1105    SELECT *
1106
1107  FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
1108
1109    vagy
1110
1111  SELECT *
1112
1113  FROM t1 LEFT OUTER JOIN t2 USING (col);
1114
1115    Ezek az identikus lekérdezések összekapcsolják a t1.col és a t2.col
1116    mezõket, és a t1 bármelyik kapcsolatlan sorát is visszadják. A RIGHT JOIN
1117    a t2 kapcsolatlan sorait adta volna vissza, a FULL JOIN pedig a kapcsolt,
1118    és mindkét tábla kapcsolatlan sorait adja. Az OUTER kulcsszo opcionális, a
1119    LEFT, RIGHT és FULL JOIN szintaktikailag helyes. Az átlagos
1120    összekapcsolásokat INNER JOIN-nak nevezzük.
1121
1122    Az elõzõ kiadásokban a OUTER JOIN lekérdezéseket UNION és NOT IN
1123    kulcsszavakkal lehetett szimulálni. Például a tab1 és a tab2
1124    összekapcsolása:
1125
1126  SELECT tab1.col1, tab2.col2
1127
1128  FROM tab1, tab2
1129
1130  WHERE tab1.col1 = tab2.col1
1131
1132  UNION ALL
1133
1134  SELECT tab1.col1, NULL
1135
1136  FROM tab1
1137
1138  WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
1139
1140  ORDER BY col1
1141
1142    4.24) Hogyan tudok több adatbázison végrehajtani lekérdezést?
1143
1144    Arra nincs lehetõség, hogy más adatbázisbol kérdezz le adatot.Mivel a
1145    PostgreSQL adatbázis specifikus rendszer táblákat töltbe, bizonytalan hogy
1146    egy adatbázisok közötti lekérdezésnek hogyankellene viselkednie.
1147
1148    A contrib/dblink könyvtárban találsz egy megoldást erre, ami funkcio
1149    hivások segitségével mûködik. Persze, a kliens hozhat létreszimultán
1150    kapcsolatot több adatbázissal, és összefésülheti az eredményeket.
1151
1152    4.25) Hogy tudok több soros vagy oszlopos eredményt visszaadni egy
1153    funkciobol?
1154
1155    A PL/pgSQL tárolt eljárás nyelvvel refcursor használatával. Részletesen
1156    itt:
1157
1158    http://www.PostgreSQL.org/idocs/index.php?plpgsql-cursors.html
1159
1160    4.26) Miért nem tudom megbizhatoan létrehozni és törölni az átmeneti
1161    táblákat a PL/pgSQL funkciokban?
1162
1163    A PL/pgSQL cacheli a funkciok tartalmát, aminek az a szerencsétlen
1164    mellékhatása, hogy ha egy PL/pgSQL funkcio használ egy átmeneti táblát,
1165    ami késo"bb törlõdik majd ujra létrejön, akkor az újra lefuto funkcio nem
1166    fogja megtalálni a táblát, mert a cache változat a régi táblára tartalmaz
1167    mutatot. A megoldás erre az EXECUTE használata az átmeneti táblák
1168    kezelésére PL/pgSQL-ben. Ez a lekérdezés újrafordítását fogja elõidézni
1169    minden alkalommal.
1170
1171    4.27) Milyen replikácios lehetõségek vannak?
1172
1173    Bár a replikácio egyetlen terület, több technologia létezik replikáciora,
1174    természetesen mindnek meg vannak a maga elo"nyei és hátrányai.
1175
1176    A master/slave replikácios megoldással a master adatbázison hajthatunk
1177    végre modosításokat, míg a slave adatbázisokon csak lekérdezéseket. A
1178    PostgreSQL legnépszeru"bb master/slave replikácios megoldása a Solny-I.
1179
1180    Számos más master/slave replikácios lehetõség létezik.Egy Listát
1181    olvashatsz ezekrõl itt:
1182
1183    http://gborg.PostgreSQL.org/genpage?replication_research
1184
1185    A multi-master replikácio leheto"vé teszi több master adatbázis
1186    használatát, bár ez a technologia drasztikusan csökkenti az adatbázis
1187    teljesítményét a sok szinkornizácio miatt. A PGCluster a legelterjedtebb
1188    ilyen megoldás.
1189
1190    Egy többfelhasználos replikácios rendszer készül itt:
1191
1192    http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.
1193
1194    4.28) Milyen kodolási lehetõségek vannak?
1195
1196      * A contrib/pgcrypto tartlamaz számos SQL lekérdezésben használhato
1197        kodolást.
1198      * A kliens-szerver kommunikácio rejtjelezésére a hostssl használhato.
1199        Ezt a pg_hba.conf-ben engedélyeztheted.
1200      * Az adatbázis felhsználok jelszavait tároláskor kodolja a rendszer. 
1201      * Régebbi verziokban a PASSWORD_ENCRYPTION opcioval lehetett
1202        bekapcsolni.
1203      * A szerveren használhatsz kodolt fájrendszert.
1204
1205      ----------------------------------------------------------------------
1206
1207 A PostgreSQL kiterjesztése
1208
1209    5.1) Írtam egy felhasználoi funkciot. Miért core dumpol az adatbázis
1210    amikor használom?
1211
1212    Számos probléma lehet. Elöbb probáld ki a funkciodat egy különállo
1213    alkalmazásban.
1214
1215    5.2) Hogyan lehet új adattípusokat és funkciokat hozzáadni a PostgreSQL
1216    disztribúciohoz?
1217
1218    Küldd el a kiegészítéseid a pgsql-hackers levelezési listára és a
1219    forráskodjaid végül a contrib-ban kötnek ki.
1220
1221    5.3) Hogyan lehet olyan C funkciot írni, ami Tuple-t ad vissza?
1222
1223    A 7.3 verziotol kezdve a PostgreSQL támogatja a táblázatokat viszzaado
1224    funkciokat C, PL/pgSQL és SQL nyelveken. Bõvebb dokumentáciot a Programozo
1225    kézikönyvben találsz. Egy C példa funkcio találhato a contrib/tablefunc
1226    könyvtárban.
1227
1228    5.4) Megváltoztattam egy forrás állományt. Miért nem változik a bináris
1229    újrafordítás után?
1230
1231    A Makefile-ok nem ismerik a include állományok megfelelõ függõségeit.
1232    Végre kell hajtanod egy make clean-t, majd újra egy make-t. Ha GCC-t
1233    használsz felhasználhatod a configure script --enable-depend opcioját, így
1234    a compiler maga fogja ellenõrizni a függõségeket.