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 47.55 KiB
                                    PostgreSQL GyIK
    
     Utolso modosts dtuma: 2005 mjus 9.
    
     Fordts aktualizlsa: 2005 jnius
    
     A GyIK karbantartoja: Bruce Momjian (pgman@candle.pha.pa.us)
    
     Fordto: Hornyk Lszlo
     (laszlo.hornyak.nospam@gmail.com)
    
     A legfrissebb verzio itt rhet el (angol):
    
     http://www.PostgreSQL.org/docs/faq-english.html.
    
     Legfrissebb magyar nyelv verzio:
    
     http://hackers.forgeahead.hu/space/PostgreSQL/GYIK
    
     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 opercios rendszereken fut PostgreSQL?
       1.4 Milyen nem UNIX opercios rendszerek elrhetek?
       1.5 Hogyan tudok PostgreSQL-t szerezni?
       1.6 Hogyan kapok termktmogatst?
       1.7 Melyik a legfrissebb kiads?
       1.8 Milyen dokumentcio ll rendelkezsre?
       1.9 Hogyan tallok informciot hibkrol vagy hinyzo funkcionaltsrol?
       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?
       1.16 Ki irnytja a PostgreSQL-t?
    
    Felhasznloi kliens krdsek
    
       2.1 Van ODBC meghajto PostgreSQL-hez?
       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?
       3.2 AMikor elindtom a postmaster-t, egy "Bad System Call"-t vagy core
       dump-ot kapok. Mirt?
       3.3 Amikor megproblom inditani a postmaster-t, "IpcMemoryCreate" hibkat
       kapok. Mirt?
       3.4 Amikor megproblom 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 tblbol?
       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
       felhasznlok vannak definilva?
       4.8 A lekrdezseim lassak, vagy nem hasznljk az indexeket. Mirt?
       4.9 Hogy tudom ellenrizni, hogy optimalizlta a lekrdezs optimalizlo 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 felhasznlok kztt?
       4.15.4 Mirt nem hasznlodnak fel jra a sequence szmok tranzakcio 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 verziot 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
       funkciobol?
       4.26 Mirt nem tudom megbizhatoan ltrehozni s trlni az tmeneti
       tblkat a PL/pgSQL funkciokban?
       4.27 Milyen replikcios lehetsgek vannak?
       4.28 Milyen kodolsi lehetsgek vannak?
    
    A PostgreSQL kiterjesztse
    
       5.1) rtam egy felhasznloi funkciot. Mirt core dumpol az adatbzis
       amikor hasznlom?
       5.2) Hogyan lehet j adattpusokat s funkciokat hozzadni a PostgreSQL
       disztribciohoz?
       5.3) Hogyan lehet olyan C funkciot 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 genercios DBMS kutatsi prototpus. Megtartja a
       POSTGRES adatmodellt s gazdag adattpus vlasztkt, de a PostQuel
       lekrdez nyelvet az SQL egy kiterjesztett verziojval helyettesti. A
       PostgreSQL szabad s a teljes forrskod hozzfrhet.
    
       A PostgreSQL fejlesztst egy csapat vgzi, amelynek minden tagja
       megtallhato a PostgreSQL fejleszti levelezsi listn. A jelenlegi
       koordintor Marc G. Fournier (scrappyp@PostgreSQL.org). Ez a csapat
       felels minden fejlesztsrt. <>A PostgreSQL 1.01 alkotoi Andrew Yu s
       Jolly Chen voltak. Sokan jrultak hozz portolssal, tesztelssel,
       hibakeresssel s fejlesztssel. Az eredeti Postgres kod, amibl a
       PostgreSQL szrmazik Michael Stonebraker professzor irnytsa alatt
       fejlesztettek az egyetem programozoi, tanuloi s vgzett tanuloi. <>
    
       A szoftver eredeti 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.
    
        --------------------
    
       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.
    
       1.3 Milyen UNIX opercios rendszereken fut PostgreSQL?
    
       ltalban minden UNIX-kompatibilis opercios rendszer kpes arra hogy
       futtassa a PostgreSQL-t. Azokat a platformokat, amiken teszteltk a
       kiadst megtallhatod a installcios utastsok kztt.
    
       1.4 Milyen nem UNIX opercios rendszerek elrhetek?
    
       Kliens
    
       A libpq C fggvnyknyvtrat, a psql-t s ms felleteket le lehet gy
       fordtani, hogy fussanak MS Windows opercios rendszereken. Ebben az
       esetben a kliens MS Windows-on fut s TCP/IP segtsgvel kommunikl a
       Unixon futo 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 informcio tallhato 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 megtallhato a f weboldalunkon.
    
       1.6 Hogyan kapok termktmogatst?
    
       Az elsdleges lista a pgsql-general@postgresql.org. Ez hasznlhato 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 fejleszto"i levelezsi lista: pgsql-hackers-request@PostgreSQL.org a
       kvetkez tartalommal:
    
     subscribe
    
     end
    
       Egyb levelezsi listk tallhatoak 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 nyjto cgek listja elrhet itt:
       http://www.PostgreSQL.org/users-lounge/commercial-support.html
    
       Magyar nyelvu" levelezsi lista nincs, de ha tudok segiteni a fenit e-mail
       cimemen elrheto" vagyok.
    
       1.7 Melyik a legfrissebb kiads?
    
       A legfrissebb PostgreSQL kiads a 8.0.
    
       A tervek szerint minden vben lesz egy nagyobb fejlesztseket tartalmazo
       kiads, mg a kisebb fejlesztseket nhny havonta adjuk ki.
    
       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:
    
       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 megvsrolhato knyvek
       listja itt tallhato: 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 listzhatoak
       az opertorok, a funkciok, stb.
    
       A website is tartalmaz tovbbi dokumentciokat.
    
       1.9 Hogyan tallok informciot hibkrol vagy hinyzo funkcionaltsrol?
    
       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 oktato anyag tallhato
       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 felhasznlonak 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 forrskodot, s olvasd el a PostgreSQL
       fejleszti dokumnetciot 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 arrol, hogy a
       patch-ek amiket k kldenek jo 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 verzio vagy folt.
       ftp://ftp.PostgreSQL.org/pub
    
       1.14 Milyen a PostgreSQL ms DBMS-ekkel sszehasonltva?
    
       Szmos nzpontbol lehet vizsglni a szoftvert: kpessgek, teljestmny
       megbzhatosg, tmogatottsg s r.
    
       Kpessgek: A PostgreSQL rendelkezik a nagy, kereskedelmi DBMS-ek
       kpessgeivel: tranzakciok, al-lekrdezsek, triggerek, nzetek, kls
       kulcsok, integrts s kifinoult zrmechanizmusok. Van nhny kpessge,
       ami a kereskedelmi adatbzisokbol hinyzik, mint pldul a felhasznlo
       ltal definilt tpusok, rklds, szablyok s verzio 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 tanulo RDBMS pldul gyorsabban hajt vgre
       insert/update mveleteket, mivel a tranzakciokat elsumkolja. Persze a
       MySQL nem rendelkezik a kpessgek rszben felsoroltak nagy rszvel. Mi a
       megbzhatosgra 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.
    
       Megbzhatosg: Tudjuk hogy ha egy DBMS nem megbzhato, akkor teljesen
       haszontalan. Igyeksznk jol tesztelt, stabil kodot kiadni, amiben a lehet
       legkevesebb hiba van. Minden kiads eltt eltellik legalbb 1 honap bta
       teszt, s a kiadsi trtnet is azt mutatja, hogy stabil kodot 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
       felhasznlok 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 dokumentcio s a forrskod 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 forrskodjaidat 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 fennakadsoktol, amelyek komoly ksseket
       okoznak a fejlesztsekben. Termszetesen ez az infrastruktra nem olcso.
       Szmos havi s llando 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 kizrolag a
       PostgreSQL fejlesztsre rtendoek, s nem egy meghatrozott cgnek. Ha
       jobban tetszik, kldhetsz csekket is a kapcsolati cmek brmelyikre.
    
       1.16 Ki irnytja a PostgreSQL-t?
    
       Ha kzponti bizottsgot, ellenrzo" cget keresel a PostgreSQL mgtt, add
       fel, nincs ilyesmi. Ltezik egy mag s CVS commiter csoport, de ez inkb
       adminisztrativ mint ellenrzo" cl. A projectet fejleszto"k s
       felhasznlok kzssge irnytja, amihez brki csatlakozhat. Csupn annyit
       kell tenned hogy felratkozol a levelezo"listkra s rszt veszel a
       beszlgetsekben.
    
         ----------------------------------------------------------------------
    
    Felhasznloi kliens krdsek
    
       2.1 Van ODBC meghajto PostgreSQL-hez?
    
       Kt ODBC meghajto rhet el: PsqlODBC s a OpenLink ODBC.
    
       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
    
       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 verzio mindig elrhet lesz. Krdseidet
       a termkkel kapcsolatban a postgres95@openlink.co.uk cmen teheted fel.
    
       Olvasd el az ODBC fejezetet is a programozok kziknyvben!
    
       2.2 Milyen eszkzk llnak rendelkezsre PostgreSQL Web fejlesztsekhez?
    
       Egy szp bemutato olvashato az adatbzissal tmogatott web oldalanrol a
       http://www.webreview.com weboldalon.
    
       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
       mod_perl-t.
    
       2.3 Van a PostgreSQL-hez grafikus felhasznloi fellet?
    
       Van egy szp PgAccess nev grafikus felletnk, ami riport genertorknt
       is hasznlhato. A weboldalt megtallod a http://www.pgaccess.org/ cmen.
    
       A http://techdocs.postgresql.org/guides/GUITools oldalon tallhatsz egy
       pontos s rszltes listt.
    
       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.
    
         ----------------------------------------------------------------------
    
    Adminisztrcios 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 memoria s szemafor API-jt.
    
       3.3 Amikor megproblom inditani a postmaster-t, "IpcMemoryCreate" hibkat
       kapok. Mirt?
    
       Vagy nincs megfelelen konfigurlva a kerneled osztott memoria tmogatsa
       vagy meg kell nagyobbtanod a maximlis osztott memoria mretet.
    
       A pontos mret szksglet fgg az architektrdtol s attol hogy hny
       buffert s processzt konfigurlsz a postmasternek. Legalbb 1 MB terletre
       szksged van. A PostgreSQL Adminisztrcio kziknyvben olvashatsz
       rszletesebb informciokat az osztott memorirol s a szemaforokrol.
    
       3.4) Amikor megproblom inditani a postmaster-t, "IpcSemaphoreCreate"
       hibkat kapok. Mirt?
    
       Ha a hibazenet ez: " IpcSemaphoreCreate: semget failed (No space left on
       device)", akkor a kerneled konfigurcioja 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 memorirol s a szemaforokrol szolo fejezetet.
    
       3.5) Hogyan tudom kontrolllni a ms gpekrl rkez kapcsolat krseket?
    
       Alaprtelmezsben a PostgreSQL a helyi kapcsolatokat Unix socketekkel
       valostja meg. Ms gpek nem lesznek kpesek csatlakozni, ha nem
       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 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 tranzakcio blokkon bell, azok sajt
       tranzakciot indtanak. Sok mveletet rdemes egy tranzakcion bell
       vgrehajtani. Ez cskkenti a tranzakcio kezels tbbletidejt. Az
       indexeket javasolt a nagy adatvltozsok eltt eltvoltani, majd jra
       ltrehozni.
    
       Szmos teljestmny javto lehetsg van. Kikapcsolhatod az fsync()
       mveletet a postmaster -o -F opciokval valo indtsakor. gy nem fog az
       amugy lass fsync() fggvny meghvodni minden tranzakcio vgn.
    
       Hasznlhatod a postmaster -B opciojt is az osztott memoria szegmens
       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
       buffer van.
    
       A -S opcioval nvelheted a szerver tmeneti rendezsekre fenntartott
       memoria 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.
    
       Hardver kivlasztsban segthet:
       http://candle.pha.pa.us/main/writings/pgsql/hw_performance/index.html s
       http://www.powerpostgresql.com/PerfList/.
    
       A postgresql.conf bellitsaival kapcsolatos tudnivalok:
       http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.html
       s http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html.
    
       3.7) Milyen hibakeres lehetsgek rhetek el?
    
       A PostgreSQL szmos lehetsggel rendelkezik ami rtkes lehet a
       hibakeressnl.
    
       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
    
       ./bin/postmaster >server.log 2>&1 &
    
       Ez egy server.log llomnyt hoz ltre a fels PostgreSQL knyvtrban. Ez
       az llomny tartlamaz majd szmos hasznos informciot a szerverrel
       kapcsolatos problmkrol s hibkrol. A postmaster -d opciojval lehet
       rszletesebb hibakeres informciot kapni. A -d opciohoz 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
       parancssorbol 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 opciokkal forditottad a szervert,
       hasznlhatsz egy debuggert is hogy lsd hogy mi trtnik. Mivel igy a
       szervert nem a postmaster inditotta, nem tbbfelhasznlos krnyezetknt
       fut, igy a zrolsi s a szerverek kztti kommunikcios 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 vltozot 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 opcioi is nagyon hasznosak lehetnek
       hibakeressnl s teljestmny mrsnl.
    
       Profiling lehtsggel is fordithatod a szervert, hogy lsd melyik funkciok
       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 opcioval meghatrotod az j rtket, vagy
       modositod 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 valoszinleg a Unix
       konfigurcios paramtereken is nvelni kell. Ellenrizd a SHMMAX (az
       osztott memoria szegmensek maximlis mrete), a SEMMNS s a SEMMNI (a
       szemaforok maximlis szma), az NPROC (a processzek maximlis szma), a
       MAXUPRC (felhasznlonknti 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 verzioban a maximlis szerver processz szm 64 volt s a
       modositshoz 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 vgrehajto ltal ltrehezott tmeneti
       llomnyokat tartalmazza. Pldul ha egy rendezst kell vgrehajtani egy
       ORDER BY kifejezs miatt s a m?velet tbb memorit vesz ignybe, mint
       amennyit a -S paramter megenged, akkor az tmeneti knyvtrban hoz ltre
       egy llomnyt a fennmarado 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 aprobb vltoztatsokat hajt vgre a kisebb
       kiadsok kztt, igy ha 7.2 verziorol llsz t 7.2.1 verziora, akkor nem
       szksges kidumplonod az adatbzist. A nagy kiadsok esetben (pldul
       verziorol 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 hasznlhato dumpols s helyrellits nlkl.
    
         ----------------------------------------------------------------------
    
    Mkdtetsi krdsek
    
       4.1) Mi a klnbsg a binris s a norml kurzorok kztt?
    
       Nzd meg a DECLARE dokumentciojt.
    
       4.2) Hogyan tudom select-elni a lekrdezs els pr sort?
    
       Olvasd el a FETCH dokumentciojt, 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 generlodnak.
    
       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
       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 tblbol?
    
       Ez a funkcionalits a 7.3 verziotl kezdve rhet el az ALTER TABLE DROP
       COLUMN -nal. A rgebbi vertiokban 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, memoria 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 helyignynek tszrst is
       elfoglalhatja.
    
       Kpzelj el pldul, egy 100.000 soros szveget, aminek minde sora egy
       szmbol 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
       felhasznlok
    
       vannak definilva?
    
       A psql-ben tallsz szmos '\' karakterrel kezdd utastst az ilyen
       informciok listzsra. A '\?' segitsgvel tudot kilistzni ezeketa
       parancsokat. Ezen kivl vannak rendszer tblk, amelyek nevei 'pg_'-vel
       kezddnek.
    
       Probld 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 also 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 tblrol. Ez a statisztikai adatok a
       VAACUM ANALYZE vagy az egyszer ANALYZE mveletek sorn jnnek ltre. A
       statisztikai adatok felhasznlsval az optimalizlo 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
       funkciok 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 kulcsszo 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 optimalizlo
       a lekrdezsem?
    
       Olvasd el a dokumentcio EXPLAIN-rol szolo 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 dimenzion 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
    
       tallhato pontok.
    
       Az R-tree tervezsi mintt eredetileg lero 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 dimenziokra
       is. Gyakorlatilag ezen dolgoznod kell egy kicsit, s mg nincs
       dokumentcionk arrol hogy az hogyan mkdik.
    
       4.11) Mi a Genetic Query Optimizer?
    
       A GEQO modul a lekrdezs optimalizcio 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 funkcio 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?
    
         * "char" egy karakter hossz string
         * CHAR(n) bpchar res hellyel a megadott n hosszsgig
         * VARCHAR(n) varchar mret maximlis hossz meghatrozsval, a lefogllat
           terlet is vltozo hossz lesz
         * TEXT nincs meghatrozott felso" korlt
         * BYTEA vltozo hosszsg byte-tmb
    
       Ltni fogod a bels elnevezsket, ha tanulmnyozod a rendszertblkats
       nhny hibazenetet.
    
       Az utobbi ngy a "varlena" tpusok, ami a trolsuk modjra utal: az els
       4 byte a lemezen a hosszsg, a tbbi az adat. A valodi mret teht
       nagyobb mint a deklarlt hosszsg.Ezek azadatok tmritve trolodnak el,
       igy kevesebb helyet foglalnek el az elre szmitottnl.
    
       A CHAR(n) a legjobb megolds, ha stabil hosszsg stringet trolsz. A
       VARCHAR(n) jo 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 mutatoi
       hasonloak 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 azonositoknt, br ebben az esetben
       figyelj a pg_gump hasznlatnl a -o opciora (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() funkcioval 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 portolhato. Perl DBI-ben, Edmund Mergl DBD::Pg moduljban az
       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?
    
       Nem. A currval() funkcio a szerver processzed ltal adott rtket adja
       vissza, nem pedig a tbbi szerver processz ltal adottat.
    
       4.15.4) Mirt nem hasznlodnak fel jra a sequence szmok tranzakcio abort
       esetn?
    
       Mirt vannak problmk a serial oszlopok szmozsval?
    
       A prhuzamossg fejlesztse rdekben a sorozat szmokat krsre adja ki a
       szerver futo tranzakcioknak, s azokat nem zrja, amig a tranzakcio vget
       nem r. Ez jukakat okoz a szmozsokban a visszaforditott tranzakciok
       miatt.
    
       4.16) Mi a OID? Mi a TID?
    
       Az OID a PostgreSQL egyedi sor azonositoja. 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, felhasznlo 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 hasznlhatoak 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 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.
    
       4.17) Mi a PostgreSQL-ben hasznlt kifejezsek jelentse?
    
       Nhol a forrs kodban s a dokumnetcioban tallhatoak kifejezsek,
       amelyek ltalnosabb jelentssel brnak. Itt van nhny:
    
         * tbla (table), relcio (relation), osztly (class)
         * sor (row), rekord (record), tuple (nincs magyar jelents)
         * oszlop (column), mez (field), attributum (attribute)
         * retrieve, select
         * helyettesit (replace), modosit (update)
         * hozzfz (append), beszr (insert)
         * OID, sorozat rtk (serial value)
         * portal, cursor
         * range variable, tbla nv, tbla alias
       Az ltalnos adatbzis kifejezsek sszefoglalojt itt olvashato:
    
       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 memorid, vagy a kerneled erforrs
       korltai alacsonyak. Probld 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, probld meg e
       klienssel is ugyanezt.
    
       4.19) Hogyan tudhatom meg PostgreSQL, milyen verziot futtatok?
    
       A psql programban select version();
    
       4.20) Mirt kapok "invalid large obj descriptor" hibt nagy objektumok
       kezelsnl?
    
       A nagy objektumok kezelst egy tranzakcios blokkban helyezd el. (BEGIN s
       COMMIT kztt)
    
       Jelenleg a PostgreSQL ezt a szablyt azzal teszi ktelezv, hogy a
       tranzakcio vgn a nagy objektumokat lezrja, igy a tranzakcio utn az
       els mvelet amit az objektumon vgrahajtanl hibs lesz.
    
       Ha olyan programozsi felletet hasznlsz mint az ODBC vagy a JDBC akkor
       valoszinleg 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 kulcsszo 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 kulcsszo 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 adatbzisbol krdezz le adatot.Mivel a
       PostgreSQL adatbzis specifikus rendszer tblkat tltbe, bizonytalan hogy
       egy adatbzisok kztti lekrdezsnek hogyankellene viselkednie.
    
       A contrib/dblink knyvtrban tallsz egy megoldst erre, ami funkcio
       hivsok segitsgvel mkdik. Persze, a kliens hozhat ltreszimultn
       kapcsolatot tbb adatbzissal, s sszefslheti az eredmnyeket.
    
       4.25) Hogy tudok tbb soros vagy oszlopos eredmnyt visszaadni egy
       funkciobol?
    
       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 megbizhatoan ltrehozni s trlni az tmeneti
       tblkat a PL/pgSQL funkciokban?
    
       A PL/pgSQL cacheli a funkciok tartalmt, aminek az a szerencstlen
       mellkhatsa, hogy ha egy PL/pgSQL funkcio hasznl egy tmeneti tblt,
       ami kso"bb trldik majd ujra ltrejn, akkor az jra lefuto funkcio nem
       fogja megtallni a tblt, mert a cache vltozat a rgi tblra tartalmaz
       mutatot. A megolds erre az EXECUTE hasznlata az tmeneti tblk
       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
    
       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.
    
       4.28) Milyen kodolsi lehetsgek vannak?
    
         * A contrib/pgcrypto tartlamaz szmos SQL lekrdezsben hasznlhato
           kodolst.
         * A kliens-szerver kommunikcio rejtjelezsre a hostssl hasznlhato.
           Ezt a pg_hba.conf-ben engedlyeztheted.
         * Az adatbzis felhsznlok jelszavait trolskor kodolja a rendszer. 
         * Rgebbi verziokban a PASSWORD_ENCRYPTION opcioval lehetett
           bekapcsolni.
         * A szerveren hasznlhatsz kodolt fjrendszert.
    
         ----------------------------------------------------------------------
    
    A PostgreSQL kiterjesztse
    
       5.1) rtam egy felhasznloi funkciot. Mirt core dumpol az adatbzis
       amikor hasznlom?
    
       Szmos problma lehet. Elbb probld ki a funkciodat egy klnllo
       alkalmazsban.
    
       5.2) Hogyan lehet j adattpusokat s funkciokat hozzadni a PostgreSQL
       disztribciohoz?
    
       Kldd el a kiegsztseid a pgsql-hackers levelezsi listra s a
       forrskodjaid vgl a contrib-ban ktnek ki.
    
       5.3) Hogyan lehet olyan C funkciot rni, ami Tuple-t ad vissza?
    
       A 7.3 verziotol kezdve a PostgreSQL tmogatja a tblzatokat viszzaado
       funkciokat C, PL/pgSQL s SQL nyelveken. Bvebb dokumentciot a Programozo
       kziknyvben tallsz. Egy C plda funkcio tallhato 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 opciojt, gy
       a compiler maga fogja ellenrizni a fggsgeket.