Skip to content
Snippets Groups Projects
Select Git revision
  • benchmark-tools
  • postgres-lambda
  • master default
  • REL9_4_25
  • REL9_5_20
  • REL9_6_16
  • REL_10_11
  • REL_11_6
  • REL_12_1
  • REL_12_0
  • REL_12_RC1
  • REL_12_BETA4
  • REL9_4_24
  • REL9_5_19
  • REL9_6_15
  • REL_10_10
  • REL_11_5
  • REL_12_BETA3
  • REL9_4_23
  • REL9_5_18
  • REL9_6_14
  • REL_10_9
  • REL_11_4
23 results

FAQ_hungarian

Blame
  • FAQ_hungarian 48.83 KiB
    
                    PostgreSQL GyIK
       Utols mdosts dtuma: 2002 Okt 20.
       Fordts aktualizlsa: 2003 janur
       
       A GyIK karbantartja: Bruce Momjian (pgman@candle.pha.pa.us)
       Fordt: Hornyk Lszl (hornyakl.NOSPAM@inf.elte.hu)
    
       A legfrissebb verzi itt rhet el (angol):
       http://www.PostgreSQL.org/docs/faq-english.html.
       
       Legfrissebb magyar nyelv verzi:
       http://www.rootshell.be/~hornyakl/downloads/postgres_faq/
       
       Platform specifikus krdsek:
       http://www.PostgreSQL.org/users-lounge/docs/faq.html.
         _________________________________________________________________
       
                                 ltalnos krdsek
                                          
       1.1) Mi a PostgreSQL? Hogy kell kimondani?
       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?
       1.6) Hogyan kapok termktmogatst?
       1.7) Melyik a legfrissebb kiads?
       1.8) Milyen dokumentci ll rendelkezsre?
       1.9) Hogyan tallok informcit hibkrl vagy hinyz funkcionaltsrl?
       1.10) Hogy tanuljam meg az SQL nyelvet?
       1.11) A PostgreSQL 2000. v kompatibilis?
       1.12) Hogyan lehet csatlakozni a fejleszt csapathoz?
       1.13) Hogyan kldjek hibajelentst?
       1.14) Milyen a PostgreSQL ms DBMS-ekkel sszehasonltva?
       1.15) Hogyan tudom zletileg segiteni a PostgreSQL-t?
       
                               Felhasznli kliens krdsek
                                          
       2.1) Van ODBC meghajt PostgreSQL-hez?
       2.2) Milyen eszkzk llnak rendelkezsre PostgreSQL Web fejlesztsekhez?
       2.3) Van a PostgreSQL-hez grafikus felhasznli fellet ? Riport 
       genertor? Begyazott lekrdez nyelv fellet?
       2.4) Milyen programozsi nyelvekkel lehet elrni a PostgreSQL szervert?
       
                              Adminisztrcis krdsek
                                          
       3.1) Hogyan tudom a PostgreSQL-t /usr/local/pgsql -tl eltr helyre 
       installlni?
       3.2) AMikor elindtom a postmaster-t, egy "Bad System Call"-t vagy core 
       dump-ot kapok. Mirt?
       3.3) Amikor megprblom inditani a postmaster-t, "IpcMemoryCreate" hibkat 
       kapok. Mirt?
       3.4) Amikor megprblom inditani a postmaster-t, "IpcSemaphoreCreate" hibkat
       kapok. Mirt?
       3.5) Hogyan tudom kontrolllni a ms gpekrl rkez kapcsolat krseket?
       3.6) Hogyan tudom nagyobb teljestmnyre hangolni az adatbzisomat?
       3.7) Milyen hibakeres lehetsgek rhetek el?
       3.8) Mirt kapok "Sorry, too many clients" hibt csatlakozsnl?
       3.9) Mi van pgsql_tmp knyvtrban?
       3.10) Mirt kell dumpolni s jratlteni PostgreSQL kiads vltsnl?
       
                               Mkdtetsi krdsek
                                          
       4.1) Mi a klnbsg a binris s a norml kurzorok kztt?
       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.4) Hogyan tudok eltvoltani egy oszlopot egy tblbl?
       4.5) Mi a maximlis mrete egy sornak, egy tblnak vagy egy adatbzisnak?
       4.6) Mekkora adatbzis lemez terlet szksges egy tipikus szveg llomny 
       trolshoz?
       4.7) Hogy tudhatom meg milyen tblk, indexek, adatbzisok vagy felhasznlk
       vannak definilva?
       4.8) A lekrdezseim lassak, vagy nem hasznljk az indexeket. Mirt?
       4.9) Hogy tudom ellenrizni, hogy optimalizlta a lekrdezs optimalizl a 
       lekrdezsem?
       4.10) Mi az R-tree index?
       4.11) Mi a Genetic Query Optimizer?
       4.12) Hogyan tudok regexp keresst s case-insensitive regexp keresst 
       hasznlni? Hogyan tudok indexet hasznlni case-insensitive keresshez?
       4.13) Hogyan tudom szlelni egy lekrdezsban, ha egy mez NULL?
       4.14) Mi a klnbsg a klnbz karaktertpusok kztt?
       4.15.1) Hogyan tudok ltrehozni automatikusan nvekv rtk mezt?
       4.15.2) Hogyan kaphatom meg egy SERIAL beszrs rtkt?
       4.15.3) A currval() s a nextval() nem teremt holtpont veszlyes helyzetet 
       a felhasznlk kztt?
       4.15.4) Mirt nem hasznldnak fel jra a sequence szmok tranzakci abort 
       esetn?
       Mirt vannak problmk a serial oszlopok szmozsval?
       4.16) Mi a OID? Mi a TID?
       4.17) Mi a PostgreSQL-ben hasznlt kifejezsek jelentse?
       4.18) Mirt kapom ezt a hibt: "ERROR: Memory exhausted in
       AllocSetAlloc()"?
       4.19) Hogyan tudhatom meg PostgreSQL, milyen verzit futtatok?
       4.20) Mirt kapok "invalid large obj descriptor" hibt nagy objektumok 
       kezelsnl?
       4.21) Hogy hozhatok ltre olyan oszlopot, aminek alaprtelmezett rtke a 
       jelenlegi id?
       4.22) Mirt olyan lassak az al-lekrdezseim IN-nel?
       4.23) Hogyan tudok outer join-t vgrehajtani?
       4.24) Hogyan tudok tbb adatbzison vgrehajtani lekrdezst?
       4.25) Hogy tudok tbb soros vagy oszlopos eredmnyt visszaadni egy 
       funkcibl?
       4.26) Mirt nem tudom megbizhatan ltrehozni s trlni az tmeneti 
       tblkat a PL/pgSQL funkcikban?
       4.27) Milyen replikcis lehetsgek vannak?
       4.28) Milyen kdolsi lehetsgek vannak?
       
                                A PostgreSQL kiterjesztse
                                          
       5.1) rtam egy felhasznli funkcit. Mirt core dumpol az adatbzis amikor 
       hasznlom?
       5.2) Hogyan lehet j adattpusokat s funkcikat hozzadni a PostgreSQL 
       disztribcihoz?
       5.3) Hogyan lehet olyan C funkcit rni, ami Tuple-t ad vissza?
       (tbb soros tbb oszlopos eredmnyek)
       5.4) Megvltoztattam egy forrs llomnyt. Mirt nem vltozik a binris 
       jrafordts utn?
         _________________________________________________________________
       
                                          
                                 ltalnos krdsek
                                          
        
       1.1) Mi a PostgreSQL? Hogy kell kimondani?
       gy ejstd ki: Post-Gres-Q-L. 
       (Vagy taln inkbb tltsd le a kis mp3-at a PostgreSQL homepage-rl)
       
       A PostgreSQL a POSTGRES adatbzis management rendszer egy kiegsztse,
       ami egy kvetkez genercis DBMS kutatsi prototpus. Megtartja a 
       POSTGRES adatmodellt s gazdag adattpus vlasztkt, de a PostQuel
       lekrdez nyelvet az SQL egy kiterjesztett verzijval helyettesti.
       A PostgreSQL szabad s a teljes forrskd hozzfrhet.
       
       A PostgreSQL fejlesztst egy csapat vgzi, amelynek minden tagja
       megtallhat a PostgreSQL fejleszti levelezsi listn. A jelenlegi
       koordintor Marc G. Fournier (scrappyp@PostgreSQL.org). Ez a csapat
       felels minden fejlesztsrt.
       
       A PostgreSQL 1.01 alkoti Andrew Yu s Jolly Chen voltak. Sokan
       jrultak hozz portolssal, tesztelssel, hibakeresssel s 
       fejlesztssel. Az eredeti Postgres kd, amibl a PostgreSQL szrmazik
       Michael Stonebraker professzor irnytsa alatt fejlesztettek az
       egyetem programozi, tanuli s vgzett tanuli.
       
       A szoftver ereeti neve Postgres volt. Amikor SQL funkcionaltssal
       egsztettk ki 1995-ben, a nevt Postgres95-re vltoztattk. 1996
       vgn kapta mai nevt.
       
       1.2) Mik a PostgreSQL felhasznlsi felttelei?
       
       Az eredeti angol copyright szveg: 
       -------------------- 
       PostgreSQL is subject to the following COPYRIGHT:
       
       PostgreSQL Data Base Management System
       
       Portions copyright (c) 1996-2002, PostgreSQL Global Development Group
       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
       agreement is hereby granted, provided that the above copyright notice
       and this paragraph and the following two paragraphs appear in all
       copies.
       
       IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
       FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
       INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND
       ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN
       ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
       
       THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
       INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
       MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
       PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
       CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
       UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
       
       The above is the BSD license, the classic open-source license. It has
       no restrictions on how the source code may be used. We like it and
       have no intention of changing it.
       --------------------
       
       Ami nagyon leegyszerstve azt jelenti, hogy jogod van hasznlni a 
       szoftvert mindenfle ellenszolgltats (pnz, stb) nlkl, a forrs
       kdot mdosthatod, s tovbbadhatod, DE semmilyen, a szoftver hasznlatbl
       kvetkez krosodsrt nem vllal garancit a fejleszt.
       
       A fenti a BSD licensz, egy klasszikus nyilt-forrskd licensz. Nem 
       tartalmaz megszortsokat arra, hogy a forrskdot hogyan hasznlod fel.
       Kedveljk ezt a licensz formt s nem ll szndkunkban megvltoztatni.
       
        1.3) Milyen UNIX opercis rendszereken fut PostgreSQL?
       
       ltalban minden UNIX-kompatibilis opercis rendszer kpes arra hogy
       futtassa a PostgreSQL-t. Azokat a platformokat, amiken teszteltk a
       kiadst megtallhatod a installcis utastsok kztt.
        
        1.4) Milyen nem UNIX opercis rendszerek elrhetek?
        
       Kliens
       
       A libpq C fggvnyknyvtrat, a psql-t s ms felleteket le lehet gy
       fordtani, hogy fussanak MS Windows opercis rendszereken. Ebben az esetben
       a kliens MS Windows-on fut s TCP/IP segtsgvel kommunikl a Unixon 
       fut szerverrel. A "win32.mak" llomny a kiads rsze, ennek segtsgvel
       lehet Win32 platformokra lefordtani a libpq-t s a psql-t. A PostgreSQL
       ODBC kliensekkel is kpes kommuniklni.
       
       Szerver
      
       Az adatbzis szerver Cygwin segtsgvel fut Windows NT s Win2k 
       rendszereken. Tovbbi informci tallhat a pgsql/doc/FAQ_MSWIN
       llomnyban s a MS Windows FAQ-ban a kvetkez helyen:
       http://www.PostgreSQL.org/docs/faq-mswin.html.
       
       Natv MS Windows NT/2000/XP portok jelenleg fejleszts alatt llnak.
       
        1.5) Hogyan tudok PostgreSQL-t szerezni?
         
        Az elsdleges anonim ftp oldal:
        ftp://ftp.PostgreSQL.org/pub. 
        A tkr oldalak listja megtallhat a f weboldalunkon.
        
        1.6) Hogyan kapok termktmogatst?
        
        Az elsdleges lista a pgsql-general@postgresql.org. Ez hasznlhat
        a PostgreSQL-lel kapcsolatos prbeszdekre. Ha fel szeretnl ratkozni,
        kldj egy levelet a kvetkez tartalommal (nem trggyal) a 
        pgsql-general-request@postgresql.org cmre:
         subscribe
         end
        
       Van egy hibkkal kapcsolatos levelezsi lista is:
       pgsql-bugs-request@PostgreSQL.org a kvetkez tartalommal:
        subscribe
        end
    
       A fejleszt?i levelezsi lista:
       pgsql-hackers-request@PostgreSQL.org a kvetkez tertalommal:
        subscribe
        end
    
       Egyb levelezsi listk tallhatak a weboldalunkon:
       
         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.
       
       A kereskedelmi termktmogatst nyjt cgek listja elrhet itt:
       http://www.PostgreSQL.org/users-lounge/commercial-support.html
       
        1.7) Melyik a legfrissebb kiads?
       
       A legfrissebb PostgreSQL kiads a 7.3.
       
       A tervek szerint minden negyedik hnapban van j kiads. 
       
        1.8) Milyen dokumentci ll rendelkezsre?
        
       Szmos kziknyv, man oldalak s kis teszt pldk tallhatak a kiadsban 
       a doc/ knyvtr alatt. Az interneten is olvashatod a dokumentcit a 
       kvetkez cmen:
       http://www.PostgreSQL.org/users-lounge/docs/.
       
       Kt PostgreSQL knyv rhet el az interneten a 
       http://www.PostgreSQL.org/docs/awbook.html s a
       http://www.commandprompt.com/ppbook/ cmeken.
       A megvsrolhat knyvek listja itt tallhat:
       http://www.ca.PostgreSQL.org/books/.
       A PostgreSQL-lel kapcsolatos technikai jelleg cikkek gyjtemnye:
       http://techdocs.PostgreSQL.org/.
       
       A psql parancs rendelkezik nhny \d utastssal, amellyekkel listzhatak
       az opertorok, a funkcik, stb.
       
       A website is tartalmaz tovbbi dokumentcikat.
       
        1.9) Hogyan tallok informcit hibkrl vagy hinyz funkcionaltsrl?
        
       A PostgreSQLaz SQL-92 szabvny egy kiegsztse. Nzd meg a TODO listkat
       ha rdekelnek az ismert hibk.
       
        1.10) Hogy tanuljam meg az SQL nyelvet?
        
        A PostgreSQL knyv a http://www.PostgreSQL.org/docs/awbook.html
        cmen tartalmaz SQL alapokat. Elrhet egy msik SQL knyv is a
        http://www.commandprompt.com/ppbook cmen. Egy szp oktat anyag
        tallhat a http://www.intermedia.net/support/sql/sqltut.shtm,
        a http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM
        s a http://sqlcourse.com oldalakon.
        
       Egy msik lehetsg a "Tantsd magad 21 nap alatt SQL-re, msodik
       kiads" a http://members.tripod.com/er4ebus/sql/index.htm.
       
       Sok felhasznlnak tetszett a gyakorlati SQL knyv ("The Practical 
       SQL Handbook"). 
       
        1.11) A PostgreSQL 2000. v kompatibilis?
       
       Igen, knnyedn kezeli a 2000 utni s idszmtsunk eltt 2000 eltti
       dtumokat is. 
       
        1.12) Hogyan lehet csatlakozni a fejleszt csapathoz?
       
       Elsszr is tltsd le a forrskdot, s olvasd el a PostgreSQL
       fejleszti dokumnetcit a web oldalunkon vagy a kiadsban. Ezutn
       ratkozz fel a pgsql-hackers s a pgsql-patches levelezsi listkra.
       Vgl pedig kldj be magas szinvonal patch-eket a pgsql-patches listra.
       
       Van egy pr ember, akiknek commit privilgiumuk a PostgreSQL CVS fn.
       k olyan sok magas szinvonal patch-et kldtek be, hogy az addigi 
       csapat mr nem tudta kvetni, s nem volt ktsgnk arrl, hogy a
       patch-ek amiket k kldenek j minsg.
       
        1.13) Hogyan kldjek hibajelentst?
       
       Ltogass el a BugTool oldalra: 
       http://www.PostgreSQL.org/bugs/bugs.php
       Itt megtallod kvetend utastsokat.
       
       Ellenrizd az ftp oldalunkon is, hogy nincs-e jabb verzi vagy folt.
       ftp://ftp.PostgreSQL.org/pub 
       
        1.14) Milyen a PostgreSQL ms DBMS-ekkel sszehasonltva?
       
       Szmos nzpontbl lehet vizsglni a szoftvert: kpessgek, teljestmny
       megbzhatsg, tmogatottsg s r. 
       
       Kpessgek
              A PostgreSQL rendelkezik a nagy, kereskedelmi DBMS-ek kpessgeivel:
              tranzakcik, al-lekrdezsek, triggerek, nzetek, kls kulcsok,
              integrts s kifinoult zrmechanizmusok. Van nhny kpessge,
              ami a kereskedelmi adatbzisokbl hinyzik, mint pldul a
              felhasznl ltal definilt tpusok, rklds, szablyok s
              verzi kontroll a zrolsi vitk reduklsrt.
              
       Teljestmny
              A PostgreSQL teljestmnye hasonlt a kereskedelmi s ms nylt
              adatbzis szerverekhez. Lehet bizonyos esetekben lassabb, msokban
              gyorsabb. A MySQL nev tanul RDBMS pldul gyorsabban hajt vgre
              insert/update mveleteket, mivel a tranzakcikat elsumkolja.
              Persze a MySQL nem rendelkezik a kpessgek rszben felsoroltak
              nagy rszvel. Mi a megbzhatsgra s a kpessgekre ptnk, br 
              a teljestmny is n minden kiadssal. Van egy rdekes oldal a 
              MySQL s a PostgreSQL sszehasonltsval a 
              http://openacs.org/philosophy/why-not-mysql.html cmen.
    
       Megbzhatsg         
              Tudjuk hogy ha egy DBMS nem megbzhat, akkor teljesen haszontalan.
              Igyeksznk jl tesztelt, stabil kdot kiadni, amiben a lehet
              legkevesebb hiba van. Minden kiads eltt eltellik legalbb 1
              hnap bta teszt, s a kiadsi trtnet is azt mutatja, hogy
              stabil kdot adunk ki, ami kszen ll a produktv felhasznlsra.
              gy gondoljuk, fellmlunk ms adatbzis szoftvereket ezen a tren.
                    
       Tmogats
              A levelezsi listink kapcsolatot teremtenek a fejlesztk
              s felhasznlk csoportjval , akik segtenek a problmk
              megoldsban. Br nem tudjuk garantlni hogy ki tudjuk
              javtani a hibt, ms, kereskedelmi adatbzis cgek sem tudjk.
              A fejleszt csoport kzvetlen elrsi lehetsge, a kzssg,
              a dokumentci s a forrskd gyakran tmogatst biztost,
              mint ms adatbzisoknl. Van kereskedelmi, alkalmi tmogats
              azoknak, akiknek szksge van r (lsd: 1.6).
              
       r
              A PostgreSQL szabad brmilyen felhasznlsra, akr kereskedelmire
              is. A termkhez hozzadhatod a sajt forrskdjaidat korltozs
              nlkl,
              
        1.15) Hogyan tudom zletileg segiteni a PostgreSQL-t?
        
        A PostgreSQL els osztly infrastruktrval rendelkezik, amit 1996-ban
        indtottunk el. Mindent Marc Fourniernek ksznhetnk, aki ltrehozta
        s karbantartja a rendszert.
       
        A minsgi infrastruktra nagyon fontos egy nyilt forrs szoftver
        esetben. Megvd az olyan fennakadsoktl, amelyek komoly ksseket
        okoznak a fejlesztsekben. 
       
        Termszetesen ez az infrastruktra nem olcs. Szmos havi s lland
        kiadsunk van. Ha a cgednek van pnze, amivel tmogatn erfesztseinket,
        krlek ltogass el a http://store.pgsql.com/shopping/ oldalra.
       
        Br a weboldal "PostgreSQL, Inc"-knt emlti, a hozzjrulsok kizrlag
        a PostgreSQL fejlesztsre rtendek, s nem egy meghatrozott cgnek. Ha
        jobban tetszik, kldhetsz csekket is a kapcsolati cmek brmelyikre.
       
         _________________________________________________________________
       
                             Felhasznli kliens krdsek
                                          
        2.1) Van ODBC meghajt PostgreSQL-hez?
        
        Kt ODBC meghajt rhet el: PsqlODBC s a OpenLink ODBC.
        
        A PsqlODBC a PostgreSQL kiads rsze. Tovbbi informci tallhat 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
        ltaluk tmogatott platformon (Win, Mac, Unix, VMS) elrhet lesz 
        a PostgreSQL szerver.
       
        Taln olyan vevknek fogjk eladni, akik kereskedelmi minsg termket
        szeretnnek kapni, de a freeware verzi mindig elrhet lesz. Krdseidet
        a termkkel kapcsolatban a postgres95@openlink.co.uk cmen teheted fel.
       
        Olvasd el az ODBC fejezetet is a programozk kziknyvben!
       
        2.2) Milyen eszkzk llnak rendelkezsre PostgreSQL Web fejlesztsekhez?
       
       Egy szp bemutat olvashat az adatbzissal tmogatott web oldalanrl
       a http://www.webreview.com weboldalon.
       
       A web integrcihoz a PHP egy kivll szoftver. Letlthet a 
       http://www.php.net cmrl. 
       
       Komplexebb esetekre sokan hasznljk a Perl felletet s a CGI.pm vagy a
       mod_perl-t.
       
        2.3) Van a PostgreSQL-hez grafikus felhasznli fellet? Riport 
       genertor? Begyazott lekrdez nyelv fellet?
        
        Van egy szp PgAccess nev grafikus felletnk, ami riport genertorknt
        is hasznlhat. A weboldalt megtallod a http://www.pgaccess.org/ cmen.
       
        A disztribci tartalmazza az ecpg programot is, ami egy begyazott SQL
        lekrdezsi fellet C nyelvhez. 
       
        2.4) Milyen programozsi nyelvekkel lehet elrni a PostgreSQL szervert?
        
        A kvetkezk:       
         * C (libpq)
         * C++ (libpq++)
         * Embedded C (ecpg)
         * Java (jdbc)
         * Perl (DBD::Pg and perl5)
         * ODBC (odbc)
         * Python (PyGreSQL)
         * TCL (libpgtcl)
         * C Easy API (libpgeasy)
         * PHP ('pg_' functions, Pear::DB)
    
        Tovbbi programozsi felletek rhetek el a 
       http://www.PostgreSQL.org/interfaces.html s a
       http://gborg.PostgreSQL.org oldalakon.
    
         _________________________________________________________________
       
                              Adminisztrcis krdsek
                                          
        3.1) Hogyan tudom a PostgreSQL-t /usr/local/pgsql -tl eltr helyre 
        installlni?
        
        A configure script --prefix paramternek hasznlatval.
       
        3.2) AMikor elindtom a postmaster-t, egy "Bad System Call"-t vagy core 
        dump-ot kapok.
            Mirt?
       
       Szmos problma lehet, de legelsszr ellenrizd le, hogy a kerneled
       System V kiegsztsekkel rendelkezik-e. A PostgreSQL hasznlja a
       kernel osztott memria s szemafor API-jt. 
       
        3.3) Amikor megprblom inditani a postmaster-t, "IpcMemoryCreate" hibkat 
        kapok. Mirt?
       
       Vagy nincs megfelelen konfigurlva a kerneled osztott memria tmogatsa
       vagy meg kell nagyobbtanod a maximlis osztott memria mretet.
       A pontos mret szksglet fgg az architektrdtl s attl hogy hny
       buffert s processzt konfigurlsz a postmasternek. Legalbb 1 MB 
       terletre szksged van. A PostgreSQL Adminisztrci kziknyvben
       olvashatsz rszletesebb informcikat az osztott memrirl s a
       szemaforokrl.
       
        3.4) Amikor megprblom inditani a postmaster-t, "IpcSemaphoreCreate" 
        hibkat kapok. Mirt?
       
       Ha a hibazenet ez: " IpcSemaphoreCreate: semget failed (No space
       left on device)", akkor a kerneled konfigurcija nem tesz lehetv
       elegend szemafort. A PostgreSQL szerver processzenknt 1 szemafort
       ignyel. Egy tmeneti megolds lehet az hogy a postmastert kevesebb
       maximlis processz szmmal inditod el. Hasznld a -D paramtert.
       Egy sokkal megfelelbb megolds az ha nveled a kerneled SEMMNS
       s SEMMNI paramtereit.
       
       A hibs szemaforok is adatzis lerobbanshoz is vezethet nagy terhels
       esetn.
       Ha a hibazenet valami ms, lehet hogy nincs szemaforok tmogats
       forditva a kerneledbe. Olvasd el a PostgreSQL adminisztrtorok 
       kziknyvben az osztott memrirl s a szemaforokrl szl fejezetet.
       
        3.5) Hogyan tudom kontrolllni a ms gpekrl rkez kapcsolat krseket?
        
       Alaprtelmezsben a PostgreSQL a helyi kapcsolatokat Unix socketekkel
       valstja meg. Ms gpek nem lesznek kpesek csatlakozni, ha nem
       engedlyezed azt -i opcival a postmasternek, s nem lltod be host a 
       alap azonostst a pg_hba.conf llomnyban. Ezzel vlnak lehetv a TCP/IP
       kapcsolatok.
        
        3.6) Hogyan tudom nagyobb teljestmnyre hangolni az adatbzisomat?
       
       Az indexels felttlenl gyorstja a lekrdezseket. Az EXPLAIN
       parancs lehetv teszi hogy lsd, hogy a PostgreSQL miknt interpretlja
       a lekrdezst s melyik indexet hasznlja.
       
       Ha sok INSERT mveletet hajtassz vgre, csinld nagy ktegekben a COPY
       paranccsal. Ez sokkal gyorsabb mint az egyedi INSERT parancsok. Msodszor:
       Azok a mveletek, amelyek nincsenek tranzakci blokkon bell, azok sajt
       tranzakcit indtanak. Sok mveletet rdemes egy tranzakcin bell 
       vgrehajtani. Ez cskkenti a tranzakci kezels tbbletidejt. Az indexeket
       javasolt a nagy adatvltozsok eltt eltvoltani, majd jra ltrehizni.
       
       Szmos teljestmny javt lehetsg van. Kikapcsolhatod az fsync()
       mveletet a postmaster -o -F opcikval val indtsakor. gy nem fog
       az amugy lass fsync() fggvny meghvdni minden tranzakci vgn.
       
       Hasznlhatod a postmaster -B opcijt is az osztott memria szegmens
       mretnek nvelshez. Ha az rtket tl magasra lltod, lehet hogy
       a postmaster nem indul el, mert tllpted az opercis rendszer ltal 
       megengedett mretet. Minden buffer 8K mret s alaprtelmezsban 64
       buffer van.
       
       A -S opcival nvelheted a szerver tmeneti rendezsekre fenntartott
       memria terlett. Az rtket kilobyteban add meg. Az alaprtelmezett
       rtk 512K.
       
       Hasznlhatod a CLUSTER utastst is, hogy a tblkat egy indexnek 
       megfelelen csoportostsd. Olvasd el a CLUSTER kziknyv oldalt tovbbi
       rszletekrt.
       
       
        3.7) Milyen hibakeres lehetsgek rhetek el?
        
       A PostgreSQL szmos lehetsggel rendelkezik ami rtkes lehet a hiba-
       keressnl.
       
       Elsszr is, futtathatod a configure scriptet --enable-cassert 
       opcival, sok assert() funkcihivs 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 rla, hogy a kimenetet
       log llomnyba kldd. Igy:
       cd /usr/local/pgsql
        ./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
       kapcsolatos problmkrl s hibkrl. A postmaster -d opcijval lehet
       rszletesebb hibakeres informcit kapni. A -d opcihoz meg kell 
       hatrozni egy hiba szintet. Vigyzz, a magas hibakeres szint nagy
       log llomnyt okozhat.
    
       Ha a postmaster nem fut, akkor futtathatod a postgres szervert
       parancssorbl is, s az SQL kifejezst kzvetlenl ennek adhatod t.
       Ez csak hibakeress esetben javasolt. Az j sor a kifejezs vgt jelenti,
       nem a pontosvessz. Ha hibakeres opcikkal forditottad a szervert, 
       hasznlhatsz egy debuggert is hogy lsd hogy mi trtnik. Mivel igy a 
       szervert nem a postmaster inditotta, nem tbbfelhasznls krnyezetknt 
       fut, igy a zrolsi s a szerverek kztti kommunikcis hiba jelensgek 
       nem jelentkeznek.
       
       Ha mr fut a postmaster, indits egy psql-t, s nzd meg a szerver processz
       PID-jt! Egy debuggert hasznlhatsz a processzhez csatlakozshoz. 
       Bellithatsz trspontokat s elindithatsz lekrdezseket. Ha a postgres 
       inditsban keresel hibt, a PGOPTIONS krnyezeti vltozt llitsd be "-W n" 
       rtkre. Ez n msodperc vrakozst idz el, igy tudsz csatlakozni a
       processzhez, el tdsz hejezni trspontokat, majd folytathatod a indtst.
          
       A postgres program -s, -A s -t opcii is nagyon hasznosak lehetnek
       hibakeressnl s teljestmny mrsnl.
       
       Profiling lehtsggel is fordithatod a szervert, hogy lsd melyik
       funkcik foglaljk el a futsi idt. A szerver profile llomnyai
       a pgsql/data/base/dbname knzvtrba kerlnek, a kliens profile 
       llomnyok az aktulis knyvtrba. Linuxon ehhez szksges a 
       -DLINUX_PROFILE fordtsi direktiva.
       
        3.8) Mirt kapok "Sorry, too many clients" (Tl sok kliens) 
        hibt csatlakozsnl?
        
       Nvelned kell a postmaster egyidejleg futtatott szerver processz szm 
       korltjt.
       
       Az alaprtelmezett korlt 32 processz. Ezt nvelhetjed gy, hogy
       jrainditod a postmastert s -N opcival meghatrotod az j rtket,
       vagy mdositod a postgresql.conf-ot.
       
       Ne felejtsd el, hogy ha nveled a szerver processzek maximlis szmt,
       akkor bufferek szmt is nvelned kell, legalbb a processzek szmnak
       ktszeresre. Nagy processz szmokesetben valszinleg a Unix 
       konfigurcis paramtereken is nvelni kell. Ellenrizd a SHMMAX
       (az osztott memria szegmensek maximlis mrete), a SEMMNS s a SEMMNI
       (a szemaforok maximlis szma), az NPROC (a processzek maximlis szma),
       a MAXUPRC (felhasznlnknti maximlis processz szm) s a NFILE s NINODE
       (a megnzitott llomnzok maximlis szma) paramtereket. A PostgreSQL
       azrt korltozza kln a processz szmot, hogy a rendszeredet ne terhelhesse 
       meg tlsgosan.
       
       A PostgreSQL 6.5 verziban a maximlis szerver processz szm 64 volt s
       a mdositshoz bele kellett irni a include/storage/sinvaladt.h llomnyba
       s jra kellett forditani a servert. 
             
        3.9) Mi van pgsql_tmp knyvtrban?
       
       Ez a knyvtr a lekrdezs vgrehajt ltal ltrehezott tmeneti
       llomnyokat tartalmazza. Pldul ha egy rendezst kell vgrehajtani
       egy ORDER BY kifejezs miatt s a m?velet tbb memrit vesz
       ignybe, mint amennyit a -S paramter megenged, akkor az tmeneti
       knyvtrban hoz ltre egy llomnyt a fennmarad adat trolsra.
       
       Az tmeneti llomnyok tbbnyire trl?dnek, de meg is maradhat ha
       pldul vratlan hibval lell a szerver egy rendezs kzben. Inditskor
       s lellitskor ezeket az llomnyokat trli a postmaster.
          
        3.10) Mirt kell dumpolni s jratlteni PostgreSQL kiads vltsnl?
       
       A PostgreSQL csapat csak aprbb vltoztatsokat hajt vgre a kisebb
       kiadsok kztt, igy ha 7.2 verzirl llsz t 7.2.1 verzira, akkor nem
       szksges kidumplonod az adatbzist. A nagy kiadsok esetben (pldul 
       verzirl 7.3-ra ttrsnl) vltozik a belsi adatstruktrk s
       adatllomnyok formtuma. Ezek a vltozsok gyakran nagyon sszetettek,
       ezrt inkb nem tartunk fenn visszafel kompatibilitst. A dump 
       az adatot ltalnos formtumban irja ki, majd az j formtumban lehet
       azt visszatleni.
       
       Azokban a kiadsokban, amelyek kztt az adat formtum nem vltozik,
       a pg_upgrade program hasznlhat dumpols s helzrellits nlkl.
       
         _________________________________________________________________
       
                               Mkdtetsi krdsek
                                          
        4.1) Mi a klnbsg a binris s a norml kurzorok kztt?
        
       Nzd meg a DECLARE dokumentcijt.
       
        4.2) Hogyan tudom select-elni a lekrdezs els pr sort?
        
       Olvasd el a FETCH dokumentcijt, vagy hasznld a SELECT
       LIMIT-et.
       
       Az egsz lekrdezst vgre kell hajtani, mg akkor is, ha csak az els
       pr sort akarod megkapni. Gondolj arra, hogy a lekrdezsben lehet ORDER BY 
       is.  Ha van olyan index, ami megfelel az ORDER BY kifejezsednek, a 
       PostgreSQL kpes lehet az els nhny rekord visszaadsra, vagy a teljes 
       lekrdezsnek le kell futnia, amig a krt rekordok le nem generldnak.
          
        4.3) Hogy tudom kilistzni a tblkat vagy ms dolgokat a PostgreSQL-ben?
       
       Elolvashatod a psql forrs kdjban a pgsql/src/bin/psql/describe.c
       llomnyban. Ez SQL parancsokat tartalmaz, amelyek azokat a kimeneteket
       llitjk el, amiket a per jellel kezdd parancsok adnak vissza.
        
        4.4) Hogyan tudok eltvoltani egy oszlopot egy tblbl?
        
       Ez a funkcionalits a 7.3 verzitl kezdve rhet el az ALTER TABLE
       DROP COLUMN -nal. A rgebbi vertikban igy lehet vgrehajtani:
       BEGIN;
        LOCK TABLE old_table;
        SELECT ...  -- minden oszlopot, kivtel amit trlni szeretnl
        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?
        
       A korltok:
        adatbzis:                                  korltlan (1 TB az ltalunk ismert lagnagyobb)
        tbla:                                              16 TB
        rekord/sor                                  1.6TB
        mez                                                1 GB
        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, memria s egyb
       kls tnyezk korltozzk. A teljesitmny romolhat, ha ezek az rtkek
       szokatlanul nagyok.
       
       A 16 TB-os legnagyobb tbla mret nem ignyel nagy llomny tmogatst.
       A nagy tblk tbb 1 GB mret llomnyba kerlnek, igy az llomny
       rendszer korltai nem lnyegesek.
          
       A maximlis tbla mret s az oszlopok maximlis oszlop szm nvelhet,
       ha az alaprtelmezett blokkmretet 32k-ra nveled.
    
        4.6) Mekkora adatbzis lemez terlet szksges egy tipikus szveg llomny 
        trolshoz?
        
       A PostgreSQL akr a szveg llomny helyignznek tszrst is elfoglalhaja.
       
       Kpzelj el pldul, egy 100.000 soros szveget, aminek minde sora 
       egy szmbl s egy szvegbl ll. Tegyk el, hogy tlagosan 20 byte hossz
       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:
       36 byte: sor fejlc
       24 byte: egy int mez + egy szveg mez
       4  byte: mutato
       ---------------------------------------
       64 byte soronkent.
       
       Az adat oldal mrete a PostgreSQL-ben 8192 byte, igy
       8192 / 64 = 128 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,
       igy ezek is lehetnek nagyok.
       
       A NULL rtkek bittrkpben vannak trolva, igy kevs helyet foglanak.
          
       
        4.7) Hogy tudhatom meg milyen tblk, indexek, adatbzisok vagy felhasznlk
       vannak definilva?
       
       A psql-ben tallsz szmos '\' karakterrel kezdd utastst az ilyen
       informcik listzsra. A '\?' segitsgvel tudot kilistzni ezeket
       a parancsokat. Ezen kivl vannak rendszer tblk, amelyek nevei 'pg_'
       -vel kezddnek.
       
       Prbld ki a pgsql/src/tutorial/syscat.source llomnyt is. Ez sok
       pldt tartalmaz az rendszertblkon vgrehajtott SELECT-ekrl.
       
       4.8) A lekrdezseim lassak, vagy nem hasznljk az indexeket. Mirt?
       
       Az indexeket nem hasznlja a szerver minden lekrdezsnl automatikusan.
       Csak akkor hasznl indexet, ha a tbla mrete egy megadott als hatr
       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 
       szekvencilis olvassa.
       
       Hogy a PostgreSQL meg tudja hatrozni hogy kell-e indexet hasznlni,
       lteznie kell egy statisztiknak a tblrl. Ez a statisztikai adatok a 
       VAACUM ANALYZE vagy az egyszer ANALYZE mveletek sorn
       jnnek ltre. A statisztikai adatok felhasznlsval az optimalizl
       meg tudja hatrozni, hogy hny sor van a tblban, s el tudja dnteni,
       hogy hasznljon-e indexet. A statisztiaki adatgyjtst idnknt vgre
       kell hajtani, ahogy a tbla adatai vltoznak.
       
       Az indexeket normlis esetben nem hasznlja az ORDER BY vagy
       az OUTER JOIN. A szekvencilis olvass ltalban gyorsabb, mint az
       index keress egy nagy tblban.
       Br a LIMIT az ORDER BY-val kombinlva hasznlhat indexet, mert
       a tbla csak kis rsze rintett. Br a MIN s MAX SQL funkcik sem
       hasznljk az indexeket, ezeket az rtkeket egy ORDER BY + LIMIT
       lekrdezssel is le lehet krdezni:
        SELECT col
        FROM tab
        ORDER BY col [ DESC ]
        LIMIT 1;
       
       Amikor helyettest jel opertorokat hasznlsz, mint a LIKE kulcssz
       vagy a ~, az indexeket csak bizonyos krlmnyek kztt lehet hasznlni:
         * 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 case-insensitive keress (ILIKE, ~*) nem hasznlnak indexet
           ehelyett funkcionlis indexet hasznlnak, amit a 4.12 pontban
           tallhatsz.
         * Az alaprtelmezett C hellyel kell futtatni az initdb-t.
               
        4.9) Hogy tudom ellenrizni, hogy optimalizlta a lekrdezs optimalizl
        a lekrdezsem?
        
       Olvasd el a dokumentci EXPLAIN-rl szl rszt.
       
        4.10) Mi az R-tree index?
        
        Az R-tree index a trbeli adat indexelsre alkalmas. Egy hash
        index nem kpes tartomny keressekre. A B-tree index csak egy
        dimenzin kezeli a tartomny keresseket. Pldul ha az indexet
        egy pont (point adattpus) tpus mez.re ptjk, gyorsabban
        kezeli az olyan jelleg lekrdezseket, mint egy adott krben
        tallhat pontok.
        
        Az R-tree tervezsi mintt eredetileg ler szveg:
           
       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.
        
        Ezt olvashatod Stonebraker "Readings in Database Systems" c.
        knyvben.
       
        A beptett R-tree kezelni tudjk a sokszgeket (polygon adattpus)
        s a dobozokat (box). Elmletileg, az R-tree kiterjeszthet tovbbi 
        dimenzikra is. Gyakorlatilag ezen dolgoznod kell egy kicsit, s
        mg nincs dokumentcink arrl hogy az hogyan mkdik.
    
        4.11) Mi a Genetic Query Optimizer?
        
        A GEQO modul a lekrdezs optimalizci sebessgt nveli nagy
        mennyisg tbla sszekapcsolsa esetn. Lehetv teszi a nagy
        lekrdezsek vgrehajtst nem teljes keresssel.
       
        4.12) Hogyan tudok regexp keresst s case-insensitive regexp keresst 
        hasznlni? Hogyan tudok indexet hasznlni case-insensitive keresshez?
        
        A ~ opertor hajt vgre regulris kifejezs (regexp) rtelmezst,
        a ~* ennek case-insensitive vltozata. A LIKE case-insensitive
        vltozata az ILIKE.
        
        A case-insensitive egyenlsg mveleteket ltalban igy hajtjuk
        vgre:
        SELECT *
        FROM tab
        WHERE lower(col) = 'abc';
       
        Ez nem fog indexet hasznlni, br ltrehozhatsz egy funkci indexet:
        CREATE INDEX tabindex ON tab (lower(col));
    
        4.13) Hogyan tudom szlelni egy lekrdezsben, ha egy mez NULL?
        
       Hasznld "IS NULL"-t s az "IS NOT NULL"-t.
       
        4.14) Mi a klnbsg a klnbz karaktertpusok kztt?
        
    Type            Internal Name   Notes
    --------------------------------------------------
    "char"          char            1 character
    CHAR(n)         bpchar          blank padded to the specified fixed length
    VARCHAR(n)      varchar         size specifies maximum length, no padding
    TEXT            text            no specific upper limit on length
    BYTEA           bytea           variable-length byte array (null-byte safe)
    
       Ltni fogod a bels elnevezsket, ha tanulmnyozod a rendszertblkat
       s nhny hibazenetet.
       
       Az utbbi ngy a "varlena" tpusok, ami a trolsuk mdjra utal:
       az els 4 byte a lemezen a hosszsg, a tbbi az adat. A valdi mret
       teht nagyobb mint a deklarlt hosszsg.Ezek azadatok tmritve 
       troldnak el, igy kevesebb helyet foglalnek el az elre szmitottnl.
       
       A CHAR(n) a legjobb megolds, ha stabil hosszsg stringet trolsz.
       A VARCHAR(n) j arra az esetekre, ha a hosszsg vltozik, de van 
       fels korltja. A TEXT tpus korltlan hosszsg (1 GB-ig) szvegek
       trolsra alklamas. A BYTEA binris adatok trolsra van. A 
       teljesitmny mutati hasonlak ezenek a tpusoknak.
       
        4.15.1) Hogyan tudok ltrehozni automatikusan nvekv rtk mezt?
        
        A PostgreSQL rendelkezik egy SERIAL adattpussal. Ez egy szekvencit
        s egy indexet hoz ltre az oszlopon. Pldul ez:
        CREATE TABLE person (
            id   SERIAL,
            name TEXT
        );
    
       ugyanezt jelenti:
        CREATE SEQUENCE person_id_seq;
        CREATE TABLE person (
            id   INT4 NOT NULL DEFAULT nextval('person_id_seq'),
            name TEXT
        );
        CREATE UNIQUE INDEX person_id_key ON person ( id );
       
       A szekvencikkal kapcsolatban olvasd el a create_sequence man
       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.
       
        4.15.2) Hogyan kaphatom meg egy SERIAL beszrs rtkt?
        
        Egy megolds erre az, ha a nextval() funkcival megszerzed az
        rtket mg mieltt beszrnd az adatot a tblba. Erre itt lthatsz
        egy pldt:
        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
       legkevsb portolhat. Perl DBI-ben, Edmund Mergl DBD::Pg moduljban
       az OID rtk hasznlhat a $sth->execute() utn ($sth->{pg_oid_status}).
    
        4.15.3) A currval() s a nextval() nem teremt holtpont veszlyes helyzetet 
       a felhasznlk kztt?
        
       Nem. A currval() funkci a szerver processzed ltal adott rtket adja 
       vissza, nem pedig a tbbi szerver processz ltal adottat.
       
        4.15.4) Mirt nem hasznldnak fel jra a sequence szmok tranzakci 
        abort esetn?
        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 tranzakci vget nem r. Ez jukakat okoz a szmozsokban a
       visszaforditott tranzakcik miatt.
       
        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
       16384 alatt van (lsd include/access/transam.h). Minden, felhasznl
       ltal ltrehozott OID legalbb ennyi. Alaprtelmezsben, az OID
       nem csak a 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
       azonositsra 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 
       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;
            COPY new TO '/tmp/pgtable';
            DELETE FROM new;
            COPY new WITH OIDS FROM '/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 
       igyeksznk eltvolitani, mg mieltt brki szrevenn.
       
       A TID a fizikai sorok blokk s offszet cmmel val azonositsra szolgl.
       A TID vltozik minden rekord mdosits s trls alkalmval. Ezeket az 
       indexek hasznljk hogy a fizikai sort gyorsan megtalljk.
          
        4.17) Mi a PostgreSQL-ben hasznlt kifejezsek jelentse?
        
        Nhol a forrs kdban s a dokumnetciban tallhatak kifejezsek,
        amelyek ltalnosabb jelentssel brnak. Itt van nhny:
         * tbla (table), relci (relation), osztly (class)
         * sor (row), rekord (record), tuple (nincs magyar jelents)
         * oszlop (column), mez (field), attributum (attribute)
         * retrieve, select
         * helyettesit (replace), mdosit (update)
         * hozzfz (append), beszr (insert)
         * OID, sorozat rtk (serial value)
         * portal, cursor
         * range variable, tbla nv, tbla alias
           
       Az ltalnos adatbzis kifejezsek sszefoglaljt itt olvashat:
       http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary
       /glossary.html
       
        4.18) Mirt kapom ezt a hibt: "ERROR: Memory exhausted in
       AllocSetAlloc()"?
        
       Lehet hogy elfogyott a virtulis memrid, vagy a kerneled erforrs 
       korltai alacsonyak. Prbld ki ezt mieltt elinditand a postmastert:
        ulimit -d 262144
        limit datasize 256m
    
       A shelltl fggen ezek kzl csak az egyik fut majd le, de a
       processzek adatszegmenst sokkal magasabbra llitja, ami taln 
       elg lesz a lekrdezs vgrehajtshoz. Ez az utasts a jelenlegi
       processzre (a shelled) rvnyes, s minden ltala ltrehozott
       processzre. Ha problmd van az SQL klienssel, mert a szerver
       tl nagy adatot kld vissza, prbld meg e klienssel is ugyanezt.
    
        4.19) Hogyan tudhatom meg PostgreSQL, milyen verzit futtatok?
        
       A psql programban select version();
       
        4.20) Mirt kapok "invalid large obj descriptor" hibt nagy objektumok 
        kezelsnl?
       
       A nagy objektumok kezelst egy tranzakcis blokkban helyezd el.
       (BEGIN s COMMIT kztt)
       
       Jelenleg a PostgreSQL ezt a szablyt azzal teszi ktelezv, hogy a
       tranzakci vgn a nagy objektumokat lezrja, igy a tranzakci utn 
       az els mvelet amit az objektumon vgrahajtanl hibs lesz.
       
        Ha olyan programozsi felletet hasznlsz mint az ODBC vagy a JDBC
        akkor valszinleg ki kell kapcsolnod az auto-commit-ot.
       
       
        4.21) Hogy hozhatok ltre olyan oszlopot, aminek alaprtelmezett 
        rtke a jelenlegi id?
        
       Hasznld a CURRENT_TIMESTAMP -ot:
       CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
    
        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
       sokat, akkor az IN is gyors. Az EXISTS kulcssz hasznlatval 
       gyorsithatod a lekrdezseket.
        SELECT *
        FROM tab
        WHERE col IN (SELECT subcol FROM subtab);
    
       EXISTS hasznlatval:
        SELECT *
        FROM tab
        WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
       
       Ahhoz hogy ez gyorsan fusson le, a subcol indexelt oszlopnak kell 
       hogy legyen. Remljk ezt a korltot sikerl hamarosan legyznnk.
       
        4.23) Hogyan tudok outer join-t vgrehajtani?
        
        A PostgreSQL a szabvnyos SQL szintaktikt kveti. Itt van kt plda:
        SELECT *
        FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
    
       vagy
        SELECT *
        FROM t1 LEFT OUTER JOIN t2 USING (col);
       
       Ezek az identikus lekrdezsek sszekapcsoljk a t1.col s a t2.col
       mezket, s a t1 brmelyik kapcsolatlan sort is visszadjk. A RIGHT
       JOIN a t2 kapcsolatlan sorait adta volna vissza, a FULL JOIN pedig
       a kapcsolt, s mindkt tbla kapcsolatlan sorait adja. Az OUTER
       kulcssz opcionlis, a LEFT, RIGHT s FULL JOIN szintaktikailag 
        helyes. Az tlagos sszekapcsolsokat INNER JOIN-nak nevezzk.
       
       Az elz kiadsokban a OUTER JOIN lekrdezseket UNION s NOT IN
       kulcsszavakkal lehetett szimullni. Pldul a tab1 s a tab2 
       sszekapcsolsa:
        SELECT tab1.col1, tab2.col2
        FROM tab1, tab2
        WHERE tab1.col1 = tab2.col1
        UNION ALL
        SELECT tab1.col1, NULL
        FROM tab1
        WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
        ORDER BY col1
    
        4.24) Hogyan tudok tbb adatbzison vgrehajtani lekrdezst?
       
       Arra nincs lehetsg, hogy ms adatbzisbl krdezz le adatot.
       Mivel a PostgreSQL adatbzis specifikus rendszer tblkat tlt
       be, bizonytalan hogy egy adatbzisok kztti lekrdezsnek hogyan
       kellene viselkednie. 
       
       A contrib/dblink knyvtrban tallsz egy megoldst erre, ami 
       funkci hivsok segitsgvel mkdik. Persze, a kliens hozhat ltre
       szimultn kapcsolatot tbb adatbzissal, s sszefslheti az 
       eredmnyeket.
       
        4.25) Hogy tudok tbb soros vagy oszlopos eredmnyt visszaadni egy 
        funkcibl?
        
        A PL/pgSQL trolt eljrs nyelvvel refcursor hasznlatval. 
        Rszletesen itt:
        http://www.PostgreSQL.org/idocs/index.php?plpgsql-cursors.html
       
        4.26) Mirt nem tudom megbizhatan ltrehozni s trlni az tmeneti 
        tblkat a PL/pgSQL funkcikban?
        
        A PL/pgSQL cacheli a funkcik tartalmt, aminek az a szerencstlen
        mellkhatsa, hogy ha egy PL/pgSQL funkci hasznl egy tmeneti
        tblt, ami ks?bb trldik majd ujra ltrejn, akkor az jra lefut
        funkci nem fogja megtallni a tblt, mert a cache vltozat a rgi
        tblra tartalmaz mutatt. A megolds erre az EXECUTE utasts
        hasznlata az tmeneti tblk kezelsre PL/pgSQL-ben. Ez a 
        lekrdezs jrafordtst fogja elidzni minden alkalommal.
        
        4.27) Milyen replikcis lehetsgek vannak?
        
        Szmos master/slave replikcis lehetsg ltezik. Ez csak a master
        adatbzis szmra teszi lehetv, hogy az adatokat vltoztassa. Egy
        Listt olvashatsz ezekrl itt: 
       http://gborg.PostgreSQL.org/genpage?replication_research
       
       Egy tbbfelhasznls replikcis rendszer kszl itt:
       http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.
       
        4.28) Milyen kdolsi lehetsgek vannak?
        
        - A contrib/pgcrypto tartlamaz szmos SQL lekrdezsben hasznlhat kdolst.
        - A kliens-szerver kommunikci rejtjelezsre a hostssl hasznlhat.
          Ezt a pg_hba.conf-ben engedlyeztheted.
        - Az adatbzis felhsznlk jelszavait trolskor kdolja a rendszer. 
          Rgebbi verzikban a PASSWORD_ENCRYPTION opcival lehetett
          bekapcsolni.
        - A szerveren hasznlhatsz kdolt fjrendszert.
         _________________________________________________________________
       
                                A PostgreSQL kiterjesztse
                                          
       5.1) rtam egy felhasznli funkcit. Mirt core dumpol az adatbzis amikor
       hasznlom?
       
       Szmos problma lehet. Elbb probld ki a funkcidat egy klnll
       alkalmazsban.
       
       5.2) Hogyan lehet j adattpusokat s funkcikat hozzadni a PostgreSQL 
       disztribcihoz?
       
       Kldd el a kiegsztseid a pgsql-hackers levelezsi listra s a
       forrskodjaid vgl a contrib-ban ktnek ki.
       
       5.3) Hogyan lehet olyan C funkcit rni, ami Tuple-t ad vissza?
        
            A 7.3 verzitl kezdve a PostgreSQL tmogatja a tblzatokat
            viszzaad funkcikat C, PL/pgSQL s SQL nyelveken. Bvebb
            dokumentcit a Programoz kziknyvben tallsz. Egy C plda 
            funkci tallhat a contrib/tablefunc knyvtrban.
            
       5.4) Megvltoztattam egy forrs llomnyt. Mirt nem vltozik a binris 
       jrafordts utn?
       
       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
       hasznlsz felhasznlhatod a configure script --enable-depend opcijt,
       gy a compiler maga fogja ellenrizni a fggsgeket.