Commit 928b06a6 authored by Bruce Momjian's avatar Bruce Momjian

Update Hungarian FAQ and add an HTML version.

Laszlo Hornyak
parent 128c25b5
PostgreSQL GyIK
PostgreSQL GyIK Utolso modosts dtuma: 2005 mjus 9.
Utols mdosts dtuma: 2002 Okt 20.
Fordts aktualizlsa: 2003 janur Fordts aktualizlsa: 2005 jnius
A GyIK karbantartja: Bruce Momjian (pgman@candle.pha.pa.us) A GyIK karbantartoja: Bruce Momjian (pgman@candle.pha.pa.us)
Fordt: Hornyk Lszl (hornyakl.NOSPAM@inf.elte.hu)
Fordto: Hornyk Lszlo
A legfrissebb verzi itt rhet el (angol): (laszlo.hornyak.nospam@gmail.com)
http://www.PostgreSQL.org/docs/faq-english.html.
A legfrissebb verzio itt rhet el (angol):
Legfrissebb magyar nyelv verzi:
http://www.rootshell.be/~hornyakl/downloads/postgres_faq/ http://www.PostgreSQL.org/docs/faq-english.html.
Platform specifikus krdsek: Legfrissebb magyar nyelv verzio:
http://www.PostgreSQL.org/users-lounge/docs/faq.html.
_________________________________________________________________ http://hackers.forgeahead.hu/space/PostgreSQL/GYIK
ltalnos krdsek Platform specifikus krdsek:
1.1) Mi a PostgreSQL? Hogy kell kimondani? http://www.PostgreSQL.org/users-lounge/docs/faq.html.
1.2) Mik a PostgreSQL felhasznlsi felttelei?
1.3) Milyen UNIX opercis rendszereken fut PostgreSQL? ----------------------------------------------------------------------
1.4) Milyen nem UNIX opercis rendszerek elrhetek?
1.5) Hogyan tudok PostgreSQL-t szerezni? ltalnos krdsek
1.6) Hogyan kapok termktmogatst?
1.7) Melyik a legfrissebb kiads? 1.1 Mi a PostgreSQL? Hogy kell kimondani?
1.8) Milyen dokumentci ll rendelkezsre? 1.2 Mik a PostgreSQL felhasznlsi felttelei?
1.9) Hogyan tallok informcit hibkrl vagy hinyz funkcionaltsrl? 1.3 Milyen UNIX opercios rendszereken fut PostgreSQL?
1.10) Hogy tanuljam meg az SQL nyelvet? 1.4 Milyen nem UNIX opercios rendszerek elrhetek?
1.11) A PostgreSQL 2000. v kompatibilis? 1.5 Hogyan tudok PostgreSQL-t szerezni?
1.12) Hogyan lehet csatlakozni a fejleszt csapathoz? 1.6 Hogyan kapok termktmogatst?
1.13) Hogyan kldjek hibajelentst? 1.7 Melyik a legfrissebb kiads?
1.14) Milyen a PostgreSQL ms DBMS-ekkel sszehasonltva? 1.8 Milyen dokumentcio ll rendelkezsre?
1.15) Hogyan tudom zletileg segiteni a PostgreSQL-t? 1.9 Hogyan tallok informciot hibkrol vagy hinyzo funkcionaltsrol?
1.10 Hogy tanuljam meg az SQL nyelvet?
Felhasznli kliens krdsek 1.11 A PostgreSQL 2000. v kompatibilis?
1.12 Hogyan lehet csatlakozni a fejleszt csapathoz?
2.1) Van ODBC meghajt PostgreSQL-hez? 1.13 Hogyan kldjek hibajelentst?
2.2) Milyen eszkzk llnak rendelkezsre PostgreSQL Web fejlesztsekhez? 1.14 Milyen a PostgreSQL ms DBMS-ekkel sszehasonltva?
2.3) Van a PostgreSQL-hez grafikus felhasznli fellet ? Riport 1.15 Hogyan tudom zletileg segiteni a PostgreSQL-t?
genertor? Begyazott lekrdez nyelv fellet? 1.16 Ki irnytja a PostgreSQL-t?
2.4) Milyen programozsi nyelvekkel lehet elrni a PostgreSQL szervert?
Felhasznloi kliens krdsek
Adminisztrcis krdsek
2.1 Van ODBC meghajto PostgreSQL-hez?
3.1) Hogyan tudom a PostgreSQL-t /usr/local/pgsql -tl eltr helyre 2.2 Milyen eszkzk llnak rendelkezsre PostgreSQL Web fejlesztsekhez?
2.3 Van a PostgreSQL-hez grafikus felhasznloi fellet ? Riport genertor?
Begyazott lekrdez nyelv fellet?
2.4 Milyen programozsi nyelvekkel lehet elrni a PostgreSQL szervert?
Adminisztrcios krdsek
3.1 Hogyan tudom a PostgreSQL-t /usr/local/pgsql -tl eltr helyre
installlni? installlni?
3.2) AMikor elindtom a postmaster-t, egy "Bad System Call"-t vagy core 3.2 AMikor elindtom a postmaster-t, egy "Bad System Call"-t vagy core
dump-ot kapok. Mirt? dump-ot kapok. Mirt?
3.3) Amikor megprblom inditani a postmaster-t, "IpcMemoryCreate" hibkat 3.3 Amikor megproblom inditani a postmaster-t, "IpcMemoryCreate" hibkat
kapok. Mirt? kapok. Mirt?
3.4) Amikor megprblom inditani a postmaster-t, "IpcSemaphoreCreate" hibkat 3.4 Amikor megproblom inditani a postmaster-t, "IpcSemaphoreCreate"
kapok. Mirt? hibkat kapok. Mirt?
3.5) Hogyan tudom kontrolllni a ms gpekrl rkez kapcsolat krseket? 3.5 Hogyan tudom kontrolllni a ms gpekrl rkez kapcsolat krseket?
3.6) Hogyan tudom nagyobb teljestmnyre hangolni az adatbzisomat? 3.6 Hogyan tudom nagyobb teljestmnyre hangolni az adatbzisomat?
3.7) Milyen hibakeres lehetsgek rhetek el? 3.7 Milyen hibakeres lehetsgek rhetek el?
3.8) Mirt kapok "Sorry, too many clients" hibt csatlakozsnl? 3.8 Mirt kapok "Sorry, too many clients" hibt csatlakozsnl?
3.9) Mi van pgsql_tmp knyvtrban? 3.9 Mi van pgsql_tmp knyvtrban?
3.10) Mirt kell dumpolni s jratlteni PostgreSQL kiads vltsnl? 3.10 Mirt kell dumpolni s jratlteni PostgreSQL kiads vltsnl?
Mkdtetsi krdsek Mkdtetsi krdsek
4.1) Mi a klnbsg a binris s a norml kurzorok kztt? 4.1 Mi a klnbsg a binris s a norml kurzorok kztt?
4.2) Hogyan tudom select-elni a lekrdezs els pr sort? 4.2 Hogyan tudom select-elni a lekrdezs els pr sort?
4.3) Hogy tudom kilistzni a tblkat vagy ms dolgokat a PostgreSQL-ben? 4.3 Hogy tudom kilistzni a tblkat vagy ms dolgokat a PostgreSQL-ben?
4.4) Hogyan tudok eltvoltani egy oszlopot egy tblbl? 4.4 Hogyan tudok eltvoltani egy oszlopot egy tblbol?
4.5) Mi a maximlis mrete egy sornak, egy tblnak vagy egy adatbzisnak? 4.5 Mi a maximlis mrete egy sornak, egy tblnak vagy egy adatbzisnak?
4.6) Mekkora adatbzis lemez terlet szksges egy tipikus szveg llomny 4.6 Mekkora adatbzis lemez terlet szksges egy tipikus szveg llomny
trolshoz? trolshoz?
4.7) Hogy tudhatom meg milyen tblk, indexek, adatbzisok vagy felhasznlk 4.7 Hogy tudhatom meg milyen tblk, indexek, adatbzisok vagy
vannak definilva? felhasznlok vannak definilva?
4.8) A lekrdezseim lassak, vagy nem hasznljk az indexeket. Mirt? 4.8 A lekrdezseim lassak, vagy nem hasznljk az indexeket. Mirt?
4.9) Hogy tudom ellenrizni, hogy optimalizlta a lekrdezs optimalizl a 4.9 Hogy tudom ellenrizni, hogy optimalizlta a lekrdezs optimalizlo a
lekrdezsem? lekrdezsem?
4.10) Mi az R-tree index? 4.10 Mi az R-tree index?
4.11) Mi a Genetic Query Optimizer? 4.11 Mi a Genetic Query Optimizer?
4.12) Hogyan tudok regexp keresst s case-insensitive regexp keresst 4.12 Hogyan tudok regexp keresst s case-insensitive regexp keresst
hasznlni? Hogyan tudok indexet hasznlni case-insensitive keresshez? hasznlni? Hogyan tudok indexet hasznlni case-insensitive keresshez?
4.13) Hogyan tudom szlelni egy lekrdezsban, ha egy mez NULL? 4.13 Hogyan tudom szlelni egy lekrdezsban, ha egy mez NULL?
4.14) Mi a klnbsg a klnbz karaktertpusok kztt? 4.14 Mi a klnbsg a klnbz karaktertpusok kztt?
4.15.1) Hogyan tudok ltrehozni automatikusan nvekv rtk mezt? 4.15.1 Hogyan tudok ltrehozni automatikusan nvekv rtk mezt?
4.15.2) Hogyan kaphatom meg egy SERIAL beszrs rtkt? 4.15.2 Hogyan kaphatom meg egy SERIAL beszrs rtkt?
4.15.3) A currval() s a nextval() nem teremt holtpont veszlyes helyzetet 4.15.3 A currval() s a nextval() nem teremt holtpont veszlyes helyzetet
a felhasznlk kztt? a felhasznlok kztt?
4.15.4) Mirt nem hasznldnak fel jra a sequence szmok tranzakci abort 4.15.4 Mirt nem hasznlodnak fel jra a sequence szmok tranzakcio abort
esetn? esetn? Mirt vannak problmk a serial oszlopok szmozsval?
Mirt vannak problmk a serial oszlopok szmozsval? 4.16 Mi a OID? Mi a TID?
4.16) Mi a OID? Mi a TID? 4.17 Mi a PostgreSQL-ben hasznlt kifejezsek jelentse?
4.17) Mi a PostgreSQL-ben hasznlt kifejezsek jelentse? 4.18 Mirt kapom ezt a hibt: "ERROR: Memory exhausted in
4.18) Mirt kapom ezt a hibt: "ERROR: Memory exhausted in
AllocSetAlloc()"? AllocSetAlloc()"?
4.19) Hogyan tudhatom meg PostgreSQL, milyen verzit futtatok? 4.19 Hogyan tudhatom meg PostgreSQL, milyen verziot futtatok?
4.20) Mirt kapok "invalid large obj descriptor" hibt nagy objektumok 4.20 Mirt kapok "invalid large obj descriptor" hibt nagy objektumok
kezelsnl? kezelsnl?
4.21) Hogy hozhatok ltre olyan oszlopot, aminek alaprtelmezett rtke a 4.21 Hogy hozhatok ltre olyan oszlopot, aminek alaprtelmezett rtke a
jelenlegi id? jelenlegi id?
4.22) Mirt olyan lassak az al-lekrdezseim IN-nel? 4.22 Mirt olyan lassak az al-lekrdezseim IN-nel?
4.23) Hogyan tudok outer join-t vgrehajtani? 4.23 Hogyan tudok outer join-t vgrehajtani?
4.24) Hogyan tudok tbb adatbzison vgrehajtani lekrdezst? 4.24 Hogyan tudok tbb adatbzison vgrehajtani lekrdezst?
4.25) Hogy tudok tbb soros vagy oszlopos eredmnyt visszaadni egy 4.25 Hogy tudok tbb soros vagy oszlopos eredmnyt visszaadni egy
funkcibl? funkciobol?
4.26) Mirt nem tudom megbizhatan ltrehozni s trlni az tmeneti 4.26 Mirt nem tudom megbizhatoan ltrehozni s trlni az tmeneti
tblkat a PL/pgSQL funkcikban? tblkat a PL/pgSQL funkciokban?
4.27) Milyen replikcis lehetsgek vannak? 4.27 Milyen replikcios lehetsgek vannak?
4.28) Milyen kdolsi lehetsgek vannak? 4.28 Milyen kodolsi lehetsgek vannak?
A PostgreSQL kiterjesztse A PostgreSQL kiterjesztse
5.1) rtam egy felhasznli funkcit. Mirt core dumpol az adatbzis amikor 5.1) rtam egy felhasznloi funkciot. Mirt core dumpol az adatbzis
hasznlom? amikor hasznlom?
5.2) Hogyan lehet j adattpusokat s funkcikat hozzadni a PostgreSQL 5.2) Hogyan lehet j adattpusokat s funkciokat hozzadni a PostgreSQL
disztribcihoz? disztribciohoz?
5.3) Hogyan lehet olyan C funkcit rni, ami Tuple-t ad vissza? 5.3) Hogyan lehet olyan C funkciot rni, ami Tuple-t ad vissza? (tbb
(tbb soros tbb oszlopos eredmnyek) soros tbb oszlopos eredmnyek)
5.4) Megvltoztattam egy forrs llomnyt. Mirt nem vltozik a binris 5.4) Megvltoztattam egy forrs llomnyt. Mirt nem vltozik a binris
jrafordts utn? jrafordts utn?
_________________________________________________________________
----------------------------------------------------------------------
ltalnos krdsek ltalnos krdsek
1.1 Mi a PostgreSQL? Hogy kell kimondani?
1.1) Mi a PostgreSQL? Hogy kell kimondani?
gy ejstd ki: Post-Gres-Q-L. gy ejstd ki: Post-Gres-Q-L.
(Vagy taln inkbb tltsd le a kis mp3-at a PostgreSQL homepage-rl) (Vagy taln inkbb tltsd le a kis mp3-at a PostgreSQL homepage-rl)
A PostgreSQL a POSTGRES adatbzis management rendszer egy kiegsztse, A PostgreSQL a POSTGRES adatbzis management rendszer egy kiegsztse,
ami egy kvetkez genercis DBMS kutatsi prototpus. Megtartja a ami egy kvetkez genercios DBMS kutatsi prototpus. Megtartja a
POSTGRES adatmodellt s gazdag adattpus vlasztkt, de a PostQuel POSTGRES adatmodellt s gazdag adattpus vlasztkt, de a PostQuel
lekrdez nyelvet az SQL egy kiterjesztett verzijval helyettesti. lekrdez nyelvet az SQL egy kiterjesztett verziojval helyettesti. A
A PostgreSQL szabad s a teljes forrskd hozzfrhet. PostgreSQL szabad s a teljes forrskod hozzfrhet.
A PostgreSQL fejlesztst egy csapat vgzi, amelynek minden tagja A PostgreSQL fejlesztst egy csapat vgzi, amelynek minden tagja
megtallhat a PostgreSQL fejleszti levelezsi listn. A jelenlegi megtallhato a PostgreSQL fejleszti levelezsi listn. A jelenlegi
koordintor Marc G. Fournier (scrappyp@PostgreSQL.org). Ez a csapat koordintor Marc G. Fournier (scrappyp@PostgreSQL.org). Ez a csapat
felels minden fejlesztsrt. felels minden fejlesztsrt. <>A PostgreSQL 1.01 alkotoi Andrew Yu s
Jolly Chen voltak. Sokan jrultak hozz portolssal, tesztelssel,
A PostgreSQL 1.01 alkoti Andrew Yu s Jolly Chen voltak. Sokan hibakeresssel s fejlesztssel. Az eredeti Postgres kod, amibl a
jrultak hozz portolssal, tesztelssel, hibakeresssel s PostgreSQL szrmazik Michael Stonebraker professzor irnytsa alatt
fejlesztssel. Az eredeti Postgres kd, amibl a PostgreSQL szrmazik fejlesztettek az egyetem programozoi, tanuloi s vgzett tanuloi. <>
Michael Stonebraker professzor irnytsa alatt fejlesztettek az
egyetem programozi, tanuli s vgzett tanuli. A szoftver eredeti neve Postgres volt. Amikor SQL funkcionaltssal
egsztettk ki 1995-ben, a nevt Postgres95-re vltoztattk. 1996 vgn
A szoftver ereeti neve Postgres volt. Amikor SQL funkcionaltssal kapta mai nevt.
egsztettk ki 1995-ben, a nevt Postgres95-re vltoztattk. 1996
vgn kapta mai nevt. 1.2 Mik a PostgreSQL felhasznlsi felttelei?
1.2) Mik a PostgreSQL felhasznlsi felttelei? Az eredeti angol copyright szveg:
Az eredeti angol copyright szveg: --------------------
--------------------
PostgreSQL is subject to the following COPYRIGHT: PostgreSQL is subject to the following COPYRIGHT:
PostgreSQL Data Base Management System PostgreSQL Data Base Management System
Portions copyright (c) 1996-2002, PostgreSQL Global Development Group Portions copyright (c) 1996-2002, PostgreSQL Global Development Group
Portions Copyright (c) 1994-6 Regents of the University of California
Portions Copyright (c) 1994-6 Regents of the University of California
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose, without fee, and without a written Permission to use, copy, modify, and distribute this software and its
agreement is hereby granted, provided that the above copyright notice
and this paragraph and the following two paragraphs appear in all documentation for any purpose, without fee, and without a written
copies.
agreement is hereby granted, provided that the above copyright notice
IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, and this paragraph and the following two paragraphs appear in all
INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND
ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN copies.
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND
CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
UPDATES, ENHANCEMENTS, OR MODIFICATIONS. ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN
The above is the BSD license, the classic open-source license. It has ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
no restrictions on how the source code may be used. We like it and
have no intention of changing it. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
--------------------
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
Ami nagyon leegyszerstve azt jelenti, hogy jogod van hasznlni a
szoftvert mindenfle ellenszolgltats (pnz, stb) nlkl, a forrs MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
kdot mdosthatod, s tovbbadhatod, DE semmilyen, a szoftver hasznlatbl
kvetkez krosodsrt nem vllal garancit a fejleszt. PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
A fenti a BSD licensz, egy klasszikus nyilt-forrskd licensz. Nem CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
tartalmaz megszortsokat arra, hogy a forrskdot hogyan hasznlod fel.
UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
--------------------
Ami nagyon leegyszerstve azt jelenti, hogy jogod van hasznlni a
szoftvert mindenfle ellenszolgltats (pnz, stb) nlkl, a forrs kodot
modosthatod, s tovbbadhatod, DE semmilyen, a szoftver hasznlatbol
kvetkez krosodsrt nem vllal garancit a fejleszt. A fenti a BSD
licensz, egy klasszikus nyilt-forrskod licensz. Nem tartalmaz
megszortsokat arra, hogy a forrskodot hogyan hasznlod fel.
Kedveljk ezt a licensz formt s nem ll szndkunkban megvltoztatni. Kedveljk ezt a licensz formt s nem ll szndkunkban megvltoztatni.
1.3) Milyen UNIX opercis rendszereken fut PostgreSQL? 1.3 Milyen UNIX opercios rendszereken fut PostgreSQL?
ltalban minden UNIX-kompatibilis opercis rendszer kpes arra hogy ltalban minden UNIX-kompatibilis opercios rendszer kpes arra hogy
futtassa a PostgreSQL-t. Azokat a platformokat, amiken teszteltk a futtassa a PostgreSQL-t. Azokat a platformokat, amiken teszteltk a
kiadst megtallhatod a installcis utastsok kztt. kiadst megtallhatod a installcios utastsok kztt.
1.4) Milyen nem UNIX opercis rendszerek elrhetek? 1.4 Milyen nem UNIX opercios rendszerek elrhetek?
Kliens Kliens
A libpq C fggvnyknyvtrat, a psql-t s ms felleteket le lehet gy A libpq C fggvnyknyvtrat, a psql-t s ms felleteket le lehet gy
fordtani, hogy fussanak MS Windows opercis rendszereken. Ebben az esetben fordtani, hogy fussanak MS Windows opercios rendszereken. Ebben az
a kliens MS Windows-on fut s TCP/IP segtsgvel kommunikl a Unixon esetben a kliens MS Windows-on fut s TCP/IP segtsgvel kommunikl a
fut szerverrel. A "win32.mak" llomny a kiads rsze, ennek segtsgvel Unixon futo szerverrel. A "win32.mak" llomny a kiads rsze, ennek
lehet Win32 platformokra lefordtani a libpq-t s a psql-t. A PostgreSQL segtsgvel lehet Win32 platformokra lefordtani a libpq-t s a psql-t. A
ODBC kliensekkel is kpes kommuniklni. PostgreSQL ODBC kliensekkel is kpes kommuniklni.
Szerver Szerver
Az adatbzis szerver Cygwin segtsgvel fut Windows NT s Win2k <>Az adatbzis szerver Cygwin segtsgvel fut Windows NT s Win2k
rendszereken. Tovbbi informci tallhat a pgsql/doc/FAQ_MSWIN rendszereken. Tovbbi informcio tallhato a pgsql/doc/FAQ_MSWIN
llomnyban s a MS Windows FAQ-ban a kvetkez helyen: llomnyban s a MS Windows FAQ-ban a kvetkez helyen:
http://www.PostgreSQL.org/docs/faq-mswin.html. http://www.PostgreSQL.org/docs/faq-mswin.html. Natv MS Windows
NT/2000/XP portok jelenleg fejleszts alatt llnak.
Natv MS Windows NT/2000/XP portok jelenleg fejleszts alatt llnak.
1.5 Hogyan tudok PostgreSQL-t szerezni?
1.5) Hogyan tudok PostgreSQL-t szerezni?
Az elsdleges anonim ftp oldal: ftp://ftp.PostgreSQL.org/pub.
Az elsdleges anonim ftp oldal:
ftp://ftp.PostgreSQL.org/pub. A tkr oldalak listja megtallhato a f weboldalunkon.
A tkr oldalak listja megtallhat a f weboldalunkon.
1.6 Hogyan kapok termktmogatst?
1.6) Hogyan kapok termktmogatst?
Az elsdleges lista a pgsql-general@postgresql.org. Ez hasznlhato a
Az elsdleges lista a pgsql-general@postgresql.org. Ez hasznlhat PostgreSQL-lel kapcsolatos prbeszdekre. Ha fel szeretnl ratkozni,
a PostgreSQL-lel kapcsolatos prbeszdekre. Ha fel szeretnl ratkozni, kldj egy levelet a kvetkez tartalommal (nem trggyal) a
kldj egy levelet a kvetkez tartalommal (nem trggyal) a pgsql-general-request@postgresql.org cmre:
pgsql-general-request@postgresql.org cmre:
subscribe subscribe
end
end
Van egy hibkkal kapcsolatos levelezsi lista is: Van egy hibkkal kapcsolatos levelezsi lista is:
pgsql-bugs-request@PostgreSQL.org a kvetkez tartalommal: pgsql-bugs-request@PostgreSQL.org a kvetkez tartalommal:
subscribe
end subscribe
A fejleszt?i levelezsi lista: end
pgsql-hackers-request@PostgreSQL.org a kvetkez tertalommal:
subscribe A fejleszto"i levelezsi lista: pgsql-hackers-request@PostgreSQL.org a
end kvetkez tartalommal:
Egyb levelezsi listk tallhatak a weboldalunkon: subscribe
http://www.PostgreSQL.org end
Van egy IRC csatorna is #PostgreSQL nven ahol felteheted krdseid. Egyb levelezsi listk tallhatoak a weboldalunkon:
A kvetkez unix paranccsal csatlakozhatsz: http://www.PostgreSQL.org
Van egy IRC csatorna is #PostgreSQL nven ahol felteheted krdseid. A
kvetkez unix paranccsal csatlakozhatsz:
irc -c '#PostgreSQL' "$USER" irc.phoenix.net. irc -c '#PostgreSQL' "$USER" irc.phoenix.net.
A kereskedelmi termktmogatst nyjt cgek listja elrhet itt: A kereskedelmi termktmogatst nyjto cgek listja elrhet itt:
http://www.PostgreSQL.org/users-lounge/commercial-support.html http://www.PostgreSQL.org/users-lounge/commercial-support.html
1.7) Melyik a legfrissebb kiads? Magyar nyelvu" levelezsi lista nincs, de ha tudok segiteni a fenit e-mail
cimemen elrheto" vagyok.
A legfrissebb PostgreSQL kiads a 7.3.
1.7 Melyik a legfrissebb kiads?
A tervek szerint minden negyedik hnapban van j kiads.
A legfrissebb PostgreSQL kiads a 8.0.
1.8) Milyen dokumentci ll rendelkezsre?
A tervek szerint minden vben lesz egy nagyobb fejlesztseket tartalmazo
Szmos kziknyv, man oldalak s kis teszt pldk tallhatak a kiadsban kiads, mg a kisebb fejlesztseket nhny havonta adjuk ki.
a doc/ knyvtr alatt. Az interneten is olvashatod a dokumentcit a
1.8 Milyen dokumentcio ll rendelkezsre?
Szmos kziknyv, man oldalak s kis teszt pldk tallhatoak a kiadsban
a doc/ knyvtr alatt. Az interneten is olvashatod a dokumentciot a
kvetkez cmen: kvetkez cmen:
http://www.PostgreSQL.org/users-lounge/docs/. http://www.PostgreSQL.org/users-lounge/docs/.
Kt PostgreSQL knyv rhet el az interneten a Kt PostgreSQL knyv rhet el az interneten a
http://www.PostgreSQL.org/docs/awbook.html s a http://www.PostgreSQL.org/docs/awbook.html s a
http://www.commandprompt.com/ppbook/ cmeken. http://www.commandprompt.com/ppbook/ cmeken. A megvsrolhato knyvek
A megvsrolhat knyvek listja itt tallhat: listja itt tallhato: http://www.ca.PostgreSQL.org/books/. A
http://www.ca.PostgreSQL.org/books/. PostgreSQL-lel kapcsolatos technikai jelleg cikkek gyjtemnye:
A PostgreSQL-lel kapcsolatos technikai jelleg cikkek gyjtemnye:
http://techdocs.PostgreSQL.org/. http://techdocs.PostgreSQL.org/.
A psql parancs rendelkezik nhny \d utastssal, amellyekkel listzhatak A psql parancs rendelkezik nhny \d utastssal, amellyekkel listzhatoak
az opertorok, a funkcik, stb. az opertorok, a funkciok, stb.
A website is tartalmaz tovbbi dokumentcikat. A website is tartalmaz tovbbi dokumentciokat.
1.9) Hogyan tallok informcit hibkrl vagy hinyz funkcionaltsrl? 1.9 Hogyan tallok informciot hibkrol vagy hinyzo funkcionaltsrol?
A PostgreSQLaz SQL-92 szabvny egy kiegsztse. Nzd meg a TODO listkat A PostgreSQLaz SQL-92 szabvny egy kiegsztse. Nzd meg a TODO listkat
ha rdekelnek az ismert hibk. ha rdekelnek az ismert hibk.
1.10) Hogy tanuljam meg az SQL nyelvet? 1.10 Hogy tanuljam meg az SQL nyelvet?
A PostgreSQL knyv a http://www.PostgreSQL.org/docs/awbook.html A PostgreSQL knyv a http://www.PostgreSQL.org/docs/awbook.html cmen
cmen tartalmaz SQL alapokat. Elrhet egy msik SQL knyv is a tartalmaz SQL alapokat. Elrhet egy msik SQL knyv is a
http://www.commandprompt.com/ppbook cmen. Egy szp oktat anyag http://www.commandprompt.com/ppbook cmen. Egy szp oktato anyag tallhato
tallhat a http://www.intermedia.net/support/sql/sqltut.shtm, a http://www.intermedia.net/support/sql/sqltut.shtm, a
a http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM s a
s a http://sqlcourse.com oldalakon. http://sqlcourse.com oldalakon.
Egy msik lehetsg a "Tantsd magad 21 nap alatt SQL-re, msodik Egy msik lehetsg a "Tantsd magad 21 nap alatt SQL-re, msodik kiads"
kiads" a http://members.tripod.com/er4ebus/sql/index.htm. a http://members.tripod.com/er4ebus/sql/index.htm.
Sok felhasznlnak tetszett a gyakorlati SQL knyv ("The Practical Sok felhasznlonak tetszett a gyakorlati SQL knyv ("The Practical SQL
SQL Handbook"). Handbook").
1.11) A PostgreSQL 2000. v kompatibilis? 1.11 A PostgreSQL 2000. v kompatibilis?
Igen, knnyedn kezeli a 2000 utni s idszmtsunk eltt 2000 eltti Igen, knnyedn kezeli a 2000 utni s idszmtsunk eltt 2000 eltti
dtumokat is. dtumokat is.
1.12) Hogyan lehet csatlakozni a fejleszt csapathoz? 1.12 Hogyan lehet csatlakozni a fejleszt csapathoz?
Elsszr is tltsd le a forrskdot, s olvasd el a PostgreSQL Elsszr is tltsd le a forrskodot, s olvasd el a PostgreSQL
fejleszti dokumnetcit a web oldalunkon vagy a kiadsban. Ezutn fejleszti dokumnetciot a web oldalunkon vagy a kiadsban. Ezutn
ratkozz fel a pgsql-hackers s a pgsql-patches levelezsi listkra. ratkozz fel a pgsql-hackers s a pgsql-patches levelezsi listkra.
Vgl pedig kldj be magas szinvonal patch-eket a pgsql-patches listra. Vgl pedig kldj be magas szinvonal patch-eket a pgsql-patches listra.
Van egy pr ember, akiknek commit privilgiumuk a PostgreSQL CVS fn. Van egy pr ember, akiknek commit privilgiumuk a PostgreSQL CVS fn.
k olyan sok magas szinvonal patch-et kldtek be, hogy az addigi k olyan sok magas szinvonal patch-et kldtek be, hogy az addigi
csapat mr nem tudta kvetni, s nem volt ktsgnk arrl, hogy a csapat mr nem tudta kvetni, s nem volt ktsgnk arrol, hogy a
patch-ek amiket k kldenek j minsg. patch-ek amiket k kldenek jo minsg.
1.13) Hogyan kldjek hibajelentst? 1.13 Hogyan kldjek hibajelentst?
Ltogass el a BugTool oldalra: Ltogass el a BugTool oldalra:
http://www.PostgreSQL.org/bugs/bugs.php http://www.PostgreSQL.org/bugs/bugs.php
Itt megtallod kvetend utastsokat. Itt megtallod kvetend utastsokat.
Ellenrizd az ftp oldalunkon is, hogy nincs-e jabb verzi vagy folt. Ellenrizd az ftp oldalunkon is, hogy nincs-e jabb verzio vagy folt.
ftp://ftp.PostgreSQL.org/pub ftp://ftp.PostgreSQL.org/pub
1.14) Milyen a PostgreSQL ms DBMS-ekkel sszehasonltva? 1.14 Milyen a PostgreSQL ms DBMS-ekkel sszehasonltva?
Szmos nzpontbl lehet vizsglni a szoftvert: kpessgek, teljestmny Szmos nzpontbol lehet vizsglni a szoftvert: kpessgek, teljestmny
megbzhatsg, tmogatottsg s r. megbzhatosg, tmogatottsg s r.
Kpessgek Kpessgek: A PostgreSQL rendelkezik a nagy, kereskedelmi DBMS-ek
A PostgreSQL rendelkezik a nagy, kereskedelmi DBMS-ek kpessgeivel: kpessgeivel: tranzakciok, al-lekrdezsek, triggerek, nzetek, kls
tranzakcik, al-lekrdezsek, triggerek, nzetek, kls kulcsok, kulcsok, integrts s kifinoult zrmechanizmusok. Van nhny kpessge,
integrts s kifinoult zrmechanizmusok. Van nhny kpessge, ami a kereskedelmi adatbzisokbol hinyzik, mint pldul a felhasznlo
ami a kereskedelmi adatbzisokbl hinyzik, mint pldul a ltal definilt tpusok, rklds, szablyok s verzio kontroll a
felhasznl ltal definilt tpusok, rklds, szablyok s zrolsi vitk reduklsrt.
verzi kontroll a zrolsi vitk reduklsrt.
Teljestmny: A PostgreSQL teljestmnye hasonlt a kereskedelmi s ms
Teljestmny nylt adatbzis szerverekhez. Lehet bizonyos esetekben lassabb, msokban
A PostgreSQL teljestmnye hasonlt a kereskedelmi s ms nylt gyorsabb. A MySQL nev tanulo RDBMS pldul gyorsabban hajt vgre
adatbzis szerverekhez. Lehet bizonyos esetekben lassabb, msokban insert/update mveleteket, mivel a tranzakciokat elsumkolja. Persze a
gyorsabb. A MySQL nev tanul RDBMS pldul gyorsabban hajt vgre MySQL nem rendelkezik a kpessgek rszben felsoroltak nagy rszvel. Mi a
insert/update mveleteket, mivel a tranzakcikat elsumkolja. megbzhatosgra s a kpessgekre ptnk, br a teljestmny is n minden
Persze a MySQL nem rendelkezik a kpessgek rszben felsoroltak kiadssal. Van egy rdekes oldal a MySQL s a PostgreSQL
nagy rszvel. Mi a megbzhatsgra s a kpessgekre ptnk, br sszehasonltsval a http://openacs.org/philosophy/why-not-mysql.html
a teljestmny is n minden kiadssal. Van egy rdekes oldal a cmen.
MySQL s a PostgreSQL sszehasonltsval a
http://openacs.org/philosophy/why-not-mysql.html cmen. Megbzhatosg: Tudjuk hogy ha egy DBMS nem megbzhato, akkor teljesen
haszontalan. Igyeksznk jol tesztelt, stabil kodot kiadni, amiben a lehet
Megbzhatsg legkevesebb hiba van. Minden kiads eltt eltellik legalbb 1 honap bta
Tudjuk hogy ha egy DBMS nem megbzhat, akkor teljesen haszontalan. teszt, s a kiadsi trtnet is azt mutatja, hogy stabil kodot adunk ki,
Igyeksznk jl tesztelt, stabil kdot kiadni, amiben a lehet ami kszen ll a produktv felhasznlsra. gy gondoljuk, fellmlunk ms
legkevesebb hiba van. Minden kiads eltt eltellik legalbb 1 adatbzis szoftvereket ezen a tren.
hnap bta teszt, s a kiadsi trtnet is azt mutatja, hogy
stabil kdot adunk ki, ami kszen ll a produktv felhasznlsra. Tmogats: A levelezsi listink kapcsolatot teremtenek a fejlesztk s
gy gondoljuk, fellmlunk ms adatbzis szoftvereket ezen a tren. felhasznlok csoportjval , akik segtenek a problmk megoldsban. Br
nem tudjuk garantlni hogy ki tudjuk javtani a hibt, ms, kereskedelmi
Tmogats adatbzis cgek sem tudjk. A fejleszt csoport kzvetlen elrsi
A levelezsi listink kapcsolatot teremtenek a fejlesztk lehetsge, a kzssg, a dokumentcio s a forrskod gyakran tmogatst
s felhasznlk csoportjval , akik segtenek a problmk biztost, mint ms adatbzisoknl. Van kereskedelmi, alkalmi tmogats
megoldsban. Br nem tudjuk garantlni hogy ki tudjuk azoknak, akiknek szksge van r (lsd: 1.6).
javtani a hibt, ms, kereskedelmi adatbzis cgek sem tudjk.
A fejleszt csoport kzvetlen elrsi lehetsge, a kzssg, r: A PostgreSQL szabad brmilyen felhasznlsra, akr kereskedelmire is.
a dokumentci s a forrskd gyakran tmogatst biztost, A termkhez hozzadhatod a sajt forrskodjaidat korltozs nlkl.
mint ms adatbzisoknl. Van kereskedelmi, alkalmi tmogats
azoknak, akiknek szksge van r (lsd: 1.6). 1.15 Hogyan tudom zletileg segiteni a PostgreSQL-t?
r A PostgreSQL els osztly infrastruktrval rendelkezik, amit 1996-ban
A PostgreSQL szabad brmilyen felhasznlsra, akr kereskedelmire indtottunk el. Mindent Marc Fourniernek ksznhetnk, aki ltrehozta s
is. A termkhez hozzadhatod a sajt forrskdjaidat korltozs karbantartja a rendszert.
nlkl,
A minsgi infrastruktra nagyon fontos egy nyilt forrs szoftver
1.15) Hogyan tudom zletileg segiteni a PostgreSQL-t? esetben. Megvd az olyan fennakadsoktol, amelyek komoly ksseket
okoznak a fejlesztsekben. Termszetesen ez az infrastruktra nem olcso.
A PostgreSQL els osztly infrastruktrval rendelkezik, amit 1996-ban Szmos havi s llando kiadsunk van. Ha a cgednek van pnze, amivel
indtottunk el. Mindent Marc Fourniernek ksznhetnk, aki ltrehozta tmogatn erfesztseinket, krlek ltogass el a
s karbantartja a rendszert. http://store.pgsql.com/shopping/ oldalra.
A minsgi infrastruktra nagyon fontos egy nyilt forrs szoftver Br a weboldal "PostgreSQL, Inc"-knt emlti, a hozzjrulsok kizrolag a
esetben. Megvd az olyan fennakadsoktl, amelyek komoly ksseket PostgreSQL fejlesztsre rtendoek, s nem egy meghatrozott cgnek. Ha
okoznak a fejlesztsekben. jobban tetszik, kldhetsz csekket is a kapcsolati cmek brmelyikre.
Termszetesen ez az infrastruktra nem olcs. Szmos havi s lland 1.16 Ki irnytja a PostgreSQL-t?
kiadsunk van. Ha a cgednek van pnze, amivel tmogatn erfesztseinket,
krlek ltogass el a http://store.pgsql.com/shopping/ oldalra. Ha kzponti bizottsgot, ellenrzo" cget keresel a PostgreSQL mgtt, add
fel, nincs ilyesmi. Ltezik egy mag s CVS commiter csoport, de ez inkb
Br a weboldal "PostgreSQL, Inc"-knt emlti, a hozzjrulsok kizrlag adminisztrativ mint ellenrzo" cl. A projectet fejleszto"k s
a PostgreSQL fejlesztsre rtendek, s nem egy meghatrozott cgnek. Ha felhasznlok kzssge irnytja, amihez brki csatlakozhat. Csupn annyit
jobban tetszik, kldhetsz csekket is a kapcsolati cmek brmelyikre. kell tenned hogy felratkozol a levelezo"listkra s rszt veszel a
beszlgetsekben.
_________________________________________________________________
----------------------------------------------------------------------
Felhasznli kliens krdsek
Felhasznloi kliens krdsek
2.1) Van ODBC meghajt PostgreSQL-hez?
2.1 Van ODBC meghajto PostgreSQL-hez?
Kt ODBC meghajt rhet el: PsqlODBC s a OpenLink ODBC.
Kt ODBC meghajto rhet el: PsqlODBC s a OpenLink ODBC.
A PsqlODBC a PostgreSQL kiads rsze. Tovbbi informci tallhat a
ftp://ftp.PostgreSQL.org/pub/odbc/ oldalon. A PsqlODBC a PostgreSQL kiads rsze. Tovbbi informcio tallhato a
ftp://ftp.PostgreSQL.org/pub/odbc/ oldalon.
Az OpenLink ODBC-t a http://www.openlinksw.com cmrl tltheted le.
Ez az szabvnyos ODBC kliens szoftverkkel mkdik, gy minden Az OpenLink ODBC-t a http://www.openlinksw.com cmrl tltheted le. Ez az
ltaluk tmogatott platformon (Win, Mac, Unix, VMS) elrhet lesz szabvnyos ODBC kliens szoftverkkel mkdik, gy minden
a PostgreSQL szerver.
ltaluk tmogatott platformon (Win, Mac, Unix, VMS) elrhet lesz a
Taln olyan vevknek fogjk eladni, akik kereskedelmi minsg termket PostgreSQL szerver.
szeretnnek kapni, de a freeware verzi mindig elrhet lesz. Krdseidet
a termkkel kapcsolatban a postgres95@openlink.co.uk cmen teheted fel. Taln olyan vevknek fogjk eladni, akik kereskedelmi minsg termket
szeretnnek kapni, de a freeware verzio mindig elrhet lesz. Krdseidet
Olvasd el az ODBC fejezetet is a programozk kziknyvben! a termkkel kapcsolatban a postgres95@openlink.co.uk cmen teheted fel.
2.2) Milyen eszkzk llnak rendelkezsre PostgreSQL Web fejlesztsekhez? Olvasd el az ODBC fejezetet is a programozok kziknyvben!
Egy szp bemutat olvashat az adatbzissal tmogatott web oldalanrl 2.2 Milyen eszkzk llnak rendelkezsre PostgreSQL Web fejlesztsekhez?
a http://www.webreview.com weboldalon.
Egy szp bemutato olvashato az adatbzissal tmogatott web oldalanrol a
A web integrcihoz a PHP egy kivll szoftver. Letlthet a http://www.webreview.com weboldalon.
http://www.php.net cmrl.
A web integrciohoz a PHP egy kivllo szoftver. Letlthet a
http://www.php.net cmrl.
Komplexebb esetekre sokan hasznljk a Perl felletet s a CGI.pm vagy a Komplexebb esetekre sokan hasznljk a Perl felletet s a CGI.pm vagy a
mod_perl-t. mod_perl-t.
2.3) Van a PostgreSQL-hez grafikus felhasznli fellet? Riport 2.3 Van a PostgreSQL-hez grafikus felhasznloi fellet?
genertor? Begyazott lekrdez nyelv fellet?
Van egy szp PgAccess nev grafikus felletnk, ami riport genertorknt
Van egy szp PgAccess nev grafikus felletnk, ami riport genertorknt is hasznlhato. A weboldalt megtallod a http://www.pgaccess.org/ cmen.
is hasznlhat. A weboldalt megtallod a http://www.pgaccess.org/ cmen.
A http://techdocs.postgresql.org/guides/GUITools oldalon tallhatsz egy
A disztribci tartalmazza az ecpg programot is, ami egy begyazott SQL pontos s rszltes listt.
lekrdezsi fellet C nyelvhez.
2.4 Milyen programozsi nyelvekkel lehet elrni a PostgreSQL szervert?
2.4) Milyen programozsi nyelvekkel lehet elrni a PostgreSQL szervert?
A kvetkezk:
A kvetkezk:
* C (libpq) * C (libpq)
* C++ (libpq++) * C++ (libpq++)
* Embedded C (ecpg) * Embedded C (ecpg)
...@@ -444,677 +474,761 @@ ...@@ -444,677 +474,761 @@
* TCL (libpgtcl) * TCL (libpgtcl)
* C Easy API (libpgeasy) * C Easy API (libpgeasy)
* PHP ('pg_' functions, Pear::DB) * PHP ('pg_' functions, Pear::DB)
Tovbbi programozsi felletek rhetek el a
Tovbbi programozsi felletek rhetek el a
http://www.PostgreSQL.org/interfaces.html s a http://www.PostgreSQL.org/interfaces.html s a
http://gborg.PostgreSQL.org oldalakon. http://gborg.PostgreSQL.org oldalakon.
_________________________________________________________________ ----------------------------------------------------------------------
Adminisztrcis krdsek Adminisztrcios krdsek
3.1) Hogyan tudom a PostgreSQL-t /usr/local/pgsql -tl eltr helyre 3.1 Hogyan tudom a PostgreSQL-t /usr/local/pgsql -tl eltr helyre
installlni? installlni?
A configure script --prefix paramternek hasznlatval. A configure script --prefix paramternek hasznlatval.
3.2) AMikor elindtom a postmaster-t, egy "Bad System Call"-t vagy core 3.2 AMikor elindtom a postmaster-t, egy "Bad System Call"-t vagy core
dump-ot kapok. dump-ot kapok. Mirt?
Mirt?
Szmos problma lehet, de legelsszr ellenrizd le, hogy a kerneled Szmos problma lehet, de legelsszr ellenrizd le, hogy a kerneled
System V kiegsztsekkel rendelkezik-e. A PostgreSQL hasznlja a System V kiegsztsekkel rendelkezik-e. A PostgreSQL hasznlja a kernel
kernel osztott memria s szemafor API-jt. osztott memoria s szemafor API-jt.
3.3) Amikor megprblom inditani a postmaster-t, "IpcMemoryCreate" hibkat 3.3 Amikor megproblom inditani a postmaster-t, "IpcMemoryCreate" hibkat
kapok. Mirt? kapok. Mirt?
Vagy nincs megfelelen konfigurlva a kerneled osztott memria tmogatsa Vagy nincs megfelelen konfigurlva a kerneled osztott memoria tmogatsa
vagy meg kell nagyobbtanod a maximlis osztott memria mretet. vagy meg kell nagyobbtanod a maximlis osztott memoria mretet.
A pontos mret szksglet fgg az architektrdtl s attl hogy hny
buffert s processzt konfigurlsz a postmasternek. Legalbb 1 MB A pontos mret szksglet fgg az architektrdtol s attol hogy hny
terletre szksged van. A PostgreSQL Adminisztrci kziknyvben buffert s processzt konfigurlsz a postmasternek. Legalbb 1 MB terletre
olvashatsz rszletesebb informcikat az osztott memrirl s a szksged van. A PostgreSQL Adminisztrcio kziknyvben olvashatsz
szemaforokrl. rszletesebb informciokat az osztott memorirol s a szemaforokrol.
3.4) Amikor megprblom inditani a postmaster-t, "IpcSemaphoreCreate" 3.4) Amikor megproblom inditani a postmaster-t, "IpcSemaphoreCreate"
hibkat kapok. Mirt? hibkat kapok. Mirt?
Ha a hibazenet ez: " IpcSemaphoreCreate: semget failed (No space Ha a hibazenet ez: " IpcSemaphoreCreate: semget failed (No space left on
left on device)", akkor a kerneled konfigurcija nem tesz lehetv device)", akkor a kerneled konfigurcioja nem tesz lehetv elegend
elegend szemafort. A PostgreSQL szerver processzenknt 1 szemafort szemafort. A PostgreSQL szerver processzenknt 1 szemafort ignyel. Egy
ignyel. Egy tmeneti megolds lehet az hogy a postmastert kevesebb tmeneti megolds lehet az hogy a postmastert kevesebb maximlis processz
maximlis processz szmmal inditod el. Hasznld a -D paramtert. szmmal inditod el. Hasznld a -D paramtert. Egy sokkal megfelelbb
Egy sokkal megfelelbb megolds az ha nveled a kerneled SEMMNS megolds az ha nveled a kerneled SEMMNS s SEMMNI paramtereit.
s SEMMNI paramtereit.
A hibs szemaforok is adatzis lerobbanshoz is vezethet nagy terhels A hibs szemaforok is adatzis lerobbanshoz is vezethet nagy terhels
esetn. esetn.Ha a hibazenet valami ms, lehet hogy nincs szemaforok tmogats
Ha a hibazenet valami ms, lehet hogy nincs szemaforok tmogats
forditva a kerneledbe. Olvasd el a PostgreSQL adminisztrtorok forditva a kerneledbe. Olvasd el a PostgreSQL adminisztrtorok
kziknyvben az osztott memrirl s a szemaforokrl szl fejezetet. kziknyvben az osztott memorirol s a szemaforokrol szolo fejezetet.
3.5) Hogyan tudom kontrolllni a ms gpekrl rkez kapcsolat krseket? 3.5) Hogyan tudom kontrolllni a ms gpekrl rkez kapcsolat krseket?
Alaprtelmezsben a PostgreSQL a helyi kapcsolatokat Unix socketekkel Alaprtelmezsben a PostgreSQL a helyi kapcsolatokat Unix socketekkel
valstja meg. Ms gpek nem lesznek kpesek csatlakozni, ha nem valostja meg. Ms gpek nem lesznek kpesek csatlakozni, ha nem
engedlyezed azt -i opcival a postmasternek, s nem lltod be host a engedlyezed azt -i opcioval a postmasternek, s nem lltod be host a
alap azonostst a pg_hba.conf llomnyban. Ezzel vlnak lehetv a TCP/IP alap azonostst a pg_hba.conf llomnyban. Ezzel vlnak lehetv a
kapcsolatok. TCP/IP kapcsolatok.
3.6) Hogyan tudom nagyobb teljestmnyre hangolni az adatbzisomat? 3.6) Hogyan tudom nagyobb teljestmnyre hangolni az adatbzisomat?
Az indexels felttlenl gyorstja a lekrdezseket. Az EXPLAIN Az indexels felttlenl gyorstja a lekrdezseket. Az EXPLAIN parancs
parancs lehetv teszi hogy lsd, hogy a PostgreSQL miknt interpretlja lehetv teszi hogy lsd, hogy a PostgreSQL miknt interpretlja a
a lekrdezst s melyik indexet hasznlja. lekrdezst s melyik indexet hasznlja.
Ha sok INSERT mveletet hajtassz vgre, csinld nagy ktegekben a COPY Ha sok INSERT mveletet hajtassz vgre, csinld nagy ktegekben a COPY
paranccsal. Ez sokkal gyorsabb mint az egyedi INSERT parancsok. Msodszor: paranccsal. Ez sokkal gyorsabb mint az egyedi INSERT parancsok. Msodszor:
Azok a mveletek, amelyek nincsenek tranzakci blokkon bell, azok sajt Azok a mveletek, amelyek nincsenek tranzakcio blokkon bell, azok sajt
tranzakcit indtanak. Sok mveletet rdemes egy tranzakcin bell tranzakciot indtanak. Sok mveletet rdemes egy tranzakcion bell
vgrehajtani. Ez cskkenti a tranzakci kezels tbbletidejt. Az indexeket vgrehajtani. Ez cskkenti a tranzakcio kezels tbbletidejt. Az
javasolt a nagy adatvltozsok eltt eltvoltani, majd jra ltrehizni. indexeket javasolt a nagy adatvltozsok eltt eltvoltani, majd jra
ltrehozni.
Szmos teljestmny javt lehetsg van. Kikapcsolhatod az fsync()
mveletet a postmaster -o -F opcikval val indtsakor. gy nem fog Szmos teljestmny javto lehetsg van. Kikapcsolhatod az fsync()
az amugy lass fsync() fggvny meghvdni minden tranzakci vgn. mveletet a postmaster -o -F opciokval valo indtsakor. gy nem fog az
amugy lass fsync() fggvny meghvodni minden tranzakcio vgn.
Hasznlhatod a postmaster -B opcijt is az osztott memria szegmens
mretnek nvelshez. Ha az rtket tl magasra lltod, lehet hogy Hasznlhatod a postmaster -B opciojt is az osztott memoria szegmens
a postmaster nem indul el, mert tllpted az opercis rendszer ltal mretnek nvelshez. Ha az rtket tl magasra lltod, lehet hogy a
postmaster nem indul el, mert tllpted az opercios rendszer ltal
megengedett mretet. Minden buffer 8K mret s alaprtelmezsban 64 megengedett mretet. Minden buffer 8K mret s alaprtelmezsban 64
buffer van. buffer van.
A -S opcival nvelheted a szerver tmeneti rendezsekre fenntartott A -S opcioval nvelheted a szerver tmeneti rendezsekre fenntartott
memria terlett. Az rtket kilobyteban add meg. Az alaprtelmezett memoria terlett. Az rtket kilobyteban add meg. Az alaprtelmezett
rtk 512K. rtk 512K.
Hasznlhatod a CLUSTER utastst is, hogy a tblkat egy indexnek Hasznlhatod a CLUSTER utastst is, hogy a tblkat egy indexnek
megfelelen csoportostsd. Olvasd el a CLUSTER kziknyv oldalt tovbbi megfelelen csoportostsd. Olvasd el a CLUSTER kziknyv oldalt tovbbi
rszletekrt. rszletekrt.
Hardver kivlasztsban segthet:
3.7) Milyen hibakeres lehetsgek rhetek el? http://candle.pha.pa.us/main/writings/pgsql/hw_performance/index.html s
http://www.powerpostgresql.com/PerfList/.
A PostgreSQL szmos lehetsggel rendelkezik ami rtkes lehet a hiba-
keressnl. A postgresql.conf bellitsaival kapcsolatos tudnivalok:
http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.html
Elsszr is, futtathatod a configure scriptet --enable-cassert s http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html.
opcival, sok assert() funkcihivs ellenrzi a program futst s
megllitja ha valami vratlan hiba trtnik. 3.7) Milyen hibakeres lehetsgek rhetek el?
Mind a postmaster s a postgres szmos hibakeres lehetsggel rendelkezik. A PostgreSQL szmos lehetsggel rendelkezik ami rtkes lehet a
Mindig amikor elinditod a postmastert, gyzdj meg rla, hogy a kimenetet hibakeressnl.
log llomnyba kldd. Igy:
Elsszr is, futtathatod a configure scriptet --enable-cassert opcioval,
sok assert() funkciohivs ellenrzi a program futst s megllitja ha
valami vratlan hiba trtnik.
Mind a postmaster s a postgres szmos hibakeres lehetsggel
rendelkezik. Mindig amikor elinditod a postmastert, gyzdj meg rola, hogy
a kimenetet log llomnyba kldd. Igy:
cd /usr/local/pgsql cd /usr/local/pgsql
./bin/postmaster >server.log 2>&1 &
./bin/postmaster >server.log 2>&1 &
Ez egy server.log llomnyt hoz ltre a fels PostgreSQL knyvtrban.
Ez az llomny tartlamaz majd szmos hasznos informcit a szerverrel Ez egy server.log llomnyt hoz ltre a fels PostgreSQL knyvtrban. Ez
kapcsolatos problmkrl s hibkrl. A postmaster -d opcijval lehet az llomny tartlamaz majd szmos hasznos informciot a szerverrel
rszletesebb hibakeres informcit kapni. A -d opcihoz meg kell kapcsolatos problmkrol s hibkrol. A postmaster -d opciojval lehet
hatrozni egy hiba szintet. Vigyzz, a magas hibakeres szint nagy rszletesebb hibakeres informciot kapni. A -d opciohoz meg kell
log llomnyt okozhat. hatrozni egy hiba szintet. Vigyzz, a magas hibakeres szint nagy log
llomnyt okozhat.
Ha a postmaster nem fut, akkor futtathatod a postgres szervert Ha a postmaster nem fut, akkor futtathatod a postgres szervert
parancssorbl is, s az SQL kifejezst kzvetlenl ennek adhatod t. parancssorbol is, s az SQL kifejezst kzvetlenl ennek adhatod t. Ez
Ez csak hibakeress esetben javasolt. Az j sor a kifejezs vgt jelenti, csak hibakeress esetben javasolt. Az j sor a kifejezs vgt jelenti,
nem a pontosvessz. Ha hibakeres opcikkal forditottad a szervert, nem a pontosvessz. Ha hibakeres opciokkal forditottad a szervert,
hasznlhatsz egy debuggert is hogy lsd hogy mi trtnik. Mivel igy a hasznlhatsz egy debuggert is hogy lsd hogy mi trtnik. Mivel igy a
szervert nem a postmaster inditotta, nem tbbfelhasznls krnyezetknt szervert nem a postmaster inditotta, nem tbbfelhasznlos krnyezetknt
fut, igy a zrolsi s a szerverek kztti kommunikcis hiba jelensgek fut, igy a zrolsi s a szerverek kztti kommunikcios hiba jelensgek
nem jelentkeznek. nem jelentkeznek.
Ha mr fut a postmaster, indits egy psql-t, s nzd meg a szerver processz Ha mr fut a postmaster, indits egy psql-t, s nzd meg a szerver processz
PID-jt! Egy debuggert hasznlhatsz a processzhez csatlakozshoz. PID-jt! Egy debuggert hasznlhatsz a processzhez csatlakozshoz.
Bellithatsz trspontokat s elindithatsz lekrdezseket. Ha a postgres Bellithatsz trspontokat s elindithatsz lekrdezseket. Ha a postgres
inditsban keresel hibt, a PGOPTIONS krnyezeti vltozt llitsd be "-W n" inditsban keresel hibt, a PGOPTIONS krnyezeti vltozot llitsd be "-W
rtkre. Ez n msodperc vrakozst idz el, igy tudsz csatlakozni a n" rtkre. Ez n msodperc vrakozst idz el, igy tudsz csatlakozni a
processzhez, el tdsz hejezni trspontokat, majd folytathatod a indtst. processzhez, el tdsz hejezni trspontokat, majd folytathatod a indtst.
A postgres program -s, -A s -t opcii is nagyon hasznosak lehetnek A postgres program -s, -A s -t opcioi is nagyon hasznosak lehetnek
hibakeressnl s teljestmny mrsnl. hibakeressnl s teljestmny mrsnl.
Profiling lehtsggel is fordithatod a szervert, hogy lsd melyik Profiling lehtsggel is fordithatod a szervert, hogy lsd melyik funkciok
funkcik foglaljk el a futsi idt. A szerver profile llomnyai foglaljk el a futsi idt. A szerver profile llomnyai a
a pgsql/data/base/dbname knzvtrba kerlnek, a kliens profile pgsql/data/base/dbname knzvtrba kerlnek, a kliens profile llomnyok az
llomnyok az aktulis knyvtrba. Linuxon ehhez szksges a aktulis knyvtrba. Linuxon ehhez szksges a -DLINUX_PROFILE fordtsi
-DLINUX_PROFILE fordtsi direktiva. direktiva.
3.8) Mirt kapok "Sorry, too many clients" (Tl sok kliens) 3.8) Mirt kapok "Sorry, too many clients" (Tl sok kliens)
hibt csatlakozsnl? hibt csatlakozsnl?
Nvelned kell a postmaster egyidejleg futtatott szerver processz szm Nvelned kell a postmaster egyidejleg futtatott szerver processz szm
korltjt. korltjt.
Az alaprtelmezett korlt 32 processz. Ezt nvelhetjed gy, hogy Az alaprtelmezett korlt 32 processz. Ezt nvelhetjed gy, hogy
jrainditod a postmastert s -N opcival meghatrotod az j rtket, jrainditod a postmastert s -N opcioval meghatrotod az j rtket, vagy
vagy mdositod a postgresql.conf-ot. modositod a postgresql.conf-ot.
Ne felejtsd el, hogy ha nveled a szerver processzek maximlis szmt, Ne felejtsd el, hogy ha nveled a szerver processzek maximlis szmt,
akkor bufferek szmt is nvelned kell, legalbb a processzek szmnak akkor bufferek szmt is nvelned kell, legalbb a processzek szmnak
ktszeresre. Nagy processz szmokesetben valszinleg a Unix ktszeresre. Nagy processz szmokesetben valoszinleg a Unix
konfigurcis paramtereken is nvelni kell. Ellenrizd a SHMMAX konfigurcios paramtereken is nvelni kell. Ellenrizd a SHMMAX (az
(az osztott memria szegmensek maximlis mrete), a SEMMNS s a SEMMNI osztott memoria szegmensek maximlis mrete), a SEMMNS s a SEMMNI (a
(a szemaforok maximlis szma), az NPROC (a processzek maximlis szma), szemaforok maximlis szma), az NPROC (a processzek maximlis szma), a
a MAXUPRC (felhasznlnknti maximlis processz szm) s a NFILE s NINODE MAXUPRC (felhasznlonknti maximlis processz szm) s a NFILE s NINODE
(a megnzitott llomnzok maximlis szma) paramtereket. A PostgreSQL (a megnzitott llomnzok maximlis szma) paramtereket. A PostgreSQL
azrt korltozza kln a processz szmot, hogy a rendszeredet ne terhelhesse azrt korltozza kln a processz szmot, hogy a rendszeredet ne
meg tlsgosan. terhelhesse meg tlsgosan.
A PostgreSQL 6.5 verziban a maximlis szerver processz szm 64 volt s A PostgreSQL 6.5 verzioban a maximlis szerver processz szm 64 volt s a
a mdositshoz bele kellett irni a include/storage/sinvaladt.h llomnyba modositshoz bele kellett irni a include/storage/sinvaladt.h llomnyba s
s jra kellett forditani a servert. jra kellett forditani a servert.
3.9) Mi van pgsql_tmp knyvtrban? 3.9) Mi van pgsql_tmp knyvtrban?
Ez a knyvtr a lekrdezs vgrehajt ltal ltrehezott tmeneti Ez a knyvtr a lekrdezs vgrehajto ltal ltrehezott tmeneti
llomnyokat tartalmazza. Pldul ha egy rendezst kell vgrehajtani llomnyokat tartalmazza. Pldul ha egy rendezst kell vgrehajtani egy
egy ORDER BY kifejezs miatt s a m?velet tbb memrit vesz ORDER BY kifejezs miatt s a m?velet tbb memorit vesz ignybe, mint
ignybe, mint amennyit a -S paramter megenged, akkor az tmeneti amennyit a -S paramter megenged, akkor az tmeneti knyvtrban hoz ltre
knyvtrban hoz ltre egy llomnyt a fennmarad adat trolsra. egy llomnyt a fennmarado adat trolsra.
Az tmeneti llomnyok tbbnyire trl?dnek, de meg is maradhat ha Az tmeneti llomnyok tbbnyire trl?dnek, de meg is maradhat ha pldul
pldul vratlan hibval lell a szerver egy rendezs kzben. Inditskor vratlan hibval lell a szerver egy rendezs kzben. Inditskor s
s lellitskor ezeket az llomnyokat trli a postmaster. lellitskor ezeket az llomnyokat trli a postmaster.
3.10) Mirt kell dumpolni s jratlteni PostgreSQL kiads vltsnl? 3.10) Mirt kell dumpolni s jratlteni PostgreSQL kiads vltsnl?
A PostgreSQL csapat csak aprbb vltoztatsokat hajt vgre a kisebb A PostgreSQL csapat csak aprobb vltoztatsokat hajt vgre a kisebb
kiadsok kztt, igy ha 7.2 verzirl llsz t 7.2.1 verzira, akkor nem kiadsok kztt, igy ha 7.2 verziorol llsz t 7.2.1 verziora, akkor nem
szksges kidumplonod az adatbzist. A nagy kiadsok esetben (pldul szksges kidumplonod az adatbzist. A nagy kiadsok esetben (pldul
verzirl 7.3-ra ttrsnl) vltozik a belsi adatstruktrk s verziorol 7.3-ra ttrsnl) vltozik a belsi adatstruktrk s
adatllomnyok formtuma. Ezek a vltozsok gyakran nagyon sszetettek, adatllomnyok formtuma. Ezek a vltozsok gyakran nagyon sszetettek,
ezrt inkb nem tartunk fenn visszafel kompatibilitst. A dump ezrt inkb nem tartunk fenn visszafel kompatibilitst. A dump az adatot
az adatot ltalnos formtumban irja ki, majd az j formtumban lehet ltalnos formtumban irja ki, majd az j formtumban lehet azt
azt visszatleni. visszatleni.
Azokban a kiadsokban, amelyek kztt az adat formtum nem vltozik, Azokban a kiadsokban, amelyek kztt az adat formtum nem vltozik, a
a pg_upgrade program hasznlhat dumpols s helzrellits nlkl. pg_upgrade program hasznlhato dumpols s helyrellits nlkl.
_________________________________________________________________ ----------------------------------------------------------------------
Mkdtetsi krdsek Mkdtetsi krdsek
4.1) Mi a klnbsg a binris s a norml kurzorok kztt? 4.1) Mi a klnbsg a binris s a norml kurzorok kztt?
Nzd meg a DECLARE dokumentcijt. Nzd meg a DECLARE dokumentciojt.
4.2) Hogyan tudom select-elni a lekrdezs els pr sort? 4.2) Hogyan tudom select-elni a lekrdezs els pr sort?
Olvasd el a FETCH dokumentcijt, vagy hasznld a SELECT Olvasd el a FETCH dokumentciojt, vagy hasznld a SELECT LIMIT-et.
LIMIT-et.
Az egsz lekrdezst vgre kell hajtani, mg akkor is, ha csak az els pr
Az egsz lekrdezst vgre kell hajtani, mg akkor is, ha csak az els sort akarod megkapni. Gondolj arra, hogy a lekrdezsben lehet ORDER BY
pr sort akarod megkapni. Gondolj arra, hogy a lekrdezsben lehet ORDER BY is. Ha van olyan index, ami megfelel az ORDER BY kifejezsednek, a
is. Ha van olyan index, ami megfelel az ORDER BY kifejezsednek, a PostgreSQL kpes lehet az els nhny rekord visszaadsra, vagy a teljes
PostgreSQL kpes lehet az els nhny rekord visszaadsra, vagy a teljes lekrdezsnek le kell futnia, amig a krt rekordok le nem generlodnak.
lekrdezsnek le kell futnia, amig a krt rekordok le nem generldnak.
4.3) Hogy tudom kilistzni a tblkat vagy ms dolgokat a PostgreSQL-ben?
4.3) Hogy tudom kilistzni a tblkat vagy ms dolgokat a PostgreSQL-ben?
Elolvashatod a psql forrs kodjban a pgsql/src/bin/psql/describe.c
Elolvashatod a psql forrs kdjban a pgsql/src/bin/psql/describe.c
llomnyban. Ez SQL parancsokat tartalmaz, amelyek azokat a kimeneteket llomnyban. Ez SQL parancsokat tartalmaz, amelyek azokat a kimeneteket
llitjk el, amiket a per jellel kezdd parancsok adnak vissza. llitjk el, amiket a per jellel kezdd parancsok adnak vissza.
4.4) Hogyan tudok eltvoltani egy oszlopot egy tblbl? 4.4) Hogyan tudok eltvoltani egy oszlopot egy tblbol?
Ez a funkcionalits a 7.3 verzitl kezdve rhet el az ALTER TABLE Ez a funkcionalits a 7.3 verziotl kezdve rhet el az ALTER TABLE DROP
DROP COLUMN -nal. A rgebbi vertikban igy lehet vgrehajtani: COLUMN -nal. A rgebbi vertiokban igy lehet vgrehajtani:
BEGIN;
LOCK TABLE old_table; BEGIN;
SELECT ... -- minden oszlopot, kivtel amit trlni szeretnl
INTO TABLE new_table LOCK TABLE old_table;
FROM old_table;
DROP TABLE old_table; SELECT ... -- minden oszlopot, kivtel amit trlni szeretnl
ALTER TABLE new_table RENAME TO old_table;
COMMIT; INTO TABLE new_table
FROM old_table;
DROP TABLE old_table;
ALTER TABLE new_table RENAME TO old_table;
COMMIT;
4.5) Mi a maximlis mrete egy sornak, egy tblnak vagy egy adatbzisnak? 4.5) Mi a maximlis mrete egy sornak, egy tblnak vagy egy adatbzisnak?
A korltok: A korltok:
adatbzis: korltlan (1 TB az ltalunk ismert lagnagyobb)
tbla: 16 TB * adatbzis: korltlan (1 TB az ltalunk ismert lagnagyobb)
rekord/sor 1.6TB
mez 1 GB * tbla: 16 TB
a tbla sorainak szma: korltlan
a tbla oszlopainak szma: 250-1600 az oszlop nevektl fggen * rekord/sor 1.6TB
A tbla indexeinek szma: korltlan
* mez 1 GB
Termszetesen nem igazn korltlan, de a trterlet, memria s egyb
* a tbla sorainak szma: korltlan
* a tbla oszlopainak szma: 250-1600 az oszlop nevektl fggen
* A tbla indexeinek szma: korltlan
Termszetesen nem igazn korltlan, de a trterlet, memoria s egyb
kls tnyezk korltozzk. A teljesitmny romolhat, ha ezek az rtkek kls tnyezk korltozzk. A teljesitmny romolhat, ha ezek az rtkek
szokatlanul nagyok. szokatlanul nagyok.
A 16 TB-os legnagyobb tbla mret nem ignyel nagy llomny tmogatst. A 16 TB-os legnagyobb tbla mret nem ignyel nagy llomny tmogatst. A
A nagy tblk tbb 1 GB mret llomnyba kerlnek, igy az llomny nagy tblk tbb 1 GB mret llomnyba kerlnek, igy az llomny rendszer
rendszer korltai nem lnyegesek. korltai nem lnyegesek.
A maximlis tbla mret s az oszlopok maximlis oszlop szm nvelhet, A maximlis tbla mret s az oszlopok maximlis oszlop szm nvelhet, ha
ha az alaprtelmezett blokkmretet 32k-ra nveled. az alaprtelmezett blokkmretet 32k-ra nveled.
4.6) Mekkora adatbzis lemez terlet szksges egy tipikus szveg llomny 4.6) Mekkora adatbzis lemez terlet szksges egy tipikus szveg llomny
trolshoz? trolshoz?
A PostgreSQL akr a szveg llomny helyignznek tszrst is elfoglalhaja. A PostgreSQL akr a szveg llomny helyignynek tszrst is
elfoglalhatja.
Kpzelj el pldul, egy 100.000 soros szveget, aminek minde sora
egy szmbl s egy szvegbl ll. Tegyk el, hogy tlagosan 20 byte hossz Kpzelj el pldul, egy 100.000 soros szveget, aminek minde sora egy
szvegek. Ez a szvegllomny krlbell 2.8 MB helyet foglalna el. szmbol s egy szvegbl ll. Tegyk el, hogy tlagosan 20 byte hossz
A tbla ami a fenti adatszerkezetet eltroln, krlbell 6.4 MB-os lenne. szvegek. Ez a szvegllomny krlbell 2.8 MB helyet foglalna el. A
tbla ami a fenti adatszerkezetet eltroln, krlbell 6.4 MB-os lenne.
Ezt a kvetkezkppen szmolhatjuk ki: Ezt a kvetkezkppen szmolhatjuk ki:
36 byte: sor fejlc 36 byte: sor fejlc
24 byte: egy int mez + egy szveg mez
4 byte: mutato 24 byte: egy int mez + egy szveg mez
---------------------------------------
64 byte soronkent. 4 byte: mutato
Az adat oldal mrete a PostgreSQL-ben 8192 byte, igy ---------------------------------------
8192 / 64 = 128 rekord adatbzis oldalanknt (lefel kerekitve).
64 byte soronkent.
100000 rekord / 128 rekord oldalanknt = 782 adat oldal (felel kerekitve).
Az adat oldal mrete a PostgreSQL-ben 8192 byte, igy 8192 / 64 = 128
782 adatbzis oldal * 8192 byte olalanknt = 6,406,144 byte (6.4 MB) rekord adatbzis oldalanknt (lefel kerekitve).
100000 rekord / 128 rekord oldalanknt = 782 adat oldal
(felel kerekitve).
782 adatbzis oldal * 8192 byte olalanknt = 6,406,144
byte (6.4 MB)
Az indexek nem foglalnak tl sokat, de tartalmazzk az indexelt adatot, Az indexek nem foglalnak tl sokat, de tartalmazzk az indexelt adatot,
igy ezek is lehetnek nagyok. igy ezek is lehetnek nagyok.
A NULL rtkek bittrkpben vannak trolva, igy kevs helyet foglanak. A NULL rtkek bittrkpben vannak trolva, igy kevs helyet foglanak.
4.7) Hogy tudhatom meg milyen tblk, indexek, adatbzisok vagy
4.7) Hogy tudhatom meg milyen tblk, indexek, adatbzisok vagy felhasznlk felhasznlok
vannak definilva? vannak definilva?
A psql-ben tallsz szmos '\' karakterrel kezdd utastst az ilyen A psql-ben tallsz szmos '\' karakterrel kezdd utastst az ilyen
informcik listzsra. A '\?' segitsgvel tudot kilistzni ezeket informciok listzsra. A '\?' segitsgvel tudot kilistzni ezeketa
a parancsokat. Ezen kivl vannak rendszer tblk, amelyek nevei 'pg_' parancsokat. Ezen kivl vannak rendszer tblk, amelyek nevei 'pg_'-vel
-vel kezddnek. kezddnek.
Prbld ki a pgsql/src/tutorial/syscat.source llomnyt is. Ez sok Probld ki a pgsql/src/tutorial/syscat.source llomnyt is. Ez sok pldt
pldt tartalmaz az rendszertblkon vgrehajtott SELECT-ekrl. tartalmaz az rendszertblkon vgrehajtott SELECT-ekrl.
4.8) A lekrdezseim lassak, vagy nem hasznljk az indexeket. Mirt? 4.8) A lekrdezseim lassak, vagy nem hasznljk az indexeket. Mirt?
Az indexeket nem hasznlja a szerver minden lekrdezsnl automatikusan. Az indexeket nem hasznlja a szerver minden lekrdezsnl automatikusan.
Csak akkor hasznl indexet, ha a tbla mrete egy megadott als hatr Csak akkor hasznl indexet, ha a tbla mrete egy megadott also hatr
felett van, s a lekrdezs csak a sorok egy kis rszt rinti. Ez azrt felett van, s a lekrdezs csak a sorok egy kis rszt rinti. Ez azrt
van, mert a vletlen hozzfrs mg mindig lassabb lehet mint az tbla van, mert a vletlen hozzfrs mg mindig lassabb lehet mint az tbla
szekvencilis olvassa. szekvencilis olvassa.
Hogy a PostgreSQL meg tudja hatrozni hogy kell-e indexet hasznlni, Hogy a PostgreSQL meg tudja hatrozni hogy kell-e indexet hasznlni,
lteznie kell egy statisztiknak a tblrl. Ez a statisztikai adatok a lteznie kell egy statisztiknak a tblrol. Ez a statisztikai adatok a
VAACUM ANALYZE vagy az egyszer ANALYZE mveletek sorn VAACUM ANALYZE vagy az egyszer ANALYZE mveletek sorn jnnek ltre. A
jnnek ltre. A statisztikai adatok felhasznlsval az optimalizl statisztikai adatok felhasznlsval az optimalizlo meg tudja hatrozni,
meg tudja hatrozni, hogy hny sor van a tblban, s el tudja dnteni, hogy hny sor van a tblban, s el tudja dnteni, hogy hasznljon-e
hogy hasznljon-e indexet. A statisztiaki adatgyjtst idnknt vgre indexet. A statisztiaki adatgyjtst idnknt vgre kell hajtani, ahogy a
kell hajtani, ahogy a tbla adatai vltoznak. tbla adatai vltoznak.
Az indexeket normlis esetben nem hasznlja az ORDER BY vagy Az indexeket normlis esetben nem hasznlja az ORDER BY vagy az OUTER
az OUTER JOIN. A szekvencilis olvass ltalban gyorsabb, mint az JOIN. A szekvencilis olvass ltalban gyorsabb, mint az index keress
index keress egy nagy tblban. egy nagy tblban. Br a LIMIT az ORDER BY-val kombinlva hasznlhat
Br a LIMIT az ORDER BY-val kombinlva hasznlhat indexet, mert indexet, mert a tbla csak kis rsze rintett. Br a MIN s MAX SQL
a tbla csak kis rsze rintett. Br a MIN s MAX SQL funkcik sem funkciok sem hasznljk az indexeket, ezeket az rtkeket egy ORDER BY +
hasznljk az indexeket, ezeket az rtkeket egy ORDER BY + LIMIT LIMIT lekrdezssel is le lehet krdezni:
lekrdezssel is le lehet krdezni:
SELECT col SELECT col
FROM tab
ORDER BY col [ DESC ] FROM tab
LIMIT 1;
ORDER BY col [ DESC ]
Amikor helyettest jel opertorokat hasznlsz, mint a LIKE kulcssz
vagy a ~, az indexeket csak bizonyos krlmnyek kztt lehet hasznlni: LIMIT 1;
* A keres string kezdete a keressi minta elejn kell hogy legyen.
pldul: Amikor helyettest jel opertorokat hasznlsz, mint a LIKE kulcsszo vagy
+ A LIKE mintk nem kezddhetnek % jellel. a ~, az indexeket csak bizonyos krlmnyek kztt lehet hasznlni:
+ ~ (regexp) kifejezsek nem kezddhetnek ^ jellel.
A keres string kezdete a keressi minta elejn kell hogy legyen. Pldul:
* A LIKE mintk nem kezddhetnek % jellel.
* ~ (regexp) kifejezsek nem kezddhetnek ^ jellel.
* A keressi kifejezs nem kezddhet karakter osztllyal. * A keressi kifejezs nem kezddhet karakter osztllyal.
* A case-insensitive keress (ILIKE, ~*) nem hasznlnak indexet * A case-insensitive keress (ILIKE, ~*) nem hasznlnak indexet ehelyett
ehelyett funkcionlis indexet hasznlnak, amit a 4.12 pontban funkcionlis indexet hasznlnak, amit a 4.12 pontban tallhatsz.
tallhatsz.
* Az alaprtelmezett C hellyel kell futtatni az initdb-t. * Az alaprtelmezett C hellyel kell futtatni az initdb-t.
4.9) Hogy tudom ellenrizni, hogy optimalizlta a lekrdezs optimalizlo
4.9) Hogy tudom ellenrizni, hogy optimalizlta a lekrdezs optimalizl a lekrdezsem?
a lekrdezsem?
Olvasd el a dokumentcio EXPLAIN-rol szolo rszt.
Olvasd el a dokumentci EXPLAIN-rl szl rszt.
4.10) Mi az R-tree index?
4.10) Mi az R-tree index?
Az R-tree index a trbeli adat indexelsre alkalmas. Egy hash index nem
Az R-tree index a trbeli adat indexelsre alkalmas. Egy hash kpes tartomny keressekre. A B-tree index csak egy dimenzion kezeli a
index nem kpes tartomny keressekre. A B-tree index csak egy tartomny keresseket. Pldul ha az indexet egy pont (point adattpus)
dimenzin kezeli a tartomny keresseket. Pldul ha az indexet tpus mez.re ptjk, gyorsabban kezeli az olyan jelleg lekrdezseket,
egy pont (point adattpus) tpus mez.re ptjk, gyorsabban mint egy adott krben
kezeli az olyan jelleg lekrdezseket, mint egy adott krben
tallhat pontok. tallhato pontok.
Az R-tree tervezsi mintt eredetileg ler szveg: Az R-tree tervezsi mintt eredetileg lero szveg: Guttman, A. "R-trees:
A Dynamic Index Structure for Spatial Searching." Proceedings of the 1984
Guttman, A. "R-trees: A Dynamic Index Structure for Spatial ACM SIGMOD Int'l Conf on Mgmt of Data, 45-57.
Searching." Proceedings of the 1984 ACM SIGMOD Int'l Conf on Mgmt of
Data, 45-57. Ezt olvashatod Stonebraker "Readings in Database Systems" c. knyvben.
Ezt olvashatod Stonebraker "Readings in Database Systems" c. A beptett R-tree kezelni tudjk a sokszgeket (polygon adattpus) s a
knyvben. dobozokat (box). Elmletileg, az R-tree kiterjeszthet tovbbi dimenziokra
is. Gyakorlatilag ezen dolgoznod kell egy kicsit, s mg nincs
A beptett R-tree kezelni tudjk a sokszgeket (polygon adattpus) dokumentcionk arrol hogy az hogyan mkdik.
s a dobozokat (box). Elmletileg, az R-tree kiterjeszthet tovbbi
dimenzikra is. Gyakorlatilag ezen dolgoznod kell egy kicsit, s 4.11) Mi a Genetic Query Optimizer?
mg nincs dokumentcink arrl hogy az hogyan mkdik.
A GEQO modul a lekrdezs optimalizcio sebessgt nveli nagy mennyisg
4.11) Mi a Genetic Query Optimizer? tbla sszekapcsolsa esetn. Lehetv teszi a nagy lekrdezsek
vgrehajtst nem teljes keresssel.
A GEQO modul a lekrdezs optimalizci sebessgt nveli nagy
mennyisg tbla sszekapcsolsa esetn. Lehetv teszi a nagy 4.12) Hogyan tudok regexp keresst s case-insensitive regexp keresst
lekrdezsek vgrehajtst nem teljes keresssel. hasznlni? Hogyan tudok indexet hasznlni case-insensitive keresshez?
4.12) Hogyan tudok regexp keresst s case-insensitive regexp keresst A ~ opertor hajt vgre regulris kifejezs (regexp) rtelmezst, a ~*
hasznlni? Hogyan tudok indexet hasznlni case-insensitive keresshez? ennek case-insensitive vltozata. A LIKE case-insensitive vltozata az
ILIKE.
A ~ opertor hajt vgre regulris kifejezs (regexp) rtelmezst,
a ~* ennek case-insensitive vltozata. A LIKE case-insensitive A case-insensitive egyenlsg mveleteket ltalban igy hajtjuk vgre:
vltozata az ILIKE.
SELECT *
A case-insensitive egyenlsg mveleteket ltalban igy hajtjuk
vgre: FROM tab
SELECT *
FROM tab WHERE lower(col) = 'abc';
WHERE lower(col) = 'abc';
Ez nem fog indexet hasznlni, br ltrehozhatsz egy funkcio indexet:
Ez nem fog indexet hasznlni, br ltrehozhatsz egy funkci indexet:
CREATE INDEX tabindex ON tab (lower(col)); CREATE INDEX tabindex ON tab (lower(col));
4.13) Hogyan tudom szlelni egy lekrdezsben, ha egy mez NULL? 4.13) Hogyan tudom szlelni egy lekrdezsben, ha egy mez NULL?
Hasznld "IS NULL"-t s az "IS NOT NULL"-t. Hasznld "IS NULL"-t s az "IS NOT NULL"-t.
4.14) Mi a klnbsg a klnbz karaktertpusok kztt? 4.14) Mi a klnbsg a klnbz karaktertpusok kztt?
Type Internal Name Notes * "char" egy karakter hossz string
-------------------------------------------------- * CHAR(n) bpchar res hellyel a megadott n hosszsgig
"char" char 1 character * VARCHAR(n) varchar mret maximlis hossz meghatrozsval, a lefogllat
CHAR(n) bpchar blank padded to the specified fixed length terlet is vltozo hossz lesz
VARCHAR(n) varchar size specifies maximum length, no padding * TEXT nincs meghatrozott felso" korlt
TEXT text no specific upper limit on length * BYTEA vltozo hosszsg byte-tmb
BYTEA bytea variable-length byte array (null-byte safe)
Ltni fogod a bels elnevezsket, ha tanulmnyozod a rendszertblkats
Ltni fogod a bels elnevezsket, ha tanulmnyozod a rendszertblkat nhny hibazenetet.
s nhny hibazenetet.
Az utobbi ngy a "varlena" tpusok, ami a trolsuk modjra utal: az els
Az utbbi ngy a "varlena" tpusok, ami a trolsuk mdjra utal: 4 byte a lemezen a hosszsg, a tbbi az adat. A valodi mret teht
az els 4 byte a lemezen a hosszsg, a tbbi az adat. A valdi mret nagyobb mint a deklarlt hosszsg.Ezek azadatok tmritve trolodnak el,
teht nagyobb mint a deklarlt hosszsg.Ezek azadatok tmritve igy kevesebb helyet foglalnek el az elre szmitottnl.
troldnak el, igy kevesebb helyet foglalnek el az elre szmitottnl.
A CHAR(n) a legjobb megolds, ha stabil hosszsg stringet trolsz. A
A CHAR(n) a legjobb megolds, ha stabil hosszsg stringet trolsz. VARCHAR(n) jo arra az esetekre, ha a hosszsg vltozik, de van fels
A VARCHAR(n) j arra az esetekre, ha a hosszsg vltozik, de van korltja. A TEXT tpus korltlan hosszsg (1 GB-ig) szvegek trolsra
fels korltja. A TEXT tpus korltlan hosszsg (1 GB-ig) szvegek alklamas. A BYTEA binris adatok trolsra van. A teljesitmny mutatoi
trolsra alklamas. A BYTEA binris adatok trolsra van. A hasonloak ezenek a tpusoknak.
teljesitmny mutati hasonlak ezenek a tpusoknak.
4.15.1) Hogyan tudok ltrehozni automatikusan nvekv rtk mezt?
4.15.1) Hogyan tudok ltrehozni automatikusan nvekv rtk mezt?
A PostgreSQL rendelkezik egy SERIAL adattpussal. Ez egy szekvencit s
A PostgreSQL rendelkezik egy SERIAL adattpussal. Ez egy szekvencit egy indexet hoz ltre az oszlopon. Pldul ez:
s egy indexet hoz ltre az oszlopon. Pldul ez:
CREATE TABLE person ( CREATE TABLE person (
id SERIAL,
name TEXT id SERIAL,
);
name TEXT
);
ugyanezt jelenti: ugyanezt jelenti:
CREATE SEQUENCE person_id_seq;
CREATE TABLE person ( CREATE SEQUENCE person_id_seq;
id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
name TEXT CREATE TABLE person (
);
CREATE UNIQUE INDEX person_id_key ON person ( id ); id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
A szekvencikkal kapcsolatban olvasd el a create_sequence man name TEXT
oldalt. A sor OID-jt is hasznlhatod egyedi azonositknt, br
ebben az esetben figyelj a pg_gump hasznlatnl a -o opcira );
(COPY WITH OIDS, msols OID-dal), hogy meg?rizd az rtkeket.
CREATE UNIQUE INDEX person_id_key ON person ( id );
4.15.2) Hogyan kaphatom meg egy SERIAL beszrs rtkt?
A szekvencikkal kapcsolatban olvasd el a create_sequence man oldalt. A
Egy megolds erre az, ha a nextval() funkcival megszerzed az sor OID-jt is hasznlhatod egyedi azonositoknt, br ebben az esetben
rtket mg mieltt beszrnd az adatot a tblba. Erre itt lthatsz figyelj a pg_gump hasznlatnl a -o opciora (COPY WITH OIDS, msols
egy pldt: OID-dal), hogy meg?rizd az rtkeket.
new_id = execute("SELECT nextval('person_id_seq')");
execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')"); 4.15.2) Hogyan kaphatom meg egy SERIAL beszrs rtkt?
Esetleg lekrdezheted a szekvencia llapott a sor beszrsa utn. Egy megolds erre az, ha a nextval() funkcioval megszerzed az rtket mg
execute("INSERT INTO person (name) VALUES ('Blaise Pascal')"); mieltt beszrnd az adatot a tblba. Erre itt lthatsz egy pldt:
new_id = execute("SELECT currval('person_id_seq')");
new_id = execute("SELECT nextval('person_id_seq')");
execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise
Pascal')");
Esetleg lekrdezheted a szekvencia llapott a sor beszrsa utn.
execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
new_id = execute("SELECT currval('person_id_seq')");
Vgl pedig, hasznlhatod a visszaadott OID rtket is, br ez a lehet Vgl pedig, hasznlhatod a visszaadott OID rtket is, br ez a lehet
legkevsb portolhat. Perl DBI-ben, Edmund Mergl DBD::Pg moduljban legkevsb portolhato. Perl DBI-ben, Edmund Mergl DBD::Pg moduljban az
az OID rtk hasznlhat a $sth->execute() utn ($sth->{pg_oid_status}). OID rtk hasznlhato a $sth->execute() utn ($sth->{pg_oid_status}).
4.15.3) A currval() s a nextval() nem teremt holtpont veszlyes helyzetet
a felhasznlok kztt?
4.15.3) A currval() s a nextval() nem teremt holtpont veszlyes helyzetet Nem. A currval() funkcio a szerver processzed ltal adott rtket adja
a felhasznlk kztt?
Nem. A currval() funkci a szerver processzed ltal adott rtket adja
vissza, nem pedig a tbbi szerver processz ltal adottat. vissza, nem pedig a tbbi szerver processz ltal adottat.
4.15.4) Mirt nem hasznldnak fel jra a sequence szmok tranzakci 4.15.4) Mirt nem hasznlodnak fel jra a sequence szmok tranzakcio abort
abort esetn? esetn?
Mirt vannak problmk a serial oszlopok szmozsval?
Mirt vannak problmk a serial oszlopok szmozsval?
A prhuzamossg fejlesztse rdekben a sorozat szmokat krsre
adja ki a szerver fut tranzakciknak, s azokat nem zrja, amig A prhuzamossg fejlesztse rdekben a sorozat szmokat krsre adja ki a
a tranzakci vget nem r. Ez jukakat okoz a szmozsokban a szerver futo tranzakcioknak, s azokat nem zrja, amig a tranzakcio vget
visszaforditott tranzakcik miatt. nem r. Ez jukakat okoz a szmozsokban a visszaforditott tranzakciok
miatt.
4.16) Mi a OID? Mi a TID?
4.16) Mi a OID? Mi a TID?
Az OID a PostgreSQL egyedi sor azonositja. Minden sor, ami ltrejn
a szerveren, kap egy OID-t. Minden OID, amit az initdb alatt jn ltre Az OID a PostgreSQL egyedi sor azonositoja. Minden sor, ami ltrejn a
16384 alatt van (lsd include/access/transam.h). Minden, felhasznl szerveren, kap egy OID-t. Minden OID, amit az initdb alatt jn ltre 16384
ltal ltrehozott OID legalbb ennyi. Alaprtelmezsben, az OID alatt van (lsd include/access/transam.h). Minden, felhasznlo ltal
nem csak a tblban vagy az adatbzisban egyedi, hanem a teljes ltrehozott OID legalbb ennyi. Alaprtelmezsben, az OID nem csak a
PostgreSQL adatbzis rendszerben. tblban vagy az adatbzisban egyedi, hanem a teljes PostgreSQL adatbzis
rendszerben.
A PostgreSQL az OID-okat a bels tbliban hasznlja a sorok tblk
kztt sszekapcsolshoz. Ezek az OID-k hasznlhatak a rekordok A PostgreSQL az OID-okat a bels tbliban hasznlja a sorok tblk kztt
azonositsra is amikor tblkat csatol ssze a szerver (JOIN). sszekapcsolshoz. Ezek az OID-k hasznlhatoak a rekordok azonositsra
Az OID-ot hasznlhatod mez tpusknt is, s indexelheted is. is amikor tblkat csatol ssze a szerver (JOIN). Az OID-ot hasznlhatod
mez tpusknt is, s indexelheted is.
Az OID rtk egy kzponti terletrl szrmazik, amit minden szerver
Az OID rtk egy kzponti terletrl szrmazik, amit minden szerver
processz hasznl. Ha az OID-ot valami msra szeretnd cserlni: processz hasznl. Ha az OID-ot valami msra szeretnd cserlni:
CREATE TABLE new_table(old_oid oid, mycol int);
SELECT old_oid, mycol INTO new FROM old; CREATE TABLE new_table(old_oid oid, mycol int);
COPY new TO '/tmp/pgtable';
DELETE FROM new; SELECT old_oid, mycol INTO new FROM old;
COPY new WITH OIDS FROM '/tmp/pgtable';
COPY new TO '/tmp/pgtable';
Az OID 4 byte-os integer rtkknt troldik, igy 4 millirdnl tlcsordul.
Mg soha senki nem jelezte hogy ez trtnt volna, s ezt a korltot DELETE FROM new;
igyeksznk eltvolitani, mg mieltt brki szrevenn.
COPY new WITH OIDS FROM '/tmp/pgtable';
A TID a fizikai sorok blokk s offszet cmmel val azonositsra szolgl.
A TID vltozik minden rekord mdosits s trls alkalmval. Ezeket az Az OID 4 byte-os integer rtkknt trolodik, igy 4 millirdnl
tlcsordul. Mg soha senki nem jelezte hogy ez trtnt volna, s ezt a
korltot igyeksznk eltvolitani, mg mieltt brki szrevenn.
A TID a fizikai sorok blokk s offszet cmmel valo azonositsra szolgl.
A TID vltozik minden rekord modosits s trls alkalmval. Ezeket az
indexek hasznljk hogy a fizikai sort gyorsan megtalljk. indexek hasznljk hogy a fizikai sort gyorsan megtalljk.
4.17) Mi a PostgreSQL-ben hasznlt kifejezsek jelentse? 4.17) Mi a PostgreSQL-ben hasznlt kifejezsek jelentse?
Nhol a forrs kdban s a dokumnetciban tallhatak kifejezsek, Nhol a forrs kodban s a dokumnetcioban tallhatoak kifejezsek,
amelyek ltalnosabb jelentssel brnak. Itt van nhny: amelyek ltalnosabb jelentssel brnak. Itt van nhny:
* tbla (table), relci (relation), osztly (class)
* tbla (table), relcio (relation), osztly (class)
* sor (row), rekord (record), tuple (nincs magyar jelents) * sor (row), rekord (record), tuple (nincs magyar jelents)
* oszlop (column), mez (field), attributum (attribute) * oszlop (column), mez (field), attributum (attribute)
* retrieve, select * retrieve, select
* helyettesit (replace), mdosit (update) * helyettesit (replace), modosit (update)
* hozzfz (append), beszr (insert) * hozzfz (append), beszr (insert)
* OID, sorozat rtk (serial value) * OID, sorozat rtk (serial value)
* portal, cursor * portal, cursor
* range variable, tbla nv, tbla alias * range variable, tbla nv, tbla alias
Az ltalnos adatbzis kifejezsek sszefoglalojt itt olvashato:
Az ltalnos adatbzis kifejezsek sszefoglaljt itt olvashat:
http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html
/glossary.html
4.18) Mirt kapom ezt a hibt: "ERROR: Memory exhausted in
4.18) Mirt kapom ezt a hibt: "ERROR: Memory exhausted in
AllocSetAlloc()"? AllocSetAlloc()"?
Lehet hogy elfogyott a virtulis memrid, vagy a kerneled erforrs Lehet hogy elfogyott a virtulis memorid, vagy a kerneled erforrs
korltai alacsonyak. Prbld ki ezt mieltt elinditand a postmastert: korltai alacsonyak. Probld ki ezt mieltt elinditand a postmastert:
ulimit -d 262144
limit datasize 256m ulimit -d 262144
A shelltl fggen ezek kzl csak az egyik fut majd le, de a limit datasize 256m
processzek adatszegmenst sokkal magasabbra llitja, ami taln
elg lesz a lekrdezs vgrehajtshoz. Ez az utasts a jelenlegi A shelltl fggen ezek kzl csak az egyik fut majd le, de a processzek
processzre (a shelled) rvnyes, s minden ltala ltrehozott adatszegmenst sokkal magasabbra llitja, ami taln elg lesz a lekrdezs
processzre. Ha problmd van az SQL klienssel, mert a szerver vgrehajtshoz. Ez az utasts a jelenlegi processzre (a shelled)
tl nagy adatot kld vissza, prbld meg e klienssel is ugyanezt. rvnyes, s minden ltala ltrehozott processzre. Ha problmd van az SQL
klienssel, mert a szerver tl nagy adatot kld vissza, probld meg e
4.19) Hogyan tudhatom meg PostgreSQL, milyen verzit futtatok? klienssel is ugyanezt.
4.19) Hogyan tudhatom meg PostgreSQL, milyen verziot futtatok?
A psql programban select version(); A psql programban select version();
4.20) Mirt kapok "invalid large obj descriptor" hibt nagy objektumok 4.20) Mirt kapok "invalid large obj descriptor" hibt nagy objektumok
kezelsnl? kezelsnl?
A nagy objektumok kezelst egy tranzakcis blokkban helyezd el. A nagy objektumok kezelst egy tranzakcios blokkban helyezd el. (BEGIN s
(BEGIN s COMMIT kztt) COMMIT kztt)
Jelenleg a PostgreSQL ezt a szablyt azzal teszi ktelezv, hogy a Jelenleg a PostgreSQL ezt a szablyt azzal teszi ktelezv, hogy a
tranzakci vgn a nagy objektumokat lezrja, igy a tranzakci utn tranzakcio vgn a nagy objektumokat lezrja, igy a tranzakcio utn az
az els mvelet amit az objektumon vgrahajtanl hibs lesz. els mvelet amit az objektumon vgrahajtanl hibs lesz.
Ha olyan programozsi felletet hasznlsz mint az ODBC vagy a JDBC Ha olyan programozsi felletet hasznlsz mint az ODBC vagy a JDBC akkor
akkor valszinleg ki kell kapcsolnod az auto-commit-ot. valoszinleg ki kell kapcsolnod az auto-commit-ot.
4.21) Hogy hozhatok ltre olyan oszlopot, aminek alaprtelmezett rtke a
4.21) Hogy hozhatok ltre olyan oszlopot, aminek alaprtelmezett jelenlegi id?
rtke a jelenlegi id?
Hasznld a CURRENT_TIMESTAMP -ot: Hasznld a CURRENT_TIMESTAMP -ot:
CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
4.22) Mirt olyan lassak az al-lekrdezseim IN-nel?
4.22) Mirt olyan lassak az al-lekrdezseim IN-nel?
Jelenleg az al-lekrdezseket a kls lekrdezshez csatoljuk. Ha
az allekrdezs csak kevs sort eredmnyez s a kls lekrdezs Jelenleg az al-lekrdezseket a kls lekrdezshez csatoljuk. Ha az
sokat, akkor az IN is gyors. Az EXISTS kulcssz hasznlatval allekrdezs csak kevs sort eredmnyez s a kls lekrdezs sokat, akkor
gyorsithatod a lekrdezseket. az IN is gyors. Az EXISTS kulcsszo hasznlatval gyorsithatod a
SELECT * lekrdezseket.
FROM tab
WHERE col IN (SELECT subcol FROM subtab); SELECT *
FROM tab
WHERE col IN (SELECT subcol FROM subtab);
EXISTS hasznlatval: EXISTS hasznlatval:
SELECT *
FROM tab SELECT *
WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
FROM tab
Ahhoz hogy ez gyorsan fusson le, a subcol indexelt oszlopnak kell
hogy legyen. Remljk ezt a korltot sikerl hamarosan legyznnk. WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
4.23) Hogyan tudok outer join-t vgrehajtani? Ahhoz hogy ez gyorsan fusson le, a subcol indexelt oszlopnak kell hogy
legyen. Remljk ezt a korltot sikerl hamarosan legyznnk.
A PostgreSQL a szabvnyos SQL szintaktikt kveti. Itt van kt plda:
SELECT * 4.23) Hogyan tudok outer join-t vgrehajtani?
FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
A PostgreSQL a szabvnyos SQL szintaktikt kveti. Itt van kt plda:
SELECT *
FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
vagy vagy
SELECT *
FROM t1 LEFT OUTER JOIN t2 USING (col); SELECT *
FROM t1 LEFT OUTER JOIN t2 USING (col);
Ezek az identikus lekrdezsek sszekapcsoljk a t1.col s a t2.col Ezek az identikus lekrdezsek sszekapcsoljk a t1.col s a t2.col
mezket, s a t1 brmelyik kapcsolatlan sort is visszadjk. A RIGHT mezket, s a t1 brmelyik kapcsolatlan sort is visszadjk. A RIGHT JOIN
JOIN a t2 kapcsolatlan sorait adta volna vissza, a FULL JOIN pedig a t2 kapcsolatlan sorait adta volna vissza, a FULL JOIN pedig a kapcsolt,
a kapcsolt, s mindkt tbla kapcsolatlan sorait adja. Az OUTER s mindkt tbla kapcsolatlan sorait adja. Az OUTER kulcsszo opcionlis, a
kulcssz opcionlis, a LEFT, RIGHT s FULL JOIN szintaktikailag LEFT, RIGHT s FULL JOIN szintaktikailag helyes. Az tlagos
helyes. Az tlagos sszekapcsolsokat INNER JOIN-nak nevezzk. sszekapcsolsokat INNER JOIN-nak nevezzk.
Az elz kiadsokban a OUTER JOIN lekrdezseket UNION s NOT IN Az elz kiadsokban a OUTER JOIN lekrdezseket UNION s NOT IN
kulcsszavakkal lehetett szimullni. Pldul a tab1 s a tab2 kulcsszavakkal lehetett szimullni. Pldul a tab1 s a tab2
sszekapcsolsa: sszekapcsolsa:
SELECT tab1.col1, tab2.col2
FROM tab1, tab2 SELECT tab1.col1, tab2.col2
WHERE tab1.col1 = tab2.col1
UNION ALL FROM tab1, tab2
SELECT tab1.col1, NULL
FROM tab1 WHERE tab1.col1 = tab2.col1
WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
ORDER BY col1 UNION ALL
4.24) Hogyan tudok tbb adatbzison vgrehajtani lekrdezst? SELECT tab1.col1, NULL
Arra nincs lehetsg, hogy ms adatbzisbl krdezz le adatot. FROM tab1
Mivel a PostgreSQL adatbzis specifikus rendszer tblkat tlt
be, bizonytalan hogy egy adatbzisok kztti lekrdezsnek hogyan WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
kellene viselkednie.
ORDER BY col1
A contrib/dblink knyvtrban tallsz egy megoldst erre, ami
funkci hivsok segitsgvel mkdik. Persze, a kliens hozhat ltre 4.24) Hogyan tudok tbb adatbzison vgrehajtani lekrdezst?
szimultn kapcsolatot tbb adatbzissal, s sszefslheti az
eredmnyeket. Arra nincs lehetsg, hogy ms adatbzisbol krdezz le adatot.Mivel a
PostgreSQL adatbzis specifikus rendszer tblkat tltbe, bizonytalan hogy
4.25) Hogy tudok tbb soros vagy oszlopos eredmnyt visszaadni egy egy adatbzisok kztti lekrdezsnek hogyankellene viselkednie.
funkcibl?
A contrib/dblink knyvtrban tallsz egy megoldst erre, ami funkcio
A PL/pgSQL trolt eljrs nyelvvel refcursor hasznlatval. hivsok segitsgvel mkdik. Persze, a kliens hozhat ltreszimultn
Rszletesen itt: kapcsolatot tbb adatbzissal, s sszefslheti az eredmnyeket.
http://www.PostgreSQL.org/idocs/index.php?plpgsql-cursors.html
4.25) Hogy tudok tbb soros vagy oszlopos eredmnyt visszaadni egy
4.26) Mirt nem tudom megbizhatan ltrehozni s trlni az tmeneti funkciobol?
tblkat a PL/pgSQL funkcikban?
A PL/pgSQL trolt eljrs nyelvvel refcursor hasznlatval. Rszletesen
A PL/pgSQL cacheli a funkcik tartalmt, aminek az a szerencstlen itt:
mellkhatsa, hogy ha egy PL/pgSQL funkci hasznl egy tmeneti
tblt, ami ks?bb trldik majd ujra ltrejn, akkor az jra lefut http://www.PostgreSQL.org/idocs/index.php?plpgsql-cursors.html
funkci nem fogja megtallni a tblt, mert a cache vltozat a rgi
tblra tartalmaz mutatt. A megolds erre az EXECUTE utasts 4.26) Mirt nem tudom megbizhatoan ltrehozni s trlni az tmeneti
hasznlata az tmeneti tblk kezelsre PL/pgSQL-ben. Ez a tblkat a PL/pgSQL funkciokban?
lekrdezs jrafordtst fogja elidzni minden alkalommal.
A PL/pgSQL cacheli a funkciok tartalmt, aminek az a szerencstlen
4.27) Milyen replikcis lehetsgek vannak? mellkhatsa, hogy ha egy PL/pgSQL funkcio hasznl egy tmeneti tblt,
ami kso"bb trldik majd ujra ltrejn, akkor az jra lefuto funkcio nem
Szmos master/slave replikcis lehetsg ltezik. Ez csak a master fogja megtallni a tblt, mert a cache vltozat a rgi tblra tartalmaz
adatbzis szmra teszi lehetv, hogy az adatokat vltoztassa. Egy mutatot. A megolds erre az EXECUTE hasznlata az tmeneti tblk
Listt olvashatsz ezekrl itt: kezelsre PL/pgSQL-ben. Ez a lekrdezs jrafordtst fogja elidzni
minden alkalommal.
4.27) Milyen replikcios lehetsgek vannak?
Br a replikcio egyetlen terlet, tbb technologia ltezik replikciora,
termszetesen mindnek meg vannak a maga elo"nyei s htrnyai.
A master/slave replikcios megoldssal a master adatbzison hajthatunk
vgre modostsokat, mg a slave adatbzisokon csak lekrdezseket. A
PostgreSQL legnpszeru"bb master/slave replikcios megoldsa a Solny-I.
Szmos ms master/slave replikcios lehetsg ltezik.Egy Listt
olvashatsz ezekrl itt:
http://gborg.PostgreSQL.org/genpage?replication_research http://gborg.PostgreSQL.org/genpage?replication_research
Egy tbbfelhasznls replikcis rendszer kszl itt: A multi-master replikcio leheto"v teszi tbb master adatbzis
hasznlatt, br ez a technologia drasztikusan cskkenti az adatbzis
teljestmnyt a sok szinkornizcio miatt. A PGCluster a legelterjedtebb
ilyen megolds.
Egy tbbfelhasznlos replikcios rendszer kszl itt:
http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php. http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.
4.28) Milyen kdolsi lehetsgek vannak? 4.28) Milyen kodolsi lehetsgek vannak?
- A contrib/pgcrypto tartlamaz szmos SQL lekrdezsben hasznlhat kdolst. * A contrib/pgcrypto tartlamaz szmos SQL lekrdezsben hasznlhato
- A kliens-szerver kommunikci rejtjelezsre a hostssl hasznlhat. kodolst.
Ezt a pg_hba.conf-ben engedlyeztheted. * A kliens-szerver kommunikcio rejtjelezsre a hostssl hasznlhato.
- Az adatbzis felhsznlk jelszavait trolskor kdolja a rendszer. Ezt a pg_hba.conf-ben engedlyeztheted.
Rgebbi verzikban a PASSWORD_ENCRYPTION opcival lehetett * Az adatbzis felhsznlok jelszavait trolskor kodolja a rendszer.
bekapcsolni. * Rgebbi verziokban a PASSWORD_ENCRYPTION opcioval lehetett
- A szerveren hasznlhatsz kdolt fjrendszert. bekapcsolni.
_________________________________________________________________ * A szerveren hasznlhatsz kodolt fjrendszert.
A PostgreSQL kiterjesztse ----------------------------------------------------------------------
5.1) rtam egy felhasznli funkcit. Mirt core dumpol az adatbzis amikor A PostgreSQL kiterjesztse
hasznlom?
5.1) rtam egy felhasznloi funkciot. Mirt core dumpol az adatbzis
Szmos problma lehet. Elbb probld ki a funkcidat egy klnll amikor hasznlom?
Szmos problma lehet. Elbb probld ki a funkciodat egy klnllo
alkalmazsban. alkalmazsban.
5.2) Hogyan lehet j adattpusokat s funkcikat hozzadni a PostgreSQL 5.2) Hogyan lehet j adattpusokat s funkciokat hozzadni a PostgreSQL
disztribcihoz? disztribciohoz?
Kldd el a kiegsztseid a pgsql-hackers levelezsi listra s a Kldd el a kiegsztseid a pgsql-hackers levelezsi listra s a
forrskodjaid vgl a contrib-ban ktnek ki. forrskodjaid vgl a contrib-ban ktnek ki.
5.3) Hogyan lehet olyan C funkcit rni, ami Tuple-t ad vissza? 5.3) Hogyan lehet olyan C funkciot rni, ami Tuple-t ad vissza?
A 7.3 verzitl kezdve a PostgreSQL tmogatja a tblzatokat A 7.3 verziotol kezdve a PostgreSQL tmogatja a tblzatokat viszzaado
viszzaad funkcikat C, PL/pgSQL s SQL nyelveken. Bvebb funkciokat C, PL/pgSQL s SQL nyelveken. Bvebb dokumentciot a Programozo
dokumentcit a Programoz kziknyvben tallsz. Egy C plda kziknyvben tallsz. Egy C plda funkcio tallhato a contrib/tablefunc
funkci tallhat a contrib/tablefunc knyvtrban. knyvtrban.
5.4) Megvltoztattam egy forrs llomnyt. Mirt nem vltozik a binris 5.4) Megvltoztattam egy forrs llomnyt. Mirt nem vltozik a binris
jrafordts utn? jrafordts utn?
A Makefile-ok nem ismerik a include llomnyok megfelel fggsgeit. A Makefile-ok nem ismerik a include llomnyok megfelel fggsgeit.
Vgre kell hajtanod egy make clean-t, majd jra egy make-t. Ha GCC-t Vgre kell hajtanod egy make clean-t, majd jra egy make-t. Ha GCC-t
hasznlsz felhasznlhatod a configure script --enable-depend opcijt, hasznlsz felhasznlhatod a configure script --enable-depend opciojt, gy
gy a compiler maga fogja ellenrizni a fggsgeket. a compiler maga fogja ellenrizni a fggsgeket.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="content-type">
<title>PostgreSQL GYIK</title>
</head>
<body>
<br>
<div style="text-align: center;">
<h1>PostgreSQL GyIK</h1>
<br>
</div>
<br>
<pre>Utols&oacute; m&oacute;dos&iacute;t&aacute;s d&aacute;tuma: 2005 m&aacute;jus 9.</pre>
<pre>Ford&iacute;t&aacute;s aktualiz&aacute;l&aacute;sa: 2005 j&uacute;nius</pre>
<pre><br>
A GyIK karbantart&oacute;ja: Bruce Momjian (<a
href="mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</a>)</pre>
<pre>Ford&iacute;t&oacute;: Horny&aacute;k L&aacute;szl&oacute;<br>(<a
href="mailto:laszlo.hornyak.nospam@gmail.com">laszlo.hornyak.nospam@gmail.com</a>)</pre>
<pre><br>
A legfrissebb verzi&oacute; itt &eacute;rhet&otilde; el (angol):</pre>
<pre><a href="http://www.PostgreSQL.org/docs/faq-english.html">http://www.PostgreSQL.org/docs/faq-english.html</a>.</pre>
<pre><br>
Legfrissebb magyar nyelv&ucirc; verzi&oacute;:</pre>
<pre><a href="http://hackers.forgeahead.hu/space/PostgreSQL/GYIK">http://hackers.forgeahead.hu/space/PostgreSQL/GYIK</a></pre>
<pre><br>
Platform specifikus k&eacute;rd&eacute;sek:</pre>
<pre><a href="http://www.PostgreSQL.org/users-lounge/docs/faq.htm">http://www.PostgreSQL.org/users-lounge/docs/faq.htm</a>l.</pre>
<hr style="width: 100%; height: 2px;">
<div style="text-align: center;">
<h2>&Aacute;ltal&aacute;nos k&eacute;rd&eacute;sek</h2>
</div>
<a href="#1.1">1.1</a> Mi a PostgreSQL? Hogy kell kimondani?<br>
<a href="#1.2">1.2</a> Mik a PostgreSQL felhaszn&aacute;l&aacute;si
felt&eacute;telei?<br>
<a href="#1.3">1.3</a> Milyen UNIX oper&aacute;ci&oacute;s
rendszereken fut PostgreSQL?<br>
<a href="#1.4">1.4</a> Milyen nem UNIX oper&aacute;ci&oacute;s
rendszerek el&eacute;rhet&otilde;ek?<br>
<a href="#1.5">1.5</a> Hogyan tudok PostgreSQL-t szerezni?<br>
<a href="#1.6">1.6</a> Hogyan kapok
term&eacute;kt&aacute;mogat&aacute;st?<br>
<a href="#1.7">1.7</a> Melyik a legfrissebb kiad&aacute;s?<br>
<a href="#1.8">1.8</a> Milyen dokument&aacute;ci&oacute; &aacute;ll
rendelkez&eacute;sre?<br>
<a href="#1.9">1.9</a> Hogyan tal&aacute;lok inform&aacute;ci&oacute;t
hib&aacute;kr&oacute;l vagy hi&aacute;nyz&oacute;
funkcional&iacute;t&aacute;sr&oacute;l?<br>
<a href="#1.10">1.10</a> Hogy tanuljam meg az SQL nyelvet?<br>
<a href="#1.11">1.11</a> A PostgreSQL 2000. &eacute;v kompatibilis?<br>
<a href="#1.12">1.12</a> Hogyan lehet csatlakozni a fejleszt&otilde;
csapathoz?<br>
<a href="#1.13">1.13</a> Hogyan k&uuml;ldjek hibajelent&eacute;st?<br>
<a href="#1.14">1.14</a> Milyen a PostgreSQL m&aacute;s DBMS-ekkel
&ouml;sszehasonl&iacute;tva?<br>
<a href="#1.15">1.15</a> Hogyan tudom &uuml;zletileg segiteni a
PostgreSQL-t?<br>
<a href="#1.16">1.16</a> Ki ir&aacute;ny&iacute;tja a PostgreSQL-t?<br>
<br>
<div style="text-align: center;">
<h2>Felhaszn&aacute;l&oacute;i kliens k&eacute;rd&eacute;sek</h2>
</div>
<br>
<a href="#2.1">2.1</a> Van ODBC meghajt&oacute; PostgreSQL-hez?<br>
<a href="#2.2">2.2</a> Milyen eszk&ouml;z&ouml;k &aacute;llnak
rendelkez&eacute;sre PostgreSQL Web fejleszt&eacute;sekhez?<br>
<a href="#2.3">2.3</a> Van a PostgreSQL-hez grafikus
felhaszn&aacute;l&oacute;i fel&uuml;let ? Riport gener&aacute;tor?
Be&aacute;gyazott lek&eacute;rdez&otilde; nyelv fel&uuml;let?<br>
<a href="#2.4">2.4</a> Milyen programoz&aacute;si nyelvekkel lehet
el&eacute;rni a PostgreSQL szervert?<br>
<br>
<div style="text-align: center;">
<h2>Adminisztr&aacute;ci&oacute;s k&eacute;rd&eacute;sek</h2>
</div>
<br>
<a href="#3.1">3.1</a> Hogyan tudom a PostgreSQL-t /usr/local/pgsql
-t&otilde;l elt&eacute;r&otilde; helyre install&aacute;lni?<br>
<a href="#3.2">3.2</a> AMikor elind&iacute;tom a postmaster-t, egy
"Bad System Call"-t vagy core dump-ot kapok. Mi&eacute;rt?<br>
<a href="#3.3">3.3</a> Amikor megpr&oacute;b&aacute;lom inditani a
postmaster-t, "IpcMemoryCreate" hib&aacute;kat kapok. Mi&eacute;rt?<br>
<a href="#3.4">3.4</a> Amikor megpr&oacute;b&aacute;lom inditani a
postmaster-t, "IpcSemaphoreCreate" hib&aacute;kat kapok. Mi&eacute;rt?<br>
<a href="#3.5">3.5</a> Hogyan tudom kontroll&aacute;lni a m&aacute;s
g&eacute;pekr&otilde;l &eacute;rkez&otilde; kapcsolat
k&eacute;r&eacute;seket?<br>
<a href="#3.6">3.6</a> Hogyan tudom nagyobb
teljes&iacute;tm&eacute;nyre hangolni az
adatb&aacute;zisomat?<br>
<a href="#3.7">3.7</a> Milyen hibakeres&otilde;
lehet&otilde;s&eacute;gek
&eacute;rhet&otilde;ek el?<br>
<a href="#3.8">3.8</a> Mi&eacute;rt kapok "Sorry, too many clients"
hib&aacute;t
csatlakoz&aacute;sn&aacute;l?<br>
<a href="#3.9">3.9</a> Mi van pgsql_tmp k&ouml;nyvt&aacute;rban?<br>
<a href="#3.10">3.10</a> Mi&eacute;rt kell dumpolni &eacute;s
&uacute;jrat&ouml;lteni
PostgreSQL kiad&aacute;s v&aacute;lt&aacute;s&aacute;n&aacute;l?<br>
<br>
<div style="text-align: center;">
<h2>M&ucirc;k&ouml;dtet&eacute;si k&eacute;rd&eacute;sek</h2>
</div>
<br>
<a href="#4.1">4.1</a> Mi a k&uuml;l&ouml;nbs&eacute;g a bin&aacute;ris
&eacute;s a
norm&aacute;l kurzorok k&ouml;z&ouml;tt?<br>
<a href="#4.2">4.2</a> Hogyan tudom select-elni a
lek&eacute;rdez&eacute;s els&otilde;
p&aacute;r sor&aacute;t?<br>
<a href="#4.3">4.3</a> Hogy tudom kilist&aacute;zni a
t&aacute;bl&aacute;kat vagy
m&aacute;s dolgokat a PostgreSQL-ben?<br>
<a href="#4.4">4.4</a> Hogyan tudok elt&aacute;vol&iacute;tani egy
oszlopot egy
t&aacute;bl&aacute;b&oacute;l?<br>
<a href="#4.5">4.5</a> Mi a maxim&aacute;lis m&eacute;rete egy sornak,
egy
t&aacute;bl&aacute;nak vagy egy adatb&aacute;zisnak?<br>
<a href="#4.6">4.6</a> Mekkora adatb&aacute;zis lemez ter&uuml;let
sz&uuml;ks&eacute;ges
egy tipikus sz&ouml;veg &aacute;llom&aacute;ny
t&aacute;rol&aacute;s&aacute;hoz?<br>
<a href="#4.7">4.7</a> Hogy tudhatom meg milyen t&aacute;bl&aacute;k,
indexek,
adatb&aacute;zisok vagy felhaszn&aacute;l&oacute;k vannak
defini&aacute;lva?<br>
<a href="#4.8">4.8</a> A lek&eacute;rdez&eacute;seim lass&uacute;ak,
vagy nem
haszn&aacute;lj&aacute;k az indexeket. Mi&eacute;rt?<br>
<a href="#4.9">4.9</a> Hogy tudom ellen&otilde;rizni, hogy
optimaliz&aacute;lta a
lek&eacute;rdez&eacute;s optimaliz&aacute;l&oacute; a
lek&eacute;rdez&eacute;sem?<br>
<a href="#4.10">4.10</a> Mi az R-tree index?<br>
<a href="#4.11">4.11</a> Mi a Genetic Query Optimizer?<br>
<a href="4.12">4.12</a> Hogyan tudok regexp keres&eacute;st &eacute;s
case-insensitive
regexp keres&eacute;st haszn&aacute;lni? Hogyan tudok indexet
haszn&aacute;lni case-insensitive keres&eacute;shez?<br>
<a href="4.13">4.13</a> Hogyan tudom &eacute;szlelni egy
lek&eacute;rdez&eacute;sban, ha
egy mez&otilde; NULL?<br>
<a href="#4.14">4.14</a> Mi a k&uuml;l&ouml;nbs&eacute;g a
k&uuml;l&ouml;nb&ouml;z&otilde;
karaktert&iacute;pusok k&ouml;z&ouml;tt?<br>
<a href="#4.15.1">4.15.1</a> Hogyan tudok l&eacute;trehozni
automatikusan
n&ouml;vekv&otilde; &eacute;rt&eacute;k&ucirc; mez&otilde;t?<br>
<a href="#4.15.2">4.15.2</a> Hogyan kaphatom meg egy SERIAL
besz&uacute;r&aacute;s
&eacute;rt&eacute;k&eacute;t?<br>
<a href="#4.15.3">4.15.3</a> A currval() &eacute;s a nextval() nem
teremt holtpont
vesz&eacute;lyes helyzetet a felhaszn&aacute;l&oacute;k
k&ouml;z&ouml;tt?<br>
<a href="#4.15.4">4.15.4</a> Mi&eacute;rt nem
haszn&aacute;l&oacute;dnak fel &uacute;jra a
sequence sz&aacute;mok tranzakci&oacute; abort eset&eacute;n?
Mi&eacute;rt vannak probl&eacute;m&aacute;k a serial oszlopok
sz&aacute;moz&aacute;s&aacute;val?<br>
<a href="#4.16">4.16</a> Mi a OID? Mi a TID?<br>
<a href="#4.17">4.17</a> Mi a PostgreSQL-ben haszn&aacute;lt
kifejez&eacute;sek
jelent&eacute;se?<br>
<a href="#4.18">4.18</a> Mi&eacute;rt kapom ezt a hib&aacute;t: "ERROR:
Memory exhausted
in AllocSetAlloc()"?<br>
<a href="#4.19">4.19</a> Hogyan tudhatom meg PostgreSQL, milyen
verzi&oacute;t futtatok?<br>
<a href="#4.20">4.20</a> Mi&eacute;rt kapok "invalid large obj
descriptor" hib&aacute;t
nagy objektumok kezel&eacute;s&eacute;n&eacute;l?<br>
<a href="#4.21">4.21</a> Hogy hozhatok l&eacute;tre olyan oszlopot,
aminek
alap&eacute;rtelmezett &eacute;r&eacute;tke a jelenlegi id&otilde;?<br>
<a href="#4.22">4.22</a> Mi&eacute;rt olyan lass&uacute;ak az
al-lek&eacute;rdez&eacute;seim IN-nel?<br>
<a href="#4.23">4.23</a> Hogyan tudok outer join-t v&eacute;grehajtani?<br>
<a href="#4.24">4.24</a> Hogyan tudok t&ouml;bb adatb&aacute;zison
v&eacute;grehajtani
lek&eacute;rdez&eacute;st?<br>
<a href="#4.25">4.25</a> Hogy tudok t&ouml;bb soros vagy oszlopos
eredm&eacute;nyt
visszaadni egy funkci&oacute;b&oacute;l?<br>
<a href="#4.26">4.26</a> Mi&eacute;rt nem tudom megbizhat&oacute;an
l&eacute;trehozni
&eacute;s t&ouml;r&ouml;lni az &aacute;tmeneti t&aacute;bl&aacute;kat a
PL/pgSQL funkci&oacute;kban?<br>
<a href="#4.27">4.27</a> Milyen replik&aacute;ci&oacute;s
lehet&otilde;s&eacute;gek vannak?<br>
<a href="#4.28">4.28</a> Milyen k&oacute;dol&aacute;si
lehet&otilde;s&eacute;gek vannak?<br>
<br>
<div style="text-align: center;">
<h2>A PostgreSQL kiterjeszt&eacute;se</h2>
</div>
<br>
<a href="#5.1">5.1</a>) &Iacute;rtam egy felhaszn&aacute;l&oacute;i
funkci&oacute;t.
Mi&eacute;rt core dumpol az adatb&aacute;zis amikor haszn&aacute;lom?<br>
<a href="#5.1">5.2</a>) Hogyan lehet &uacute;j adatt&iacute;pusokat
&eacute;s
funkci&oacute;kat hozz&aacute;adni a PostgreSQL
disztrib&uacute;ci&oacute;hoz?<br>
<a href="#5.3">5.3</a>) Hogyan lehet olyan C funkci&oacute;t
&iacute;rni, ami Tuple-t ad
vissza? (t&ouml;bb soros t&ouml;bb oszlopos eredm&eacute;nyek)<br>
<a href="#5.4">5.4</a>) Megv&aacute;ltoztattam egy forr&aacute;s
&aacute;llom&aacute;nyt.
Mi&eacute;rt nem v&aacute;ltozik a bin&aacute;ris
&uacute;jraford&iacute;t&aacute;s ut&aacute;n?<br>
<hr style="width: 100%; height: 2px;">
<h2 style="text-align: center;"> &Aacute;ltal&aacute;nos
k&eacute;rd&eacute;sek</h2>
<br>
<a name="1.1"></a><big style="text-decoration: underline;">1.1 Mi a
PostgreSQL? Hogy kell kimondani?</big><br>
<p>&Iacute;gy ejstd ki: Post-Gres-Q-L.</p>
<p>(Vagy tal&aacute;n ink&aacute;bb t&ouml;ltsd le a kis mp3-at a
PostgreSQL homepage-r&otilde;l)</p>
<p>A PostgreSQL a POSTGRES adatb&aacute;zis management rendszer egy
kieg&eacute;sz&iacute;t&eacute;se, ami egy k&ouml;vetkez&otilde;
gener&aacute;ci&oacute;s DBMS kutat&aacute;si protot&iacute;pus.
Megtartja a POSTGRES adatmodell&eacute;t &eacute;s gazdag
adatt&iacute;pus v&aacute;laszt&eacute;k&aacute;t, de a PostQuel
lek&eacute;rdez&otilde; nyelvet az SQL egy kiterjesztett
verzi&oacute;j&aacute;val helyettes&iacute;ti. A PostgreSQL szabad
&eacute;s a teljes forr&aacute;sk&oacute;d
hozz&aacute;f&eacute;rhet&otilde;.</p>
<p>A PostgreSQL fejleszt&eacute;s&eacute;t egy csapat v&eacute;gzi,
amelynek minden tagja megtal&aacute;lhat&oacute; a PostgreSQL
fejleszt&otilde;i levelez&eacute;si list&aacute;n. A jelenlegi
koordin&aacute;tor
Marc G. Fournier (scrappyp@PostgreSQL.org). Ez a csapat felel&otilde;s
minden fejleszt&eacute;s&eacute;rt. &lt;&gt;A PostgreSQL 1.01
alkot&oacute;i
Andrew Yu &eacute;s Jolly Chen voltak. Sokan j&aacute;rultak
hozz&aacute; portol&aacute;ssal, tesztel&eacute;ssel,
hibakeres&eacute;ssel &eacute;s fejleszt&eacute;ssel. Az eredeti
Postgres k&oacute;d, amib&otilde;l a PostgreSQL sz&aacute;rmazik
Michael Stonebraker professzor ir&aacute;ny&iacute;t&aacute;sa alatt
fejlesztettek az egyetem programoz&oacute;i, tanul&oacute;i &eacute;s
v&eacute;gzett tanul&oacute;i. &lt;&gt;</p>
<p>A szoftver eredeti neve Postgres volt. Amikor SQL
funkcional&iacute;t&aacute;ssal eg&eacute;sz&iacute;tett&eacute;k ki
1995-ben, a nev&eacute;t Postgres95-re v&aacute;ltoztatt&aacute;k. 1996
v&eacute;g&eacute;n kapta mai nev&eacute;t. </p>
<br>
<a name="1.2"></a> <big style="text-decoration: underline;">1.2 Mik a
PostgreSQL felhaszn&aacute;l&aacute;si
felt&eacute;telei?</big><br>
<br>
<pre> Az eredeti angol copyright sz&ouml;veg: </pre>
<pre> -------------------- </pre>
<pre> PostgreSQL is subject to the following COPYRIGHT:</pre>
<pre><br> PostgreSQL Data Base Management System</pre>
<pre><br> Portions copyright (c) 1996-2002, PostgreSQL Global Development Group</pre>
<pre> Portions Copyright (c) 1994-6 Regents of the University of California</pre>
<pre><br> Permission to use, copy, modify, and distribute this software and its</pre>
<pre> documentation for any purpose, without fee, and without a written</pre>
<pre> agreement is hereby granted, provided that the above copyright notice</pre>
<pre> and this paragraph and the following two paragraphs appear in all</pre>
<pre> copies.</pre>
<pre><br> IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY</pre>
<pre> FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,</pre>
<pre> INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND</pre>
<pre> ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN</pre>
<pre> ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</pre>
<pre><br> THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,</pre>
<pre> INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF</pre>
<pre> MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE</pre>
<pre> PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF</pre>
<pre> CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,</pre>
<pre> UPDATES, ENHANCEMENTS, OR MODIFICATIONS.</pre>
<pre> --------------------</pre>
<p><br>
</p>
Ami nagyon leegyszer&ucirc;s&iacute;tve azt jelenti, hogy jogod van
haszn&aacute;lni a szoftvert mindenf&eacute;le
ellenszolg&aacute;ltat&aacute;s (p&eacute;nz, stb) n&eacute;lk&uuml;l,
a forr&aacute;s k&oacute;dot m&oacute;dos&iacute;thatod, &eacute;s
tov&aacute;bbadhatod, DE semmilyen, a szoftver
haszn&aacute;lat&aacute;b&oacute;l k&ouml;vetkez&otilde;
k&aacute;rosod&aacute;s&eacute;rt nem v&aacute;llal garanci&aacute;t a
fejleszt&otilde;. A fenti a BSD licensz, egy klasszikus
nyilt-forr&aacute;sk&oacute;d licensz. Nem tartalmaz
megszor&iacute;t&aacute;sokat arra, hogy a forr&aacute;sk&oacute;dot
hogyan haszn&aacute;lod fel.
<p> Kedvelj&uuml;k ezt a licensz form&aacute;t &eacute;s nem &aacute;ll
sz&aacute;nd&eacute;kunkban megv&aacute;ltoztatni.</p>
<a name="1.3"></a> <big><span style="text-decoration: underline;">1.3
Milyen UNIX oper&aacute;ci&oacute;s
rendszereken fut PostgreSQL?</span></big><br>
<p>&Aacute;ltal&aacute;ban minden UNIX-kompatibilis
oper&aacute;ci&oacute;s rendszer k&eacute;pes arra hogy futtassa a
PostgreSQL-t. Azokat a platformokat, amiken tesztelt&eacute;k a
kiad&aacute;st
megtal&aacute;lhatod a install&aacute;ci&oacute;s
utas&iacute;t&aacute;sok k&ouml;z&ouml;tt. </p>
<a name="1.4"></a> <big><span style="text-decoration: underline;">1.4
Milyen nem UNIX oper&aacute;ci&oacute;s
rendszerek el&eacute;rhet&otilde;ek?</span></big><br>
<br>
<p>Kliens<br>
</p>
<p>A libpq C f&uuml;ggv&eacute;nyk&ouml;nyvt&aacute;rat, a psql-t
&eacute;s m&aacute;s fel&uuml;leteket le lehet &uacute;gy
ford&iacute;tani, hogy fussanak MS Windows oper&aacute;ci&oacute;s
rendszereken. Ebben az esetben a kliens MS Windows-on fut &eacute;s
TCP/IP seg&iacute;ts&eacute;g&eacute;vel kommunik&aacute;l a Unixon
fut&oacute; szerverrel. A "win32.mak" &aacute;llom&aacute;ny a
kiad&aacute;s r&eacute;sze, ennek seg&iacute;ts&eacute;g&eacute;vel
lehet Win32 platformokra leford&iacute;tani a libpq-t &eacute;s a
psql-t. A PostgreSQL ODBC kliensekkel is k&eacute;pes
kommunik&aacute;lni.</p>
<p>
Szerver</p>
&lt;&gt;Az adatb&aacute;zis szerver Cygwin
seg&iacute;ts&eacute;g&eacute;vel
fut Windows NT &eacute;s Win2k rendszereken. Tov&aacute;bbi
inform&aacute;ci&oacute;
tal&aacute;lhat&oacute; a pgsql/doc/FAQ_MSWIN &aacute;llom&aacute;nyban
&eacute;s a MS Windows FAQ-ban a k&ouml;vetkez&otilde; helyen: <a
href="http://www.PostgreSQL.org/docs/faq-mswin.html">http://www.PostgreSQL.org/docs/faq-mswin.html</a>.&nbsp;
Nat&iacute;v MS Windows NT/2000/XP portok jelenleg fejleszt&eacute;s
alatt &aacute;llnak.<br>
<br>
<a name="1.5"></a> <big style="text-decoration: underline;">1.5 Hogyan
tudok PostgreSQL-t szerezni?</big><br>
<p>Az els&otilde;dleges anonim ftp oldal: <a
href="ftp://ftp.PostgreSQL.org/pub">ftp://ftp.PostgreSQL.org/pub</a>. </p>
<p>A t&uuml;k&ouml;r oldalak list&aacute;ja megtal&aacute;lhat&oacute;
a
f&otilde; weboldalunkon.</p>
<a name="1.6"></a> <big style="text-decoration: underline;">1.6 Hogyan
kapok
term&eacute;kt&aacute;mogat&aacute;st?</big><br>
<br>
<p>Az els&otilde;dleges lista a <a
href="mailto:pgsql-general@postgresql.org">pgsql-general@postgresql.org</a>.
Ez
haszn&aacute;lhat&oacute; a PostgreSQL-lel kapcsolatos
p&aacute;rbesz&eacute;dekre. Ha fel
szeretn&eacute;l &iacute;ratkozni, k&uuml;ldj egy levelet a
k&ouml;vetkez&otilde; tartalommal (nem
t&aacute;rggyal) a<a
href="mailto:%20pgsql-general-request@postgresql.org">
pgsql-general-request@postgresql.org</a> c&iacute;mre:</p>
<pre>
subscribe</pre>
<pre>
end </pre>
<br>
Van egy hib&aacute;kkal kapcsolatos levelez&eacute;si lista is:
pgsql-bugs-request@PostgreSQL.org a k&ouml;vetkez&otilde; tartalommal:<br>
<br>
<pre>
subscribe</pre>
<pre>
end
</pre>
<p>A fejleszt&#337;i levelez&eacute;si lista:<a
href="mailto:pgsql-hackers-request@PostgreSQL.org">
pgsql-hackers-request@PostgreSQL.org</a> a k&ouml;vetkez&otilde;
tartalommal:</p>
<pre>
subscribe</pre>
<pre>
end</pre>
<br>
Egy&eacute;b levelez&eacute;si list&aacute;k
tal&aacute;lhat&oacute;ak
a weboldalunkon: <a href="http://www.PostgreSQL.org">http://www.PostgreSQL.org</a>
<p>Van egy IRC csatorna is <a href="irc://irc.freenode.net/#postgresql">#PostgreSQL</a>
n&eacute;ven ahol felteheted
k&eacute;r&eacute;dseid. A k&ouml;vetkez&otilde; unix paranccsal
csatlakozhatsz:
</p>
<p>irc -c '#PostgreSQL' "$USER" irc.phoenix.net.</p>
<p>
A kereskedelmi term&eacute;kt&aacute;mogat&aacute;st
ny&uacute;jt&oacute; c&eacute;gek list&aacute;ja el&eacute;rhet&ouml;
itt:<a
href="http://www.PostgreSQL.org/users-lounge/commercial-support.html">
http://www.PostgreSQL.org/users-lounge/commercial-support.html</a><br>
</p>
<p>Magyar nyelv&#369; levelez&eacute;si lista nincs, de ha tudok segiteni a
fenit e-mail cimemen el&eacute;rhet&#337; vagyok.</p>
<a name="1.7"></a> <big style="text-decoration: underline;">1.7 Melyik
a legfrissebb kiad&aacute;s?</big><br>
<p>A legfrissebb PostgreSQL kiad&aacute;s a 8.0.</p>
<p>A tervek szerint minden &eacute;vben lesz egy nagyobb
fejleszt&eacute;seket tartalmaz&oacute; kiad&aacute;s, m&iacute;g a
kisebb fejleszt&eacute;seket n&eacute;h&aacute;ny havonta adjuk ki.<br>
</p>
<a name="1.8"></a> <big style="text-decoration: underline;">1.8 Milyen
dokument&aacute;ci&oacute; &aacute;ll
rendelkez&eacute;sre?</big><br>
<p>Sz&aacute;mos k&eacute;zik&ouml;nyv, man oldalak &eacute;s kis teszt
p&eacute;ld&aacute;k tal&aacute;lhat&oacute;ak a kiad&aacute;sban a
doc/ k&ouml;nyvt&aacute;r alatt. Az interneten is olvashatod a
dokument&aacute;ci&oacute;t a k&ouml;vetkez&otilde; c&iacute;men:</p>
<p><a href="http://www.PostgreSQL.org/users-lounge/docs/">http://www.PostgreSQL.org/users-lounge/docs/</a>.</p>
<p>K&eacute;t PostgreSQL k&ouml;nyv &eacute;rhet&otilde; el az
interneten
a <a href="http://www.PostgreSQL.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html</a>
&eacute;s a <a href="http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook/</a>
c&iacute;meken. A megv&aacute;s&aacute;rolhat&oacute; k&ouml;nyvek
list&aacute;ja itt
tal&aacute;lhat&oacute;: <a href="http://www.ca.PostgreSQL.org/books/">http://www.ca.PostgreSQL.org/books/</a>.
A PostgreSQL-lel kapcsolatos technikai jelleg&ucirc; cikkek
gy&ucirc;jtem&eacute;nye: <a href="http://techdocs.PostgreSQL.org/">http://techdocs.PostgreSQL.org/</a>.</p>
<p>A psql parancs rendelkezik n&eacute;h&aacute;ny \d
utas&iacute;t&aacute;ssal, amellyekkel list&aacute;zhat&oacute;ak az
oper&aacute;torok, a funkci&oacute;k, stb.</p>
<p>A website is tartalmaz tov&aacute;bbi dokument&aacute;ci&oacute;kat.</p>
<a name="1.9"></a> <big style="text-decoration: underline;">1.9 Hogyan
tal&aacute;lok inform&aacute;ci&oacute;t
hib&aacute;kr&oacute;l vagy hi&aacute;nyz&oacute;
funkcional&iacute;t&aacute;sr&oacute;l?</big><br>
<p>A PostgreSQLaz SQL-92 szabv&aacute;ny egy
kieg&eacute;sz&iacute;t&eacute;se. N&eacute;zd meg a TODO
list&aacute;kat ha &eacute;rdekelnek az ismert hib&aacute;k.</p>
<a name="1.10"></a> <big style="text-decoration: underline;">1.10 Hogy
tanuljam meg az SQL nyelvet?</big><br>
<br>
<p>A PostgreSQL k&ouml;nyv a
<a href="http://www.PostgreSQL.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html</a>
c&iacute;men tartalmaz SQL
alapokat. El&eacute;rhet&otilde; egy
m&aacute;sik SQL k&ouml;nyv is a <a
href="http://www.commandprompt.com/ppbook">http://www.commandprompt.com/ppbook</a>
c&iacute;men. Egy sz&eacute;p
oktat&oacute; anyag tal&aacute;lhat&oacute; a
<a href="http://www.intermedia.net/support/sql/sqltut.shtm">http://www.intermedia.net/support/sql/sqltut.shtm</a>,
a
<a
href="http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM">http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM</a>
&eacute;s a <a href="http://sqlcourse.com">http://sqlcourse.com</a>
oldalakon.
</p>
<p>Egy m&aacute;sik lehet&otilde;s&eacute;g a "Tan&iacute;tsd magad 21
nap
alatt SQL-re, m&aacute;sodik kiad&aacute;s" a
<a href="http://members.tripod.com/er4ebus/sql/index.htm">http://members.tripod.com/er4ebus/sql/index.htm</a>.</p>
<p>
Sok felhaszn&aacute;l&oacute;nak tetszett a gyakorlati SQL k&ouml;nyv
("The Practical SQL Handbook"). </p>
<br>
<a name="1.11"></a> <big style="text-decoration: underline;">1.11 A
PostgreSQL 2000. &eacute;v kompatibilis?</big><br>
<br>
<p>Igen, k&ouml;nnyed&eacute;n kezeli a 2000 ut&aacute;ni &eacute;s
id&otilde;sz&aacute;m&iacute;t&aacute;sunk el&ouml;tt 2000 el&ouml;tti
d&aacute;tumokat is. </p>
<br>
<a name="1.12"></a> <big style="text-decoration: underline;">1.12
Hogyan lehet csatlakozni a fejleszt&otilde;
csapathoz?</big><br>
<br>
El&ouml;ssz&ouml;r is t&ouml;ltsd le a forr&aacute;sk&oacute;dot,
&eacute;s olvasd el a PostgreSQL<br>
fejleszt&otilde;i dokumnet&aacute;ci&oacute;t a web oldalunkon vagy a
kiad&aacute;sban. Ezut&aacute;n<br>
&iacute;ratkozz fel a pgsql-hackers &eacute;s a pgsql-patches
levelez&eacute;si list&aacute;kra.<br>
V&eacute;g&uuml;l pedig k&uuml;ldj be magas szinvonal&uacute;
patch-eket a pgsql-patches list&aacute;ra.<br>
<br>
Van egy p&aacute;r ember, akiknek commit privil&eacute;giumuk a
PostgreSQL CVS f&aacute;n.<br>
&Otilde;k olyan sok magas szinvonal&uacute; patch-et k&uuml;ldtek be,
hogy az addigi <br>
csapat m&aacute;r nem tudta k&ouml;vetni, &eacute;s nem volt
k&eacute;ts&eacute;g&uuml;nk arr&oacute;l, hogy a<br>
patch-ek amiket &otilde;k k&uuml;ldenek j&oacute;
min&otilde;s&eacute;g&ucirc;.<br>
<br>
<a name="1.13"></a> <big style="text-decoration: underline;">1.13
Hogyan k&uuml;ldjek hibajelent&eacute;st?</big><br>
<br>
L&aacute;togass el a BugTool oldalra: <br>
<a href="http://www.PostgreSQL.org/bugs/bugs.php">http://www.PostgreSQL.org/bugs/bugs.php</a><br>
Itt megtal&aacute;lod k&ouml;vetend&otilde; utas&iacute;t&aacute;sokat.<br>
<br>
Ellen&otilde;rizd az ftp oldalunkon is, hogy nincs-e &uacute;jabb
verzi&oacute; vagy folt.<br>
<a href="ftp://ftp.PostgreSQL.org/pub">ftp://ftp.PostgreSQL.org/pub </a><br>
<br>
<a name="1.14"></a><big style="text-decoration: underline;">1.14 Milyen
a PostgreSQL m&aacute;s DBMS-ekkel
&ouml;sszehasonl&iacute;tva?</big><br>
<p>Sz&aacute;mos n&eacute;z&otilde;pontb&oacute;l lehet
vizsg&aacute;lni
a
szoftvert: k&eacute;pess&eacute;gek, teljes&iacute;tm&eacute;ny
megb&iacute;zhat&oacute;s&aacute;g, t&aacute;mogatotts&aacute;g
&eacute;s &aacute;r.</p>
<span style="text-decoration: underline;">K&eacute;pess&eacute;gek:</span>
A PostgreSQL rendelkezik a nagy, kereskedelmi DBMS-ek
k&eacute;pess&eacute;geivel: tranzakci&oacute;k,
al-lek&eacute;rdez&eacute;sek, triggerek,
n&eacute;zetek, k&uuml;ls&otilde; kulcsok, integr&iacute;t&aacute;s
&eacute;s kifinoult z&aacute;rmechanizmusok.
Van n&eacute;h&aacute;ny k&eacute;pess&eacute;ge, ami a kereskedelmi
adatb&aacute;zisokb&oacute;l hi&aacute;nyzik, mint
p&eacute;ld&aacute;ul a felhaszn&aacute;l&oacute; &aacute;ltal
defini&aacute;lt t&iacute;pusok,
&ouml;r&ouml;kl&otilde;d&eacute;s, szab&aacute;lyok &eacute;s
verzi&oacute; kontroll a z&aacute;rol&aacute;si vit&aacute;k
reduk&aacute;l&aacute;s&aacute;&eacute;rt.
<p><span style="text-decoration: underline;">Teljes&iacute;tm&eacute;ny:</span>
A PostgreSQL teljes&iacute;tm&eacute;nye hasonl&iacute;t a
kereskedelmi
&eacute;s m&aacute;s ny&iacute;lt adatb&aacute;zis
szerverek&eacute;hez. Lehet bizonyos esetekben
lassabb, m&aacute;sokban gyorsabb. A MySQL nev&ucirc; tanul&oacute;
RDBMS p&eacute;ld&aacute;ul gyorsabban hajt v&eacute;gre insert/update
m&ucirc;veleteket, mivel a tranzakci&oacute;kat
elsum&aacute;kolja. Persze a MySQL nem rendelkezik a
k&eacute;pess&eacute;gek
r&eacute;szben felsoroltak nagy r&eacute;sz&eacute;vel. Mi a
megb&iacute;zhat&oacute;s&aacute;gra
&eacute;s a k&eacute;pess&eacute;gekre &eacute;p&iacute;t&uuml;nk,
b&aacute;r a teljes&iacute;tm&eacute;ny is n&otilde; minden
kiad&aacute;ssal. Van
egy &eacute;rdekes oldal a MySQL &eacute;s a PostgreSQL
&ouml;sszehasonl&iacute;t&aacute;s&aacute;val a
<a href="http://openacs.org/philosophy/why-not-mysql.html">http://openacs.org/philosophy/why-not-mysql.html
</a>c&iacute;men.
</p>
<p><span style="text-decoration: underline;">Megb&iacute;zhat&oacute;s&aacute;g:</span>
Tudjuk hogy ha egy DBMS nem megb&iacute;zhat&oacute;, akkor
teljesen
haszontalan. Igyeksz&uuml;nk j&oacute;l tesztelt, stabil k&oacute;dot
kiadni, amiben
a lehet&otilde; legkevesebb hiba van. Minden kiad&aacute;s
el&ouml;tt eltellik
legal&aacute;bb 1 h&oacute;nap b&eacute;ta teszt, &eacute;s a
kiad&aacute;si
t&ouml;rt&eacute;net is azt mutatja, hogy stabil k&oacute;dot adunk ki,
ami k&eacute;szen &aacute;ll a
produkt&iacute;v felhaszn&aacute;l&aacute;sra. &Uacute;gy gondoljuk,
fel&uuml;lm&uacute;lunk m&aacute;s
adatb&aacute;zis szoftvereket ezen a t&eacute;ren.
</p>
<p></p>
<p><span style="text-decoration: underline;">T&aacute;mogat&aacute;s:</span>
A levelez&eacute;si list&aacute;ink kapcsolatot teremtenek a
fejleszt&otilde;k &eacute;s felhaszn&aacute;l&oacute;k
csoportj&aacute;val , akik
seg&iacute;tenek a probl&eacute;m&aacute;k megold&aacute;s&aacute;ban.
B&aacute;r nem tudjuk garant&aacute;lni
hogy ki tudjuk jav&iacute;tani a hib&aacute;t, m&aacute;s, kereskedelmi
adatb&aacute;zis c&eacute;gek sem tudj&aacute;k. A fejleszt&otilde;
csoport k&ouml;zvetlen el&eacute;r&eacute;si
lehet&otilde;s&eacute;ge, a k&ouml;z&ouml;ss&eacute;g, a
dokument&aacute;ci&oacute; &eacute;s a forr&aacute;sk&oacute;d
gyakran t&aacute;mogat&aacute;st biztos&iacute;t, mint m&aacute;s
adatb&aacute;zisokn&aacute;l. Van kereskedelmi, alkalmi
t&aacute;mogat&aacute;s azoknak, akiknek sz&uuml;ks&eacute;ge van
r&aacute; (l&aacute;sd: 1.6).
</p>
<p></p>
<p><span style="text-decoration: underline;">&Aacute;r:</span> A
PostgreSQL szabad b&aacute;rmilyen
felhaszn&aacute;l&aacute;sra,
ak&aacute;r kereskedelmire is. A term&eacute;khez hozz&aacute;adhatod a
saj&aacute;t
forr&aacute;sk&oacute;djaidat korl&aacute;toz&aacute;s
n&eacute;lk&uuml;l.</p>
<a name="1.15"></a> <big style="text-decoration: underline;">1.15
Hogyan tudom &uuml;zletileg segiteni a
PostgreSQL-t?</big><br>
<p>A PostgreSQL els&otilde; oszt&aacute;ly&uacute;
infrastrukt&uacute;r&aacute;val rendelkezik, amit 1996-ban
ind&iacute;tottunk el. Mindent Marc Fourniernek
k&ouml;sz&ouml;nhet&uuml;nk, aki l&eacute;trehozta &eacute;s
karbantartja a rendszert.
</p>
<p>A min&otilde;s&eacute;gi infrastrukt&uacute;ra nagyon fontos egy
nyilt
forr&aacute;s&uacute; szoftver eset&eacute;ben. Megv&eacute;d az olyan
fennakad&aacute;sokt&oacute;l,
amelyek komoly k&eacute;s&eacute;seket okoznak a
fejleszt&eacute;sekben. Term&eacute;szetesen ez az
infrastrukt&uacute;ra nem olcs&oacute;.
Sz&aacute;mos havi &eacute;s &aacute;lland&oacute; kiad&aacute;sunk
van. Ha a c&eacute;gednek van p&eacute;nze, amivel
t&aacute;mogatn&aacute; er&otilde;fesz&iacute;t&eacute;seinket,
k&eacute;rlek l&aacute;togass el a <a
href="http://store.pgsql.com/shopping/">http://store.pgsql.com/shopping/</a>
oldalra.</p>
<p>
B&aacute;r a weboldal "PostgreSQL, Inc"-k&eacute;nt
eml&iacute;ti, a
hozz&aacute;j&aacute;rul&aacute;sok kiz&aacute;r&oacute;lag a
PostgreSQL fejleszt&eacute;sre &eacute;rtend&oacute;ek, &eacute;s nem
egy meghat&aacute;rozott c&eacute;gnek. Ha jobban tetszik,
k&uuml;ldhetsz csekket is a kapcsolati c&iacute;mek
b&aacute;rmelyik&eacute;re.</p>
<p><big style="text-decoration: underline;"><a name="1.16"></a>1.16 Ki
ir&aacute;ny&iacute;tja a PostgreSQL-t?<br>
</big></p>
<p><big style="text-decoration: underline;"><small><span
style="text-decoration: underline;"></span></small></big><big><small>Ha
k&ouml;zponti bizotts&aacute;got, ellen&ouml;rz&#337; c&eacute;get keresel a
PostgreSQL m&ouml;g&ouml;tt, add fel, nincs ilyesmi. L&eacute;tezik egy
mag &eacute;s CVS commiter csoport, de ez ink&aacute;b adminisztrativ
mint ellen&ouml;rz&#337; c&eacute;l&uacute;. A projectet fejleszt&#337;k
&eacute;s felhaszn&aacute;l&oacute;k k&ouml;z&ouml;ss&eacute;ge
ir&aacute;ny&iacute;tja, amihez b&aacute;rki csatlakozhat.
Csup&aacute;n annyit kell tenned hogy fel&iacute;ratkozol a
levelez&#337;list&eacute;kra &eacute;s r&eacute;szt veszel a
besz&eacute;lget&eacute;sekben.</small></big><big
style="text-decoration: underline;"><small><span
style="text-decoration: underline;"></span></small></big></p>
<p></p>
<hr style="width: 100%; height: 2px;">
<h2 style="text-align: center;">Felhaszn&aacute;l&oacute;i kliens
k&eacute;rd&eacute;sek</h2>
<br>
<a name="2.1"></a> <big style="text-decoration: underline;">2.1 Van
ODBC meghajt&oacute; PostgreSQL-hez?</big><br>
<p>K&eacute;t ODBC meghajt&oacute; &eacute;rhet&otilde; el: PsqlODBC
&eacute;s a OpenLink ODBC.</p>
<p>A PsqlODBC a PostgreSQL kiad&aacute;s r&eacute;sze. Tov&aacute;bbi
inform&aacute;ci&oacute; tal&aacute;lhat&oacute; a&nbsp;
ftp://ftp.PostgreSQL.org/pub/odbc/ oldalon.</p>
<p>Az OpenLink ODBC-t a <a href="http://www.openlinksw.com">http://www.openlinksw.com</a>
c&iacute;mr&otilde;l
t&ouml;ltheted le. Ez az &otilde; szabv&aacute;nyos ODBC kliens
szoftver&uuml;kkel
m&ucirc;k&ouml;dik, &iacute;gy minden</p>
<p>&aacute;ltaluk t&aacute;mogatott platformon (Win, Mac, Unix, VMS)
el&eacute;rhet&otilde; lesz&nbsp; a PostgreSQL szerver.</p>
<p>Tal&aacute;n olyan vev&otilde;knek fogj&aacute;k eladni, akik
kereskedelmi min&otilde;s&eacute;g&ucirc; term&eacute;ket
szeretn&eacute;nek kapni, de a freeware verzi&oacute; mindig
el&eacute;rhet&otilde; lesz. K&eacute;rd&eacute;seidet a
term&eacute;kkel kapcsolatban a postgres95@openlink.co.uk
c&iacute;men teheted fel.</p>
<p>Olvasd el az ODBC fejezetet is a programoz&oacute;k
k&eacute;zik&ouml;nyv&eacute;ben!</p>
<p><a name="2.2"></a><big style="text-decoration: underline;">2.2
Milyen
eszk&ouml;z&ouml;k &aacute;llnak
rendelkez&eacute;sre PostgreSQL Web fejleszt&eacute;sekhez?</big></p>
<p>Egy sz&eacute;p bemutat&oacute; olvashat&oacute; az
adatb&aacute;zissal
t&aacute;mogatott web oldalanr&oacute;l a http://www.webreview.com
weboldalon.</p>
<p>A web integr&aacute;ci&oacute;hoz a PHP egy kiv&aacute;ll&oacute;
szoftver. Let&ouml;lthet&otilde; a <a href="http://www.php.net">http://www.php.net</a>
c&iacute;mr&otilde;l. </p>
<p>Komplexebb esetekre sokan haszn&aacute;lj&aacute;k a Perl
fel&uuml;letet &eacute;s a CGI.pm vagy a mod_perl-t.</p>
<p><a name="2.3"></a><big style="text-decoration: underline;">2.3 Van a
PostgreSQL-hez grafikus
felhaszn&aacute;l&oacute;i fel&uuml;let?</big></p>
<p>Van egy sz&eacute;p PgAccess nev&ucirc; grafikus
fel&uuml;let&uuml;nk,
ami riport gener&aacute;tork&eacute;nt is haszn&aacute;lhat&oacute;. A
weboldal&aacute;t megtal&aacute;lod a
<a href="http://www.pgaccess.org/">http://www.pgaccess.org/</a>
c&iacute;men.</p>
<p>A <a href="http://techdocs.postgresql.org/guides/GUITools">http://techdocs.postgresql.org/guides/GUITools</a>
oldalon tal&aacute;lhatsz egy pontos &eacute;s r&eacute;szltes
list&aacute;t.<br>
</p>
<p><a name="2.4"></a><big style="text-decoration: underline;">2.4
Milyen
programoz&aacute;si nyelvekkel lehet
el&eacute;rni a PostgreSQL szervert?</big></p>
<p>A k&ouml;vetkez&ouml;k: </p>
<ul>
<li>C (libpq)</li>
<li>C++ (libpq++)</li>
<li>Embedded C (ecpg)</li>
<li>Java (jdbc)</li>
<li>Perl (DBD::Pg and perl5)</li>
<li>ODBC (odbc)</li>
<li>Python (PyGreSQL)</li>
<li>TCL (libpgtcl)</li>
<li>C Easy API (libpgeasy)</li>
<li>PHP ('pg_' functions, Pear::DB)</li>
</ul>
<br>
Tov&aacute;bbi programoz&aacute;si fel&uuml;letek
&eacute;rhet&otilde;ek el a <br>
<a href="http://www.PostgreSQL.org/interfaces.html">
http://www.PostgreSQL.org/interfaces.html</a> &eacute;s a<br>
<a href="http://gborg.PostgreSQL.org"> http://gborg.PostgreSQL.org</a>
oldalakon.<br>
<br>
<hr style="width: 100%; height: 2px;">
<h2 style="text-align: center;">Adminisztr&aacute;ci&oacute;s
k&eacute;rd&eacute;sek</h2>
<br>
<a name="3.1"></a> <big><span style="text-decoration: underline;">3.1
Hogyan tudom a PostgreSQL-t /usr/local/pgsql
-t&otilde;l elt&eacute;r&otilde; helyre install&aacute;lni?</span></big><br>
<p>A configure script --prefix param&eacute;ter&eacute;nek
haszn&aacute;lat&aacute;val.</p>
<a name="3.2"></a> <big style="text-decoration: underline;">3.2 AMikor
elind&iacute;tom a postmaster-t, egy
"Bad System Call"-t vagy core dump-ot kapok. Mi&eacute;rt?</big><br>
<p>Sz&aacute;mos probl&eacute;ma lehet, de legel&ouml;ssz&ouml;r
ellen&otilde;rizd le, hogy a kerneled System V
kieg&eacute;sz&iacute;t&eacute;sekkel rendelkezik-e. A
PostgreSQL haszn&aacute;lja a kernel osztott mem&oacute;ria &eacute;s
szemafor API-j&aacute;t. </p>
<p><a name="3.3"></a><big style="text-decoration: underline;">3.3
Amikor
megpr&oacute;b&aacute;lom inditani a
postmaster-t, "IpcMemoryCreate" hib&aacute;kat kapok. Mi&eacute;rt?</big></p>
<p>
Vagy nincs megfelel&otilde;en konfigur&aacute;lva a kerneled osztott
mem&oacute;ria t&aacute;mogat&aacute;sa vagy meg kell
nagyobb&iacute;tanod a maxim&aacute;lis osztott
mem&oacute;ria m&eacute;retet.</p>
<p>A pontos m&eacute;ret sz&uuml;ks&eacute;glet f&uuml;gg az
architekt&uacute;r&aacute;dt&oacute;l &eacute;s att&oacute;l hogy
h&aacute;ny buffert &eacute;s processzt konfigur&aacute;lsz a
postmasternek.
Legal&aacute;bb 1 MB ter&uuml;letre sz&uuml;ks&eacute;ged van. A
PostgreSQL
Adminisztr&aacute;ci&oacute; k&eacute;zik&ouml;nyvben olvashatsz
r&eacute;szletesebb inform&aacute;ci&oacute;kat az osztott
mem&oacute;ri&aacute;r&oacute;l &eacute;s a szemaforokr&oacute;l.</p>
<a name="3.4"></a><big style="text-decoration: underline;">3.4) Amikor
megpr&oacute;b&aacute;lom inditani a
postmaster-t, "IpcSemaphoreCreate" <br>
hib&aacute;kat kapok. Mi&eacute;rt?</big><br>
<p>Ha a hiba&uuml;zenet ez: " IpcSemaphoreCreate: semget failed (No
space left on device)", akkor a kerneled konfigur&aacute;ci&oacute;ja
nem
tesz lehet&otilde;v&eacute; elegend&otilde; szemafort. A PostgreSQL
szerver processzenk&eacute;nt 1
szemafort ig&eacute;nyel. Egy &aacute;tmeneti megold&aacute;s lehet az
hogy a
postmastert kevesebb maxim&aacute;lis processz sz&aacute;mmal inditod
el. Haszn&aacute;ld a
-D param&eacute;tert. Egy sokkal megfelel&otilde;bb megold&aacute;s az
ha n&ouml;veled a
kerneled SEMMNS &eacute;s SEMMNI param&eacute;tereit.</p>
<p>A hib&aacute;s szemaforok is adat&aacute;zis
lerobban&aacute;s&aacute;hoz is vezethet nagy terhel&eacute;s
eset&eacute;n.Ha a hiba&uuml;zenet valami m&aacute;s, lehet hogy nincs
szemaforok
t&aacute;mogat&aacute;s</p>
<p>forditva a kerneledbe. Olvasd el a PostgreSQL
adminisztr&aacute;torok k&eacute;zik&ouml;nyv&eacute;ben az osztott
mem&oacute;ri&aacute;r&oacute;l &eacute;s a szemaforokr&oacute;l
sz&oacute;l&oacute; fejezetet.</p>
<p><a name="3.5"></a><big style="text-decoration: underline;">3.5)
Hogyan tudom kontroll&aacute;lni a m&aacute;s
g&eacute;pekr&otilde;l &eacute;rkez&otilde; kapcsolat
k&eacute;r&eacute;seket?</big></p>
<p>Alap&eacute;rtelmez&eacute;sben a PostgreSQL a helyi kapcsolatokat
Unix
socketekkel val&oacute;s&iacute;tja meg. M&aacute;s g&eacute;pek nem
lesznek
k&eacute;pesek csatlakozni, ha nem enged&eacute;lyezed azt -i
opci&oacute;val a postmasternek, &eacute;s
nem &aacute;ll&iacute;tod be host a alap&uacute;
azonos&iacute;t&aacute;st a pg_hba.conf
&aacute;llom&aacute;nyban. Ezzel v&aacute;lnak lehet&otilde;v&eacute; a
TCP/IP kapcsolatok.</p>
<p><a name="3.6"></a><big style="text-decoration: underline;">3.6)
Hogyan tudom nagyobb
teljes&iacute;tm&eacute;nyre hangolni az adatb&aacute;zisomat?</big></p>
<p>Az indexel&eacute;s felt&eacute;tlen&uuml;l gyors&iacute;tja a
lek&eacute;rdez&eacute;seket. Az EXPLAIN parancs lehet&otilde;v&eacute;
teszi hogy l&aacute;sd, hogy a
PostgreSQL mik&eacute;nt interpret&aacute;lja a
lek&eacute;rdez&eacute;st &eacute;s melyik indexet haszn&aacute;lja.</p>
<p>Ha sok INSERT m&ucirc;veletet hajtassz v&eacute;gre, csin&aacute;ld
nagy k&ouml;tegekben a COPY paranccsal. Ez sokkal gyorsabb mint az
egyedi INSERT parancsok.
M&aacute;sodszor: Azok a m&ucirc;veletek, amelyek nincsenek
tranzakci&oacute; blokkon
bel&uuml;l, azok saj&aacute;t tranzakci&oacute;t ind&iacute;tanak. Sok
m&ucirc;veletet &eacute;rdemes
egy tranzakci&oacute;n bel&uuml;l v&eacute;grehajtani. Ez
cs&ouml;kkenti a tranzakci&oacute;
kezel&eacute;s t&ouml;bbletidej&eacute;t. Az indexeket javasolt a nagy
adatv&aacute;ltoz&aacute;sok el&ouml;tt
elt&aacute;vol&iacute;tani, majd &uacute;jra l&eacute;trehozni.</p>
<p>Sz&aacute;mos teljes&iacute;tm&eacute;ny jav&iacute;t&oacute;
lehet&otilde;s&eacute;g van. Kikapcsolhatod az fsync() m&ucirc;veletet
a postmaster -o -F opci&oacute;kval val&oacute;
ind&iacute;t&aacute;sakor. &Iacute;gy nem fog az amugy lass&uacute;
fsync() f&uuml;ggv&eacute;ny
megh&iacute;v&oacute;dni minden tranzakci&oacute; v&eacute;g&eacute;n.</p>
<p>Haszn&aacute;lhatod a postmaster -B opci&oacute;j&aacute;t is az
osztott mem&oacute;ria szegmens m&eacute;ret&eacute;nek
n&ouml;vel&eacute;s&eacute;hez. Ha az
&eacute;rt&eacute;ket t&uacute;l magasra &aacute;ll&iacute;tod, lehet
hogy a postmaster nem indul el, mert t&uacute;ll&eacute;pted az
oper&aacute;ci&oacute;s rendszer &aacute;ltal&nbsp; megengedett
m&eacute;retet. Minden buffer 8K m&eacute;ret&ucirc;
&eacute;s alap&eacute;rtelmez&eacute;sban 64 buffer van.</p>
<p>A -S opci&oacute;val n&ouml;velheted a szerver &aacute;tmeneti
rendez&eacute;sekre fenntartott mem&oacute;ria ter&uuml;let&eacute;t.
Az &eacute;rt&eacute;ket
kilobyteban add meg. Az alap&eacute;rtelmezett &eacute;rt&eacute;k
512K. </p>
<p>Haszn&aacute;lhatod a CLUSTER utas&iacute;t&aacute;st is, hogy a
t&aacute;bl&aacute;kat egy indexnek megfelel&otilde;en
csoportos&iacute;tsd. Olvasd el a CLUSTER
k&eacute;zik&ouml;nyv oldalt tov&aacute;bbi r&eacute;szletek&eacute;rt.<br>
</p>
<p>Hardver kiv&aacute;laszt&aacute;s&aacute;ban seg&iacute;thet: <a
href="http://candle.pha.pa.us/main/writings/pgsql/hw_performance/index.html">http://candle.pha.pa.us/main/writings/pgsql/hw_performance/index.html</a>
&eacute;s <a href="http://www.powerpostgresql.com/PerfList/">http://www.powerpostgresql.com/PerfList/</a>.<br>
</p>
<p>A postgresql.conf be&aacute;llit&aacute;saival kapcsolatos
tudnival&oacute;k: <a
href="http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.html">http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.html</a>
&eacute;s <a
href="http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html">http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html</a>.</p>
<p></p>
<p><a name="3.7"></a> <big style="text-decoration: underline;">3.7)
Milyen hibakeres&otilde;
lehet&otilde;s&eacute;gek &eacute;rhet&otilde;ek el?</big></p>
<p>A PostgreSQL sz&aacute;mos lehet&ouml;s&eacute;ggel rendelkezik ami
&eacute;rt&eacute;kes lehet a hibakeres&eacute;sn&eacute;l.</p>
El&ouml;ssz&ouml;r is, futtathatod a configure scriptet
--enable-cassert opci&oacute;val, sok assert()
funkci&oacute;hiv&aacute;s ellen&ouml;rzi
a program fut&aacute;s&aacute;t &eacute;s meg&aacute;llitja ha valami
v&eacute;ratlan hiba t&ouml;rt&eacute;nik.<br>
<p>Mind a postmaster &eacute;s a postgres sz&aacute;mos hibakeres&ouml;
lehet&uuml;s&eacute;ggel rendelkezik. Mindig amikor elinditod a
postmastert, gy&ouml;z&ouml;dj meg
r&oacute;la, hogy a kimenetet log &aacute;llom&aacute;nyba
k&uuml;ld&ouml;d. Igy:</p>
<p>cd /usr/local/pgsql</p>
<p>./bin/postmaster &gt;server.log 2&gt;&amp;1 &amp;</p>
<p>Ez egy server.log &aacute;llom&aacute;nyt hoz l&eacute;tre a
fels&ouml;
PostgreSQL k&ouml;nyvt&aacute;rban. Ez az &aacute;llom&aacute;ny
tartlamaz majd sz&aacute;mos hasznos
inform&aacute;ci&oacute;t a szerverrel kapcsolatos
probl&eacute;m&aacute;kr&oacute;l &eacute;s
hib&aacute;kr&oacute;l. A postmaster -d opci&oacute;j&aacute;val lehet
r&eacute;szletesebb hibakeres&ouml; inform&aacute;ci&oacute;t kapni. A
-d opci&oacute;hoz meg kell hat&aacute;rozni egy hiba szintet.
Vigy&aacute;zz, a magas
hibakeres&ouml; szint nagy log &aacute;llom&aacute;nyt okozhat.</p>
<p>Ha a postmaster nem fut, akkor futtathatod a postgres szervert
parancssorb&oacute;l is, &eacute;s az SQL kifejez&eacute;st
k&ouml;zvetlen&uuml;l ennek adhatod &aacute;t. Ez csak
hibakeres&eacute;s eset&eacute;ben javasolt. Az &uacute;j sor a
kifejez&eacute;s v&eacute;g&eacute;t jelenti, nem a pontosvessz&ouml;.
Ha hibakeres&ouml; opci&oacute;kkal
forditottad a szervert, haszn&aacute;lhatsz egy debuggert is hogy
l&aacute;sd hogy mi
t&ouml;rt&eacute;nik. Mivel igy a szervert nem a postmaster inditotta,
nem
t&ouml;bbfelhaszn&aacute;l&oacute;s k&ouml;rnyezetk&eacute;nt fut, igy
a z&aacute;rol&aacute;si &eacute;s a szerverek
k&ouml;z&ouml;tti kommunik&aacute;ci&oacute;s hiba jelens&eacute;gek
nem jelentkeznek.</p>
<p>Ha m&aacute;r fut a postmaster, indits egy psql-t, &eacute;s
n&eacute;zd meg a szerver processz PID-j&eacute;t! Egy debuggert
haszn&aacute;lhatsz a processzhez
csatlakoz&aacute;shoz. Be&aacute;llithatsz t&ouml;r&eacute;spontokat
&eacute;s elindithatsz
lek&eacute;rdez&eacute;seket. Ha a postgres indit&aacute;sban keresel
hib&aacute;t, a PGOPTIONS k&ouml;rnyezeti
v&aacute;ltoz&oacute;t &aacute;llitsd be "-W n" &eacute;rt&eacute;kre.
Ez n m&aacute;sodperc v&aacute;rakoz&aacute;st
id&eacute;z el&ouml;, igy tudsz csatlakozni a processzhez, el tdsz
hejezni t&ouml;r&eacute;spontokat, majd
folytathatod a ind&iacute;t&aacute;st.</p>
<p>A postgres program -s, -A &eacute;s -t opci&oacute;i is nagyon
hasznosak lehetnek hibakeres&eacute;sn&eacute;l &eacute;s
teljes&iacute;tm&eacute;ny
m&eacute;r&eacute;sn&eacute;l.</p>
<p>Profiling leht&ouml;s&eacute;ggel is fordithatod a szervert, hogy
l&aacute;sd melyik funkci&oacute;k foglalj&aacute;k el a fut&aacute;si
id&otilde;t. A
szerver profile &aacute;llom&aacute;nyai a pgsql/data/base/dbname
k&ouml;nzvt&aacute;rba ker&uuml;lnek, a kliens
profile &aacute;llom&aacute;nyok az aktu&aacute;lis
k&ouml;nyvt&aacute;rba.
Linuxon ehhez sz&uuml;ks&eacute;ges a -DLINUX_PROFILE
ford&iacute;t&aacute;si direktiva.</p>
<a name="3.8"></a> <big style="text-decoration: underline;">3.8)
Mi&eacute;rt kapok "Sorry, too many clients"
(T&uacute;l sok kliens) <br>
hib&aacute;t csatlakoz&aacute;sn&aacute;l?</big><br>
<p>N&ouml;velned kell a postmaster egyidej&ucirc;leg futtatott szerver
processz sz&aacute;m korl&aacute;tj&aacute;t.</p>
<p>Az alap&eacute;rtelmezett korl&aacute;t 32 processz. Ezt
n&ouml;velhetjed &uacute;gy, hogy &uacute;jrainditod a postmastert
&eacute;s -N opci&oacute;val
meghat&aacute;rotod az &uacute;j &eacute;rt&eacute;ket, vagy
m&oacute;dositod a postgresql.conf-ot.</p>
<p>Ne felejtsd el, hogy ha n&ouml;veled a szerver processzek
maxim&aacute;lis sz&aacute;m&aacute;t, akkor bufferek
sz&aacute;m&aacute;t is n&ouml;velned kell,
legal&aacute;bb a processzek sz&aacute;m&aacute;nak
k&eacute;tszeres&eacute;re. Nagy processz sz&aacute;mokeset&eacute;ben
val&oacute;szin&uuml;leg a Unix konfigur&aacute;ci&oacute;s
param&eacute;tereken is n&ouml;velni kell.
Ellen&ouml;rizd a SHMMAX (az osztott mem&oacute;ria szegmensek
maxim&aacute;lis m&eacute;rete),
a SEMMNS &eacute;s a SEMMNI (a szemaforok maxim&aacute;lis
sz&aacute;ma), az NPROC (a processzek
maxim&aacute;lis sz&aacute;ma), a MAXUPRC
(felhaszn&aacute;l&oacute;nk&eacute;nti maxim&aacute;lis
processz sz&aacute;m) &eacute;s a NFILE &eacute;s NINODE (a megnzitott
&aacute;llom&aacute;nzok maxim&aacute;lis sz&aacute;ma)
param&eacute;tereket. A PostgreSQL az&eacute;rt korl&aacute;tozza
k&uuml;l&ouml;n a processz
sz&aacute;mot, hogy a rendszeredet ne terhelhesse meg
t&uacute;ls&aacute;gosan.</p>
<p>A PostgreSQL 6.5 verzi&oacute;ban a maxim&aacute;lis szerver
processz
sz&aacute;m 64 volt &eacute;s a m&oacute;dosit&aacute;shoz bele kellett
irni a
include/storage/sinvaladt.h &aacute;llom&aacute;nyba &eacute;s
&uacute;jra kellett forditani a servert. <a name="3.9"></a></p>
<big style="text-decoration: underline;">3.9) Mi van pgsql_tmp
k&ouml;nyvt&aacute;rban?</big><br>
<p>Ez a k&ouml;nyvt&aacute;r a lek&eacute;rdez&eacute;s
v&eacute;grehajt&oacute; &aacute;ltal l&eacute;trehezott
&aacute;tmeneti &aacute;llom&aacute;nyokat tartalmazza.
P&eacute;ld&aacute;ul ha egy
rendez&eacute;st kell v&eacute;grehajtani egy ORDER BY kifejez&eacute;s
miatt &eacute;s a m?velet t&ouml;bb
mem&oacute;ri&aacute;t vesz ig&eacute;nybe, mint amennyit a -S
param&eacute;ter megenged, akkor az
&aacute;tmeneti k&ouml;nyvt&aacute;rban hoz l&eacute;tre egy
&aacute;llom&aacute;nyt a
fennmarad&oacute; adat t&aacute;rol&aacute;s&aacute;ra.</p>
<p>Az &aacute;tmeneti &aacute;llom&aacute;nyok t&ouml;bbnyire
t&ouml;rl?dnek, de meg is maradhat ha p&eacute;ld&aacute;ul
v&aacute;ratlan hib&aacute;val le&aacute;ll a
szerver egy rendez&eacute;s k&ouml;zben. Indit&aacute;skor &eacute;s
le&aacute;llit&aacute;skor ezeket az
&aacute;llom&aacute;nyokat t&ouml;rli a postmaster.</p>
<a name="3.10"></a> <big style="text-decoration: underline;">3.10)
Mi&eacute;rt kell dumpolni &eacute;s
&uacute;jrat&ouml;lteni PostgreSQL kiad&aacute;s
v&aacute;lt&aacute;s&aacute;n&aacute;l?</big><br>
<p>A PostgreSQL csapat csak apr&oacute;bb
v&aacute;ltoztat&aacute;sokat
hajt v&eacute;gre a kisebb kiad&aacute;sok k&ouml;z&ouml;tt, igy ha 7.2
verzi&oacute;r&oacute;l
&aacute;llsz &aacute;t 7.2.1 verzi&oacute;ra, akkor nem
sz&uuml;ks&eacute;ges kidumplonod az adatb&aacute;zist. A nagy
kiad&aacute;sok eset&eacute;ben (p&eacute;ld&aacute;ul
verzi&oacute;r&oacute;l 7.3-ra &aacute;tt&eacute;r&eacute;sn&eacute;l)
v&aacute;ltozik a belsi&otilde; adatstrukt&uacute;r&aacute;k &eacute;s
adat&aacute;llom&aacute;nyok form&aacute;tuma. Ezek a
v&aacute;ltoz&aacute;sok gyakran nagyon &ouml;sszetettek, ez&eacute;rt
ink&aacute;b nem tartunk fenn visszafel&eacute;
kompatibilit&aacute;st. A dump az adatot &aacute;ltal&aacute;nos
form&aacute;tumban irja ki, majd az
&uacute;j form&aacute;tumban lehet azt visszat&ouml;leni.
</p>
Azokban a kiad&aacute;sokban, amelyek k&ouml;z&ouml;tt az adat
form&aacute;tum nem v&aacute;ltozik, a pg_upgrade program
haszn&aacute;lhat&oacute; dumpol&aacute;s
&eacute;s helyre&aacute;llit&aacute;s n&eacute;lk&uuml;l.
<hr style="width: 100%; height: 2px;"><br>
<h2 style="text-align: center;"> M&ucirc;k&ouml;dtet&eacute;si
k&eacute;rd&eacute;sek</h2>
<br>
<a name="4.1"></a> <big style="text-decoration: underline;">4.1) Mi a
k&uuml;l&ouml;nbs&eacute;g a
bin&aacute;ris &eacute;s a norm&aacute;l kurzorok k&ouml;z&ouml;tt?</big><br>
<p>N&eacute;zd meg a DECLARE dokument&aacute;ci&oacute;j&aacute;t.</p>
<a name="4.2"></a> <big style="text-decoration: underline;">4.2)
Hogyan tudom select-elni a
lek&eacute;rdez&eacute;s els&otilde; p&aacute;r sor&aacute;t?</big><br>
<p>Olvasd el a FETCH dokument&aacute;ci&oacute;j&aacute;t, vagy
haszn&aacute;ld a SELECT LIMIT-et.</p>
<p>Az eg&eacute;sz lek&eacute;rdez&eacute;st v&eacute;gre kell
hajtani,
m&eacute;g akkor is, ha csak az els&otilde; p&aacute;r sort akarod
megkapni. Gondolj arra, hogy a
lek&eacute;rdez&eacute;sben lehet ORDER BY is. Ha van olyan index, ami
megfelel az ORDER BY kifejez&eacute;sednek,
a PostgreSQL k&eacute;pes lehet az els&ouml; n&eacute;h&aacute;ny
rekord
visszaad&aacute;s&aacute;ra, vagy a teljes lek&eacute;rdez&eacute;snek
le kell futnia, amig a k&eacute;rt rekordok
le nem gener&aacute;l&oacute;dnak.
<a name="4.3"></a><big style="text-decoration: underline;"><br>
</big></p>
<p><big style="text-decoration: underline;">4.3) Hogy tudom
kilist&aacute;zni a
t&aacute;bl&aacute;kat vagy m&aacute;s dolgokat a PostgreSQL-ben?</big></p>
<p>Elolvashatod a psql forr&aacute;s k&oacute;dj&aacute;ban a
pgsql/src/bin/psql/describe.c &aacute;llom&aacute;nyban. Ez SQL
parancsokat tartalmaz, amelyek azokat
a kimeneteket &aacute;llitj&aacute;k el&ouml;, amiket a per jellel
kezd&ouml;d&ouml;
parancsok adnak vissza.</p>
<a name="4.4"></a> <big style="text-decoration: underline;">4.4)
Hogyan tudok elt&aacute;vol&iacute;tani egy
oszlopot egy t&aacute;bl&aacute;b&oacute;l?</big><br>
<br>
<p>Ez a funkcionalit&aacute;s a 7.3 verzi&oacute;t&uuml;l kezdve
&eacute;rhet&ouml; el az ALTER TABLE DROP COLUMN -nal. A r&eacute;gebbi
verti&oacute;kban igy lehet
v&eacute;grehajtani:</p>
<pre>BEGIN;</pre>
<pre>LOCK TABLE old_table;</pre>
<pre>SELECT ... -- minden oszlopot, kiv&eacute;tel amit t&ouml;r&ouml;lni szeretn&eacute;l<br></pre>
<pre>INTO TABLE new_table</pre>
<pre>FROM old_table;</pre>
<pre>DROP TABLE old_table;</pre>
<pre>ALTER TABLE new_table RENAME TO old_table;</pre>
<pre>COMMIT;</pre>
<pre><br></pre>
<h4><a name="4.5"></a><big
style="text-decoration: underline; font-weight: normal;">4.5) Mi a
maxim&aacute;lis m&eacute;rete egy sornak,
egy t&aacute;bl&aacute;nak vagy egy adatb&aacute;zisnak?</big></h4>
<br>
<p>A korl&aacute;tok:</p>
<ul>
<li>
<p>adatb&aacute;zis: korl&aacute;tlan (1 TB az &aacute;ltalunk
ismert
lagnagyobb)</p>
</li>
<li>
<p>t&aacute;bla: 16 TB</p>
</li>
<li>
<p>rekord/sor 1.6TB</p>
</li>
<li>
<p>mez&ouml; 1 GB</p>
</li>
<li>
<p>a t&aacute;bla sorainak sz&aacute;ma: korl&aacute;tlan</p>
</li>
<li>
<p>a t&aacute;bla oszlopainak sz&aacute;ma: 250-1600 az oszlop
nevekt&otilde;l f&uuml;gg&ouml;en</p>
</li>
<li>
<p>A t&aacute;bla indexeinek sz&aacute;ma: korl&aacute;tlan</p>
</li>
</ul>
<p>Term&eacute;szetesen nem igaz&aacute;n korl&aacute;tlan, de a
t&aacute;rter&uuml;let, mem&oacute;ria &eacute;s egy&eacute;b
k&uuml;ls&ouml; t&eacute;nyez&ouml;k korl&aacute;tozz&aacute;k. A
teljesitm&eacute;ny romolhat, ha ezek az &eacute;rt&eacute;kek
szokatlanul nagyok.</p>
<p>A 16 TB-os legnagyobb t&aacute;bla m&eacute;ret nem ig&eacute;nyel
nagy
&aacute;llom&aacute;ny t&aacute;mogat&aacute;st. A nagy
t&aacute;bl&aacute;k t&ouml;bb 1 GB m&eacute;ret&uuml;
&aacute;llom&aacute;nyba ker&ouml;lnek, igy az &aacute;llom&aacute;ny
rendszer korl&aacute;tai nem l&eacute;nyegesek.</p>
<p>A maxim&aacute;lis t&aacute;bla m&eacute;ret &eacute;s az oszlopok
maxim&aacute;lis oszlop sz&aacute;m n&ouml;velhet&ouml;, ha az
alap&eacute;rtelmezett blokkm&eacute;retet 32k-ra n&ouml;veled.</p>
<a name="4.6"></a> <big style="text-decoration: underline;">4.6)
Mekkora adatb&aacute;zis lemez ter&uuml;let
sz&uuml;ks&eacute;ges egy tipikus sz&ouml;veg &aacute;llom&aacute;ny <br>
t&aacute;rol&aacute;s&aacute;hoz?</big><br>
<p>A PostgreSQL ak&aacute;r a sz&ouml;veg &aacute;llom&aacute;ny
helyig&eacute;ny&eacute;nek &ouml;tsz&ouml;r&ouml;s&eacute;t is
elfoglalhatja.</p>
<p>K&eacute;pzelj el p&eacute;ld&aacute;ul, egy 100.000 soros
sz&ouml;veget, aminek minde sora egy sz&aacute;mb&oacute;l &eacute;s
egy sz&ouml;vegb&otilde;l
&aacute;ll. Tegy&uuml;k el, hogy &aacute;tlagosan 20 byte hossz&uacute;
sz&ouml;vegek. Ez a sz&ouml;veg&aacute;llom&aacute;ny
k&ouml;r&uuml;lbel&uuml;l 2.8 MB helyet foglalna el. A t&aacute;bla ami
a fenti adatszerkezetet elt&aacute;roln&aacute;,
k&ouml;r&uuml;lbel&uuml;l 6.4 MB-os lenne. Ezt a
k&ouml;vetkez&ouml;k&eacute;ppen sz&aacute;molhatjuk ki:</p>
<p>36 byte: sor fejl&eacute;c</p>
<pre>24 byte: egy int mez&ouml; + egy sz&ouml;veg mez&ouml;</pre>
<pre>4 byte: mutato</pre>
<pre>---------------------------------------</pre>
<pre>64 byte soronkent.</pre>
<p>Az adat oldal m&eacute;rete a PostgreSQL-ben 8192 byte, igy 8192 /
64 = 128 rekord adatb&aacute;zis oldalank&eacute;nt
(lefel&eacute; kerekitve).</p>
<pre>100000 rekord / 128 rekord oldalank&eacute;nt = 782 adat oldal<br>(felel&eacute; kerekitve).</pre>
<pre>782 adatb&aacute;zis oldal * 8192 byte olalank&eacute;nt = 6,406,144<br>byte (6.4 MB)</pre>
<p>Az indexek nem foglalnak t&uacute;l sokat, de tartalmazz&aacute;k az
indexelt adatot, igy ezek is lehetnek nagyok.</p>
<p>A NULL &eacute;rt&eacute;kek bitt&eacute;rk&eacute;pben vannak
t&aacute;rolva, igy kev&eacute;s helyet foglanak.</p>
<p><a name="4.7"></a><big style="text-decoration: underline;">4.7) Hogy
tudhatom meg milyen t&aacute;bl&aacute;k,
indexek, adatb&aacute;zisok vagy felhaszn&aacute;l&oacute;k</big></p>
<big style="text-decoration: underline;">vannak defini&aacute;lva?<br>
</big>
<p>A psql-ben tal&aacute;lsz sz&aacute;mos '\' karakterrel
kezd&ouml;d&ouml; utas&iacute;t&aacute;st az ilyen
inform&aacute;ci&oacute;k list&aacute;z&aacute;s&aacute;ra. A '\?'
segits&eacute;g&eacute;vel tudot kilist&aacute;zni ezeketa parancsokat.
Ezen kiv&uuml;l vannak rendszer t&aacute;bl&aacute;k,
amelyek nevei 'pg_'-vel kezd&ouml;dnek.</p>
<p>Pr&oacute;b&aacute;ld ki a pgsql/src/tutorial/syscat.source
&aacute;llom&aacute;nyt is. Ez sok p&eacute;ld&aacute;t tartalmaz az
rendszert&aacute;bl&aacute;kon
v&eacute;grehajtott SELECT-ekr&ouml;l.</p>
<p><a name="4.8"></a><big style="text-decoration: underline;">4.8) A
lek&eacute;rdez&eacute;seim lass&uacute;ak,
vagy nem haszn&aacute;lj&aacute;k az indexeket. Mi&eacute;rt?</big></p>
<p><big style="text-decoration: underline;"></big></p>
<p>Az indexeket nem haszn&aacute;lja a szerver minden
lek&eacute;rdez&eacute;sn&eacute;l automatikusan. Csak akkor
haszn&aacute;l indexet, ha a t&aacute;bla m&eacute;rete egy
megadott als&oacute; hat&aacute;r felett van, &eacute;s a
lek&eacute;rdez&eacute;s csak a sorok egy kis
r&eacute;sz&eacute;t &eacute;rinti. Ez az&eacute;rt van, mert a
v&eacute;letlen hozz&aacute;f&eacute;r&eacute;s m&eacute;g
mindig lassabb lehet mint az t&aacute;bla szekvenci&aacute;lis
olvas&aacute;sa.</p>
<p>Hogy a PostgreSQL meg tudja hat&aacute;rozni hogy kell-e indexet
haszn&aacute;lni, l&eacute;teznie kell egy statisztik&aacute;nak a
t&aacute;bl&aacute;r&oacute;l. Ez a statisztikai adatok a VAACUM
ANALYZE vagy az egyszer&ucirc; ANALYZE m&ucirc;veletek
sor&aacute;n j&ouml;nnek l&eacute;tre. A statisztikai adatok
felhaszn&aacute;l&aacute;s&aacute;val az optimaliz&aacute;l&oacute; meg
tudja hat&aacute;rozni, hogy h&aacute;ny sor van a
t&aacute;bl&aacute;ban, &eacute;s el tudja d&ouml;nteni, hogy
haszn&aacute;ljon-e indexet. A statisztiaki
adatgy&uuml;jt&eacute;st id&otilde;nk&eacute;nt v&eacute;gre kell
hajtani, ahogy a t&aacute;bla adatai v&aacute;ltoznak.</p>
<p>Az indexeket norm&aacute;lis esetben nem haszn&aacute;lja az ORDER
BY
vagy az OUTER JOIN. A szekvenci&aacute;lis olvas&aacute;s
&aacute;ltal&aacute;ban gyorsabb, mint az index keres&eacute;s egy nagy
t&aacute;bl&aacute;ban. B&aacute;r a LIMIT az ORDER BY-val
kombin&aacute;lva haszn&aacute;lhat
indexet, mert a t&aacute;bla csak kis r&eacute;sze &eacute;rintett.
B&aacute;r a MIN
&eacute;s MAX SQL funkci&oacute;k sem haszn&aacute;lj&aacute;k az
indexeket, ezeket az
&eacute;rt&eacute;keket egy ORDER BY + LIMIT
lek&eacute;rdez&eacute;ssel is le lehet k&eacute;rdezni:</p>
<pre>SELECT col</pre>
<pre>FROM tab</pre>
<pre>ORDER BY col [ DESC ]</pre>
<pre>LIMIT 1;</pre>
<br>
<p>Amikor helyettes&iacute;t&otilde; jel oper&aacute;torokat
haszn&aacute;lsz, mint a LIKE kulcssz&oacute; vagy a ~, az indexeket
csak bizonyos k&ouml;r&uuml;lm&eacute;nyek
k&ouml;z&ouml;tt lehet haszn&aacute;lni:</p>
<p>A keres&otilde; string kezdete a keres&eacute;si minta elej&eacute;n
kell hogy legyen. P&eacute;ld&aacute;ul:</p>
<ul>
<li>A LIKE mint&aacute;k nem kezd&otilde;dhetnek % jellel.</li>
<li>&nbsp;~ (regexp) kifejez&eacute;sek nem kezd&otilde;dhetnek ^
jellel.</li>
<li>A keres&eacute;si kifejez&eacute;s nem kezd&otilde;dhet karakter
oszt&aacute;llyal.</li>
<li>A case-insensitive keres&eacute;s (ILIKE, ~*) nem
haszn&aacute;lnak
indexet ehelyett funkcion&aacute;lis indexet haszn&aacute;lnak, amit a
4.12
pontban tal&aacute;lhatsz.</li>
<li>Az alap&eacute;rtelmezett C hellyel kell futtatni az initdb-t.</li>
</ul>
<a name="4.9"></a> <big style="text-decoration: underline;">4.9) Hogy
tudom ellen&otilde;rizni, hogy
optimaliz&aacute;lta a lek&eacute;rdez&eacute;s
optimaliz&aacute;l&oacute;<br>
a lek&eacute;rdez&eacute;sem?<br>
</big>
<p>Olvasd el a dokument&aacute;ci&oacute; EXPLAIN-r&oacute;l
sz&oacute;l&oacute; r&eacute;sz&eacute;t.</p>
<p><a name="4.10"></a><big style="text-decoration: underline;">4.10) Mi
az R-tree index?</big></p>
<p>Az R-tree index a t&eacute;rbeli adat indexel&eacute;s&eacute;re
alkalmas. Egy hash index nem k&eacute;pes tartom&aacute;ny
keres&eacute;sekre. A B-tree
index csak egy dimenzi&oacute;n kezeli a tartom&aacute;ny
keres&eacute;seket.
P&eacute;ld&aacute;ul ha az indexet egy pont (point adatt&iacute;pus)
t&iacute;pus&uacute; mez.re
&eacute;p&iacute;tj&uuml;k, gyorsabban kezeli az olyan jelleg&uuml;
lek&eacute;rdez&eacute;seket, mint egy
adott k&ouml;rben</p>
<p>tal&aacute;lhat&oacute; pontok.</p>
<p>Az R-tree tervez&eacute;si mint&aacute;t eredetileg
le&iacute;r&oacute;
sz&ouml;veg: Guttman, A. "R-trees: A Dynamic Index Structure for
Spatial Searching." Proceedings of the 1984 ACM SIGMOD Int'l Conf on
Mgmt of Data, 45-57.</p>
<p>Ezt olvashatod Stonebraker "Readings in Database Systems" c.
k&ouml;nyv&eacute;ben.</p>
<p>A be&eacute;p&iacute;tett R-tree kezelni tudj&aacute;k a
soksz&ouml;geket (polygon adatt&iacute;pus) &eacute;s a dobozokat
(box). Elm&eacute;letileg, az R-tree
kiterjeszthet&otilde; tov&aacute;bbi dimenzi&oacute;kra is.
Gyakorlatilag ezen dolgoznod kell egy kicsit,
&eacute;s m&eacute;g nincs dokument&aacute;ci&oacute;nk arr&oacute;l
hogy az
hogyan m&ucirc;k&ouml;dik.</p>
<p><a name="4.11"></a><big style="text-decoration: underline;">4.11) Mi
a Genetic Query Optimizer?</big></p>
<p><big style="text-decoration: underline;"></big></p>
<p>A GEQO modul a lek&eacute;rdez&eacute;s optimaliz&aacute;ci&oacute;
sebess&eacute;g&eacute;t n&ouml;veli nagy mennyis&eacute;g&ucirc;
t&aacute;bla &ouml;sszekapcsol&aacute;sa
eset&eacute;n. Lehet&otilde;v&eacute; teszi a nagy
lek&eacute;rdez&eacute;sek v&eacute;grehajt&aacute;s&aacute;t nem
teljes keres&eacute;ssel.</p>
<p><a name="4.12"></a><big style="text-decoration: underline;">4.12)
Hogyan tudok regexp keres&eacute;st &eacute;s
case-insensitive regexp keres&eacute;st </big><big
style="text-decoration: underline;">haszn&aacute;lni? Hogyan tudok
indexet haszn&aacute;lni
case-insensitive keres&eacute;shez?</big><br>
</p>
<p>A ~ oper&aacute;tor hajt v&eacute;gre regul&aacute;ris
kifejez&eacute;s
(regexp) &eacute;rtelmez&eacute;st, a ~* ennek case-insensitive
v&aacute;ltozata. A LIKE case-insensitive v&aacute;ltozata az ILIKE.</p>
<p>A case-insensitive egyenl&otilde;s&eacute;g m&ucirc;veleteket
&aacute;ltal&aacute;ban igy hajtjuk v&eacute;gre:</p>
<p>SELECT *</p>
<pre>FROM tab</pre>
<pre>WHERE lower(col) = 'abc';</pre>
<p>Ez nem fog indexet haszn&aacute;lni, b&aacute;r l&eacute;trehozhatsz
egy funkci&oacute; indexet:</p>
<pre>CREATE INDEX tabindex ON tab (lower(col));</pre>
<a name="4.13"></a> <big style="text-decoration: underline;">4.13)
Hogyan tudom &eacute;szlelni egy
lek&eacute;rdez&eacute;sben, ha egy mez&otilde; NULL?</big><br>
<p>Haszn&aacute;ld "IS NULL"-t &eacute;s az "IS NOT NULL"-t.</p>
<p><a name="4.14"></a><big style="text-decoration: underline;">4.14) Mi
a k&uuml;l&ouml;nbs&eacute;g a
k&uuml;l&ouml;nb&ouml;z&otilde; karaktert&iacute;pusok k&ouml;z&ouml;tt?</big></p>
<ul>
<li>"char" egy karakter hossz&uacute; string</li>
<li>CHAR(n) bpchar &uuml;res hellyel a megadott n
hossz&uacute;s&aacute;gig</li>
<li>VARCHAR(n) varchar m&eacute;ret maxim&aacute;lis hossz
meghat&aacute;roz&aacute;s&aacute;val, a lefogllat ter&uuml;let is
v&aacute;ltoz&oacute; hossz&uacute; lesz</li>
<li>TEXT nincs meghat&aacute;rozott fels&#337; korl&aacute;t</li>
<li>BYTEA v&aacute;ltoz&oacute; hossz&uacute;s&aacute;g&uacute;
byte-t&ouml;mb</li>
</ul>
<p>L&aacute;tni fogod a bels&otilde; elnevez&eacute;s&uuml;ket, ha
tanulm&aacute;nyozod a rendszert&aacute;bl&aacute;kat&eacute;s
n&eacute;h&aacute;ny hiba&uuml;zenetet.</p>
<p>Az ut&oacute;bbi n&eacute;gy a "varlena" t&iacute;pusok, ami a
t&aacute;rol&aacute;suk m&oacute;dj&aacute;ra utal: az els&otilde; 4
byte a lemezen a hossz&uacute;s&aacute;g, a t&ouml;bbi
az adat. A val&oacute;di m&eacute;ret teh&aacute;t nagyobb mint a
deklar&aacute;lt
hossz&uacute;s&aacute;g.Ezek azadatok t&ouml;m&ouml;ritve
t&aacute;rol&oacute;dnak el, igy kevesebb helyet foglalnek el az
el&ouml;re sz&aacute;mitottn&aacute;l.</p>
<p>A CHAR(n) a legjobb megold&aacute;s, ha stabil
hossz&uacute;s&aacute;g&uacute; stringet t&aacute;rolsz. A VARCHAR(n)
j&oacute; arra az esetekre, ha a hossz&uacute;s&aacute;g
v&aacute;ltozik, de van fels&otilde; korl&aacute;tja. A TEXT
t&iacute;pus korl&aacute;tlan
hossz&uacute;s&aacute;g&uacute; (1 GB-ig) sz&ouml;vegek
t&aacute;rol&aacute;s&aacute;ra alklamas. A BYTEA bin&aacute;ris adatok
t&aacute;rol&aacute;s&aacute;ra van. A teljesitm&eacute;ny
mutat&oacute;i hasonl&oacute;ak ezenek a
t&iacute;pusoknak.</p>
<p><a name="4.15.1"></a><big style="text-decoration: underline;">4.15.1)
Hogyan tudok l&eacute;trehozni
automatikusan n&ouml;vekv&otilde; &eacute;rt&eacute;k&ucirc;
mez&otilde;t?</big></p>
<br>
A PostgreSQL rendelkezik egy SERIAL adatt&iacute;pussal. Ez egy
szekvenci&aacute;t &eacute;s egy indexet hoz l&eacute;tre az oszlopon.
P&eacute;ld&aacute;ul ez:<br>
<pre>CREATE TABLE person (</pre>
<pre>id SERIAL,</pre>
<pre>name TEXT</pre>
<pre>);</pre>
<p>ugyanezt jelenti:</p>
<pre>CREATE SEQUENCE person_id_seq;</pre>
<pre>CREATE TABLE person (</pre>
<pre>id INT4 NOT NULL DEFAULT nextval('person_id_seq'),</pre>
<pre>name TEXT</pre>
<pre>);</pre>
<pre>CREATE UNIQUE INDEX person_id_key ON person ( id );</pre>
<br>
<p>A szekvenci&aacute;kkal kapcsolatban olvasd el a create_sequence man
oldalt. A sor OID-j&eacute;t is haszn&aacute;lhatod egyedi
azonosit&oacute;k&eacute;nt, b&aacute;r ebben az esetben figyelj a
pg_gump haszn&aacute;lat&aacute;n&aacute;l a
-o opci&oacute;ra (COPY WITH OIDS, m&aacute;sol&aacute;s OID-dal), hogy
meg?rizd az
&eacute;rt&eacute;keket.</p>
<p><a name="4.15.2"></a><big style="text-decoration: underline;">4.15.2)
Hogyan kaphatom meg egy SERIAL
besz&uacute;r&aacute;s &eacute;rt&eacute;k&eacute;t?</big></p>
<p>Egy megold&aacute;s erre az, ha a nextval() funkci&oacute;val
megszerzed az &eacute;rt&eacute;ket m&eacute;g miel&ouml;tt
besz&uacute;rn&aacute;d
az adatot a t&aacute;bl&aacute;ba. Erre itt l&aacute;thatsz egy
p&eacute;ld&aacute;t:</p>
<pre>new_id = execute("SELECT nextval('person_id_seq')");</pre>
<pre>execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise<br>Pascal')");</pre>
<p>
Esetleg lek&eacute;rdezheted a szekvencia &aacute;llapot&aacute;t a sor
besz&uacute;r&aacute;sa ut&aacute;n. </p>
<pre>execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");</pre>
<pre>new_id = execute("SELECT currval('person_id_seq')");</pre>
<p>
V&eacute;g&uuml;l pedig, haszn&aacute;lhatod a visszaadott OID
&eacute;rt&eacute;ket is, b&aacute;r ez a lehet&otilde;
legkev&eacute;sb&eacute; portolhat&oacute;. Perl DBI-ben, Edmund Mergl
DBD::Pg modulj&aacute;ban az OID &eacute;rt&eacute;k
haszn&aacute;lhat&oacute; a
$sth-&gt;execute() ut&aacute;n ($sth-&gt;{pg_oid_status}).</p>
<a name="4.15.3"></a> <big style="text-decoration: underline;">4.15.3)
A currval() &eacute;s a nextval() nem
teremt holtpont vesz&eacute;lyes helyzetet a felhaszn&aacute;l&oacute;k
k&ouml;z&ouml;tt?</big><br>
<p>Nem. A currval() funkci&oacute; a szerver processzed &aacute;ltal
adott
&eacute;rt&eacute;ket adja vissza, nem pedig a t&ouml;bbi szerver
processz &aacute;ltal adottat.</p>
<big style="text-decoration: underline;"><a name="4.15.4"></a>4.15.4)
Mi&eacute;rt nem haszn&aacute;l&oacute;dnak fel &uacute;jra a
sequence sz&aacute;mok tranzakci&oacute; abort eset&eacute;n?</big><br>
<p>Mi&eacute;rt vannak probl&eacute;m&aacute;k a serial oszlopok
sz&aacute;moz&aacute;s&aacute;val?</p>
<p>A p&aacute;rhuzamoss&aacute;g fejleszt&eacute;se
&eacute;rdek&eacute;ben a sorozat sz&aacute;mokat k&eacute;r&eacute;sre
adja ki a szerver fut&oacute; tranzakci&oacute;knak, &eacute;s azokat
nem z&aacute;rja, amig a tranzakci&oacute; v&eacute;get nem &eacute;r.
Ez jukakat okoz a
sz&aacute;moz&aacute;sokban a visszaforditott tranzakci&oacute;k miatt.</p>
<p><a name="4.16"></a><big style="text-decoration: underline;"> 4.16)
Mi a
OID? Mi a TID?</big></p>
<p>Az OID a PostgreSQL egyedi sor azonosit&oacute;ja. Minden sor, ami
l&eacute;trej&ouml;n a szerveren, kap egy OID-t. Minden OID, amit az
initdb alatt j&ouml;n
l&eacute;tre 16384 alatt van (l&aacute;sd include/access/transam.h).
Minden,
felhaszn&aacute;l&oacute; &aacute;ltal l&eacute;trehozott OID
legal&aacute;bb ennyi.
Alap&eacute;rtelmez&eacute;sben, az OID nem csak a
t&aacute;bl&aacute;ban vagy az adatb&aacute;zisban egyedi,
hanem a teljes PostgreSQL adatb&aacute;zis rendszerben.</p>
<p>A PostgreSQL az OID-okat a bels&ouml; t&aacute;bl&aacute;iban
haszn&aacute;lja a sorok t&aacute;bl&aacute;k k&ouml;z&ouml;tt
&ouml;sszekapcsol&aacute;s&aacute;hoz. Ezek az OID-k
haszn&aacute;lhat&oacute;ak a rekordok azonosit&aacute;s&aacute;ra is
amikor t&aacute;bl&aacute;kat csatol
&ouml;ssze a szerver (JOIN). Az OID-ot haszn&aacute;lhatod mez&ouml;
t&iacute;pusk&eacute;nt is,
&eacute;s indexelheted is.</p>
<p>Az OID &eacute;rt&eacute;k egy k&ouml;zponti ter&uuml;letr&ouml;l
sz&aacute;rmazik, amit minden szerver processz haszn&aacute;l. Ha az
OID-ot valami m&aacute;sra
szeretn&eacute;d cser&eacute;lni:</p>
<p>CREATE TABLE new_table(old_oid oid, mycol int);</p>
<pre>SELECT old_oid, mycol INTO new FROM old;</pre>
<pre>COPY new TO '/tmp/pgtable';</pre>
<pre>DELETE FROM new;</pre>
<pre>COPY new WITH OIDS FROM '/tmp/pgtable';</pre>
<br>
<p>Az OID 4 byte-os integer &eacute;rt&eacute;kk&eacute;nt
t&aacute;rol&oacute;dik, igy 4 milli&aacute;rdn&aacute;l
t&uacute;lcsordul. M&eacute;g soha senki nem jelezte hogy ez
t&ouml;rt&eacute;nt volna,
&eacute;s ezt a korl&aacute;tot igyeksz&uuml;nk elt&aacute;volitani,
m&eacute;g miel&ouml;tt
b&aacute;rki &eacute;szrevenn&eacute;.</p>
<p>A TID a fizikai sorok blokk &eacute;s offszet c&iacute;mmel
val&oacute;
azonosit&aacute;s&aacute;ra szolg&aacute;l. A TID v&aacute;ltozik
minden rekord m&oacute;dosit&aacute;s &eacute;s
t&ouml;rl&eacute;s alkalm&aacute;val. Ezeket az indexek
haszn&aacute;lj&aacute;k hogy a fizikai sort gyorsan
megtal&aacute;lj&aacute;k.</p>
<p><a name="4.17"></a><big style="text-decoration: underline;">4.17) Mi
a PostgreSQL-ben haszn&aacute;lt
kifejez&eacute;sek jelent&eacute;se?</big></p>
<br>
<p>N&eacute;hol a forr&aacute;s k&oacute;dban &eacute;s a
dokumnet&aacute;ci&oacute;ban tal&aacute;lhat&oacute;ak
kifejez&eacute;sek, amelyek &aacute;ltal&aacute;nosabb
jelent&eacute;ssel b&iacute;rnak.
Itt van n&eacute;h&aacute;ny:</p>
<ul>
<li>t&aacute;bla (table), rel&aacute;ci&oacute; (relation),
oszt&aacute;ly (class)</li>
<li>sor (row), rekord (record), tuple (nincs magyar jelent&eacute;s)</li>
<li>oszlop (column), mez&ouml; (field), attributum (attribute)</li>
<li>retrieve, select</li>
<li>helyettesit (replace), m&oacute;dosit (update)</li>
<li>hozz&aacute;f&ucirc;z (append), besz&uacute;r (insert)</li>
<li>OID, sorozat &eacute;rt&eacute;k (serial value)</li>
<li>portal, cursor</li>
<li>range variable, t&aacute;bla n&eacute;v, t&aacute;bla alias</li>
</ul>
Az &aacute;ltal&aacute;nos adatb&aacute;zis kifejez&eacute;sek
&ouml;sszefoglal&oacute;j&aacute;t itt olvashat&oacute;:
<p><a
href="http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary%0A/glossary.html">http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html</a></p>
<br>
<a name="4.18"></a> <big style="text-decoration: underline;">4.18)
Mi&eacute;rt kapom ezt a hib&aacute;t:
"ERROR: Memory exhausted in AllocSetAlloc()"?<br>
</big>
<p>Lehet hogy elfogyott a virtu&aacute;lis mem&oacute;ri&aacute;d, vagy
a
kerneled er&otilde;forr&aacute;s korl&aacute;tai alacsonyak.
Pr&oacute;b&aacute;ld ki ezt miel&ouml;tt
elinditan&aacute;d a postmastert:</p>
<pre>ulimit -d 262144</pre>
<pre>limit datasize 256m</pre>
<p>A shellt&otilde;l f&uuml;gg&otilde;en ezek k&ouml;z&uuml;l csak az
egyik fut majd le, de a processzek adatszegmens&eacute;t sokkal
magasabbra &aacute;llitja, ami
tal&aacute;n el&eacute;g lesz a lek&eacute;rdez&eacute;s
v&eacute;grehajt&aacute;s&aacute;hoz. Ez az utas&iacute;t&aacute;s a
jelenlegi processzre (a shelled) &eacute;rv&eacute;nyes, &eacute;s
minden
&aacute;ltala l&eacute;trehozott processzre. Ha probl&eacute;m&aacute;d
van az SQL klienssel, mert a
szerver t&uacute;l nagy adatot k&uuml;ld vissza, pr&oacute;b&aacute;ld
meg e
klienssel is ugyanezt.</p>
<p><a name="4.19"></a><big style="text-decoration: underline;">4.19)
Hogyan tudhatom meg PostgreSQL, milyen
verzi&oacute;t futtatok?</big></p>
<p>A psql programban select version();</p>
<a name="4.20"></a> <big style="text-decoration: underline;">4.20)
Mi&eacute;rt kapok "invalid large obj
descriptor" hib&aacute;t nagy objektumok
kezel&eacute;s&eacute;n&eacute;l?</big><br>
<p>A nagy objektumok kezel&eacute;s&eacute;t egy tranzakci&oacute;s
blokkban helyezd el. (BEGIN &eacute;s COMMIT k&ouml;z&ouml;tt)</p>
<p><br>
Jelenleg a PostgreSQL ezt a szab&aacute;lyt azzal teszi
k&ouml;telez&otilde;v&eacute;, hogy a tranzakci&oacute;
v&eacute;g&eacute;n a nagy objektumokat
lez&aacute;rja, igy a tranzakci&oacute; ut&aacute;n az els&otilde;
m&ucirc;velet amit az objektumon
v&eacute;grahajtan&aacute;l hib&aacute;s lesz.</p>
<p>Ha olyan programoz&aacute;si fel&uuml;letet haszn&aacute;lsz mint az
ODBC vagy a JDBC akkor val&oacute;szin&ucirc;leg ki kell kapcsolnod az
auto-commit-ot.</p>
<p><a name="4.21"></a><big style="text-decoration: underline;">4.21)
Hogy hozhatok l&eacute;tre olyan oszlopot,
aminek alap&eacute;rtelmezett </big><big
style="text-decoration: underline;">&eacute;r&eacute;tke a jelenlegi
id&otilde;?</big><br>
</p>
<p>Haszn&aacute;ld a CURRENT_TIMESTAMP -ot:</p>
<pre>CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );</pre>
<a name="4.22"></a> <big style="text-decoration: underline;">4.22)
Mi&eacute;rt olyan lass&uacute;ak az
al-lek&eacute;rdez&eacute;seim IN-nel?</big><br>
<p>Jelenleg az al-lek&eacute;rdez&eacute;seket a k&uuml;ls&otilde;
lek&eacute;rdez&eacute;shez csatoljuk. Ha az allek&eacute;rdez&eacute;s
csak kev&eacute;s sort eredm&eacute;nyez
&eacute;s a k&uuml;ls&otilde; lek&eacute;rdez&eacute;s sokat, akkor az
IN is gyors. Az EXISTS kulcssz&oacute;
haszn&aacute;lat&aacute;val gyorsithatod a lek&eacute;rdez&eacute;seket.</p>
<p>SELECT *</p>
<pre>FROM tab</pre>
<pre>WHERE col IN (SELECT subcol FROM subtab);</pre>
<br>
<p>EXISTS haszn&aacute;lat&aacute;val:</p>
<pre>SELECT *</pre>
<pre>FROM tab</pre>
<pre>WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);</pre>
Ahhoz hogy ez gyorsan fusson le, a subcol indexelt oszlopnak kell hogy
legyen. Rem&eacute;lj&uuml;k ezt a korl&aacute;tot siker&uuml;l
hamarosan legy&otilde;zn&uuml;nk.
<p><a name="4.23"></a><big style="text-decoration: underline;">4.23)
Hogyan tudok outer join-t v&eacute;grehajtani?</big></p>
<p>A PostgreSQL a szabv&aacute;nyos SQL szintaktik&aacute;t
k&ouml;veti.
Itt van k&eacute;t p&eacute;lda:</p>
<p>SELECT *</p>
<pre>FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);</pre>
<p>
vagy</p>
<pre>SELECT *</pre>
<pre>FROM t1 LEFT OUTER JOIN t2 USING (col);</pre>
<p>Ezek az identikus lek&eacute;rdez&eacute;sek
&ouml;sszekapcsolj&aacute;k a t1.col &eacute;s a t2.col mez&otilde;ket,
&eacute;s a t1 b&aacute;rmelyik kapcsolatlan
sor&aacute;t is visszadj&aacute;k. A RIGHT JOIN a t2 kapcsolatlan
sorait adta volna vissza, a FULL JOIN pedig a kapcsolt, &eacute;s
mindk&eacute;t t&aacute;bla kapcsolatlan sorait
adja. Az OUTER kulcssz&oacute; opcion&aacute;lis, a LEFT, RIGHT
&eacute;s FULL JOIN
szintaktikailag helyes. Az &aacute;tlagos
&ouml;sszekapcsol&aacute;sokat INNER JOIN-nak
nevezz&uuml;k.</p>
<p>Az el&otilde;z&otilde; kiad&aacute;sokban a OUTER JOIN
lek&eacute;rdez&eacute;seket UNION &eacute;s NOT IN kulcsszavakkal
lehetett szimul&aacute;lni. P&eacute;ld&aacute;ul a tab1
&eacute;s a tab2 &ouml;sszekapcsol&aacute;sa:</p>
<pre><code>SELECT tab1.col1, tab2.col2</code></pre>
<pre><code>
FROM tab1, tab2</code></pre>
<pre><code>
WHERE tab1.col1 = tab2.col1</code></pre>
<pre><code>
UNION ALL</code></pre>
<pre><code>
SELECT tab1.col1, NULL</code></pre>
<pre><code>
FROM tab1</code></pre>
<pre><code>
WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)</code></pre>
<pre><code>
ORDER BY col1</code></pre>
<pre><code></code></pre>
<code></code>
<a name="4.24"></a> <big style="text-decoration: underline;">4.24)
Hogyan tudok t&ouml;bb adatb&aacute;zison
v&eacute;grehajtani lek&eacute;rdez&eacute;st?<br>
</big>
<p>Arra nincs lehet&otilde;s&eacute;g, hogy m&aacute;s
adatb&aacute;zisb&oacute;l k&eacute;rdezz le adatot.Mivel a PostgreSQL
adatb&aacute;zis specifikus rendszer
t&aacute;bl&aacute;kat t&ouml;ltbe, bizonytalan hogy egy
adatb&aacute;zisok k&ouml;z&ouml;tti
lek&eacute;rdez&eacute;snek hogyankellene viselkednie. </p>
<p>A contrib/dblink k&ouml;nyvt&aacute;rban tal&aacute;lsz egy
megold&aacute;st erre, ami funkci&oacute; hiv&aacute;sok
segits&eacute;g&eacute;vel
m&ucirc;k&ouml;dik. Persze, a kliens hozhat
l&eacute;treszimult&aacute;n kapcsolatot t&ouml;bb adatb&aacute;zissal,
&eacute;s
&ouml;sszef&eacute;s&uuml;lheti az eredm&eacute;nyeket.</p>
<p><big style="text-decoration: underline;"><a name="4.25"></a>4.25)
Hogy tudok t&ouml;bb soros vagy oszlopos
eredm&eacute;nyt visszaadni egy funkci&oacute;b&oacute;l?</big><br>
</p>
<big style="text-decoration: underline;"></big>
<p>A PL/pgSQL t&aacute;rolt elj&aacute;r&aacute;s nyelvvel refcursor
haszn&aacute;lat&aacute;val. R&eacute;szletesen itt:</p>
<p><a
href="http://www.PostgreSQL.org/idocs/index.php?plpgsql-cursors.html">http://www.PostgreSQL.org/idocs/index.php?plpgsql-cursors.html</a></p>
<a name="4.26"></a> <big style="text-decoration: underline;">4.26)
Mi&eacute;rt nem tudom megbizhat&oacute;an
l&eacute;trehozni &eacute;s t&ouml;r&ouml;lni az &aacute;tmeneti
t&aacute;bl&aacute;kat a PL/pgSQL funkci&oacute;kban?</big><br>
<p>A PL/pgSQL cacheli a funkci&oacute;k tartalm&aacute;t, aminek az a
szerencs&eacute;tlen mell&eacute;khat&aacute;sa, hogy ha egy PL/pgSQL
funkci&oacute;
haszn&aacute;l egy &aacute;tmeneti t&aacute;bl&aacute;t, ami
k&eacute;s&#337;bb t&ouml;rl&otilde;dik majd ujra
l&eacute;trej&ouml;n, akkor az &uacute;jra lefut&oacute; funkci&oacute;
nem fogja megtal&aacute;lni a t&aacute;bl&aacute;t, mert
a cache v&aacute;ltozat a r&eacute;gi t&aacute;bl&aacute;ra tartalmaz
mutat&oacute;t. A megold&aacute;s erre
az <code>EXECUTE</code> haszn&aacute;lata az &aacute;tmeneti
t&aacute;bl&aacute;k
kezel&eacute;s&eacute;re PL/pgSQL-ben. Ez a lek&eacute;rdez&eacute;s
&uacute;jraford&iacute;t&aacute;s&aacute;t
fogja el&otilde;id&eacute;zni minden alkalommal.</p>
<big style="text-decoration: underline;">4.27)
Milyen replik&aacute;ci&oacute;s
lehet&otilde;s&eacute;gek vannak?</big><br>
<p>B&aacute;r a replik&aacute;ci&oacute; egyetlen ter&uuml;let,
t&ouml;bb technol&oacute;gia l&eacute;tezik replik&aacute;ci&oacute;ra,
term&eacute;szetesen mindnek meg vannak a maga el&#337;nyei &eacute;s
h&aacute;tr&aacute;nyai.</p>
<p>A master/slave replik&aacute;ci&oacute;s megold&aacute;ssal a master
adatb&aacute;zison hajthatunk v&eacute;gre modos&iacute;t&aacute;sokat,
m&iacute;g a slave adatb&aacute;zisokon csak
lek&eacute;rdez&eacute;seket. A PostgreSQL legn&eacute;pszer&#369;bb
master/slave replik&aacute;ci&oacute;s megold&aacute;sa a Solny-I. </p>
<p>Sz&aacute;mos m&aacute;s master/slave replik&aacute;ci&oacute;s
lehet&otilde;s&eacute;g l&eacute;tezik.Egy List&aacute;t olvashatsz
ezekr&otilde;l itt: </p>
<p><a href="http://gborg.PostgreSQL.org/genpage?replication_research">http://gborg.PostgreSQL.org/genpage?replication_research</a></p>
<p>A multi-master replik&aacute;ci&oacute; lehet&#337;v&eacute; teszi
t&ouml;bb master adatb&aacute;zis haszn&aacute;lat&aacute;t, b&aacute;r
ez a technol&oacute;gia drasztikusan cs&ouml;kkenti az adatb&aacute;zis
teljes&iacute;tm&eacute;ny&eacute;t a sok szinkorniz&aacute;ci&oacute;
miatt. A PGCluster a legelterjedtebb ilyen megold&aacute;s.</p>
<p>Egy t&ouml;bbfelhaszn&aacute;l&oacute;s replik&aacute;ci&oacute;s
rendszer k&eacute;sz&uuml;l itt:</p>
<p><a
href="http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php">http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.</a></p>
<p><a name="4.28"></a><big style="text-decoration: underline;">4.28)
Milyen k&oacute;dol&aacute;si
lehet&otilde;s&eacute;gek vannak?</big></p>
<ul>
<li>A contrib/pgcrypto tartlamaz sz&aacute;mos SQL
lek&eacute;rdez&eacute;sben haszn&aacute;lhat&oacute;
k&oacute;dol&aacute;st.</li>
<li>A kliens-szerver kommunik&aacute;ci&oacute;
rejtjelez&eacute;s&eacute;re a hostssl haszn&aacute;lhat&oacute;. Ezt a
pg_hba.conf-ben enged&eacute;lyeztheted.</li>
<li>Az adatb&aacute;zis felhszn&aacute;l&oacute;k jelszavait
t&aacute;rol&aacute;skor k&oacute;dolja a rendszer.&nbsp;</li>
<li>R&eacute;gebbi verzi&oacute;kban a PASSWORD_ENCRYPTION
opci&oacute;val
lehetett bekapcsolni.</li>
<li>A szerveren haszn&aacute;lhatsz k&oacute;dolt f&aacute;jrendszert.<br>
</li>
</ul>
<hr style="width: 100%; height: 2px;"><br>
<div style="text-align: center;">
<h2>A PostgreSQL kiterjeszt&eacute;se</h2>
</div>
<br>
<a name="5.1"></a> <big style="text-decoration: underline;">5.1)
&Iacute;rtam egy felhaszn&aacute;l&oacute;i
funkci&oacute;t. Mi&eacute;rt core dumpol az adatb&aacute;zis amikor
haszn&aacute;lom?<br>
</big>
<p>Sz&aacute;mos probl&eacute;ma lehet. El&ouml;bb prob&aacute;ld ki a
funkci&oacute;dat egy k&uuml;l&ouml;n&aacute;ll&oacute;
alkalmaz&aacute;sban.</p>
<p><a name="5.2"></a><big style="text-decoration: underline;">5.2)
Hogyan lehet &uacute;j adatt&iacute;pusokat
&eacute;s funkci&oacute;kat hozz&aacute;adni a PostgreSQL </big><big
style="text-decoration: underline;">disztrib&uacute;ci&oacute;hoz?</big><br>
</p>
<p>K&uuml;ldd el a kieg&eacute;sz&iacute;t&eacute;seid a pgsql-hackers
levelez&eacute;si list&aacute;ra &eacute;s a forr&aacute;skodjaid
v&eacute;g&uuml;l a contrib-ban k&ouml;tnek ki.</p>
<a name="5.3"></a> <big style="text-decoration: underline;">5.3)
Hogyan lehet olyan C funkci&oacute;t
&iacute;rni, ami Tuple-t ad vissza?</big><br>
<p>A 7.3 verzi&oacute;t&oacute;l kezdve a PostgreSQL t&aacute;mogatja a
t&aacute;bl&aacute;zatokat viszzaad&oacute; funkci&oacute;kat C,
PL/pgSQL &eacute;s SQL nyelveken.
B&otilde;vebb dokument&aacute;ci&oacute;t a Programoz&oacute;
k&eacute;zik&ouml;nyvben tal&aacute;lsz. Egy C p&eacute;lda
funkci&oacute; tal&aacute;lhat&oacute; a contrib/tablefunc
k&ouml;nyvt&aacute;rban.</p>
<p><a name="5.4"></a><big style="text-decoration: underline;">5.4)
Megv&aacute;ltoztattam egy forr&aacute;s
&aacute;llom&aacute;nyt. Mi&eacute;rt nem v&aacute;ltozik a
bin&aacute;ris </big><big style="text-decoration: underline;">&uacute;jraford&iacute;t&aacute;s
ut&aacute;n?</big><br>
</p>
<p>A Makefile-ok nem ismerik a include &aacute;llom&aacute;nyok
megfelel&otilde; f&uuml;gg&otilde;s&eacute;geit. V&eacute;gre kell
hajtanod egy make clean-t, majd &uacute;jra egy
make-t. Ha GCC-t haszn&aacute;lsz felhaszn&aacute;lhatod a configure
script
--enable-depend opci&oacute;j&aacute;t, &iacute;gy a compiler maga
fogja ellen&otilde;rizni a
f&uuml;gg&otilde;s&eacute;geket.</p>
<br>
<br>
</body>
</html>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment