2003-01-14 07:00:32 +08:00
|
|
|
|
|
2003-02-19 01:20:37 +08:00
|
|
|
|
PostgreSQL GyIK
|
|
|
|
|
Utols<6C> m<>dos<6F>t<EFBFBD>s d<>tuma: 2002 Okt 20.
|
|
|
|
|
Ford<72>t<EFBFBD>s aktualiz<69>l<EFBFBD>sa: 2003 janu<6E>r
|
|
|
|
|
|
|
|
|
|
A GyIK karbantart<72>ja: Bruce Momjian (pgman@candle.pha.pa.us)
|
|
|
|
|
Ford<72>t<EFBFBD>: Horny<6E>k L<>szl<7A> (hornyakl.NOSPAM@inf.elte.hu)
|
|
|
|
|
|
|
|
|
|
A legfrissebb verzi<7A> itt <20>rhet<65> el (angol):
|
|
|
|
|
http://www.PostgreSQL.org/docs/faq-english.html.
|
|
|
|
|
|
|
|
|
|
Legfrissebb magyar nyelv<6C> verzi<7A>:
|
|
|
|
|
http://www.rootshell.be/~hornyakl/downloads/postgres_faq/
|
|
|
|
|
|
|
|
|
|
Platform specifikus k<>rd<72>sek:
|
2003-01-14 07:00:32 +08:00
|
|
|
|
http://www.PostgreSQL.org/users-lounge/docs/faq.html.
|
2003-02-19 01:20:37 +08:00
|
|
|
|
_________________________________________________________________
|
|
|
|
|
|
|
|
|
|
<20>ltal<61>nos k<>rd<72>sek
|
|
|
|
|
|
|
|
|
|
1.1) Mi a PostgreSQL? Hogy kell kimondani?
|
|
|
|
|
1.2) Mik a PostgreSQL felhaszn<7A>l<EFBFBD>si felt<6C>telei?
|
|
|
|
|
1.3) Milyen UNIX oper<65>ci<63>s rendszereken fut PostgreSQL?
|
|
|
|
|
1.4) Milyen nem UNIX oper<65>ci<63>s rendszerek el<65>rhet<65>ek?
|
|
|
|
|
1.5) Hogyan tudok PostgreSQL-t szerezni?
|
|
|
|
|
1.6) Hogyan kapok term<72>kt<6B>mogat<61>st?
|
|
|
|
|
1.7) Melyik a legfrissebb kiad<61>s?
|
|
|
|
|
1.8) Milyen dokument<6E>ci<63> <20>ll rendelkez<65>sre?
|
|
|
|
|
1.9) Hogyan tal<61>lok inform<72>ci<63>t hib<69>kr<6B>l vagy hi<68>nyz<79> funkcional<61>t<EFBFBD>sr<73>l?
|
|
|
|
|
1.10) Hogy tanuljam meg az SQL nyelvet?
|
|
|
|
|
1.11) A PostgreSQL 2000. <20>v kompatibilis?
|
|
|
|
|
1.12) Hogyan lehet csatlakozni a fejleszt<7A> csapathoz?
|
|
|
|
|
1.13) Hogyan k<>ldjek hibajelent<6E>st?
|
|
|
|
|
1.14) Milyen a PostgreSQL m<>s DBMS-ekkel <20>sszehasonl<6E>tva?
|
|
|
|
|
1.15) Hogyan tudom <20>zletileg segiteni a PostgreSQL-t?
|
|
|
|
|
|
|
|
|
|
Felhaszn<7A>l<EFBFBD>i kliens k<>rd<72>sek
|
|
|
|
|
|
|
|
|
|
2.1) Van ODBC meghajt<6A> PostgreSQL-hez?
|
|
|
|
|
2.2) Milyen eszk<7A>z<EFBFBD>k <20>llnak rendelkez<65>sre PostgreSQL Web fejleszt<7A>sekhez?
|
|
|
|
|
2.3) Van a PostgreSQL-hez grafikus felhaszn<7A>l<EFBFBD>i fel<65>let ? Riport
|
|
|
|
|
gener<65>tor? Be<42>gyazott lek<65>rdez<65> nyelv fel<65>let?
|
|
|
|
|
2.4) Milyen programoz<6F>si nyelvekkel lehet el<65>rni a PostgreSQL szervert?
|
|
|
|
|
|
|
|
|
|
Adminisztr<74>ci<63>s k<>rd<72>sek
|
|
|
|
|
|
|
|
|
|
3.1) Hogyan tudom a PostgreSQL-t /usr/local/pgsql -t<>l elt<6C>r<EFBFBD> helyre
|
|
|
|
|
install<6C>lni?
|
|
|
|
|
3.2) AMikor elind<6E>tom a postmaster-t, egy "Bad System Call"-t vagy core
|
|
|
|
|
dump-ot kapok. Mi<4D>rt?
|
|
|
|
|
3.3) Amikor megpr<70>b<EFBFBD>lom inditani a postmaster-t, "IpcMemoryCreate" hib<69>kat
|
|
|
|
|
kapok. Mi<4D>rt?
|
|
|
|
|
3.4) Amikor megpr<70>b<EFBFBD>lom inditani a postmaster-t, "IpcSemaphoreCreate" hib<69>kat
|
|
|
|
|
kapok. Mi<4D>rt?
|
|
|
|
|
3.5) Hogyan tudom kontroll<6C>lni a m<>s g<>pekr<6B>l <20>rkez<65> kapcsolat k<>r<EFBFBD>seket?
|
|
|
|
|
3.6) Hogyan tudom nagyobb teljes<65>tm<74>nyre hangolni az adatb<74>zisomat?
|
|
|
|
|
3.7) Milyen hibakeres<65> lehet<65>s<EFBFBD>gek <20>rhet<65>ek el?
|
|
|
|
|
3.8) Mi<4D>rt kapok "Sorry, too many clients" hib<69>t csatlakoz<6F>sn<73>l?
|
|
|
|
|
3.9) Mi van pgsql_tmp k<>nyvt<76>rban?
|
|
|
|
|
3.10) Mi<4D>rt kell dumpolni <20>s <20>jrat<61>lteni PostgreSQL kiad<61>s v<>lt<6C>s<EFBFBD>n<EFBFBD>l?
|
|
|
|
|
|
|
|
|
|
M<>k<EFBFBD>dtet<65>si k<>rd<72>sek
|
|
|
|
|
|
|
|
|
|
4.1) Mi a k<>l<EFBFBD>nbs<62>g a bin<69>ris <20>s a norm<72>l kurzorok k<>z<EFBFBD>tt?
|
|
|
|
|
4.2) Hogyan tudom select-elni a lek<65>rdez<65>s els<6C> p<>r sor<6F>t?
|
|
|
|
|
4.3) Hogy tudom kilist<73>zni a t<>bl<62>kat vagy m<>s dolgokat a PostgreSQL-ben?
|
|
|
|
|
4.4) Hogyan tudok elt<6C>vol<6F>tani egy oszlopot egy t<>bl<62>b<EFBFBD>l?
|
|
|
|
|
4.5) Mi a maxim<69>lis m<>rete egy sornak, egy t<>bl<62>nak vagy egy adatb<74>zisnak?
|
|
|
|
|
4.6) Mekkora adatb<74>zis lemez ter<65>let sz<73>ks<6B>ges egy tipikus sz<73>veg <20>llom<6F>ny
|
|
|
|
|
t<>rol<6F>s<EFBFBD>hoz?
|
|
|
|
|
4.7) Hogy tudhatom meg milyen t<>bl<62>k, indexek, adatb<74>zisok vagy felhaszn<7A>l<EFBFBD>k
|
|
|
|
|
vannak defini<6E>lva?
|
|
|
|
|
4.8) A lek<65>rdez<65>seim lass<73>ak, vagy nem haszn<7A>lj<6C>k az indexeket. Mi<4D>rt?
|
|
|
|
|
4.9) Hogy tudom ellen<65>rizni, hogy optimaliz<69>lta a lek<65>rdez<65>s optimaliz<69>l<EFBFBD> a
|
|
|
|
|
lek<65>rdez<65>sem?
|
|
|
|
|
4.10) Mi az R-tree index?
|
|
|
|
|
4.11) Mi a Genetic Query Optimizer?
|
|
|
|
|
4.12) Hogyan tudok regexp keres<65>st <20>s case-insensitive regexp keres<65>st
|
|
|
|
|
haszn<7A>lni? Hogyan tudok indexet haszn<7A>lni case-insensitive keres<65>shez?
|
|
|
|
|
4.13) Hogyan tudom <20>szlelni egy lek<65>rdez<65>sban, ha egy mez<65> NULL?
|
|
|
|
|
4.14) Mi a k<>l<EFBFBD>nbs<62>g a k<>l<EFBFBD>nb<6E>z<EFBFBD> karaktert<72>pusok k<>z<EFBFBD>tt?
|
|
|
|
|
4.15.1) Hogyan tudok l<>trehozni automatikusan n<>vekv<6B> <20>rt<72>k<EFBFBD> mez<65>t?
|
|
|
|
|
4.15.2) Hogyan kaphatom meg egy SERIAL besz<73>r<EFBFBD>s <20>rt<72>k<EFBFBD>t?
|
|
|
|
|
4.15.3) A currval() <20>s a nextval() nem teremt holtpont vesz<73>lyes helyzetet
|
|
|
|
|
a felhaszn<7A>l<EFBFBD>k k<>z<EFBFBD>tt?
|
|
|
|
|
4.15.4) Mi<4D>rt nem haszn<7A>l<EFBFBD>dnak fel <20>jra a sequence sz<73>mok tranzakci<63> abort
|
|
|
|
|
eset<65>n?
|
|
|
|
|
Mi<4D>rt vannak probl<62>m<EFBFBD>k a serial oszlopok sz<73>moz<6F>s<EFBFBD>val?
|
|
|
|
|
4.16) Mi a OID? Mi a TID?
|
|
|
|
|
4.17) Mi a PostgreSQL-ben haszn<7A>lt kifejez<65>sek jelent<6E>se?
|
|
|
|
|
4.18) Mi<4D>rt kapom ezt a hib<69>t: "ERROR: Memory exhausted in
|
|
|
|
|
AllocSetAlloc()"?
|
|
|
|
|
4.19) Hogyan tudhatom meg PostgreSQL, milyen verzi<7A>t futtatok?
|
|
|
|
|
4.20) Mi<4D>rt kapok "invalid large obj descriptor" hib<69>t nagy objektumok
|
|
|
|
|
kezel<65>s<EFBFBD>n<EFBFBD>l?
|
|
|
|
|
4.21) Hogy hozhatok l<>tre olyan oszlopot, aminek alap<61>rtelmezett <20>r<EFBFBD>tke a
|
|
|
|
|
jelenlegi id<69>?
|
|
|
|
|
4.22) Mi<4D>rt olyan lass<73>ak az al-lek<65>rdez<65>seim IN-nel?
|
|
|
|
|
4.23) Hogyan tudok outer join-t v<>grehajtani?
|
|
|
|
|
4.24) Hogyan tudok t<>bb adatb<74>zison v<>grehajtani lek<65>rdez<65>st?
|
|
|
|
|
4.25) Hogy tudok t<>bb soros vagy oszlopos eredm<64>nyt visszaadni egy
|
|
|
|
|
funkci<63>b<EFBFBD>l?
|
|
|
|
|
4.26) Mi<4D>rt nem tudom megbizhat<61>an l<>trehozni <20>s t<>r<EFBFBD>lni az <20>tmeneti
|
|
|
|
|
t<>bl<62>kat a PL/pgSQL funkci<63>kban?
|
|
|
|
|
4.27) Milyen replik<69>ci<63>s lehet<65>s<EFBFBD>gek vannak?
|
|
|
|
|
4.28) Milyen k<>dol<6F>si lehet<65>s<EFBFBD>gek vannak?
|
|
|
|
|
|
|
|
|
|
A PostgreSQL kiterjeszt<7A>se
|
|
|
|
|
|
|
|
|
|
5.1) <20>rtam egy felhaszn<7A>l<EFBFBD>i funkci<63>t. Mi<4D>rt core dumpol az adatb<74>zis amikor
|
|
|
|
|
haszn<7A>lom?
|
|
|
|
|
5.2) Hogyan lehet <20>j adatt<74>pusokat <20>s funkci<63>kat hozz<7A>adni a PostgreSQL
|
|
|
|
|
disztrib<69>ci<63>hoz?
|
|
|
|
|
5.3) Hogyan lehet olyan C funkci<63>t <20>rni, ami Tuple-t ad vissza?
|
|
|
|
|
(t<>bb soros t<>bb oszlopos eredm<64>nyek)
|
|
|
|
|
5.4) Megv<67>ltoztattam egy forr<72>s <20>llom<6F>nyt. Mi<4D>rt nem v<>ltozik a bin<69>ris
|
|
|
|
|
<20>jraford<72>t<EFBFBD>s ut<75>n?
|
|
|
|
|
_________________________________________________________________
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<20>ltal<61>nos k<>rd<72>sek
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1.1) Mi a PostgreSQL? Hogy kell kimondani?
|
|
|
|
|
<20>gy ejstd ki: Post-Gres-Q-L.
|
|
|
|
|
(Vagy tal<61>n ink<6E>bb t<>ltsd le a kis mp3-at a PostgreSQL homepage-r<>l)
|
|
|
|
|
|
|
|
|
|
A PostgreSQL a POSTGRES adatb<74>zis management rendszer egy kieg<65>sz<73>t<EFBFBD>se,
|
|
|
|
|
ami egy k<>vetkez<65> gener<65>ci<63>s DBMS kutat<61>si protot<6F>pus. Megtartja a
|
|
|
|
|
POSTGRES adatmodell<6C>t <20>s gazdag adatt<74>pus v<>laszt<7A>k<EFBFBD>t, de a PostQuel
|
|
|
|
|
lek<65>rdez<65> nyelvet az SQL egy kiterjesztett verzi<7A>j<EFBFBD>val helyettes<65>ti.
|
|
|
|
|
A PostgreSQL szabad <20>s a teljes forr<72>sk<73>d hozz<7A>f<EFBFBD>rhet<65>.
|
|
|
|
|
|
|
|
|
|
A PostgreSQL fejleszt<7A>s<EFBFBD>t egy csapat v<>gzi, amelynek minden tagja
|
|
|
|
|
megtal<61>lhat<61> a PostgreSQL fejleszt<7A>i levelez<65>si list<73>n. A jelenlegi
|
|
|
|
|
koordin<69>tor Marc G. Fournier (scrappyp@PostgreSQL.org). Ez a csapat
|
|
|
|
|
felel<65>s minden fejleszt<7A>s<EFBFBD>rt.
|
|
|
|
|
|
|
|
|
|
A PostgreSQL 1.01 alkot<6F>i Andrew Yu <20>s Jolly Chen voltak. Sokan
|
|
|
|
|
j<>rultak hozz<7A> portol<6F>ssal, tesztel<65>ssel, hibakeres<65>ssel <20>s
|
|
|
|
|
fejleszt<7A>ssel. Az eredeti Postgres k<>d, amib<69>l a PostgreSQL sz<73>rmazik
|
|
|
|
|
Michael Stonebraker professzor ir<69>ny<6E>t<EFBFBD>sa alatt fejlesztettek az
|
|
|
|
|
egyetem programoz<6F>i, tanul<75>i <20>s v<>gzett tanul<75>i.
|
|
|
|
|
|
|
|
|
|
A szoftver ereeti neve Postgres volt. Amikor SQL funkcional<61>t<EFBFBD>ssal
|
|
|
|
|
eg<65>sz<73>tett<74>k ki 1995-ben, a nev<65>t Postgres95-re v<>ltoztatt<74>k. 1996
|
|
|
|
|
v<>g<EFBFBD>n kapta mai nev<65>t.
|
|
|
|
|
|
|
|
|
|
1.2) Mik a PostgreSQL felhaszn<7A>l<EFBFBD>si felt<6C>telei?
|
|
|
|
|
|
|
|
|
|
Az eredeti angol copyright sz<73>veg:
|
|
|
|
|
--------------------
|
|
|
|
|
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 leegyszer<65>s<EFBFBD>tve azt jelenti, hogy jogod van haszn<7A>lni a
|
|
|
|
|
szoftvert mindenf<6E>le ellenszolg<6C>ltat<61>s (p<>nz, stb) n<>lk<6C>l, a forr<72>s
|
|
|
|
|
k<>dot m<>dos<6F>thatod, <20>s tov<6F>bbadhatod, DE semmilyen, a szoftver haszn<7A>lat<61>b<EFBFBD>l
|
|
|
|
|
k<>vetkez<65> k<>rosod<6F>s<EFBFBD>rt nem v<>llal garanci<63>t a fejleszt<7A>.
|
|
|
|
|
|
|
|
|
|
A fenti a BSD licensz, egy klasszikus nyilt-forr<72>sk<73>d licensz. Nem
|
|
|
|
|
tartalmaz megszor<6F>t<EFBFBD>sokat arra, hogy a forr<72>sk<73>dot hogyan haszn<7A>lod fel.
|
|
|
|
|
Kedvelj<6C>k ezt a licensz form<72>t <20>s nem <20>ll sz<73>nd<6E>kunkban megv<67>ltoztatni.
|
|
|
|
|
|
|
|
|
|
1.3) Milyen UNIX oper<65>ci<63>s rendszereken fut PostgreSQL?
|
|
|
|
|
|
|
|
|
|
<20>ltal<61>ban minden UNIX-kompatibilis oper<65>ci<63>s rendszer k<>pes arra hogy
|
|
|
|
|
futtassa a PostgreSQL-t. Azokat a platformokat, amiken tesztelt<6C>k a
|
|
|
|
|
kiad<61>st megtal<61>lhatod a install<6C>ci<63>s utas<61>t<EFBFBD>sok k<>z<EFBFBD>tt.
|
|
|
|
|
|
|
|
|
|
1.4) Milyen nem UNIX oper<65>ci<63>s rendszerek el<65>rhet<65>ek?
|
|
|
|
|
|
|
|
|
|
Kliens
|
|
|
|
|
|
|
|
|
|
A libpq C f<>ggv<67>nyk<79>nyvt<76>rat, a psql-t <20>s m<>s fel<65>leteket le lehet <20>gy
|
|
|
|
|
ford<72>tani, hogy fussanak MS Windows oper<65>ci<63>s rendszereken. Ebben az esetben
|
|
|
|
|
a kliens MS Windows-on fut <20>s TCP/IP seg<65>ts<74>g<EFBFBD>vel kommunik<69>l a Unixon
|
|
|
|
|
fut<75> szerverrel. A "win32.mak" <20>llom<6F>ny a kiad<61>s r<>sze, ennek seg<65>ts<74>g<EFBFBD>vel
|
|
|
|
|
lehet Win32 platformokra leford<72>tani a libpq-t <20>s a psql-t. A PostgreSQL
|
|
|
|
|
ODBC kliensekkel is k<>pes kommunik<69>lni.
|
|
|
|
|
|
|
|
|
|
Szerver
|
|
|
|
|
|
|
|
|
|
Az adatb<74>zis szerver Cygwin seg<65>ts<74>g<EFBFBD>vel fut Windows NT <20>s Win2k
|
2003-01-14 07:00:32 +08:00
|
|
|
|
rendszereken. Tov<6F>bbi inform<72>ci<63> tal<61>lhat<61> a pgsql/doc/FAQ_MSWIN
|
|
|
|
|
<20>llom<6F>nyban <20>s a MS Windows FAQ-ban a k<>vetkez<65> helyen:
|
2003-02-19 01:20:37 +08:00
|
|
|
|
http://www.PostgreSQL.org/docs/faq-mswin.html.
|
|
|
|
|
|
|
|
|
|
Nat<61>v MS Windows NT/2000/XP portok jelenleg fejleszt<7A>s alatt <20>llnak.
|
|
|
|
|
|
|
|
|
|
1.5) Hogyan tudok PostgreSQL-t szerezni?
|
|
|
|
|
|
|
|
|
|
Az els<6C>dleges anonim ftp oldal:
|
|
|
|
|
ftp://ftp.PostgreSQL.org/pub.
|
|
|
|
|
A t<>k<EFBFBD>r oldalak list<73>ja megtal<61>lhat<61> a f<> weboldalunkon.
|
|
|
|
|
|
|
|
|
|
1.6) Hogyan kapok term<72>kt<6B>mogat<61>st?
|
|
|
|
|
|
|
|
|
|
Az els<6C>dleges lista a pgsql-general@postgresql.org. Ez haszn<7A>lhat<61>
|
|
|
|
|
a PostgreSQL-lel kapcsolatos p<>rbesz<73>dekre. Ha fel szeretn<74>l <20>ratkozni,
|
|
|
|
|
k<>ldj egy levelet a k<>vetkez<65> tartalommal (nem t<>rggyal) a
|
|
|
|
|
pgsql-general-request@postgresql.org c<>mre:
|
|
|
|
|
subscribe
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
Van egy hib<69>kkal kapcsolatos levelez<65>si lista is:
|
|
|
|
|
pgsql-bugs-request@PostgreSQL.org a k<>vetkez<65> tartalommal:
|
|
|
|
|
subscribe
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
A fejleszt?i levelez<65>si lista:
|
2003-02-04 20:32:41 +08:00
|
|
|
|
pgsql-hackers-request@PostgreSQL.org a k<>vetkez<65> tertalommal:
|
2003-02-19 01:20:37 +08:00
|
|
|
|
subscribe
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
Egy<67>b levelez<65>si list<73>k tal<61>lhat<61>ak a weboldalunkon:
|
|
|
|
|
|
|
|
|
|
http://www.PostgreSQL.org
|
|
|
|
|
|
|
|
|
|
Van egy IRC csatorna is #PostgreSQL n<>ven ahol felteheted k<>r<EFBFBD>dseid.
|
|
|
|
|
A k<>vetkez<65> unix paranccsal csatlakozhatsz:
|
|
|
|
|
irc -c '#PostgreSQL' "$USER" irc.phoenix.net.
|
|
|
|
|
|
|
|
|
|
A kereskedelmi term<72>kt<6B>mogat<61>st ny<6E>jt<6A> c<>gek list<73>ja el<65>rhet<65> itt:
|
|
|
|
|
http://www.PostgreSQL.org/users-lounge/commercial-support.html
|
|
|
|
|
|
|
|
|
|
1.7) Melyik a legfrissebb kiad<61>s?
|
|
|
|
|
|
|
|
|
|
A legfrissebb PostgreSQL kiad<61>s a 7.3.
|
|
|
|
|
|
|
|
|
|
A tervek szerint minden negyedik h<>napban van <20>j kiad<61>s.
|
|
|
|
|
|
|
|
|
|
1.8) Milyen dokument<6E>ci<63> <20>ll rendelkez<65>sre?
|
|
|
|
|
|
|
|
|
|
Sz<53>mos k<>zik<69>nyv, man oldalak <20>s kis teszt p<>ld<6C>k tal<61>lhat<61>ak a kiad<61>sban
|
|
|
|
|
a doc/ k<>nyvt<76>r alatt. Az interneten is olvashatod a dokument<6E>ci<63>t a
|
|
|
|
|
k<>vetkez<65> c<>men:
|
|
|
|
|
http://www.PostgreSQL.org/users-lounge/docs/.
|
|
|
|
|
|
|
|
|
|
K<>t PostgreSQL k<>nyv <20>rhet<65> el az interneten a
|
|
|
|
|
http://www.PostgreSQL.org/docs/awbook.html <20>s a
|
|
|
|
|
http://www.commandprompt.com/ppbook/ c<>meken.
|
|
|
|
|
A megv<67>s<EFBFBD>rolhat<61> k<>nyvek list<73>ja itt tal<61>lhat<61>:
|
|
|
|
|
http://www.ca.PostgreSQL.org/books/.
|
|
|
|
|
A PostgreSQL-lel kapcsolatos technikai jelleg<65> cikkek gy<67>jtem<65>nye:
|
|
|
|
|
http://techdocs.PostgreSQL.org/.
|
|
|
|
|
|
|
|
|
|
A psql parancs rendelkezik n<>h<EFBFBD>ny \d utas<61>t<EFBFBD>ssal, amellyekkel list<73>zhat<61>ak
|
|
|
|
|
az oper<65>torok, a funkci<63>k, stb.
|
|
|
|
|
|
|
|
|
|
A website is tartalmaz tov<6F>bbi dokument<6E>ci<63>kat.
|
|
|
|
|
|
|
|
|
|
1.9) Hogyan tal<61>lok inform<72>ci<63>t hib<69>kr<6B>l vagy hi<68>nyz<79> funkcional<61>t<EFBFBD>sr<73>l?
|
|
|
|
|
|
|
|
|
|
A PostgreSQLaz SQL-92 szabv<62>ny egy kieg<65>sz<73>t<EFBFBD>se. N<>zd meg a TODO list<73>kat
|
|
|
|
|
ha <20>rdekelnek az ismert hib<69>k.
|
|
|
|
|
|
|
|
|
|
1.10) Hogy tanuljam meg az SQL nyelvet?
|
|
|
|
|
|
|
|
|
|
A PostgreSQL k<>nyv a http://www.PostgreSQL.org/docs/awbook.html
|
|
|
|
|
c<>men tartalmaz SQL alapokat. El<45>rhet<65> egy m<>sik SQL k<>nyv is a
|
|
|
|
|
http://www.commandprompt.com/ppbook c<>men. Egy sz<73>p oktat<61> anyag
|
|
|
|
|
tal<61>lhat<61> a http://www.intermedia.net/support/sql/sqltut.shtm,
|
|
|
|
|
a http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM
|
|
|
|
|
<20>s a http://sqlcourse.com oldalakon.
|
|
|
|
|
|
|
|
|
|
Egy m<>sik lehet<65>s<EFBFBD>g a "Tan<61>tsd magad 21 nap alatt SQL-re, m<>sodik
|
|
|
|
|
kiad<61>s" a http://members.tripod.com/er4ebus/sql/index.htm.
|
|
|
|
|
|
|
|
|
|
Sok felhaszn<7A>l<EFBFBD>nak tetszett a gyakorlati SQL k<>nyv ("The Practical
|
|
|
|
|
SQL Handbook").
|
|
|
|
|
|
|
|
|
|
1.11) A PostgreSQL 2000. <20>v kompatibilis?
|
|
|
|
|
|
|
|
|
|
Igen, k<>nnyed<65>n kezeli a 2000 ut<75>ni <20>s id<69>sz<73>m<EFBFBD>t<EFBFBD>sunk el<65>tt 2000 el<65>tti
|
|
|
|
|
d<>tumokat is.
|
|
|
|
|
|
|
|
|
|
1.12) Hogyan lehet csatlakozni a fejleszt<7A> csapathoz?
|
|
|
|
|
|
|
|
|
|
El<45>ssz<73>r is t<>ltsd le a forr<72>sk<73>dot, <20>s olvasd el a PostgreSQL
|
|
|
|
|
fejleszt<7A>i dokumnet<65>ci<63>t a web oldalunkon vagy a kiad<61>sban. Ezut<75>n
|
|
|
|
|
<20>ratkozz fel a pgsql-hackers <20>s a pgsql-patches levelez<65>si list<73>kra.
|
|
|
|
|
V<>g<EFBFBD>l pedig k<>ldj be magas szinvonal<61> patch-eket a pgsql-patches list<73>ra.
|
|
|
|
|
|
|
|
|
|
Van egy p<>r ember, akiknek commit privil<69>giumuk a PostgreSQL CVS f<>n.
|
|
|
|
|
<20>k olyan sok magas szinvonal<61> patch-et k<>ldtek be, hogy az addigi
|
|
|
|
|
csapat m<>r nem tudta k<>vetni, <20>s nem volt k<>ts<74>g<EFBFBD>nk arr<72>l, hogy a
|
|
|
|
|
patch-ek amiket <20>k k<>ldenek j<> min<69>s<EFBFBD>g<EFBFBD>.
|
|
|
|
|
|
|
|
|
|
1.13) Hogyan k<>ldjek hibajelent<6E>st?
|
|
|
|
|
|
|
|
|
|
L<>togass el a BugTool oldalra:
|
|
|
|
|
http://www.PostgreSQL.org/bugs/bugs.php
|
|
|
|
|
Itt megtal<61>lod k<>vetend<6E> utas<61>t<EFBFBD>sokat.
|
|
|
|
|
|
|
|
|
|
Ellen<65>rizd az ftp oldalunkon is, hogy nincs-e <20>jabb verzi<7A> vagy folt.
|
|
|
|
|
ftp://ftp.PostgreSQL.org/pub
|
|
|
|
|
|
|
|
|
|
1.14) Milyen a PostgreSQL m<>s DBMS-ekkel <20>sszehasonl<6E>tva?
|
|
|
|
|
|
|
|
|
|
Sz<53>mos n<>z<EFBFBD>pontb<74>l lehet vizsg<73>lni a szoftvert: k<>pess<73>gek, teljes<65>tm<74>ny
|
|
|
|
|
megb<67>zhat<61>s<EFBFBD>g, t<>mogatotts<74>g <20>s <20>r.
|
|
|
|
|
|
|
|
|
|
K<>pess<73>gek
|
|
|
|
|
A PostgreSQL rendelkezik a nagy, kereskedelmi DBMS-ek k<>pess<73>geivel:
|
|
|
|
|
tranzakci<63>k, al-lek<65>rdez<65>sek, triggerek, n<>zetek, k<>ls<6C> kulcsok,
|
|
|
|
|
integr<67>t<EFBFBD>s <20>s kifinoult z<>rmechanizmusok. Van n<>h<EFBFBD>ny k<>pess<73>ge,
|
|
|
|
|
ami a kereskedelmi adatb<74>zisokb<6B>l hi<68>nyzik, mint p<>ld<6C>ul a
|
|
|
|
|
felhaszn<7A>l<EFBFBD> <20>ltal defini<6E>lt t<>pusok, <20>r<EFBFBD>kl<6B>d<EFBFBD>s, szab<61>lyok <20>s
|
|
|
|
|
verzi<7A> kontroll a z<>rol<6F>si vit<69>k reduk<75>l<EFBFBD>s<EFBFBD><73>rt.
|
|
|
|
|
|
|
|
|
|
Teljes<65>tm<74>ny
|
|
|
|
|
A PostgreSQL teljes<65>tm<74>nye hasonl<6E>t a kereskedelmi <20>s m<>s ny<6E>lt
|
|
|
|
|
adatb<74>zis szerverek<65>hez. Lehet bizonyos esetekben lassabb, m<>sokban
|
|
|
|
|
gyorsabb. A MySQL nev<65> tanul<75> RDBMS p<>ld<6C>ul gyorsabban hajt v<>gre
|
|
|
|
|
insert/update m<>veleteket, mivel a tranzakci<63>kat elsum<75>kolja.
|
|
|
|
|
Persze a MySQL nem rendelkezik a k<>pess<73>gek r<>szben felsoroltak
|
|
|
|
|
nagy r<>sz<73>vel. Mi a megb<67>zhat<61>s<EFBFBD>gra <20>s a k<>pess<73>gekre <20>p<EFBFBD>t<EFBFBD>nk, b<>r
|
|
|
|
|
a teljes<65>tm<74>ny is n<> minden kiad<61>ssal. Van egy <20>rdekes oldal a
|
|
|
|
|
MySQL <20>s a PostgreSQL <20>sszehasonl<6E>t<EFBFBD>s<EFBFBD>val a
|
|
|
|
|
http://openacs.org/philosophy/why-not-mysql.html c<>men.
|
|
|
|
|
|
|
|
|
|
Megb<67>zhat<61>s<EFBFBD>g
|
|
|
|
|
Tudjuk hogy ha egy DBMS nem megb<67>zhat<61>, akkor teljesen haszontalan.
|
|
|
|
|
Igyeksz<73>nk j<>l tesztelt, stabil k<>dot kiadni, amiben a lehet<65>
|
|
|
|
|
legkevesebb hiba van. Minden kiad<61>s el<65>tt eltellik legal<61>bb 1
|
|
|
|
|
h<>nap b<>ta teszt, <20>s a kiad<61>si t<>rt<72>net is azt mutatja, hogy
|
|
|
|
|
stabil k<>dot adunk ki, ami k<>szen <20>ll a produkt<6B>v felhaszn<7A>l<EFBFBD>sra.
|
|
|
|
|
<20>gy gondoljuk, fel<65>lm<6C>lunk m<>s adatb<74>zis szoftvereket ezen a t<>ren.
|
|
|
|
|
|
|
|
|
|
T<>mogat<61>s
|
|
|
|
|
A levelez<65>si list<73>ink kapcsolatot teremtenek a fejleszt<7A>k
|
|
|
|
|
<20>s felhaszn<7A>l<EFBFBD>k csoportj<74>val , akik seg<65>tenek a probl<62>m<EFBFBD>k
|
|
|
|
|
megold<6C>s<EFBFBD>ban. B<>r nem tudjuk garant<6E>lni hogy ki tudjuk
|
|
|
|
|
jav<61>tani a hib<69>t, m<>s, kereskedelmi adatb<74>zis c<>gek sem tudj<64>k.
|
|
|
|
|
A fejleszt<7A> csoport k<>zvetlen el<65>r<EFBFBD>si lehet<65>s<EFBFBD>ge, a k<>z<EFBFBD>ss<73>g,
|
|
|
|
|
a dokument<6E>ci<63> <20>s a forr<72>sk<73>d gyakran t<>mogat<61>st biztos<6F>t,
|
|
|
|
|
mint m<>s adatb<74>zisokn<6B>l. Van kereskedelmi, alkalmi t<>mogat<61>s
|
|
|
|
|
azoknak, akiknek sz<73>ks<6B>ge van r<> (l<>sd: 1.6).
|
|
|
|
|
|
|
|
|
|
<20>r
|
|
|
|
|
A PostgreSQL szabad b<>rmilyen felhaszn<7A>l<EFBFBD>sra, ak<61>r kereskedelmire
|
|
|
|
|
is. A term<72>khez hozz<7A>adhatod a saj<61>t forr<72>sk<73>djaidat korl<72>toz<6F>s
|
|
|
|
|
n<>lk<6C>l,
|
|
|
|
|
|
|
|
|
|
1.15) Hogyan tudom <20>zletileg segiteni a PostgreSQL-t?
|
|
|
|
|
|
|
|
|
|
A PostgreSQL els<6C> oszt<7A>ly<6C> infrastrukt<6B>r<EFBFBD>val rendelkezik, amit 1996-ban
|
|
|
|
|
ind<6E>tottunk el. Mindent Marc Fourniernek k<>sz<73>nhet<65>nk, aki l<>trehozta
|
|
|
|
|
<20>s karbantartja a rendszert.
|
|
|
|
|
|
|
|
|
|
A min<69>s<EFBFBD>gi infrastrukt<6B>ra nagyon fontos egy nyilt forr<72>s<EFBFBD> szoftver
|
|
|
|
|
eset<65>ben. Megv<67>d az olyan fennakad<61>sokt<6B>l, amelyek komoly k<>s<EFBFBD>seket
|
|
|
|
|
okoznak a fejleszt<7A>sekben.
|
|
|
|
|
|
|
|
|
|
Term<72>szetesen ez az infrastrukt<6B>ra nem olcs<63>. Sz<53>mos havi <20>s <20>lland<6E>
|
|
|
|
|
kiad<61>sunk van. Ha a c<>gednek van p<>nze, amivel t<>mogatn<74> er<65>fesz<73>t<EFBFBD>seinket,
|
|
|
|
|
k<>rlek l<>togass el a http://store.pgsql.com/shopping/ oldalra.
|
|
|
|
|
|
|
|
|
|
B<>r a weboldal "PostgreSQL, Inc"-k<>nt eml<6D>ti, a hozz<7A>j<EFBFBD>rul<75>sok kiz<69>r<EFBFBD>lag
|
|
|
|
|
a PostgreSQL fejleszt<7A>sre <20>rtend<6E>ek, <20>s nem egy meghat<61>rozott c<>gnek. Ha
|
|
|
|
|
jobban tetszik, k<>ldhetsz csekket is a kapcsolati c<>mek b<>rmelyik<69>re.
|
|
|
|
|
|
|
|
|
|
_________________________________________________________________
|
|
|
|
|
|
|
|
|
|
Felhaszn<7A>l<EFBFBD>i kliens k<>rd<72>sek
|
|
|
|
|
|
|
|
|
|
2.1) Van ODBC meghajt<6A> PostgreSQL-hez?
|
|
|
|
|
|
|
|
|
|
K<>t ODBC meghajt<6A> <20>rhet<65> el: PsqlODBC <20>s a OpenLink ODBC.
|
|
|
|
|
|
|
|
|
|
A PsqlODBC a PostgreSQL kiad<61>s r<>sze. Tov<6F>bbi inform<72>ci<63> tal<61>lhat<61> a
|
|
|
|
|
ftp://ftp.PostgreSQL.org/pub/odbc/ oldalon.
|
|
|
|
|
|
|
|
|
|
Az OpenLink ODBC-t a http://www.openlinksw.com c<>mr<6D>l t<>ltheted le.
|
|
|
|
|
Ez az <20> szabv<62>nyos ODBC kliens szoftver<65>kkel m<>k<EFBFBD>dik, <20>gy minden
|
|
|
|
|
<20>ltaluk t<>mogatott platformon (Win, Mac, Unix, VMS) el<65>rhet<65> lesz
|
|
|
|
|
a PostgreSQL szerver.
|
|
|
|
|
|
|
|
|
|
Tal<61>n olyan vev<65>knek fogj<67>k eladni, akik kereskedelmi min<69>s<EFBFBD>g<EFBFBD> term<72>ket
|
|
|
|
|
szeretn<74>nek kapni, de a freeware verzi<7A> mindig el<65>rhet<65> lesz. K<>rd<72>seidet
|
|
|
|
|
a term<72>kkel kapcsolatban a postgres95@openlink.co.uk c<>men teheted fel.
|
|
|
|
|
|
|
|
|
|
Olvasd el az ODBC fejezetet is a programoz<6F>k k<>zik<69>nyv<79>ben!
|
|
|
|
|
|
|
|
|
|
2.2) Milyen eszk<7A>z<EFBFBD>k <20>llnak rendelkez<65>sre PostgreSQL Web fejleszt<7A>sekhez?
|
|
|
|
|
|
|
|
|
|
Egy sz<73>p bemutat<61> olvashat<61> az adatb<74>zissal t<>mogatott web oldalanr<6E>l
|
|
|
|
|
a http://www.webreview.com weboldalon.
|
|
|
|
|
|
|
|
|
|
A web integr<67>ci<63>hoz a PHP egy kiv<69>ll<6C> szoftver. Let<65>lthet<65> a
|
|
|
|
|
http://www.php.net c<>mr<6D>l.
|
|
|
|
|
|
|
|
|
|
Komplexebb esetekre sokan haszn<7A>lj<6C>k a Perl fel<65>letet <20>s a CGI.pm vagy a
|
|
|
|
|
mod_perl-t.
|
|
|
|
|
|
|
|
|
|
2.3) Van a PostgreSQL-hez grafikus felhaszn<7A>l<EFBFBD>i fel<65>let? Riport
|
|
|
|
|
gener<65>tor? Be<42>gyazott lek<65>rdez<65> nyelv fel<65>let?
|
|
|
|
|
|
|
|
|
|
Van egy sz<73>p PgAccess nev<65> grafikus fel<65>let<65>nk, ami riport gener<65>tork<72>nt
|
|
|
|
|
is haszn<7A>lhat<61>. A weboldal<61>t megtal<61>lod a http://www.pgaccess.org/ c<>men.
|
|
|
|
|
|
|
|
|
|
A disztrib<69>ci<63> tartalmazza az ecpg programot is, ami egy be<62>gyazott SQL
|
|
|
|
|
lek<65>rdez<65>si fel<65>let C nyelvhez.
|
|
|
|
|
|
|
|
|
|
2.4) Milyen programoz<6F>si nyelvekkel lehet el<65>rni a PostgreSQL szervert?
|
|
|
|
|
|
|
|
|
|
A k<>vetkez<65>k:
|
|
|
|
|
* 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)
|
|
|
|
|
|
|
|
|
|
Tov<6F>bbi programoz<6F>si fel<65>letek <20>rhet<65>ek el a
|
2003-01-14 07:00:32 +08:00
|
|
|
|
http://www.PostgreSQL.org/interfaces.html <20>s a
|
|
|
|
|
http://gborg.PostgreSQL.org oldalakon.
|
2003-02-19 01:20:37 +08:00
|
|
|
|
|
|
|
|
|
_________________________________________________________________
|
|
|
|
|
|
|
|
|
|
Adminisztr<74>ci<63>s k<>rd<72>sek
|
|
|
|
|
|
|
|
|
|
3.1) Hogyan tudom a PostgreSQL-t /usr/local/pgsql -t<>l elt<6C>r<EFBFBD> helyre
|
|
|
|
|
install<6C>lni?
|
|
|
|
|
|
|
|
|
|
A configure script --prefix param<61>ter<65>nek haszn<7A>lat<61>val.
|
|
|
|
|
|
|
|
|
|
3.2) AMikor elind<6E>tom a postmaster-t, egy "Bad System Call"-t vagy core
|
|
|
|
|
dump-ot kapok.
|
|
|
|
|
Mi<4D>rt?
|
|
|
|
|
|
2003-01-14 07:00:32 +08:00
|
|
|
|
Sz<53>mos probl<62>ma lehet, de legel<65>ssz<73>r ellen<65>rizd le, hogy a kerneled
|
|
|
|
|
System V kieg<65>sz<73>t<EFBFBD>sekkel rendelkezik-e. A PostgreSQL haszn<7A>lja a
|
2003-02-19 01:20:37 +08:00
|
|
|
|
kernel osztott mem<65>ria <20>s szemafor API-j<>t.
|
|
|
|
|
|
|
|
|
|
3.3) Amikor megpr<70>b<EFBFBD>lom inditani a postmaster-t, "IpcMemoryCreate" hib<69>kat
|
|
|
|
|
kapok. Mi<4D>rt?
|
|
|
|
|
|
|
|
|
|
Vagy nincs megfelel<65>en konfigur<75>lva a kerneled osztott mem<65>ria t<>mogat<61>sa
|
|
|
|
|
vagy meg kell nagyobb<62>tanod a maxim<69>lis osztott mem<65>ria m<>retet.
|
|
|
|
|
A pontos m<>ret sz<73>ks<6B>glet f<>gg az architekt<6B>r<EFBFBD>dt<64>l <20>s att<74>l hogy h<>ny
|
|
|
|
|
buffert <20>s processzt konfigur<75>lsz a postmasternek. Legal<61>bb 1 MB
|
2003-01-14 07:00:32 +08:00
|
|
|
|
ter<65>letre sz<73>ks<6B>ged van. A PostgreSQL Adminisztr<74>ci<63> k<>zik<69>nyvben
|
|
|
|
|
olvashatsz r<>szletesebb inform<72>ci<63>kat az osztott mem<65>ri<72>r<EFBFBD>l <20>s a
|
2003-02-19 01:20:37 +08:00
|
|
|
|
szemaforokr<6B>l.
|
|
|
|
|
|
|
|
|
|
3.4) Amikor megpr<70>b<EFBFBD>lom inditani a postmaster-t, "IpcSemaphoreCreate"
|
|
|
|
|
hib<69>kat kapok. Mi<4D>rt?
|
|
|
|
|
|
|
|
|
|
Ha a hiba<62>zenet ez: " IpcSemaphoreCreate: semget failed (No space
|
|
|
|
|
left on device)", akkor a kerneled konfigur<75>ci<63>ja nem tesz lehet<65>v<EFBFBD>
|
|
|
|
|
elegend<6E> szemafort. A PostgreSQL szerver processzenk<6E>nt 1 szemafort
|
|
|
|
|
ig<69>nyel. Egy <20>tmeneti megold<6C>s lehet az hogy a postmastert kevesebb
|
|
|
|
|
maxim<69>lis processz sz<73>mmal inditod el. Haszn<7A>ld a -D param<61>tert.
|
|
|
|
|
Egy sokkal megfelel<65>bb megold<6C>s az ha n<>veled a kerneled SEMMNS
|
|
|
|
|
<20>s SEMMNI param<61>tereit.
|
|
|
|
|
|
|
|
|
|
A hib<69>s szemaforok is adat<61>zis lerobban<61>s<EFBFBD>hoz is vezethet nagy terhel<65>s
|
|
|
|
|
eset<65>n.
|
|
|
|
|
Ha a hiba<62>zenet valami m<>s, lehet hogy nincs szemaforok t<>mogat<61>s
|
|
|
|
|
forditva a kerneledbe. Olvasd el a PostgreSQL adminisztr<74>torok
|
|
|
|
|
k<>zik<69>nyv<79>ben az osztott mem<65>ri<72>r<EFBFBD>l <20>s a szemaforokr<6B>l sz<73>l<EFBFBD> fejezetet.
|
|
|
|
|
|
|
|
|
|
3.5) Hogyan tudom kontroll<6C>lni a m<>s g<>pekr<6B>l <20>rkez<65> kapcsolat k<>r<EFBFBD>seket?
|
|
|
|
|
|
|
|
|
|
Alap<61>rtelmez<65>sben a PostgreSQL a helyi kapcsolatokat Unix socketekkel
|
|
|
|
|
val<61>s<EFBFBD>tja meg. M<>s g<>pek nem lesznek k<>pesek csatlakozni, ha nem
|
|
|
|
|
enged<65>lyezed azt -i opci<63>val a postmasternek, <20>s nem <20>ll<6C>tod be host a
|
|
|
|
|
alap<61> azonos<6F>t<EFBFBD>st a pg_hba.conf <20>llom<6F>nyban. Ezzel v<>lnak lehet<65>v<EFBFBD> a TCP/IP
|
|
|
|
|
kapcsolatok.
|
|
|
|
|
|
|
|
|
|
3.6) Hogyan tudom nagyobb teljes<65>tm<74>nyre hangolni az adatb<74>zisomat?
|
|
|
|
|
|
|
|
|
|
Az indexel<65>s felt<6C>tlen<65>l gyors<72>tja a lek<65>rdez<65>seket. Az EXPLAIN
|
|
|
|
|
parancs lehet<65>v<EFBFBD> teszi hogy l<>sd, hogy a PostgreSQL mik<69>nt interpret<65>lja
|
|
|
|
|
a lek<65>rdez<65>st <20>s melyik indexet haszn<7A>lja.
|
|
|
|
|
|
|
|
|
|
Ha sok INSERT m<>veletet hajtassz v<>gre, csin<69>ld nagy k<>tegekben a COPY
|
|
|
|
|
paranccsal. Ez sokkal gyorsabb mint az egyedi INSERT parancsok. M<>sodszor:
|
|
|
|
|
Azok a m<>veletek, amelyek nincsenek tranzakci<63> blokkon bel<65>l, azok saj<61>t
|
|
|
|
|
tranzakci<63>t ind<6E>tanak. Sok m<>veletet <20>rdemes egy tranzakci<63>n bel<65>l
|
|
|
|
|
v<>grehajtani. Ez cs<63>kkenti a tranzakci<63> kezel<65>s t<>bbletidej<65>t. Az indexeket
|
|
|
|
|
javasolt a nagy adatv<74>ltoz<6F>sok el<65>tt elt<6C>vol<6F>tani, majd <20>jra l<>trehizni.
|
|
|
|
|
|
|
|
|
|
Sz<53>mos teljes<65>tm<74>ny jav<61>t<EFBFBD> lehet<65>s<EFBFBD>g van. Kikapcsolhatod az fsync()
|
|
|
|
|
m<>veletet a postmaster -o -F opci<63>kval val<61> ind<6E>t<EFBFBD>sakor. <20>gy nem fog
|
|
|
|
|
az amugy lass<73> fsync() f<>ggv<67>ny megh<67>v<EFBFBD>dni minden tranzakci<63> v<>g<EFBFBD>n.
|
|
|
|
|
|
2003-01-14 07:00:32 +08:00
|
|
|
|
Haszn<7A>lhatod a postmaster -B opci<63>j<EFBFBD>t is az osztott mem<65>ria szegmens
|
2003-02-19 01:20:37 +08:00
|
|
|
|
m<>ret<65>nek n<>vel<65>s<EFBFBD>hez. Ha az <20>rt<72>ket t<>l magasra <20>ll<6C>tod, lehet hogy
|
|
|
|
|
a postmaster nem indul el, mert t<>ll<6C>pted az oper<65>ci<63>s rendszer <20>ltal
|
2003-01-14 07:00:32 +08:00
|
|
|
|
megengedett m<>retet. Minden buffer 8K m<>ret<65> <20>s alap<61>rtelmez<65>sban 64
|
2003-02-19 01:20:37 +08:00
|
|
|
|
buffer van.
|
|
|
|
|
|
|
|
|
|
A -S opci<63>val n<>velheted a szerver <20>tmeneti rendez<65>sekre fenntartott
|
|
|
|
|
mem<65>ria ter<65>let<65>t. Az <20>rt<72>ket kilobyteban add meg. Az alap<61>rtelmezett
|
|
|
|
|
<20>rt<72>k 512K.
|
|
|
|
|
|
|
|
|
|
Haszn<7A>lhatod a CLUSTER utas<61>t<EFBFBD>st is, hogy a t<>bl<62>kat egy indexnek
|
|
|
|
|
megfelel<65>en csoportos<6F>tsd. Olvasd el a CLUSTER k<>zik<69>nyv oldalt tov<6F>bbi
|
|
|
|
|
r<>szletek<65>rt.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3.7) Milyen hibakeres<65> lehet<65>s<EFBFBD>gek <20>rhet<65>ek el?
|
|
|
|
|
|
|
|
|
|
A PostgreSQL sz<73>mos lehet<65>s<EFBFBD>ggel rendelkezik ami <20>rt<72>kes lehet a hiba-
|
|
|
|
|
keres<65>sn<73>l.
|
|
|
|
|
|
|
|
|
|
El<45>ssz<73>r is, futtathatod a configure scriptet --enable-cassert
|
|
|
|
|
opci<63>val, sok assert() funkci<63>hiv<69>s ellen<65>rzi a program fut<75>s<EFBFBD>t <20>s
|
|
|
|
|
meg<65>llitja ha valami v<>ratlan hiba t<>rt<72>nik.
|
|
|
|
|
|
|
|
|
|
Mind a postmaster <20>s a postgres sz<73>mos hibakeres<65> lehet<65>s<EFBFBD>ggel rendelkezik.
|
|
|
|
|
Mindig amikor elinditod a postmastert, gy<67>z<EFBFBD>dj meg r<>la, hogy a kimenetet
|
|
|
|
|
log <20>llom<6F>nyba k<>ld<6C>d. Igy:
|
|
|
|
|
cd /usr/local/pgsql
|
|
|
|
|
./bin/postmaster >server.log 2>&1 &
|
|
|
|
|
|
|
|
|
|
Ez egy server.log <20>llom<6F>nyt hoz l<>tre a fels<6C> PostgreSQL k<>nyvt<76>rban.
|
|
|
|
|
Ez az <20>llom<6F>ny tartlamaz majd sz<73>mos hasznos inform<72>ci<63>t a szerverrel
|
2003-01-14 07:00:32 +08:00
|
|
|
|
kapcsolatos probl<62>m<EFBFBD>kr<6B>l <20>s hib<69>kr<6B>l. A postmaster -d opci<63>j<EFBFBD>val lehet
|
2003-02-19 01:20:37 +08:00
|
|
|
|
r<>szletesebb hibakeres<65> inform<72>ci<63>t kapni. A -d opci<63>hoz meg kell
|
|
|
|
|
hat<61>rozni egy hiba szintet. Vigy<67>zz, a magas hibakeres<65> szint nagy
|
|
|
|
|
log <20>llom<6F>nyt okozhat.
|
|
|
|
|
|
|
|
|
|
Ha a postmaster nem fut, akkor futtathatod a postgres szervert
|
|
|
|
|
parancssorb<72>l is, <20>s az SQL kifejez<65>st k<>zvetlen<65>l ennek adhatod <20>t.
|
|
|
|
|
Ez csak hibakeres<65>s eset<65>ben javasolt. Az <20>j sor a kifejez<65>s v<>g<EFBFBD>t jelenti,
|
|
|
|
|
nem a pontosvessz<73>. Ha hibakeres<65> opci<63>kkal forditottad a szervert,
|
|
|
|
|
haszn<7A>lhatsz egy debuggert is hogy l<>sd hogy mi t<>rt<72>nik. Mivel igy a
|
|
|
|
|
szervert nem a postmaster inditotta, nem t<>bbfelhaszn<7A>l<EFBFBD>s k<>rnyezetk<74>nt
|
|
|
|
|
fut, igy a z<>rol<6F>si <20>s a szerverek k<>z<EFBFBD>tti kommunik<69>ci<63>s hiba jelens<6E>gek
|
|
|
|
|
nem jelentkeznek.
|
|
|
|
|
|
|
|
|
|
Ha m<>r fut a postmaster, indits egy psql-t, <20>s n<>zd meg a szerver processz
|
|
|
|
|
PID-j<>t! Egy debuggert haszn<7A>lhatsz a processzhez csatlakoz<6F>shoz.
|
|
|
|
|
Be<42>llithatsz t<>r<EFBFBD>spontokat <20>s elindithatsz lek<65>rdez<65>seket. Ha a postgres
|
|
|
|
|
indit<69>sban keresel hib<69>t, a PGOPTIONS k<>rnyezeti v<>ltoz<6F>t <20>llitsd be "-W n"
|
2003-01-14 07:00:32 +08:00
|
|
|
|
<20>rt<72>kre. Ez n m<>sodperc v<>rakoz<6F>st id<69>z el<65>, igy tudsz csatlakozni a
|
2003-02-19 01:20:37 +08:00
|
|
|
|
processzhez, el tdsz hejezni t<>r<EFBFBD>spontokat, majd folytathatod a ind<6E>t<EFBFBD>st.
|
|
|
|
|
|
|
|
|
|
A postgres program -s, -A <20>s -t opci<63>i is nagyon hasznosak lehetnek
|
|
|
|
|
hibakeres<65>sn<73>l <20>s teljes<65>tm<74>ny m<>r<EFBFBD>sn<73>l.
|
|
|
|
|
|
|
|
|
|
Profiling leht<68>s<EFBFBD>ggel is fordithatod a szervert, hogy l<>sd melyik
|
|
|
|
|
funkci<63>k foglalj<6C>k el a fut<75>si id<69>t. A szerver profile <20>llom<6F>nyai
|
|
|
|
|
a pgsql/data/base/dbname k<>nzvt<76>rba ker<65>lnek, a kliens profile
|
|
|
|
|
<20>llom<6F>nyok az aktu<74>lis k<>nyvt<76>rba. Linuxon ehhez sz<73>ks<6B>ges a
|
|
|
|
|
-DLINUX_PROFILE ford<72>t<EFBFBD>si direktiva.
|
|
|
|
|
|
|
|
|
|
3.8) Mi<4D>rt kapok "Sorry, too many clients" (T<>l sok kliens)
|
|
|
|
|
hib<69>t csatlakoz<6F>sn<73>l?
|
|
|
|
|
|
|
|
|
|
N<>velned kell a postmaster egyidej<65>leg futtatott szerver processz sz<73>m
|
|
|
|
|
korl<72>tj<74>t.
|
|
|
|
|
|
|
|
|
|
Az alap<61>rtelmezett korl<72>t 32 processz. Ezt n<>velhetjed <20>gy, hogy
|
2003-01-14 07:00:32 +08:00
|
|
|
|
<20>jrainditod a postmastert <20>s -N opci<63>val meghat<61>rotod az <20>j <20>rt<72>ket,
|
2003-02-19 01:20:37 +08:00
|
|
|
|
vagy m<>dositod a postgresql.conf-ot.
|
|
|
|
|
|
|
|
|
|
Ne felejtsd el, hogy ha n<>veled a szerver processzek maxim<69>lis sz<73>m<EFBFBD>t,
|
|
|
|
|
akkor bufferek sz<73>m<EFBFBD>t is n<>velned kell, legal<61>bb a processzek sz<73>m<EFBFBD>nak
|
|
|
|
|
k<>tszeres<65>re. Nagy processz sz<73>mokeset<65>ben val<61>szin<69>leg a Unix
|
|
|
|
|
konfigur<75>ci<63>s param<61>tereken is n<>velni kell. Ellen<65>rizd a SHMMAX
|
|
|
|
|
(az osztott mem<65>ria szegmensek maxim<69>lis m<>rete), a SEMMNS <20>s a SEMMNI
|
|
|
|
|
(a szemaforok maxim<69>lis sz<73>ma), az NPROC (a processzek maxim<69>lis sz<73>ma),
|
|
|
|
|
a MAXUPRC (felhaszn<7A>l<EFBFBD>nk<6E>nti maxim<69>lis processz sz<73>m) <20>s a NFILE <20>s NINODE
|
|
|
|
|
(a megnzitott <20>llom<6F>nzok maxim<69>lis sz<73>ma) param<61>tereket. A PostgreSQL
|
|
|
|
|
az<61>rt korl<72>tozza k<>l<EFBFBD>n a processz sz<73>mot, hogy a rendszeredet ne terhelhesse
|
|
|
|
|
meg t<>ls<6C>gosan.
|
|
|
|
|
|
|
|
|
|
A PostgreSQL 6.5 verzi<7A>ban a maxim<69>lis szerver processz sz<73>m 64 volt <20>s
|
|
|
|
|
a m<>dosit<69>shoz bele kellett irni a include/storage/sinvaladt.h <20>llom<6F>nyba
|
|
|
|
|
<20>s <20>jra kellett forditani a servert.
|
|
|
|
|
|
|
|
|
|
3.9) Mi van pgsql_tmp k<>nyvt<76>rban?
|
|
|
|
|
|
|
|
|
|
Ez a k<>nyvt<76>r a lek<65>rdez<65>s v<>grehajt<6A> <20>ltal l<>trehezott <20>tmeneti
|
|
|
|
|
<20>llom<6F>nyokat tartalmazza. P<>ld<6C>ul ha egy rendez<65>st kell v<>grehajtani
|
|
|
|
|
egy ORDER BY kifejez<65>s miatt <20>s a m?velet t<>bb mem<65>ri<72>t vesz
|
|
|
|
|
ig<69>nybe, mint amennyit a -S param<61>ter megenged, akkor az <20>tmeneti
|
|
|
|
|
k<>nyvt<76>rban hoz l<>tre egy <20>llom<6F>nyt a fennmarad<61> adat t<>rol<6F>s<EFBFBD>ra.
|
|
|
|
|
|
|
|
|
|
Az <20>tmeneti <20>llom<6F>nyok t<>bbnyire t<>rl?dnek, de meg is maradhat ha
|
|
|
|
|
p<>ld<6C>ul v<>ratlan hib<69>val le<6C>ll a szerver egy rendez<65>s k<>zben. Indit<69>skor
|
|
|
|
|
<20>s le<6C>llit<69>skor ezeket az <20>llom<6F>nyokat t<>rli a postmaster.
|
|
|
|
|
|
|
|
|
|
3.10) Mi<4D>rt kell dumpolni <20>s <20>jrat<61>lteni PostgreSQL kiad<61>s v<>lt<6C>s<EFBFBD>n<EFBFBD>l?
|
|
|
|
|
|
|
|
|
|
A PostgreSQL csapat csak apr<70>bb v<>ltoztat<61>sokat hajt v<>gre a kisebb
|
|
|
|
|
kiad<61>sok k<>z<EFBFBD>tt, igy ha 7.2 verzi<7A>r<EFBFBD>l <20>llsz <20>t 7.2.1 verzi<7A>ra, akkor nem
|
|
|
|
|
sz<73>ks<6B>ges kidumplonod az adatb<74>zist. A nagy kiad<61>sok eset<65>ben (p<>ld<6C>ul
|
|
|
|
|
verzi<7A>r<EFBFBD>l 7.3-ra <20>tt<74>r<EFBFBD>sn<73>l) v<>ltozik a belsi<73> adatstrukt<6B>r<EFBFBD>k <20>s
|
|
|
|
|
adat<61>llom<6F>nyok form<72>tuma. Ezek a v<>ltoz<6F>sok gyakran nagyon <20>sszetettek,
|
|
|
|
|
ez<65>rt ink<6E>b nem tartunk fenn visszafel<65> kompatibilit<69>st. A dump
|
|
|
|
|
az adatot <20>ltal<61>nos form<72>tumban irja ki, majd az <20>j form<72>tumban lehet
|
|
|
|
|
azt visszat<61>leni.
|
|
|
|
|
|
|
|
|
|
Azokban a kiad<61>sokban, amelyek k<>z<EFBFBD>tt az adat form<72>tum nem v<>ltozik,
|
|
|
|
|
a pg_upgrade program haszn<7A>lhat<61> dumpol<6F>s <20>s helzre<72>llit<69>s n<>lk<6C>l.
|
|
|
|
|
|
|
|
|
|
_________________________________________________________________
|
|
|
|
|
|
|
|
|
|
M<>k<EFBFBD>dtet<65>si k<>rd<72>sek
|
|
|
|
|
|
|
|
|
|
4.1) Mi a k<>l<EFBFBD>nbs<62>g a bin<69>ris <20>s a norm<72>l kurzorok k<>z<EFBFBD>tt?
|
|
|
|
|
|
|
|
|
|
N<>zd meg a DECLARE dokument<6E>ci<63>j<EFBFBD>t.
|
|
|
|
|
|
|
|
|
|
4.2) Hogyan tudom select-elni a lek<65>rdez<65>s els<6C> p<>r sor<6F>t?
|
|
|
|
|
|
|
|
|
|
Olvasd el a FETCH dokument<6E>ci<63>j<EFBFBD>t, vagy haszn<7A>ld a SELECT
|
|
|
|
|
LIMIT-et.
|
|
|
|
|
|
|
|
|
|
Az eg<65>sz lek<65>rdez<65>st v<>gre kell hajtani, m<>g akkor is, ha csak az els<6C>
|
|
|
|
|
p<>r sort akarod megkapni. Gondolj arra, hogy a lek<65>rdez<65>sben lehet ORDER BY
|
|
|
|
|
is. Ha van olyan index, ami megfelel az ORDER BY kifejez<65>sednek, a
|
|
|
|
|
PostgreSQL k<>pes lehet az els<6C> n<>h<EFBFBD>ny rekord visszaad<61>s<EFBFBD>ra, vagy a teljes
|
|
|
|
|
lek<65>rdez<65>snek le kell futnia, amig a k<>rt rekordok le nem gener<65>l<EFBFBD>dnak.
|
|
|
|
|
|
|
|
|
|
4.3) Hogy tudom kilist<73>zni a t<>bl<62>kat vagy m<>s dolgokat a PostgreSQL-ben?
|
|
|
|
|
|
|
|
|
|
Elolvashatod a psql forr<72>s k<>dj<64>ban a pgsql/src/bin/psql/describe.c
|
|
|
|
|
<20>llom<6F>nyban. Ez SQL parancsokat tartalmaz, amelyek azokat a kimeneteket
|
|
|
|
|
<20>llitj<74>k el<65>, amiket a per jellel kezd<7A>d<EFBFBD> parancsok adnak vissza.
|
|
|
|
|
|
|
|
|
|
4.4) Hogyan tudok elt<6C>vol<6F>tani egy oszlopot egy t<>bl<62>b<EFBFBD>l?
|
|
|
|
|
|
|
|
|
|
Ez a funkcionalit<69>s a 7.3 verzi<7A>t<EFBFBD>l kezdve <20>rhet<65> el az ALTER TABLE
|
|
|
|
|
DROP COLUMN -nal. A r<>gebbi verti<74>kban igy lehet v<>grehajtani:
|
|
|
|
|
BEGIN;
|
|
|
|
|
LOCK TABLE old_table;
|
|
|
|
|
SELECT ... -- minden oszlopot, kiv<69>tel amit t<>r<EFBFBD>lni szeretn<74>l
|
|
|
|
|
INTO TABLE new_table
|
|
|
|
|
FROM old_table;
|
|
|
|
|
DROP TABLE old_table;
|
|
|
|
|
ALTER TABLE new_table RENAME TO old_table;
|
|
|
|
|
COMMIT;
|
|
|
|
|
|
|
|
|
|
4.5) Mi a maxim<69>lis m<>rete egy sornak, egy t<>bl<62>nak vagy egy adatb<74>zisnak?
|
|
|
|
|
|
|
|
|
|
A korl<72>tok:
|
|
|
|
|
adatb<74>zis: korl<72>tlan (1 TB az <20>ltalunk ismert lagnagyobb)
|
|
|
|
|
t<>bla: 16 TB
|
|
|
|
|
rekord/sor 1.6TB
|
|
|
|
|
mez<65> 1 GB
|
|
|
|
|
a t<>bla sorainak sz<73>ma: korl<72>tlan
|
|
|
|
|
a t<>bla oszlopainak sz<73>ma: 250-1600 az oszlop nevekt<6B>l f<>gg<67>en
|
|
|
|
|
A t<>bla indexeinek sz<73>ma: korl<72>tlan
|
|
|
|
|
|
2003-01-14 07:00:32 +08:00
|
|
|
|
Term<72>szetesen nem igaz<61>n korl<72>tlan, de a t<>rter<65>let, mem<65>ria <20>s egy<67>b
|
2003-02-19 01:20:37 +08:00
|
|
|
|
k<>ls<6C> t<>nyez<65>k korl<72>tozz<7A>k. A teljesitm<74>ny romolhat, ha ezek az <20>rt<72>kek
|
|
|
|
|
szokatlanul nagyok.
|
|
|
|
|
|
|
|
|
|
A 16 TB-os legnagyobb t<>bla m<>ret nem ig<69>nyel nagy <20>llom<6F>ny t<>mogat<61>st.
|
|
|
|
|
A nagy t<>bl<62>k t<>bb 1 GB m<>ret<65> <20>llom<6F>nyba ker<65>lnek, igy az <20>llom<6F>ny
|
|
|
|
|
rendszer korl<72>tai nem l<>nyegesek.
|
|
|
|
|
|
|
|
|
|
A maxim<69>lis t<>bla m<>ret <20>s az oszlopok maxim<69>lis oszlop sz<73>m n<>velhet<65>,
|
|
|
|
|
ha az alap<61>rtelmezett blokkm<6B>retet 32k-ra n<>veled.
|
|
|
|
|
|
|
|
|
|
4.6) Mekkora adatb<74>zis lemez ter<65>let sz<73>ks<6B>ges egy tipikus sz<73>veg <20>llom<6F>ny
|
|
|
|
|
t<>rol<6F>s<EFBFBD>hoz?
|
|
|
|
|
|
|
|
|
|
A PostgreSQL ak<61>r a sz<73>veg <20>llom<6F>ny helyig<69>nz<6E>nek <20>tsz<73>r<EFBFBD>s<EFBFBD>t is elfoglalhaja.
|
|
|
|
|
|
|
|
|
|
K<>pzelj el p<>ld<6C>ul, egy 100.000 soros sz<73>veget, aminek minde sora
|
|
|
|
|
egy sz<73>mb<6D>l <20>s egy sz<73>vegb<67>l <20>ll. Tegy<67>k el, hogy <20>tlagosan 20 byte hossz<73>
|
|
|
|
|
sz<73>vegek. Ez a sz<73>veg<65>llom<6F>ny k<>r<EFBFBD>lbel<65>l 2.8 MB helyet foglalna el.
|
|
|
|
|
A t<>bla ami a fenti adatszerkezetet elt<6C>roln<6C>, k<>r<EFBFBD>lbel<65>l 6.4 MB-os lenne.
|
|
|
|
|
Ezt a k<>vetkez<65>k<EFBFBD>ppen sz<73>molhatjuk ki:
|
|
|
|
|
36 byte: sor fejl<6A>c
|
|
|
|
|
24 byte: egy int mez<65> + egy sz<73>veg mez<65>
|
|
|
|
|
4 byte: mutato
|
|
|
|
|
---------------------------------------
|
|
|
|
|
64 byte soronkent.
|
|
|
|
|
|
|
|
|
|
Az adat oldal m<>rete a PostgreSQL-ben 8192 byte, igy
|
|
|
|
|
8192 / 64 = 128 rekord adatb<74>zis oldalank<6E>nt (lefel<65> kerekitve).
|
|
|
|
|
|
|
|
|
|
100000 rekord / 128 rekord oldalank<6E>nt = 782 adat oldal (felel<65> kerekitve).
|
|
|
|
|
|
|
|
|
|
782 adatb<74>zis oldal * 8192 byte olalank<6E>nt = 6,406,144 byte (6.4 MB)
|
|
|
|
|
|
|
|
|
|
Az indexek nem foglalnak t<>l sokat, de tartalmazz<7A>k az indexelt adatot,
|
|
|
|
|
igy ezek is lehetnek nagyok.
|
|
|
|
|
|
|
|
|
|
A NULL <20>rt<72>kek bitt<74>rk<72>pben vannak t<>rolva, igy kev<65>s helyet foglanak.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4.7) Hogy tudhatom meg milyen t<>bl<62>k, indexek, adatb<74>zisok vagy felhaszn<7A>l<EFBFBD>k
|
|
|
|
|
vannak defini<6E>lva?
|
|
|
|
|
|
|
|
|
|
A psql-ben tal<61>lsz sz<73>mos '\' karakterrel kezd<7A>d<EFBFBD> utas<61>t<EFBFBD>st az ilyen
|
|
|
|
|
inform<72>ci<63>k list<73>z<EFBFBD>s<EFBFBD>ra. A '\?' segits<74>g<EFBFBD>vel tudot kilist<73>zni ezeket
|
|
|
|
|
a parancsokat. Ezen kiv<69>l vannak rendszer t<>bl<62>k, amelyek nevei 'pg_'
|
|
|
|
|
-vel kezd<7A>dnek.
|
|
|
|
|
|
|
|
|
|
Pr<50>b<EFBFBD>ld ki a pgsql/src/tutorial/syscat.source <20>llom<6F>nyt is. Ez sok
|
|
|
|
|
p<>ld<6C>t tartalmaz az rendszert<72>bl<62>kon v<>grehajtott SELECT-ekr<6B>l.
|
|
|
|
|
|
|
|
|
|
4.8) A lek<65>rdez<65>seim lass<73>ak, vagy nem haszn<7A>lj<6C>k az indexeket. Mi<4D>rt?
|
|
|
|
|
|
|
|
|
|
Az indexeket nem haszn<7A>lja a szerver minden lek<65>rdez<65>sn<73>l automatikusan.
|
|
|
|
|
Csak akkor haszn<7A>l indexet, ha a t<>bla m<>rete egy megadott als<6C> hat<61>r
|
|
|
|
|
felett van, <20>s a lek<65>rdez<65>s csak a sorok egy kis r<>sz<73>t <20>rinti. Ez az<61>rt
|
|
|
|
|
van, mert a v<>letlen hozz<7A>f<EFBFBD>r<EFBFBD>s m<>g mindig lassabb lehet mint az t<>bla
|
|
|
|
|
szekvenci<63>lis olvas<61>sa.
|
|
|
|
|
|
|
|
|
|
Hogy a PostgreSQL meg tudja hat<61>rozni hogy kell-e indexet haszn<7A>lni,
|
|
|
|
|
l<>teznie kell egy statisztik<69>nak a t<>bl<62>r<EFBFBD>l. Ez a statisztikai adatok a
|
|
|
|
|
VAACUM ANALYZE vagy az egyszer<65> ANALYZE m<>veletek sor<6F>n
|
|
|
|
|
j<>nnek l<>tre. A statisztikai adatok felhaszn<7A>l<EFBFBD>s<EFBFBD>val az optimaliz<69>l<EFBFBD>
|
|
|
|
|
meg tudja hat<61>rozni, hogy h<>ny sor van a t<>bl<62>ban, <20>s el tudja d<>nteni,
|
|
|
|
|
hogy haszn<7A>ljon-e indexet. A statisztiaki adatgy<67>jt<6A>st id<69>nk<6E>nt v<>gre
|
|
|
|
|
kell hajtani, ahogy a t<>bla adatai v<>ltoznak.
|
|
|
|
|
|
|
|
|
|
Az indexeket norm<72>lis esetben nem haszn<7A>lja az ORDER BY vagy
|
|
|
|
|
az OUTER JOIN. A szekvenci<63>lis olvas<61>s <20>ltal<61>ban gyorsabb, mint az
|
|
|
|
|
index keres<65>s egy nagy t<>bl<62>ban.
|
|
|
|
|
B<>r a LIMIT az ORDER BY-val kombin<69>lva haszn<7A>lhat indexet, mert
|
|
|
|
|
a t<>bla csak kis r<>sze <20>rintett. B<>r a MIN <20>s MAX SQL funkci<63>k sem
|
|
|
|
|
haszn<7A>lj<6C>k az indexeket, ezeket az <20>rt<72>keket egy ORDER BY + LIMIT
|
|
|
|
|
lek<65>rdez<65>ssel is le lehet k<>rdezni:
|
|
|
|
|
SELECT col
|
|
|
|
|
FROM tab
|
|
|
|
|
ORDER BY col [ DESC ]
|
|
|
|
|
LIMIT 1;
|
|
|
|
|
|
2003-01-14 07:00:32 +08:00
|
|
|
|
Amikor helyettes<65>t<EFBFBD> jel oper<65>torokat haszn<7A>lsz, mint a LIKE kulcssz<73>
|
2003-02-19 01:20:37 +08:00
|
|
|
|
vagy a ~, az indexeket csak bizonyos k<>r<EFBFBD>lm<6C>nyek k<>z<EFBFBD>tt lehet haszn<7A>lni:
|
|
|
|
|
* A keres<65> string kezdete a keres<65>si minta elej<65>n kell hogy legyen.
|
|
|
|
|
p<>ld<6C>ul:
|
|
|
|
|
+ A LIKE mint<6E>k nem kezd<7A>dhetnek % jellel.
|
|
|
|
|
+ ~ (regexp) kifejez<65>sek nem kezd<7A>dhetnek ^ jellel.
|
|
|
|
|
* A keres<65>si kifejez<65>s nem kezd<7A>dhet karakter oszt<7A>llyal.
|
|
|
|
|
* A case-insensitive keres<65>s (ILIKE, ~*) nem haszn<7A>lnak indexet
|
|
|
|
|
ehelyett funkcion<6F>lis indexet haszn<7A>lnak, amit a 4.12 pontban
|
|
|
|
|
tal<61>lhatsz.
|
|
|
|
|
* Az alap<61>rtelmezett C hellyel kell futtatni az initdb-t.
|
|
|
|
|
|
|
|
|
|
4.9) Hogy tudom ellen<65>rizni, hogy optimaliz<69>lta a lek<65>rdez<65>s optimaliz<69>l<EFBFBD>
|
|
|
|
|
a lek<65>rdez<65>sem?
|
|
|
|
|
|
|
|
|
|
Olvasd el a dokument<6E>ci<63> EXPLAIN-r<>l sz<73>l<EFBFBD> r<>sz<73>t.
|
|
|
|
|
|
|
|
|
|
4.10) Mi az R-tree index?
|
|
|
|
|
|
|
|
|
|
Az R-tree index a t<>rbeli adat indexel<65>s<EFBFBD>re alkalmas. Egy hash
|
|
|
|
|
index nem k<>pes tartom<6F>ny keres<65>sekre. A B-tree index csak egy
|
|
|
|
|
dimenzi<7A>n kezeli a tartom<6F>ny keres<65>seket. P<>ld<6C>ul ha az indexet
|
|
|
|
|
egy pont (point adatt<74>pus) t<>pus<75> mez.re <20>p<EFBFBD>tj<74>k, gyorsabban
|
|
|
|
|
kezeli az olyan jelleg<65> lek<65>rdez<65>seket, mint egy adott k<>rben
|
|
|
|
|
tal<61>lhat<61> pontok.
|
|
|
|
|
|
|
|
|
|
Az R-tree tervez<65>si mint<6E>t eredetileg le<6C>r<EFBFBD> sz<73>veg:
|
|
|
|
|
|
|
|
|
|
Guttman, A. "R-trees: A Dynamic Index Structure for Spatial
|
|
|
|
|
Searching." Proceedings of the 1984 ACM SIGMOD Int'l Conf on Mgmt of
|
|
|
|
|
Data, 45-57.
|
|
|
|
|
|
|
|
|
|
Ezt olvashatod Stonebraker "Readings in Database Systems" c.
|
|
|
|
|
k<>nyv<79>ben.
|
|
|
|
|
|
|
|
|
|
A be<62>p<EFBFBD>tett R-tree kezelni tudj<64>k a soksz<73>geket (polygon adatt<74>pus)
|
|
|
|
|
<20>s a dobozokat (box). Elm<6C>letileg, az R-tree kiterjeszthet<65> tov<6F>bbi
|
|
|
|
|
dimenzi<7A>kra is. Gyakorlatilag ezen dolgoznod kell egy kicsit, <20>s
|
|
|
|
|
m<>g nincs dokument<6E>ci<63>nk arr<72>l hogy az hogyan m<>k<EFBFBD>dik.
|
|
|
|
|
|
|
|
|
|
4.11) Mi a Genetic Query Optimizer?
|
|
|
|
|
|
|
|
|
|
A GEQO modul a lek<65>rdez<65>s optimaliz<69>ci<63> sebess<73>g<EFBFBD>t n<>veli nagy
|
|
|
|
|
mennyis<69>g<EFBFBD> t<>bla <20>sszekapcsol<6F>sa eset<65>n. Lehet<65>v<EFBFBD> teszi a nagy
|
|
|
|
|
lek<65>rdez<65>sek v<>grehajt<6A>s<EFBFBD>t nem teljes keres<65>ssel.
|
|
|
|
|
|
|
|
|
|
4.12) Hogyan tudok regexp keres<65>st <20>s case-insensitive regexp keres<65>st
|
|
|
|
|
haszn<7A>lni? Hogyan tudok indexet haszn<7A>lni case-insensitive keres<65>shez?
|
|
|
|
|
|
|
|
|
|
A ~ oper<65>tor hajt v<>gre regul<75>ris kifejez<65>s (regexp) <20>rtelmez<65>st,
|
|
|
|
|
a ~* ennek case-insensitive v<>ltozata. A LIKE case-insensitive
|
|
|
|
|
v<>ltozata az ILIKE.
|
|
|
|
|
|
|
|
|
|
A case-insensitive egyenl<6E>s<EFBFBD>g m<>veleteket <20>ltal<61>ban igy hajtjuk
|
|
|
|
|
v<>gre:
|
|
|
|
|
SELECT *
|
|
|
|
|
FROM tab
|
|
|
|
|
WHERE lower(col) = 'abc';
|
|
|
|
|
|
|
|
|
|
Ez nem fog indexet haszn<7A>lni, b<>r l<>trehozhatsz egy funkci<63> indexet:
|
|
|
|
|
CREATE INDEX tabindex ON tab (lower(col));
|
|
|
|
|
|
|
|
|
|
4.13) Hogyan tudom <20>szlelni egy lek<65>rdez<65>sben, ha egy mez<65> NULL?
|
|
|
|
|
|
|
|
|
|
Haszn<7A>ld "IS NULL"-t <20>s az "IS NOT NULL"-t.
|
|
|
|
|
|
|
|
|
|
4.14) Mi a k<>l<EFBFBD>nbs<62>g a k<>l<EFBFBD>nb<6E>z<EFBFBD> karaktert<72>pusok k<>z<EFBFBD>tt?
|
|
|
|
|
|
|
|
|
|
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)
|
|
|
|
|
|
|
|
|
|
L<>tni fogod a bels<6C> elnevez<65>s<EFBFBD>ket, ha tanulm<6C>nyozod a rendszert<72>bl<62>kat
|
|
|
|
|
<20>s n<>h<EFBFBD>ny hiba<62>zenetet.
|
|
|
|
|
|
|
|
|
|
Az ut<75>bbi n<>gy a "varlena" t<>pusok, ami a t<>rol<6F>suk m<>dj<64>ra utal:
|
|
|
|
|
az els<6C> 4 byte a lemezen a hossz<73>s<EFBFBD>g, a t<>bbi az adat. A val<61>di m<>ret
|
|
|
|
|
teh<65>t nagyobb mint a deklar<61>lt hossz<73>s<EFBFBD>g.Ezek azadatok t<>m<EFBFBD>ritve
|
|
|
|
|
t<>rol<6F>dnak el, igy kevesebb helyet foglalnek el az el<65>re sz<73>mitottn<74>l.
|
|
|
|
|
|
|
|
|
|
A CHAR(n) a legjobb megold<6C>s, ha stabil hossz<73>s<EFBFBD>g<EFBFBD> stringet t<>rolsz.
|
|
|
|
|
A VARCHAR(n) j<> arra az esetekre, ha a hossz<73>s<EFBFBD>g v<>ltozik, de van
|
|
|
|
|
fels<6C> korl<72>tja. A TEXT t<>pus korl<72>tlan hossz<73>s<EFBFBD>g<EFBFBD> (1 GB-ig) sz<73>vegek
|
|
|
|
|
t<>rol<6F>s<EFBFBD>ra alklamas. A BYTEA bin<69>ris adatok t<>rol<6F>s<EFBFBD>ra van. A
|
|
|
|
|
teljesitm<74>ny mutat<61>i hasonl<6E>ak ezenek a t<>pusoknak.
|
|
|
|
|
|
|
|
|
|
4.15.1) Hogyan tudok l<>trehozni automatikusan n<>vekv<6B> <20>rt<72>k<EFBFBD> mez<65>t?
|
|
|
|
|
|
|
|
|
|
A PostgreSQL rendelkezik egy SERIAL adatt<74>pussal. Ez egy szekvenci<63>t
|
|
|
|
|
<20>s egy indexet hoz l<>tre az oszlopon. P<>ld<6C>ul 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 szekvenci<63>kkal kapcsolatban olvasd el a create_sequence man
|
|
|
|
|
oldalt. A sor OID-j<>t is haszn<7A>lhatod egyedi azonosit<69>k<EFBFBD>nt, b<>r
|
|
|
|
|
ebben az esetben figyelj a pg_gump haszn<7A>lat<61>n<EFBFBD>l a -o opci<63>ra
|
|
|
|
|
(COPY WITH OIDS, m<>sol<6F>s OID-dal), hogy meg?rizd az <20>rt<72>keket.
|
|
|
|
|
|
|
|
|
|
4.15.2) Hogyan kaphatom meg egy SERIAL besz<73>r<EFBFBD>s <20>rt<72>k<EFBFBD>t?
|
|
|
|
|
|
|
|
|
|
Egy megold<6C>s erre az, ha a nextval() funkci<63>val megszerzed az
|
|
|
|
|
<20>rt<72>ket m<>g miel<65>tt besz<73>rn<72>d az adatot a t<>bl<62>ba. Erre itt l<>thatsz
|
|
|
|
|
egy p<>ld<6C>t:
|
|
|
|
|
new_id = execute("SELECT nextval('person_id_seq')");
|
|
|
|
|
execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
|
|
|
|
|
|
|
|
|
|
Esetleg lek<65>rdezheted a szekvencia <20>llapot<6F>t a sor besz<73>r<EFBFBD>sa ut<75>n.
|
|
|
|
|
execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
|
|
|
|
|
new_id = execute("SELECT currval('person_id_seq')");
|
|
|
|
|
|
|
|
|
|
V<>g<EFBFBD>l pedig, haszn<7A>lhatod a visszaadott OID <20>rt<72>ket is, b<>r ez a lehet<65>
|
2003-01-14 07:00:32 +08:00
|
|
|
|
legkev<65>sb<73> portolhat<61>. Perl DBI-ben, Edmund Mergl DBD::Pg modulj<6C>ban
|
2003-02-19 01:20:37 +08:00
|
|
|
|
az OID <20>rt<72>k haszn<7A>lhat<61> a $sth->execute() ut<75>n ($sth->{pg_oid_status}).
|
|
|
|
|
|
|
|
|
|
4.15.3) A currval() <20>s a nextval() nem teremt holtpont vesz<73>lyes helyzetet
|
|
|
|
|
a felhaszn<7A>l<EFBFBD>k k<>z<EFBFBD>tt?
|
|
|
|
|
|
|
|
|
|
Nem. A currval() funkci<63> a szerver processzed <20>ltal adott <20>rt<72>ket adja
|
|
|
|
|
vissza, nem pedig a t<>bbi szerver processz <20>ltal adottat.
|
|
|
|
|
|
|
|
|
|
4.15.4) Mi<4D>rt nem haszn<7A>l<EFBFBD>dnak fel <20>jra a sequence sz<73>mok tranzakci<63>
|
|
|
|
|
abort eset<65>n?
|
|
|
|
|
Mi<4D>rt vannak probl<62>m<EFBFBD>k a serial oszlopok sz<73>moz<6F>s<EFBFBD>val?
|
|
|
|
|
|
|
|
|
|
A p<>rhuzamoss<73>g fejleszt<7A>se <20>rdek<65>ben a sorozat sz<73>mokat k<>r<EFBFBD>sre
|
|
|
|
|
adja ki a szerver fut<75> tranzakci<63>knak, <20>s azokat nem z<>rja, amig
|
|
|
|
|
a tranzakci<63> v<>get nem <20>r. Ez jukakat okoz a sz<73>moz<6F>sokban a
|
|
|
|
|
visszaforditott tranzakci<63>k miatt.
|
|
|
|
|
|
|
|
|
|
4.16) Mi a OID? Mi a TID?
|
|
|
|
|
|
|
|
|
|
Az OID a PostgreSQL egyedi sor azonosit<69>ja. Minden sor, ami l<>trej<65>n
|
|
|
|
|
a szerveren, kap egy OID-t. Minden OID, amit az initdb alatt j<>n l<>tre
|
|
|
|
|
16384 alatt van (l<>sd include/access/transam.h). Minden, felhaszn<7A>l<EFBFBD>
|
|
|
|
|
<20>ltal l<>trehozott OID legal<61>bb ennyi. Alap<61>rtelmez<65>sben, az OID
|
|
|
|
|
nem csak a t<>bl<62>ban vagy az adatb<74>zisban egyedi, hanem a teljes
|
|
|
|
|
PostgreSQL adatb<74>zis rendszerben.
|
|
|
|
|
|
2003-01-14 07:00:32 +08:00
|
|
|
|
A PostgreSQL az OID-okat a bels<6C> t<>bl<62>iban haszn<7A>lja a sorok t<>bl<62>k
|
|
|
|
|
k<>z<EFBFBD>tt <20>sszekapcsol<6F>s<EFBFBD>hoz. Ezek az OID-k haszn<7A>lhat<61>ak a rekordok
|
2003-02-19 01:20:37 +08:00
|
|
|
|
azonosit<69>s<EFBFBD>ra is amikor t<>bl<62>kat csatol <20>ssze a szerver (JOIN).
|
|
|
|
|
Az OID-ot haszn<7A>lhatod mez<65> t<>pusk<73>nt is, <20>s indexelheted is.
|
|
|
|
|
|
|
|
|
|
Az OID <20>rt<72>k egy k<>zponti ter<65>letr<74>l sz<73>rmazik, amit minden szerver
|
|
|
|
|
processz haszn<7A>l. Ha az OID-ot valami m<>sra szeretn<74>d cser<65>lni:
|
|
|
|
|
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 <20>rt<72>kk<6B>nt t<>rol<6F>dik, igy 4 milli<6C>rdn<64>l t<>lcsordul.
|
|
|
|
|
M<>g soha senki nem jelezte hogy ez t<>rt<72>nt volna, <20>s ezt a korl<72>tot
|
|
|
|
|
igyeksz<73>nk elt<6C>volitani, m<>g miel<65>tt b<>rki <20>szrevenn<6E>.
|
|
|
|
|
|
|
|
|
|
A TID a fizikai sorok blokk <20>s offszet c<>mmel val<61> azonosit<69>s<EFBFBD>ra szolg<6C>l.
|
|
|
|
|
A TID v<>ltozik minden rekord m<>dosit<69>s <20>s t<>rl<72>s alkalm<6C>val. Ezeket az
|
|
|
|
|
indexek haszn<7A>lj<6C>k hogy a fizikai sort gyorsan megtal<61>lj<6C>k.
|
|
|
|
|
|
|
|
|
|
4.17) Mi a PostgreSQL-ben haszn<7A>lt kifejez<65>sek jelent<6E>se?
|
|
|
|
|
|
|
|
|
|
N<>hol a forr<72>s k<>dban <20>s a dokumnet<65>ci<63>ban tal<61>lhat<61>ak kifejez<65>sek,
|
|
|
|
|
amelyek <20>ltal<61>nosabb jelent<6E>ssel b<>rnak. Itt van n<>h<EFBFBD>ny:
|
|
|
|
|
* t<>bla (table), rel<65>ci<63> (relation), oszt<7A>ly (class)
|
|
|
|
|
* sor (row), rekord (record), tuple (nincs magyar jelent<6E>s)
|
|
|
|
|
* oszlop (column), mez<65> (field), attributum (attribute)
|
|
|
|
|
* retrieve, select
|
|
|
|
|
* helyettesit (replace), m<>dosit (update)
|
|
|
|
|
* hozz<7A>f<EFBFBD>z (append), besz<73>r (insert)
|
|
|
|
|
* OID, sorozat <20>rt<72>k (serial value)
|
|
|
|
|
* portal, cursor
|
|
|
|
|
* range variable, t<>bla n<>v, t<>bla alias
|
|
|
|
|
|
|
|
|
|
Az <20>ltal<61>nos adatb<74>zis kifejez<65>sek <20>sszefoglal<61>j<EFBFBD>t itt olvashat<61>:
|
2003-01-14 07:00:32 +08:00
|
|
|
|
http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary
|
2003-02-19 01:20:37 +08:00
|
|
|
|
/glossary.html
|
|
|
|
|
|
|
|
|
|
4.18) Mi<4D>rt kapom ezt a hib<69>t: "ERROR: Memory exhausted in
|
|
|
|
|
AllocSetAlloc()"?
|
|
|
|
|
|
|
|
|
|
Lehet hogy elfogyott a virtu<74>lis mem<65>ri<72>d, vagy a kerneled er<65>forr<72>s
|
|
|
|
|
korl<72>tai alacsonyak. Pr<50>b<EFBFBD>ld ki ezt miel<65>tt elinditan<61>d a postmastert:
|
|
|
|
|
ulimit -d 262144
|
|
|
|
|
limit datasize 256m
|
|
|
|
|
|
|
|
|
|
A shellt<6C>l f<>gg<67>en ezek k<>z<EFBFBD>l csak az egyik fut majd le, de a
|
|
|
|
|
processzek adatszegmens<6E>t sokkal magasabbra <20>llitja, ami tal<61>n
|
|
|
|
|
el<65>g lesz a lek<65>rdez<65>s v<>grehajt<6A>s<EFBFBD>hoz. Ez az utas<61>t<EFBFBD>s a jelenlegi
|
|
|
|
|
processzre (a shelled) <20>rv<72>nyes, <20>s minden <20>ltala l<>trehozott
|
|
|
|
|
processzre. Ha probl<62>m<EFBFBD>d van az SQL klienssel, mert a szerver
|
|
|
|
|
t<>l nagy adatot k<>ld vissza, pr<70>b<EFBFBD>ld meg e klienssel is ugyanezt.
|
|
|
|
|
|
|
|
|
|
4.19) Hogyan tudhatom meg PostgreSQL, milyen verzi<7A>t futtatok?
|
|
|
|
|
|
|
|
|
|
A psql programban select version();
|
|
|
|
|
|
|
|
|
|
4.20) Mi<4D>rt kapok "invalid large obj descriptor" hib<69>t nagy objektumok
|
|
|
|
|
kezel<65>s<EFBFBD>n<EFBFBD>l?
|
|
|
|
|
|
|
|
|
|
A nagy objektumok kezel<65>s<EFBFBD>t egy tranzakci<63>s blokkban helyezd el.
|
|
|
|
|
(BEGIN <20>s COMMIT k<>z<EFBFBD>tt)
|
|
|
|
|
|
|
|
|
|
Jelenleg a PostgreSQL ezt a szab<61>lyt azzal teszi k<>telez<65>v<EFBFBD>, hogy a
|
|
|
|
|
tranzakci<63> v<>g<EFBFBD>n a nagy objektumokat lez<65>rja, igy a tranzakci<63> ut<75>n
|
|
|
|
|
az els<6C> m<>velet amit az objektumon v<>grahajtan<61>l hib<69>s lesz.
|
|
|
|
|
|
|
|
|
|
Ha olyan programoz<6F>si fel<65>letet haszn<7A>lsz mint az ODBC vagy a JDBC
|
|
|
|
|
akkor val<61>szin<69>leg ki kell kapcsolnod az auto-commit-ot.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4.21) Hogy hozhatok l<>tre olyan oszlopot, aminek alap<61>rtelmezett
|
|
|
|
|
<20>r<EFBFBD>tke a jelenlegi id<69>?
|
|
|
|
|
|
|
|
|
|
Haszn<7A>ld a CURRENT_TIMESTAMP -ot:
|
|
|
|
|
CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
|
|
|
|
|
|
|
|
|
|
4.22) Mi<4D>rt olyan lass<73>ak az al-lek<65>rdez<65>seim IN-nel?
|
|
|
|
|
|
|
|
|
|
Jelenleg az al-lek<65>rdez<65>seket a k<>ls<6C> lek<65>rdez<65>shez csatoljuk. Ha
|
|
|
|
|
az allek<65>rdez<65>s csak kev<65>s sort eredm<64>nyez <20>s a k<>ls<6C> lek<65>rdez<65>s
|
|
|
|
|
sokat, akkor az IN is gyors. Az EXISTS kulcssz<73> haszn<7A>lat<61>val
|
|
|
|
|
gyorsithatod a lek<65>rdez<65>seket.
|
|
|
|
|
SELECT *
|
|
|
|
|
FROM tab
|
|
|
|
|
WHERE col IN (SELECT subcol FROM subtab);
|
|
|
|
|
|
|
|
|
|
EXISTS haszn<7A>lat<61>val:
|
|
|
|
|
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. Rem<65>lj<6C>k ezt a korl<72>tot siker<65>l hamarosan legy<67>zn<7A>nk.
|
|
|
|
|
|
|
|
|
|
4.23) Hogyan tudok outer join-t v<>grehajtani?
|
|
|
|
|
|
|
|
|
|
A PostgreSQL a szabv<62>nyos SQL szintaktik<69>t k<>veti. Itt van k<>t p<>lda:
|
|
|
|
|
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 lek<65>rdez<65>sek <20>sszekapcsolj<6C>k a t1.col <20>s a t2.col
|
|
|
|
|
mez<65>ket, <20>s a t1 b<>rmelyik kapcsolatlan sor<6F>t is visszadj<64>k. A RIGHT
|
|
|
|
|
JOIN a t2 kapcsolatlan sorait adta volna vissza, a FULL JOIN pedig
|
|
|
|
|
a kapcsolt, <20>s mindk<64>t t<>bla kapcsolatlan sorait adja. Az OUTER
|
|
|
|
|
kulcssz<73> opcion<6F>lis, a LEFT, RIGHT <20>s FULL JOIN szintaktikailag
|
|
|
|
|
helyes. Az <20>tlagos <20>sszekapcsol<6F>sokat INNER JOIN-nak nevezz<7A>k.
|
|
|
|
|
|
|
|
|
|
Az el<65>z<EFBFBD> kiad<61>sokban a OUTER JOIN lek<65>rdez<65>seket UNION <20>s NOT IN
|
|
|
|
|
kulcsszavakkal lehetett szimul<75>lni. P<>ld<6C>ul a tab1 <20>s a tab2
|
|
|
|
|
<20>sszekapcsol<6F>sa:
|
|
|
|
|
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 t<>bb adatb<74>zison v<>grehajtani lek<65>rdez<65>st?
|
|
|
|
|
|
|
|
|
|
Arra nincs lehet<65>s<EFBFBD>g, hogy m<>s adatb<74>zisb<73>l k<>rdezz le adatot.
|
|
|
|
|
Mivel a PostgreSQL adatb<74>zis specifikus rendszer t<>bl<62>kat t<>lt
|
|
|
|
|
be, bizonytalan hogy egy adatb<74>zisok k<>z<EFBFBD>tti lek<65>rdez<65>snek hogyan
|
|
|
|
|
kellene viselkednie.
|
|
|
|
|
|
|
|
|
|
A contrib/dblink k<>nyvt<76>rban tal<61>lsz egy megold<6C>st erre, ami
|
|
|
|
|
funkci<63> hiv<69>sok segits<74>g<EFBFBD>vel m<>k<EFBFBD>dik. Persze, a kliens hozhat l<>tre
|
|
|
|
|
szimult<6C>n kapcsolatot t<>bb adatb<74>zissal, <20>s <20>sszef<65>s<EFBFBD>lheti az
|
|
|
|
|
eredm<64>nyeket.
|
|
|
|
|
|
|
|
|
|
4.25) Hogy tudok t<>bb soros vagy oszlopos eredm<64>nyt visszaadni egy
|
|
|
|
|
funkci<63>b<EFBFBD>l?
|
|
|
|
|
|
|
|
|
|
A PL/pgSQL t<>rolt elj<6C>r<EFBFBD>s nyelvvel refcursor haszn<7A>lat<61>val.
|
|
|
|
|
R<>szletesen itt:
|
|
|
|
|
http://www.PostgreSQL.org/idocs/index.php?plpgsql-cursors.html
|
|
|
|
|
|
|
|
|
|
4.26) Mi<4D>rt nem tudom megbizhat<61>an l<>trehozni <20>s t<>r<EFBFBD>lni az <20>tmeneti
|
|
|
|
|
t<>bl<62>kat a PL/pgSQL funkci<63>kban?
|
|
|
|
|
|
|
|
|
|
A PL/pgSQL cacheli a funkci<63>k tartalm<6C>t, aminek az a szerencs<63>tlen
|
|
|
|
|
mell<6C>khat<61>sa, hogy ha egy PL/pgSQL funkci<63> haszn<7A>l egy <20>tmeneti
|
|
|
|
|
t<>bl<62>t, ami k<>s?bb t<>rl<72>dik majd ujra l<>trej<65>n, akkor az <20>jra lefut<75>
|
|
|
|
|
funkci<63> nem fogja megtal<61>lni a t<>bl<62>t, mert a cache v<>ltozat a r<>gi
|
|
|
|
|
t<>bl<62>ra tartalmaz mutat<61>t. A megold<6C>s erre az EXECUTE utas<61>t<EFBFBD>s
|
|
|
|
|
haszn<7A>lata az <20>tmeneti t<>bl<62>k kezel<65>s<EFBFBD>re PL/pgSQL-ben. Ez a
|
|
|
|
|
lek<65>rdez<65>s <20>jraford<72>t<EFBFBD>s<EFBFBD>t fogja el<65>id<69>zni minden alkalommal.
|
|
|
|
|
|
|
|
|
|
4.27) Milyen replik<69>ci<63>s lehet<65>s<EFBFBD>gek vannak?
|
|
|
|
|
|
|
|
|
|
Sz<53>mos master/slave replik<69>ci<63>s lehet<65>s<EFBFBD>g l<>tezik. Ez csak a master
|
|
|
|
|
adatb<74>zis sz<73>m<EFBFBD>ra teszi lehet<65>v<EFBFBD>, hogy az adatokat v<>ltoztassa. Egy
|
|
|
|
|
List<73>t olvashatsz ezekr<6B>l itt:
|
|
|
|
|
http://gborg.PostgreSQL.org/genpage?replication_research
|
|
|
|
|
|
|
|
|
|
Egy t<>bbfelhaszn<7A>l<EFBFBD>s replik<69>ci<63>s rendszer k<>sz<73>l itt:
|
2003-01-14 07:00:32 +08:00
|
|
|
|
http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.
|
2003-02-19 01:20:37 +08:00
|
|
|
|
|
|
|
|
|
4.28) Milyen k<>dol<6F>si lehet<65>s<EFBFBD>gek vannak?
|
|
|
|
|
|
|
|
|
|
- A contrib/pgcrypto tartlamaz sz<73>mos SQL lek<65>rdez<65>sben haszn<7A>lhat<61> k<>dol<6F>st.
|
|
|
|
|
- A kliens-szerver kommunik<69>ci<63> rejtjelez<65>s<EFBFBD>re a hostssl haszn<7A>lhat<61>.
|
|
|
|
|
Ezt a pg_hba.conf-ben enged<65>lyeztheted.
|
|
|
|
|
- Az adatb<74>zis felhszn<7A>l<EFBFBD>k jelszavait t<>rol<6F>skor k<>dolja a rendszer.
|
|
|
|
|
R<>gebbi verzi<7A>kban a PASSWORD_ENCRYPTION opci<63>val lehetett
|
|
|
|
|
bekapcsolni.
|
|
|
|
|
- A szerveren haszn<7A>lhatsz k<>dolt f<>jrendszert.
|
|
|
|
|
_________________________________________________________________
|
|
|
|
|
|
|
|
|
|
A PostgreSQL kiterjeszt<7A>se
|
|
|
|
|
|
|
|
|
|
5.1) <20>rtam egy felhaszn<7A>l<EFBFBD>i funkci<63>t. Mi<4D>rt core dumpol az adatb<74>zis amikor
|
|
|
|
|
haszn<7A>lom?
|
|
|
|
|
|
|
|
|
|
Sz<53>mos probl<62>ma lehet. El<45>bb prob<6F>ld ki a funkci<63>dat egy k<>l<EFBFBD>n<EFBFBD>ll<6C>
|
|
|
|
|
alkalmaz<61>sban.
|
|
|
|
|
|
|
|
|
|
5.2) Hogyan lehet <20>j adatt<74>pusokat <20>s funkci<63>kat hozz<7A>adni a PostgreSQL
|
|
|
|
|
disztrib<69>ci<63>hoz?
|
|
|
|
|
|
|
|
|
|
K<>ldd el a kieg<65>sz<73>t<EFBFBD>seid a pgsql-hackers levelez<65>si list<73>ra <20>s a
|
|
|
|
|
forr<72>skodjaid v<>g<EFBFBD>l a contrib-ban k<>tnek ki.
|
|
|
|
|
|
|
|
|
|
5.3) Hogyan lehet olyan C funkci<63>t <20>rni, ami Tuple-t ad vissza?
|
|
|
|
|
|
|
|
|
|
A 7.3 verzi<7A>t<EFBFBD>l kezdve a PostgreSQL t<>mogatja a t<>bl<62>zatokat
|
|
|
|
|
viszzaad<61> funkci<63>kat C, PL/pgSQL <20>s SQL nyelveken. B<>vebb
|
|
|
|
|
dokument<6E>ci<63>t a Programoz<6F> k<>zik<69>nyvben tal<61>lsz. Egy C p<>lda
|
|
|
|
|
funkci<63> tal<61>lhat<61> a contrib/tablefunc k<>nyvt<76>rban.
|
|
|
|
|
|
|
|
|
|
5.4) Megv<67>ltoztattam egy forr<72>s <20>llom<6F>nyt. Mi<4D>rt nem v<>ltozik a bin<69>ris
|
|
|
|
|
<20>jraford<72>t<EFBFBD>s ut<75>n?
|
|
|
|
|
|
|
|
|
|
A Makefile-ok nem ismerik a include <20>llom<6F>nyok megfelel<65> f<>gg<67>s<EFBFBD>geit.
|
2003-01-14 07:00:32 +08:00
|
|
|
|
V<>gre kell hajtanod egy make clean-t, majd <20>jra egy make-t. Ha GCC-t
|
|
|
|
|
haszn<7A>lsz felhaszn<7A>lhatod a configure script --enable-depend opci<63>j<EFBFBD>t,
|
|
|
|
|
<20>gy a compiler maga fogja ellen<65>rizni a f<>gg<67>s<EFBFBD>geket.
|
2003-02-19 01:20:37 +08:00
|
|
|
|
|
|
|
|
|
|