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