head	1.5;
access;
symbols
	REL7_4_29:1.3
	REL8_0_25:1.3.10.1
	REL8_1_21:1.4
	REL8_2_17:1.4
	REL8_3_11:1.4
	REL7_4_28:1.3
	REL8_0_24:1.3.10.1
	REL8_1_20:1.4
	REL8_2_16:1.4
	REL8_3_10:1.4
	REL7_4_27:1.3
	REL8_0_23:1.3.10.1
	REL8_1_19:1.4
	REL8_2_15:1.4
	REL8_3_9:1.4
	REL7_4_26:1.3
	REL8_0_22:1.3.10.1
	REL8_1_18:1.4
	REL8_2_14:1.4
	REL8_3_8:1.4
	REL8_4_STABLE:1.4.0.8
	REL8_4_0:1.4
	REL8_4_RC2:1.4
	REL8_4_RC1:1.4
	REL8_4_BETA2:1.4
	REL8_4_BETA1:1.4
	REL7_4_25:1.3
	REL8_0_21:1.3.10.1
	REL8_1_17:1.4
	REL8_2_13:1.4
	REL8_3_7:1.4
	REL7_4_24:1.3
	REL8_0_20:1.3.10.1
	REL8_1_16:1.4
	REL8_2_12:1.4
	REL8_3_6:1.4
	REL7_4_23:1.3
	REL8_0_19:1.3.10.1
	REL8_1_15:1.4
	REL8_2_11:1.4
	REL8_3_5:1.4
	REL7_4_22:1.3
	REL8_0_18:1.3.10.1
	REL8_1_14:1.4
	REL8_2_10:1.4
	REL8_3_4:1.4
	REL7_4_21:1.3
	REL8_0_17:1.3.10.1
	REL8_1_13:1.4
	REL8_2_9:1.4
	REL8_3_3:1.4
	REL7_4_20:1.3
	REL8_0_16:1.3.10.1
	REL8_1_12:1.4
	REL8_2_8:1.4
	REL8_3_2:1.4
	REL8_2_7:1.4
	REL8_3_1:1.4
	REL8_3_STABLE:1.4.0.6
	REL8_3_0:1.4
	REL8_3_RC2:1.4
	REL7_3_21:1.3.2.1
	REL7_4_19:1.3
	REL8_0_15:1.3.10.1
	REL8_1_11:1.4
	REL8_2_6:1.4
	REL8_3_RC1:1.4
	REL8_3_BETA4:1.4
	REL8_3_BETA3:1.4
	REL8_3_BETA2:1.4
	REL8_3_BETA1:1.4
	REL7_3_20:1.3.2.1
	REL7_4_18:1.3
	REL8_0_14:1.3.10.1
	REL8_1_10:1.4
	REL8_2_5:1.4
	REL7_3_19:1.3.2.1
	REL7_4_17:1.3
	REL8_0_13:1.3.10.1
	REL8_1_9:1.4
	REL8_2_4:1.4
	REL8_0_12:1.3.10.1
	REL8_1_8:1.4
	REL8_2_3:1.4
	REL7_3_18:1.3.2.1
	REL7_4_16:1.3
	REL8_0_11:1.3.10.1
	REL8_1_7:1.4
	REL8_2_2:1.4
	REL8_0_10:1.3.10.1
	REL8_1_6:1.4
	REL8_2_1:1.4
	REL7_4_15:1.3
	REL7_3_17:1.3.2.1
	REL8_2_STABLE:1.4.0.4
	REL8_2_0:1.4
	REL8_2_RC1:1.4
	REL8_2_BETA3:1.4
	REL8_2_BETA2:1.4
	REL8_1_5:1.4
	REL8_0_9:1.3.10.1
	REL7_4_14:1.3
	REL7_3_16:1.3.2.1
	REL8_2_BETA1:1.4
	REL7_3_15:1.3.2.1
	REL7_4_13:1.3
	REL8_0_8:1.3.10.1
	REL8_1_4:1.4
	REL7_3_14:1.3.2.1
	REL7_4_12:1.3
	REL8_0_7:1.3.10.1
	REL8_1_3:1.4
	REL7_3_13:1.3.2.1
	REL7_4_11:1.3
	REL8_0_6:1.3.10.1
	REL8_1_2:1.4
	REL7_3_12:1.3.2.1
	REL7_4_10:1.3
	REL8_0_5:1.3.10.1
	REL8_1_1:1.4
	REL8_1_STABLE:1.4.0.2
	REL8_1_0:1.4
	REL8_1_0RC1:1.4
	REL8_1_0BETA4:1.4
	REL8_1_0BETA3:1.4
	REL7_3_11:1.3.2.1
	REL7_4_9:1.3
	REL8_0_4:1.3.10.1
	REL8_1_0BETA2:1.4
	REL8_1_0BETA1:1.4
	REL7_3_10:1.3.2.1
	REL7_4_8:1.3
	REL8_0_3:1.3
	REL8_0_2:1.3
	REL7_3_9:1.3.2.1
	REL7_4_7:1.3
	REL8_0_1:1.3
	REL8_0_STABLE:1.3.0.10
	REL8_0_0:1.3.0.8
	REL8_0_0RC5:1.3
	REL8_0_0RC4:1.3
	REL8_0_0RC3:1.3
	REL8_0_0RC2:1.3
	REL8_0_0RC1:1.3
	REL8_0_0BETA5:1.3
	REL8_0_0BETA4:1.3
	REL7_4_6:1.3
	REL7_3_8:1.3.2.1
	REL8_0_0BETA3:1.3
	REL8_0_0BETA2:1.3
	REL7_4_5:1.3
	REL7_3_7:1.3.2.1
	REL7_4_4:1.3
	REL8_0_0BETA1:1.3
	REL7_4_3:1.3
	REL7_4_2:1.3
	REL7_3_6:1.3.2.1
	REL7_4_1:1.3
	REL7_3_5:1.3.2.1
	REL7_4:1.3
	REL7_4_RC2:1.3
	REL7_4_STABLE:1.3.0.6
	REL7_4_RC1:1.3
	REL7_4_BETA5:1.3
	REL7_4_BETA4:1.3
	REL7_4_BETA3:1.3
	REL7_4_BETA2:1.3
	WIN32_DEV:1.3.0.4
	REL7_4_BETA1:1.3
	REL7_3_4:1.3.2.1
	REL7_3_STABLE:1.3.0.2;
locks; strict;
comment	@# @;


1.5
date	2009.07.21.19.20.32;	author petere;	state dead;
branches;
next	1.4;

1.4
date	2005.06.06.16.30.41;	author momjian;	state Exp;
branches
	1.4.8.1;
next	1.3;

1.3
date	2003.02.18.17.20.37;	author momjian;	state Exp;
branches
	1.3.2.1
	1.3.10.1;
next	1.2;

1.2
date	2003.02.04.12.32.40;	author momjian;	state Exp;
branches;
next	1.1;

1.1
date	2003.01.13.23.00.32;	author momjian;	state Exp;
branches;
next	;

1.3.2.1
date	2003.07.24.00.53.56;	author momjian;	state Exp;
branches;
next	;

1.3.10.1
date	2005.09.22.22.14.10;	author momjian;	state Exp;
branches;
next	;

1.4.8.1
date	2009.07.21.19.21.02;	author petere;	state dead;
branches;
next	;


desc
@@


1.5
log
@Remove translated FAQs

The English FAQ has been moved to the wiki, so the translated versions should
have been removed at that point as well.

The FAQ_MINGW.html should have been removed when the platform FAQs were
integrated into the documentation (or earlier).

applied to both 8.4 and 8.5
@
text
@                                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.
@


1.4
log
@Update Hungarian FAQ and add an HTML version.

Laszlo Hornyak
@
text
@@


1.4.8.1
log
@Remove translated FAQs

The English FAQ has been moved to the wiki, so the translated versions should
have been removed at that point as well.

The FAQ_MINGW.html should have been removed when the platform FAQs were
integrated into the documentation (or earlier).

applied to both 8.4 and 8.5
@
text
@@


1.3
log
@Hungarian FAQ is text, not HTML, so remove it.
@
text
@d1 1
d3 53
a55 46
                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 
d57 1
a57 1
   3.2) AMikor elindtom a postmaster-t, egy "Bad System Call"-t vagy core 
d59 1
a59 1
   3.3) Amikor megprblom inditani a postmaster-t, "IpcMemoryCreate" hibkat 
d61 17
a77 17
   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 
d79 4
a82 4
   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 
d84 3
a86 3
   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 
d88 11
a98 12
   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
d100 2
a101 2
   4.19) Hogyan tudhatom meg PostgreSQL, milyen verzit futtatok?
   4.20) Mirt kapok "invalid large obj descriptor" hibt nagy objektumok 
d103 1
a103 1
   4.21) Hogy hozhatok ltre olyan oszlopot, aminek alaprtelmezett rtke a 
d105 19
a123 19
   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 
d125 9
a133 8
     _________________________________________________________________
   
                                      
                             ltalnos krdsek
                                      
    
   1.1) Mi a PostgreSQL? Hogy kell kimondani?
   gy ejstd ki: Post-Gres-Q-L. 
d135 1
a135 1
   
d137 1
a137 1
   ami egy kvetkez genercis DBMS kutatsi prototpus. Megtartja a 
d139 3
a141 3
   lekrdez nyelvet az SQL egy kiterjesztett verzijval helyettesti.
   A PostgreSQL szabad s a teljes forrskd hozzfrhet.
   
d143 1
a143 1
   megtallhat a PostgreSQL fejleszti levelezsi listn. A jelenlegi
d145 65
a209 54
   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.
d211 4
a214 4
   
    1.3) Milyen UNIX opercis rendszereken fut PostgreSQL?
   
   ltalban minden UNIX-kompatibilis opercis rendszer kpes arra hogy
d216 4
a219 4
   kiadst megtallhatod a installcis utastsok kztt.
    
    1.4) Milyen nem UNIX opercis rendszerek elrhetek?
    
d221 1
a221 1
   
d223 6
a228 6
   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.
   
d230 3
a232 3
  
   Az adatbzis szerver Cygwin segtsgvel fut Windows NT s Win2k 
   rendszereken. Tovbbi informci tallhat a pgsql/doc/FAQ_MSWIN
d234 20
a253 19
   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
    
a255 2
    subscribe
    end
d257 17
a273 11
   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:
d275 2
a276 2
   
   A kereskedelmi termktmogatst nyjt cgek listja elrhet itt:
d278 15
a292 11
   
    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 
d294 1
d296 2
a297 2
   
   Kt PostgreSQL knyv rhet el az interneten a 
d299 3
a301 4
   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:
d303 8
a310 8
   
   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?
    
d313 18
a330 18
   
    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?
   
d332 6
a337 6
   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
d340 1
a340 1
   
d342 7
a348 7
   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: 
d351 101
a451 99
   
   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. 
   
d454 13
a466 13
   
    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:       
d477 1
a477 2

    Tovbbi programozsi felletek rhetek el a 
d481 12
a492 13
     _________________________________________________________________
   
                          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?
   
d494 24
a517 25
   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.
   
d519 7
a525 7
   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?
    
d527 11
a537 11
   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.
   
d540 13
a552 12
   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 
d555 3
a557 3
   
   A -S opcival nvelheted a szerver tmeneti rendezsekre fenntartott
   memria terlett. Az rtket kilobyteban add meg. Az alaprtelmezett
d559 2
a560 2
   
   Hasznlhatod a CLUSTER utastst is, hogy a tblkat egy indexnek 
d563 22
a584 14
   
   
    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:
d586 9
a594 8
    ./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.
d597 6
a602 6
   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 
d604 1
a604 1
   
d606 4
a609 4
   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
d611 2
a612 2
      
   A postgres program -s, -A s -t opcii is nagyon hasznosak lehetnek
d614 11
a624 11
   
   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 
d626 1
a626 1
   
d628 3
a630 3
   jrainditod a postmastert s -N opcival meghatrotod az j rtket,
   vagy mdositod a postgresql.conf-ot.
   
d633 5
a637 5
   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
d639 25
a663 25
   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
d665 28
a692 29
   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
d695 21
a715 13
    
    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;
d718 1
a718 1
    
d720 16
a735 9
    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
d738 18
a755 17
   
   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.
d757 1
d759 18
a776 12
   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)
   
d779 1
a779 1
   
d781 4
a784 3
      
   
    4.7) Hogy tudhatom meg milyen tblk, indexek, adatbzisok vagy felhasznlk
d786 1
a786 1
   
d788 7
a794 7
   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.
   
d796 1
a796 1
   
d798 3
a800 3
   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 
d802 1
a802 1
   
d804 29
a832 25
   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.
d834 2
a835 3
     * A case-insensitive keress (ILIKE, ~*) nem hasznlnak indexet
       ehelyett funkcionlis indexet hasznlnak, amit a 4.12 pontban
       tallhatsz.
d837 52
a888 50
           
    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));
a889 2
    4.13) Hogyan tudom szlelni egy lekrdezsben, ha egy mez NULL?
    
d891 36
a926 33
   
    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
    );
d929 33
a961 23
    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')");
d964 5
a968 2
   legkevsb portolhat. Perl DBI-ben, Edmund Mergl DBD::Pg moduljban
   az OID rtk hasznlhat a $sth->execute() utn ($sth->{pg_oid_status}).
d970 1
a970 4
    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 
d972 26
a997 25
   
    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 
d999 17
a1015 12
        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 
d1017 7
a1023 6
      
    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)
d1027 1
a1027 1
     * helyettesit (replace), mdosit (update)
d1032 5
a1036 6
       
   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
a1037 12
    
   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.
d1039 16
a1054 2
    4.19) Hogyan tudhatom meg PostgreSQL, milyen verzit futtatok?
    
d1056 7
a1062 7
   
    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)
   
d1064 9
a1072 10
   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?
    
a1073 1
   CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
d1075 14
a1088 9
    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);
d1091 17
a1107 12
    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);
d1110 5
a1114 3
    SELECT *
    FROM t1 LEFT OUTER JOIN t2 USING (col);
   
d1116 6
a1121 6
   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.
   
d1123 1
a1123 1
   kulcsszavakkal lehetett szimullni. Pldul a tab1 s a tab2 
d1125 58
a1182 44
    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: 
d1184 8
a1191 2
   
   Egy tbbfelhasznls replikcis rendszer kszl itt:
d1193 20
a1212 18
   
    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
d1214 4
a1217 4
   
   5.2) Hogyan lehet j adattpusokat s funkcikat hozzadni a PostgreSQL 
   disztribcihoz?
   
d1220 9
a1228 9
   
   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 
d1230 1
a1230 1
   
d1233 2
a1234 4
   hasznlsz felhasznlhatod a configure script --enable-depend opcijt,
   gy a compiler maga fogja ellenrizni a fggsgeket.
   

@


1.3.10.1
log
@Update FAQ's in 8.0.X branch.
@
text
@a0 1
                                PostgreSQL GyIK
d2 46
a47 53
 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
d49 1
a49 1
   3.2 AMikor elindtom a postmaster-t, egy "Bad System Call"-t vagy core
d51 1
a51 1
   3.3 Amikor megproblom inditani a postmaster-t, "IpcMemoryCreate" hibkat
d53 17
a69 17
   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
d71 4
a74 4
   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
d76 3
a78 3
   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
d80 12
a91 11
   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
d93 2
a94 2
   4.19 Hogyan tudhatom meg PostgreSQL, milyen verziot futtatok?
   4.20 Mirt kapok "invalid large obj descriptor" hibt nagy objektumok
d96 1
a96 1
   4.21 Hogy hozhatok ltre olyan oszlopot, aminek alaprtelmezett rtke a
d98 19
a116 19
   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
d118 8
a125 9

     ----------------------------------------------------------------------

ltalnos krdsek

   1.1 Mi a PostgreSQL? Hogy kell kimondani?

   gy ejstd ki: Post-Gres-Q-L.

d127 1
a127 1

d129 1
a129 1
   ami egy kvetkez genercios DBMS kutatsi prototpus. Megtartja a
d131 3
a133 3
   lekrdez nyelvet az SQL egy kiterjesztett verziojval helyettesti. A
   PostgreSQL szabad s a teljes forrskod hozzfrhet.

d135 1
a135 1
   megtallhato a PostgreSQL fejleszti levelezsi listn. A jelenlegi
d137 54
a190 65
   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.

d192 4
a195 4

   1.3 Milyen UNIX opercios rendszereken fut PostgreSQL?

   ltalban minden UNIX-kompatibilis opercios rendszer kpes arra hogy
d197 4
a200 4
   kiadst megtallhatod a installcios utastsok kztt.

   1.4 Milyen nem UNIX opercios rendszerek elrhetek?

d202 1
a202 1

d204 6
a209 6
   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.

d211 3
a213 3

   <>Az adatbzis szerver Cygwin segtsgvel fut Windows NT s Win2k
   rendszereken. Tovbbi informcio tallhato a pgsql/doc/FAQ_MSWIN
d215 19
a233 20
   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

d236 2
d239 11
a249 17
 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:

d251 2
a252 2

   A kereskedelmi termktmogatst nyjto cgek listja elrhet itt:
d254 11
a264 15

   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
a265 1

d267 2
a268 2

   Kt PostgreSQL knyv rhet el az interneten a
d270 4
a273 3
   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:
d275 8
a282 8

   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?

d285 18
a302 18

   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?

d304 6
a309 6
   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
d312 1
a312 1

d314 7
a320 7
   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:
d323 99
a421 101

   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.

d424 13
a436 13

   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:

d447 2
a448 1
   Tovbbi programozsi felletek rhetek el a
d452 13
a464 12
     ----------------------------------------------------------------------

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?

d466 25
a490 24
   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.

d492 7
a498 7
   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?

d500 11
a510 11
   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.

d513 12
a524 13
   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 
d527 3
a529 3

   A -S opcioval nvelheted a szerver tmeneti rendezsekre fenntartott
   memoria terlett. Az rtket kilobyteban add meg. Az alaprtelmezett
d531 2
a532 2

   Hasznlhatod a CLUSTER utastst is, hogy a tblkat egy indexnek
d535 14
a548 22

   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:

d550 8
a557 9

   ./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.
d560 6
a565 6
   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
d567 1
a567 1

d569 4
a572 4
   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
d574 2
a575 2

   A postgres program -s, -A s -t opcioi is nagyon hasznosak lehetnek
d577 11
a587 11

   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
d589 1
a589 1

d591 3
a593 3
   jrainditod a postmastert s -N opcioval meghatrotod az j rtket, vagy
   modositod a postgresql.conf-ot.

d596 5
a600 5
   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
d602 25
a626 25
   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
d628 29
a656 28
   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
d659 13
a671 21

   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;
d674 1
a674 1

d676 9
a684 16

     * 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
d687 17
a703 18

   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.
a704 1

d706 12
a717 18

 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)

d720 1
a720 1

d722 3
a724 4

   4.7) Hogy tudhatom meg milyen tblk, indexek, adatbzisok vagy
   felhasznlok

d726 1
a726 1

d728 7
a734 7
   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.

d736 1
a736 1

d738 3
a740 3
   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
d742 1
a742 1

d744 25
a768 29
   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.
d770 3
a772 2
     * A case-insensitive keress (ILIKE, ~*) nem hasznlnak indexet ehelyett
       funkcionlis indexet hasznlnak, amit a 4.12 pontban tallhatsz.
d774 50
a823 52
   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?
d825 2
d828 33
a860 36

   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

 );
d863 23
a885 33

 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')");
d888 2
a889 5
   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?
d891 4
a894 1
   Nem. A currval() funkcio a szerver processzed ltal adott rtket adja
d896 25
a920 26

   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
d922 12
a933 17

   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
d935 6
a940 7

   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)
d944 1
a944 1
     * helyettesit (replace), modosit (update)
d949 6
a954 5
   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
d956 12
d969 2
a970 16
   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?

d972 7
a978 7

   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)

d980 10
a989 9
   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?

d991 1
d993 9
a1001 14
 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);
d1004 12
a1015 17

 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);
d1018 3
a1020 5

 SELECT *

 FROM t1 LEFT OUTER JOIN t2 USING (col);

d1022 6
a1027 6
   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.

d1029 1
a1029 1
   kulcsszavakkal lehetett szimullni. Pldul a tab1 s a tab2
d1031 44
a1074 58

 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:

d1076 2
a1077 8

   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:

d1079 18
a1096 20

   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
d1098 4
a1101 4

   5.2) Hogyan lehet j adattpusokat s funkciokat hozzadni a PostgreSQL
   disztribciohoz?

d1104 9
a1112 9

   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
d1114 1
a1114 1

d1117 4
a1120 2
   hasznlsz felhasznlhatod a configure script --enable-depend opciojt, gy
   a compiler maga fogja ellenrizni a fggsgeket.
@


1.3.2.1
log
@Add Hungarian/Turkish FAQ's to 7.3.4.
@
text
@@


1.2
log
@Update Hungarian FAQ, from Laszlo Hornyak
@
text
@d2 14
a15 8
   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:
d17 196
a212 127
   _________________________________________________________________
   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
d215 25
a239 12
   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:
d241 208
a448 117
   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
d451 14
a464 5
   _________________________________________________________________
   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?
d467 9
a475 6
   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
d478 44
a521 31
   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.
d523 2
a524 2
   mretnek nvelshez. Ha az rtket tl magasra lltod, lehet hogy a
   postmaster nem indul el, mert tllpted az opercis rendszer ltal
d526 28
a553 15
   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
d555 17
a571 14
   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"
d573 18
a590 11
   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
d592 92
a683 58
   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
d685 78
a762 48
   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;
d764 124
a887 70
   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
d889 26
a914 16
   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.
d917 34
a950 22
   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:
d952 126
a1077 69
   /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:
d1079 37
a1115 21
   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.
d1119 2
@


1.1
log
@Add Hugarian FAQ, from Laszlo Hornyak
@
text
@d2 8
a9 10
                PostgreSQL GyIK
   Utols mdosts dtuma: 2002 Okt 20.             
   
   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.
   
   Platform specifikus krdsek:
d11 127
a137 196
     _________________________________________________________________
   
                             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 lassuak 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 megallhatod 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 
d140 130
a269 240
   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
    
   Az kivonatot minden tagnak elkldi a szerver, amikor a f listn
   sszegylt krlbell 30k zenet.
   
   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 gy?jtemnye:
   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 felhasznlonk 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 nem rendelkezik. 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,
          We are free for all use, both commercial and non-commercial.
          You can add our code to your product with no limitations,
          except those outlined in our BSD-style license stated above.
          
    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.
   
     _________________________________________________________________
   
                           User Client Questions
                                      
    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 
d272 5
a276 14

     _________________________________________________________________
   
                          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?
   
d279 6
a284 9
   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 
d287 31
a317 44
   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 lehet?v
   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
   engedlyezi azt -i opcival a postmasternek, s nem llt be host 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.
   
d319 2
a320 2
   mretnek nvelshez. Ha az rtket tl magasra lltod, lehet hogy
   a postmaster nem indul el, mert tllpted az opercis rendszer ltal 
d322 15
a336 28
   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
d338 14
a351 17
   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" 
d353 11
a363 18
   processzhez, el tdsz hejezni trspontokat, majd folytathatod a inditst.
      
   A postgres program -s, -A s -t opcii is nagyon hasznosak lehetnek
   hibakeressnl s teljesitmny 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
d365 58
a422 92
   vagz 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 bels? adatstruktrk s
   adatllomnyok formtuma.Ezeka 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 dokumnetcijt, vagy hasznld a SELECT
   LIMIT-et.
   
   Az egsz lekrdezst vgre kell hajtani, mg akkor is, ha csak az als
   pr sort akarod megkapni. Gondolj arra, hogy a lekrdezsben lehet ORDER BY 
   is.  Ha van olyan index, ami megdfelel 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
   
d424 48
a471 78
   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 m?veletek 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 id?nknt 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;
   
d473 70
a542 124
   vagy a ~, az indexeket csak bizonyos krlmnyek kztt lehet hasznlni:
     * A keres string kezdete a keressi minta elejn kell hogz 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 initdbt.
           
    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
    mennzisg? tbla sszekapcsolsa esetn. Lehet?v 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
d544 16
a559 26
   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 adtottat.
   
    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.
   
d562 22
a583 34
   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 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 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:
d585 69
a653 126
   /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 lassuak 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:
d655 21
a675 37
   
    4.28) Milyen kdolsi lehetsgek vannak?
    
    - A cotrib/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.
a678 1
   
@
