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