1 <!DOCTYPE html PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN">
4 <meta content=
"text/html; charset=ISO-8859-1"
5 http-equiv=
"content-type">
6 <title>PostgreSQL GYIK
</title>
10 <div style=
"text-align: center;">
11 <h1>PostgreSQL GyIK
</h1>
15 <pre>Utols
ó m
ódos
ít
ás d
átuma:
2005 m
ájus
9.
</pre>
16 <pre>Ford
ít
ás aktualiz
ál
ása:
2005 j
únius
</pre>
18 A GyIK karbantart
ója: Bruce Momjian (
<a
19 href=
"mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us
</a>)
</pre>
20 <pre>Ford
ít
ó: Horny
ák L
ászl
ó<br>(
<a
21 href=
"mailto:laszlo.hornyak.nospam@gmail.com">laszlo.hornyak.nospam@gmail.com
</a>)
</pre>
23 A legfrissebb verzi
ó itt
érhet
õ el (angol):
</pre>
24 <pre><a href=
"http://www.PostgreSQL.org/docs/faq-english.html">http://www.PostgreSQL.org/docs/faq-english.html
</a>.
</pre>
26 Legfrissebb magyar nyelv
û verzi
ó:
</pre>
27 <pre><a href=
"http://hackers.forgeahead.hu/space/PostgreSQL/GYIK">http://hackers.forgeahead.hu/space/PostgreSQL/GYIK
</a></pre>
29 Platform specifikus k
érd
ések:
</pre>
30 <pre><a href=
"http://www.PostgreSQL.org/users-lounge/docs/faq.htm">http://www.PostgreSQL.org/users-lounge/docs/faq.htm
</a>l.
</pre>
31 <hr style=
"width: 100%; height: 2px;">
32 <div style=
"text-align: center;">
33 <h2>Által
ános k
érd
ések
</h2>
35 <a href=
"#1.1">1.1</a> Mi a PostgreSQL? Hogy kell kimondani?
<br>
36 <a href=
"#1.2">1.2</a> Mik a PostgreSQL felhaszn
ál
ási
37 felt
ételei?
<br>
38 <a href=
"#1.3">1.3</a> Milyen UNIX oper
áci
ós
39 rendszereken fut PostgreSQL?
<br>
40 <a href=
"#1.4">1.4</a> Milyen nem UNIX oper
áci
ós
41 rendszerek el
érhet
õek?
<br>
42 <a href=
"#1.5">1.5</a> Hogyan tudok PostgreSQL-t szerezni?
<br>
43 <a href=
"#1.6">1.6</a> Hogyan kapok
44 term
ékt
ámogat
ást?
<br>
45 <a href=
"#1.7">1.7</a> Melyik a legfrissebb kiad
ás?
<br>
46 <a href=
"#1.8">1.8</a> Milyen dokument
áci
ó áll
47 rendelkez
ésre?
<br>
48 <a href=
"#1.9">1.9</a> Hogyan tal
álok inform
áci
ót
49 hib
ákr
ól vagy hi
ányz
ó
50 funkcional
ít
ásr
ól?
<br>
51 <a href=
"#1.10">1.10</a> Hogy tanuljam meg az SQL nyelvet?
<br>
52 <a href=
"#1.11">1.11</a> A PostgreSQL
2000.
év kompatibilis?
<br>
53 <a href=
"#1.12">1.12</a> Hogyan lehet csatlakozni a fejleszt
õ
55 <a href=
"#1.13">1.13</a> Hogyan k
üldjek hibajelent
ést?
<br>
56 <a href=
"#1.14">1.14</a> Milyen a PostgreSQL m
ás DBMS-ekkel
57 összehasonl
ítva?
<br>
58 <a href=
"#1.15">1.15</a> Hogyan tudom
üzletileg segiteni a
60 <a href=
"#1.16">1.16</a> Ki ir
ány
ítja a PostgreSQL-t?
<br>
62 <div style=
"text-align: center;">
63 <h2>Felhaszn
ál
ói kliens k
érd
ések
</h2>
66 <a href=
"#2.1">2.1</a> Van ODBC meghajt
ó PostgreSQL-hez?
<br>
67 <a href=
"#2.2">2.2</a> Milyen eszk
öz
ök
állnak
68 rendelkez
ésre PostgreSQL Web fejleszt
ésekhez?
<br>
69 <a href=
"#2.3">2.3</a> Van a PostgreSQL-hez grafikus
70 felhaszn
ál
ói fel
ület ? Riport gener
átor?
71 Be
ágyazott lek
érdez
õ nyelv fel
ület?
<br>
72 <a href=
"#2.4">2.4</a> Milyen programoz
ási nyelvekkel lehet
73 el
érni a PostgreSQL szervert?
<br>
75 <div style=
"text-align: center;">
76 <h2>Adminisztr
áci
ós k
érd
ések
</h2>
79 <a href=
"#3.1">3.1</a> Hogyan tudom a PostgreSQL-t /usr/local/pgsql
80 -t
õl elt
ér
õ helyre install
álni?
<br>
81 <a href=
"#3.2">3.2</a> AMikor elind
ítom a postmaster-t, egy
82 "Bad System Call"-t vagy core dump-ot kapok. Mi
ért?
<br>
83 <a href=
"#3.3">3.3</a> Amikor megpr
ób
álom inditani a
84 postmaster-t,
"IpcMemoryCreate" hib
ákat kapok. Mi
ért?
<br>
85 <a href=
"#3.4">3.4</a> Amikor megpr
ób
álom inditani a
86 postmaster-t,
"IpcSemaphoreCreate" hib
ákat kapok. Mi
ért?
<br>
87 <a href=
"#3.5">3.5</a> Hogyan tudom kontroll
álni a m
ás
88 g
épekr
õl
érkez
õ kapcsolat
89 k
ér
éseket?
<br>
90 <a href=
"#3.6">3.6</a> Hogyan tudom nagyobb
91 teljes
ítm
ényre hangolni az
92 adatb
ázisomat?
<br>
93 <a href=
"#3.7">3.7</a> Milyen hibakeres
õ
94 lehet
õs
égek
95 érhet
õek el?
<br>
96 <a href=
"#3.8">3.8</a> Mi
ért kapok
"Sorry, too many clients"
98 csatlakoz
ásn
ál?
<br>
99 <a href=
"#3.9">3.9</a> Mi van pgsql_tmp k
önyvt
árban?
<br>
100 <a href=
"#3.10">3.10</a> Mi
ért kell dumpolni
és
101 újrat
ölteni
102 PostgreSQL kiad
ás v
ált
ás
án
ál?
<br>
104 <div style=
"text-align: center;">
105 <h2>M
ûk
ödtet
ési k
érd
ések
</h2>
108 <a href=
"#4.1">4.1</a> Mi a k
ül
önbs
ég a bin
áris
110 norm
ál kurzorok k
öz
ött?
<br>
111 <a href=
"#4.2">4.2</a> Hogyan tudom select-elni a
112 lek
érdez
és els
õ
113 p
ár sor
át?
<br>
114 <a href=
"#4.3">4.3</a> Hogy tudom kilist
ázni a
115 t
ábl
ákat vagy
116 m
ás dolgokat a PostgreSQL-ben?
<br>
117 <a href=
"#4.4">4.4</a> Hogyan tudok elt
ávol
ítani egy
119 t
ábl
áb
ól?
<br>
120 <a href=
"#4.5">4.5</a> Mi a maxim
ális m
érete egy sornak,
122 t
ábl
ának vagy egy adatb
ázisnak?
<br>
123 <a href=
"#4.6">4.6</a> Mekkora adatb
ázis lemez ter
ület
124 sz
üks
éges
125 egy tipikus sz
öveg
állom
ány
126 t
árol
ás
ához?
<br>
127 <a href=
"#4.7">4.7</a> Hogy tudhatom meg milyen t
ábl
ák,
129 adatb
ázisok vagy felhaszn
ál
ók vannak
130 defini
álva?
<br>
131 <a href=
"#4.8">4.8</a> A lek
érdez
éseim lass
úak,
133 haszn
álj
ák az indexeket. Mi
ért?
<br>
134 <a href=
"#4.9">4.9</a> Hogy tudom ellen
õrizni, hogy
135 optimaliz
álta a
136 lek
érdez
és optimaliz
ál
ó a
137 lek
érdez
ésem?
<br>
138 <a href=
"#4.10">4.10</a> Mi az R-tree index?
<br>
139 <a href=
"#4.11">4.11</a> Mi a Genetic Query Optimizer?
<br>
140 <a href=
"4.12">4.12</a> Hogyan tudok regexp keres
ést
és
142 regexp keres
ést haszn
álni? Hogyan tudok indexet
143 haszn
álni case-insensitive keres
éshez?
<br>
144 <a href=
"4.13">4.13</a> Hogyan tudom
észlelni egy
145 lek
érdez
ésban, ha
146 egy mez
õ NULL?
<br>
147 <a href=
"#4.14">4.14</a> Mi a k
ül
önbs
ég a
148 k
ül
önb
öz
õ
149 karaktert
ípusok k
öz
ött?
<br>
150 <a href=
"#4.15.1">4.15.1</a> Hogyan tudok l
étrehozni
152 n
övekv
õ ért
ék
û mez
õt?
<br>
153 <a href=
"#4.15.2">4.15.2</a> Hogyan kaphatom meg egy SERIAL
154 besz
úr
ás
155 ért
ék
ét?
<br>
156 <a href=
"#4.15.3">4.15.3</a> A currval()
és a nextval() nem
158 vesz
élyes helyzetet a felhaszn
ál
ók
159 k
öz
ött?
<br>
160 <a href=
"#4.15.4">4.15.4</a> Mi
ért nem
161 haszn
ál
ódnak fel
újra a
162 sequence sz
ámok tranzakci
ó abort eset
én?
163 Mi
ért vannak probl
ém
ák a serial oszlopok
164 sz
ámoz
ás
ával?
<br>
165 <a href=
"#4.16">4.16</a> Mi a OID? Mi a TID?
<br>
166 <a href=
"#4.17">4.17</a> Mi a PostgreSQL-ben haszn
ált
168 jelent
ése?
<br>
169 <a href=
"#4.18">4.18</a> Mi
ért kapom ezt a hib
át:
"ERROR:
171 in AllocSetAlloc()"?
<br>
172 <a href=
"#4.19">4.19</a> Hogyan tudhatom meg PostgreSQL, milyen
173 verzi
ót futtatok?
<br>
174 <a href=
"#4.20">4.20</a> Mi
ért kapok
"invalid large obj
175 descriptor" hib
át
176 nagy objektumok kezel
és
én
él?
<br>
177 <a href=
"#4.21">4.21</a> Hogy hozhatok l
étre olyan oszlopot,
179 alap
értelmezett
ér
étke a jelenlegi id
õ?
<br>
180 <a href=
"#4.22">4.22</a> Mi
ért olyan lass
úak az
181 al-lek
érdez
éseim IN-nel?
<br>
182 <a href=
"#4.23">4.23</a> Hogyan tudok outer join-t v
égrehajtani?
<br>
183 <a href=
"#4.24">4.24</a> Hogyan tudok t
öbb adatb
ázison
185 lek
érdez
ést?
<br>
186 <a href=
"#4.25">4.25</a> Hogy tudok t
öbb soros vagy oszlopos
188 visszaadni egy funkci
ób
ól?
<br>
189 <a href=
"#4.26">4.26</a> Mi
ért nem tudom megbizhat
óan
191 és t
ör
ölni az
átmeneti t
ábl
ákat a
192 PL/pgSQL funkci
ókban?
<br>
193 <a href=
"#4.27">4.27</a> Milyen replik
áci
ós
194 lehet
õs
égek vannak?
<br>
195 <a href=
"#4.28">4.28</a> Milyen k
ódol
ási
196 lehet
õs
égek vannak?
<br>
198 <div style=
"text-align: center;">
199 <h2>A PostgreSQL kiterjeszt
ése
</h2>
202 <a href=
"#5.1">5.1</a>)
Írtam egy felhaszn
ál
ói
204 Mi
ért core dumpol az adatb
ázis amikor haszn
álom?
<br>
205 <a href=
"#5.1">5.2</a>) Hogyan lehet
új adatt
ípusokat
207 funkci
ókat hozz
áadni a PostgreSQL
208 disztrib
úci
óhoz?
<br>
209 <a href=
"#5.3">5.3</a>) Hogyan lehet olyan C funkci
ót
210 írni, ami Tuple-t ad
211 vissza? (t
öbb soros t
öbb oszlopos eredm
ények)
<br>
212 <a href=
"#5.4">5.4</a>) Megv
áltoztattam egy forr
ás
213 állom
ányt.
214 Mi
ért nem v
áltozik a bin
áris
215 újraford
ít
ás ut
án?
<br>
216 <hr style=
"width: 100%; height: 2px;">
217 <h2 style=
"text-align: center;"> Által
ános
218 k
érd
ések
</h2>
220 <a name=
"1.1"></a><big style=
"text-decoration: underline;">1.1 Mi a
221 PostgreSQL? Hogy kell kimondani?
</big><br>
222 <p>Így ejstd ki: Post-Gres-Q-L.
</p>
223 <p>(Vagy tal
án ink
ább t
öltsd le a kis mp3-at a
224 PostgreSQL homepage-r
õl)
</p>
225 <p>A PostgreSQL a POSTGRES adatb
ázis management rendszer egy
226 kieg
ész
ít
ése, ami egy k
övetkez
õ
227 gener
áci
ós DBMS kutat
ási protot
ípus.
228 Megtartja a POSTGRES adatmodell
ét
és gazdag
229 adatt
ípus v
álaszt
ék
át, de a PostQuel
230 lek
érdez
õ nyelvet az SQL egy kiterjesztett
231 verzi
ój
ával helyettes
íti. A PostgreSQL szabad
232 és a teljes forr
ásk
ód
233 hozz
áf
érhet
õ.
</p>
234 <p>A PostgreSQL fejleszt
és
ét egy csapat v
égzi,
235 amelynek minden tagja megtal
álhat
ó a PostgreSQL
236 fejleszt
õi levelez
ési list
án. A jelenlegi
238 Marc G. Fournier (scrappyp@PostgreSQL.org). Ez a csapat felel
õs
239 minden fejleszt
és
ért.
<>A PostgreSQL
1.01
241 Andrew Yu
és Jolly Chen voltak. Sokan j
árultak
242 hozz
á portol
ással, tesztel
éssel,
243 hibakeres
éssel
és fejleszt
éssel. Az eredeti
244 Postgres k
ód, amib
õl a PostgreSQL sz
ármazik
245 Michael Stonebraker professzor ir
ány
ít
ása alatt
246 fejlesztettek az egyetem programoz
ói, tanul
ói
és
247 v
égzett tanul
ói.
<></p>
248 <p>A szoftver eredeti neve Postgres volt. Amikor SQL
249 funkcional
ít
ással eg
ész
ített
ék ki
250 1995-ben, a nev
ét Postgres95-re v
áltoztatt
ák.
1996
251 v
ég
én kapta mai nev
ét.
</p>
253 <a name=
"1.2"></a> <big style=
"text-decoration: underline;">1.2 Mik a
254 PostgreSQL felhaszn
ál
ási
255 felt
ételei?
</big><br>
257 <pre> Az eredeti angol copyright sz
öveg:
</pre>
258 <pre> --------------------
</pre>
259 <pre> PostgreSQL is subject to the following COPYRIGHT:
</pre>
260 <pre><br> PostgreSQL Data Base Management System
</pre>
261 <pre><br> Portions copyright (c)
1996-
2002, PostgreSQL Global Development Group
</pre>
262 <pre> Portions Copyright (c)
1994-
6 Regents of the University of California
</pre>
263 <pre><br> Permission to use, copy, modify, and distribute this software and its
</pre>
264 <pre> documentation for any purpose, without fee, and without a written
</pre>
265 <pre> agreement is hereby granted, provided that the above copyright notice
</pre>
266 <pre> and this paragraph and the following two paragraphs appear in all
</pre>
268 <pre><br> IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
</pre>
269 <pre> FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
</pre>
270 <pre> INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND
</pre>
271 <pre> ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN
</pre>
272 <pre> ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</pre>
273 <pre><br> THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
</pre>
274 <pre> INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
</pre>
275 <pre> MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
</pre>
276 <pre> PROVIDED HEREUNDER IS ON AN
"AS IS" BASIS, AND THE UNIVERSITY OF
</pre>
277 <pre> CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
</pre>
278 <pre> UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
</pre>
279 <pre> --------------------
</pre>
282 Ami nagyon leegyszer
ûs
ítve azt jelenti, hogy jogod van
283 haszn
álni a szoftvert mindenf
éle
284 ellenszolg
áltat
ás (p
énz, stb) n
élk
ül,
285 a forr
ás k
ódot m
ódos
íthatod,
és
286 tov
ábbadhatod, DE semmilyen, a szoftver
287 haszn
álat
áb
ól k
övetkez
õ
288 k
árosod
ás
ért nem v
állal garanci
át a
289 fejleszt
õ. A fenti a BSD licensz, egy klasszikus
290 nyilt-forr
ásk
ód licensz. Nem tartalmaz
291 megszor
ít
ásokat arra, hogy a forr
ásk
ódot
292 hogyan haszn
álod fel.
293 <p> Kedvelj
ük ezt a licensz form
át
és nem
áll
294 sz
ánd
ékunkban megv
áltoztatni.
</p>
295 <a name=
"1.3"></a> <big><span style=
"text-decoration: underline;">1.3
296 Milyen UNIX oper
áci
ós
297 rendszereken fut PostgreSQL?
</span></big><br>
298 <p>Által
ában minden UNIX-kompatibilis
299 oper
áci
ós rendszer k
épes arra hogy futtassa a
300 PostgreSQL-t. Azokat a platformokat, amiken tesztelt
ék a
302 megtal
álhatod a install
áci
ós
303 utas
ít
ások k
öz
ött.
</p>
304 <a name=
"1.4"></a> <big><span style=
"text-decoration: underline;">1.4
305 Milyen nem UNIX oper
áci
ós
306 rendszerek el
érhet
õek?
</span></big><br>
310 <p>A libpq C f
üggv
ényk
önyvt
árat, a psql-t
311 és m
ás fel
ületeket le lehet
úgy
312 ford
ítani, hogy fussanak MS Windows oper
áci
ós
313 rendszereken. Ebben az esetben a kliens MS Windows-on fut
és
314 TCP/IP seg
íts
ég
ével kommunik
ál a Unixon
315 fut
ó szerverrel. A
"win32.mak" állom
ány a
316 kiad
ás r
észe, ennek seg
íts
ég
ével
317 lehet Win32 platformokra leford
ítani a libpq-t
és a
318 psql-t. A PostgreSQL ODBC kliensekkel is k
épes
319 kommunik
álni.
</p>
322 <>Az adatb
ázis szerver Cygwin
323 seg
íts
ég
ével
324 fut Windows NT
és Win2k rendszereken. Tov
ábbi
325 inform
áci
ó
326 tal
álhat
ó a pgsql/doc/FAQ_MSWIN
állom
ányban
327 és a MS Windows FAQ-ban a k
övetkez
õ helyen:
<a
328 href=
"http://www.PostgreSQL.org/docs/faq-mswin.html">http://www.PostgreSQL.org/docs/faq-mswin.html
</a>.
329 Nat
ív MS Windows NT/
2000/XP portok jelenleg fejleszt
és
330 alatt
állnak.
<br>
332 <a name=
"1.5"></a> <big style=
"text-decoration: underline;">1.5 Hogyan
333 tudok PostgreSQL-t szerezni?
</big><br>
334 <p>Az els
õdleges anonim ftp oldal:
<a
335 href=
"ftp://ftp.PostgreSQL.org/pub">ftp://ftp.PostgreSQL.org/pub
</a>.
</p>
336 <p>A t
ük
ör oldalak list
ája megtal
álhat
ó
338 f
õ weboldalunkon.
</p>
339 <a name=
"1.6"></a> <big style=
"text-decoration: underline;">1.6 Hogyan
341 term
ékt
ámogat
ást?
</big><br>
343 <p>Az els
õdleges lista a
<a
344 href=
"mailto:pgsql-general@postgresql.org">pgsql-general@postgresql.org
</a>.
346 haszn
álhat
ó a PostgreSQL-lel kapcsolatos
347 p
árbesz
édekre. Ha fel
348 szeretn
él
íratkozni, k
üldj egy levelet a
349 k
övetkez
õ tartalommal (nem
351 href=
"mailto:%20pgsql-general-request@postgresql.org">
352 pgsql-general-request@postgresql.org
</a> c
ímre:
</p>
358 Van egy hib
ákkal kapcsolatos levelez
ési lista is:
359 pgsql-bugs-request@PostgreSQL.org a k
övetkez
õ tartalommal:
<br>
366 <p>A fejleszt
ői levelez
ési lista:
<a
367 href=
"mailto:pgsql-hackers-request@PostgreSQL.org">
368 pgsql-hackers-request@PostgreSQL.org
</a> a k
övetkez
õ
375 Egy
éb levelez
ési list
ák
376 tal
álhat
óak
377 a weboldalunkon:
<a href=
"http://www.PostgreSQL.org">http://www.PostgreSQL.org
</a>
378 <p>Van egy IRC csatorna is
<a href=
"irc://irc.freenode.net/#postgresql">#PostgreSQL
</a>
379 n
éven ahol felteheted
380 k
ér
édseid. A k
övetkez
õ unix paranccsal
383 <p>irc -c '#PostgreSQL'
"$USER" irc.phoenix.net.
</p>
385 A kereskedelmi term
ékt
ámogat
ást
386 ny
újt
ó c
égek list
ája el
érhet
ö
388 href=
"http://www.PostgreSQL.org/users-lounge/commercial-support.html">
389 http://www.PostgreSQL.org/users-lounge/commercial-support.html
</a><br>
391 <p>Magyar nyelv
ű levelez
ési lista nincs, de ha tudok segiteni a
392 fenit e-mail cimemen el
érhet
ő vagyok.
</p>
393 <a name=
"1.7"></a> <big style=
"text-decoration: underline;">1.7 Melyik
394 a legfrissebb kiad
ás?
</big><br>
395 <p>A legfrissebb PostgreSQL kiad
ás a
8.0.
</p>
396 <p>A tervek szerint minden
évben lesz egy nagyobb
397 fejleszt
éseket tartalmaz
ó kiad
ás, m
íg a
398 kisebb fejleszt
éseket n
éh
ány havonta adjuk ki.
<br>
400 <a name=
"1.8"></a> <big style=
"text-decoration: underline;">1.8 Milyen
401 dokument
áci
ó áll
402 rendelkez
ésre?
</big><br>
403 <p>Sz
ámos k
ézik
önyv, man oldalak
és kis teszt
404 p
éld
ák tal
álhat
óak a kiad
ásban a
405 doc/ k
önyvt
ár alatt. Az interneten is olvashatod a
406 dokument
áci
ót a k
övetkez
õ c
ímen:
</p>
407 <p><a href=
"http://www.PostgreSQL.org/users-lounge/docs/">http://www.PostgreSQL.org/users-lounge/docs/
</a>.
</p>
408 <p>K
ét PostgreSQL k
önyv
érhet
õ el az
410 a
<a href=
"http://www.PostgreSQL.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html
</a>
411 és a
<a href=
"http://www.commandprompt.com/ppbook/">http://www.commandprompt.com/ppbook/
</a>
412 c
ímeken. A megv
ás
árolhat
ó k
önyvek
414 tal
álhat
ó:
<a href=
"http://www.ca.PostgreSQL.org/books/">http://www.ca.PostgreSQL.org/books/
</a>.
415 A PostgreSQL-lel kapcsolatos technikai jelleg
û cikkek
416 gy
ûjtem
énye:
<a href=
"http://techdocs.PostgreSQL.org/">http://techdocs.PostgreSQL.org/
</a>.
</p>
417 <p>A psql parancs rendelkezik n
éh
ány \d
418 utas
ít
ással, amellyekkel list
ázhat
óak az
419 oper
átorok, a funkci
ók, stb.
</p>
420 <p>A website is tartalmaz tov
ábbi dokument
áci
ókat.
</p>
421 <a name=
"1.9"></a> <big style=
"text-decoration: underline;">1.9 Hogyan
422 tal
álok inform
áci
ót
423 hib
ákr
ól vagy hi
ányz
ó
424 funkcional
ít
ásr
ól?
</big><br>
425 <p>A PostgreSQLaz SQL-
92 szabv
ány egy
426 kieg
ész
ít
ése. N
ézd meg a TODO
427 list
ákat ha
érdekelnek az ismert hib
ák.
</p>
428 <a name=
"1.10"></a> <big style=
"text-decoration: underline;">1.10 Hogy
429 tanuljam meg az SQL nyelvet?
</big><br>
431 <p>A PostgreSQL k
önyv a
432 <a href=
"http://www.PostgreSQL.org/docs/awbook.html">http://www.PostgreSQL.org/docs/awbook.html
</a>
433 c
ímen tartalmaz SQL
434 alapokat. El
érhet
õ egy
435 m
ásik SQL k
önyv is a
<a
436 href=
"http://www.commandprompt.com/ppbook">http://www.commandprompt.com/ppbook
</a>
437 c
ímen. Egy sz
ép
438 oktat
ó anyag tal
álhat
ó a
439 <a href=
"http://www.intermedia.net/support/sql/sqltut.shtm">http://www.intermedia.net/support/sql/sqltut.shtm
</a>,
442 href=
"http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM">http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM
</a>
443 és a
<a href=
"http://sqlcourse.com">http://sqlcourse.com
</a>
446 <p>Egy m
ásik lehet
õs
ég a
"Tanítsd magad 21
448 alatt SQL-re, második kiadás" a
449 <a href=
"http://members.tripod.com/er4ebus/sql/index.htm">http://members.tripod.com/er4ebus/sql/index.htm
</a>.
</p>
451 Sok felhaszn
ál
ónak tetszett a gyakorlati SQL k
önyv
452 (
"The Practical SQL Handbook").
</p>
454 <a name=
"1.11"></a> <big style=
"text-decoration: underline;">1.11 A
455 PostgreSQL
2000.
év kompatibilis?
</big><br>
457 <p>Igen, k
önnyed
én kezeli a
2000 ut
áni
és
458 id
õsz
ám
ít
ásunk el
ött
2000 el
ötti
459 d
átumokat is.
</p>
461 <a name=
"1.12"></a> <big style=
"text-decoration: underline;">1.12
462 Hogyan lehet csatlakozni a fejleszt
õ
465 El
össz
ör is t
öltsd le a forr
ásk
ódot,
466 és olvasd el a PostgreSQL
<br>
467 fejleszt
õi dokumnet
áci
ót a web oldalunkon vagy a
468 kiad
ásban. Ezut
án
<br>
469 íratkozz fel a pgsql-hackers
és a pgsql-patches
470 levelez
ési list
ákra.
<br>
471 V
ég
ül pedig k
üldj be magas szinvonal
ú
472 patch-eket a pgsql-patches list
ára.
<br>
474 Van egy p
ár ember, akiknek commit privil
égiumuk a
475 PostgreSQL CVS f
án.
<br>
476 Õk olyan sok magas szinvonal
ú patch-et k
üldtek be,
478 csapat m
ár nem tudta k
övetni,
és nem volt
479 k
éts
ég
ünk arr
ól, hogy a
<br>
480 patch-ek amiket
õk k
üldenek j
ó
481 min
õs
ég
û.
<br>
483 <a name=
"1.13"></a> <big style=
"text-decoration: underline;">1.13
484 Hogyan k
üldjek hibajelent
ést?
</big><br>
486 L
átogass el a BugTool oldalra:
<br>
487 <a href=
"http://www.PostgreSQL.org/bugs/bugs.php">http://www.PostgreSQL.org/bugs/bugs.php
</a><br>
488 Itt megtal
álod k
övetend
õ utas
ít
ásokat.
<br>
490 Ellen
õrizd az ftp oldalunkon is, hogy nincs-e
újabb
491 verzi
ó vagy folt.
<br>
492 <a href=
"ftp://ftp.PostgreSQL.org/pub">ftp://ftp.PostgreSQL.org/pub
</a><br>
494 <a name=
"1.14"></a><big style=
"text-decoration: underline;">1.14 Milyen
495 a PostgreSQL m
ás DBMS-ekkel
496 összehasonl
ítva?
</big><br>
497 <p>Sz
ámos n
éz
õpontb
ól lehet
500 szoftvert: k
épess
égek, teljes
ítm
ény
501 megb
ízhat
ós
ág, t
ámogatotts
ág
502 és
ár.
</p>
503 <span style=
"text-decoration: underline;">K
épess
égek:
</span>
504 A PostgreSQL rendelkezik a nagy, kereskedelmi DBMS-ek
505 k
épess
égeivel: tranzakci
ók,
506 al-lek
érdez
ések, triggerek,
507 n
ézetek, k
üls
õ kulcsok, integr
ít
ás
508 és kifinoult z
ármechanizmusok.
509 Van n
éh
ány k
épess
ége, ami a kereskedelmi
510 adatb
ázisokb
ól hi
ányzik, mint
511 p
éld
ául a felhaszn
ál
ó által
512 defini
ált t
ípusok,
513 ör
ökl
õd
és, szab
ályok
és
514 verzi
ó kontroll a z
árol
ási vit
ák
515 reduk
ál
ás
áért.
516 <p><span style=
"text-decoration: underline;">Teljes
ítm
ény:
</span>
517 A PostgreSQL teljes
ítm
énye hasonl
ít a
519 és m
ás ny
ílt adatb
ázis
520 szerverek
éhez. Lehet bizonyos esetekben
521 lassabb, m
ásokban gyorsabb. A MySQL nev
û tanul
ó
522 RDBMS p
éld
ául gyorsabban hajt v
égre insert/update
523 m
ûveleteket, mivel a tranzakci
ókat
524 elsum
ákolja. Persze a MySQL nem rendelkezik a
525 k
épess
égek
526 r
észben felsoroltak nagy r
ész
ével. Mi a
527 megb
ízhat
ós
ágra
528 és a k
épess
égekre
ép
ít
ünk,
529 b
ár a teljes
ítm
ény is n
õ minden
530 kiad
ással. Van
531 egy
érdekes oldal a MySQL
és a PostgreSQL
532 összehasonl
ít
ás
ával a
533 <a href=
"http://openacs.org/philosophy/why-not-mysql.html">http://openacs.org/philosophy/why-not-mysql.html
536 <p><span style=
"text-decoration: underline;">Megb
ízhat
ós
ág:
</span>
537 Tudjuk hogy ha egy DBMS nem megb
ízhat
ó, akkor
539 haszontalan. Igyeksz
ünk j
ól tesztelt, stabil k
ódot
541 a lehet
õ legkevesebb hiba van. Minden kiad
ás
543 legal
ább
1 h
ónap b
éta teszt,
és a
545 t
ört
énet is azt mutatja, hogy stabil k
ódot adunk ki,
546 ami k
észen
áll a
547 produkt
ív felhaszn
ál
ásra.
Úgy gondoljuk,
548 fel
ülm
úlunk m
ás
549 adatb
ázis szoftvereket ezen a t
éren.
552 <p><span style=
"text-decoration: underline;">T
ámogat
ás:
</span>
553 A levelez
ési list
áink kapcsolatot teremtenek a
554 fejleszt
õk
és felhaszn
ál
ók
555 csoportj
ával , akik
556 seg
ítenek a probl
ém
ák megold
ás
ában.
557 B
ár nem tudjuk garant
álni
558 hogy ki tudjuk jav
ítani a hib
át, m
ás, kereskedelmi
559 adatb
ázis c
égek sem tudj
ák. A fejleszt
õ
560 csoport k
özvetlen el
ér
ési
561 lehet
õs
ége, a k
öz
öss
ég, a
562 dokument
áci
ó és a forr
ásk
ód
563 gyakran t
ámogat
ást biztos
ít, mint m
ás
564 adatb
ázisokn
ál. Van kereskedelmi, alkalmi
565 t
ámogat
ás azoknak, akiknek sz
üks
ége van
566 r
á (l
ásd:
1.6).
569 <p><span style=
"text-decoration: underline;">Ár:
</span> A
570 PostgreSQL szabad b
ármilyen
571 felhaszn
ál
ásra,
572 ak
ár kereskedelmire is. A term
ékhez hozz
áadhatod a
574 forr
ásk
ódjaidat korl
átoz
ás
575 n
élk
ül.
</p>
576 <a name=
"1.15"></a> <big style=
"text-decoration: underline;">1.15
577 Hogyan tudom
üzletileg segiteni a
578 PostgreSQL-t?
</big><br>
579 <p>A PostgreSQL els
õ oszt
ály
ú
580 infrastrukt
úr
ával rendelkezik, amit
1996-ban
581 ind
ítottunk el. Mindent Marc Fourniernek
582 k
ösz
önhet
ünk, aki l
étrehozta
és
583 karbantartja a rendszert.
585 <p>A min
õs
égi infrastrukt
úra nagyon fontos egy
587 forr
ás
ú szoftver eset
ében. Megv
éd az olyan
588 fennakad
ásokt
ól,
589 amelyek komoly k
és
éseket okoznak a
590 fejleszt
ésekben. Term
észetesen ez az
591 infrastrukt
úra nem olcs
ó.
592 Sz
ámos havi
és
álland
ó kiad
ásunk
593 van. Ha a c
égednek van p
énze, amivel
594 t
ámogatn
á er
õfesz
ít
éseinket,
595 k
érlek l
átogass el a
<a
596 href=
"http://store.pgsql.com/shopping/">http://store.pgsql.com/shopping/
</a>
599 B
ár a weboldal
"PostgreSQL, Inc"-k
ént
601 hozz
áj
árul
ások kiz
ár
ólag a
602 PostgreSQL fejleszt
ésre
értend
óek,
és nem
603 egy meghat
ározott c
égnek. Ha jobban tetszik,
604 k
üldhetsz csekket is a kapcsolati c
ímek
605 b
ármelyik
ére.
</p>
606 <p><big style=
"text-decoration: underline;"><a name=
"1.16"></a>1.16 Ki
607 ir
ány
ítja a PostgreSQL-t?
<br>
609 <p><big style=
"text-decoration: underline;"><small><span
610 style=
"text-decoration: underline;"></span></small></big><big><small>Ha
611 k
özponti bizotts
ágot, ellen
örz
ő c
éget keresel a
612 PostgreSQL m
ög
ött, add fel, nincs ilyesmi. L
étezik egy
613 mag
és CVS commiter csoport, de ez ink
áb adminisztrativ
614 mint ellen
örz
ő c
él
ú. A projectet fejleszt
ők
615 és felhaszn
ál
ók k
öz
öss
ége
616 ir
ány
ítja, amihez b
árki csatlakozhat.
617 Csup
án annyit kell tenned hogy fel
íratkozol a
618 levelez
őlist
ékra
és r
észt veszel a
619 besz
élget
ésekben.
</small></big><big
620 style=
"text-decoration: underline;"><small><span
621 style=
"text-decoration: underline;"></span></small></big></p>
623 <hr style=
"width: 100%; height: 2px;">
624 <h2 style=
"text-align: center;">Felhaszn
ál
ói kliens
625 k
érd
ések
</h2>
627 <a name=
"2.1"></a> <big style=
"text-decoration: underline;">2.1 Van
628 ODBC meghajt
ó PostgreSQL-hez?
</big><br>
629 <p>K
ét ODBC meghajt
ó érhet
õ el: PsqlODBC
630 és a OpenLink ODBC.
</p>
631 <p>A PsqlODBC a PostgreSQL kiad
ás r
észe. Tov
ábbi
632 inform
áci
ó tal
álhat
ó a
633 ftp://ftp.PostgreSQL.org/pub/odbc/ oldalon.
</p>
634 <p>Az OpenLink ODBC-t a
<a href=
"http://www.openlinksw.com">http://www.openlinksw.com
</a>
636 t
öltheted le. Ez az
õ szabv
ányos ODBC kliens
638 m
ûk
ödik,
így minden
</p>
639 <p>általuk t
ámogatott platformon (Win, Mac, Unix, VMS)
640 el
érhet
õ lesz
a PostgreSQL szerver.
</p>
641 <p>Tal
án olyan vev
õknek fogj
ák eladni, akik
642 kereskedelmi min
õs
ég
û term
éket
643 szeretn
ének kapni, de a freeware verzi
ó mindig
644 el
érhet
õ lesz. K
érd
éseidet a
645 term
ékkel kapcsolatban a postgres95@openlink.co.uk
646 c
ímen teheted fel.
</p>
647 <p>Olvasd el az ODBC fejezetet is a programoz
ók
648 k
ézik
önyv
ében!
</p>
649 <p><a name=
"2.2"></a><big style=
"text-decoration: underline;">2.2
651 eszk
öz
ök
állnak
652 rendelkez
ésre PostgreSQL Web fejleszt
ésekhez?
</big></p>
653 <p>Egy sz
ép bemutat
ó olvashat
ó az
655 t
ámogatott web oldalanr
ól a http://www.webreview.com
657 <p>A web integr
áci
óhoz a PHP egy kiv
áll
ó
658 szoftver. Let
ölthet
õ a
<a href=
"http://www.php.net">http://www.php.net
</a>
659 c
ímr
õl.
</p>
660 <p>Komplexebb esetekre sokan haszn
álj
ák a Perl
661 fel
ületet
és a CGI.pm vagy a mod_perl-t.
</p>
662 <p><a name=
"2.3"></a><big style=
"text-decoration: underline;">2.3 Van a
663 PostgreSQL-hez grafikus
664 felhaszn
ál
ói fel
ület?
</big></p>
665 <p>Van egy sz
ép PgAccess nev
û grafikus
666 fel
ület
ünk,
667 ami riport gener
átork
ént is haszn
álhat
ó. A
668 weboldal
át megtal
álod a
669 <a href=
"http://www.pgaccess.org/">http://www.pgaccess.org/
</a>
671 <p>A
<a href=
"http://techdocs.postgresql.org/guides/GUITools">http://techdocs.postgresql.org/guides/GUITools
</a>
672 oldalon tal
álhatsz egy pontos
és r
észltes
675 <p><a name=
"2.4"></a><big style=
"text-decoration: underline;">2.4
677 programoz
ási nyelvekkel lehet
678 el
érni a PostgreSQL szervert?
</big></p>
679 <p>A k
övetkez
ök:
</p>
682 <li>C++ (libpq++)
</li>
683 <li>Embedded C (ecpg)
</li>
685 <li>Perl (DBD::Pg and perl5)
</li>
687 <li>Python (PyGreSQL)
</li>
688 <li>TCL (libpgtcl)
</li>
689 <li>C Easy API (libpgeasy)
</li>
690 <li>PHP ('pg_' functions, Pear::DB)
</li>
693 Tov
ábbi programoz
ási fel
ületek
694 érhet
õek el a
<br>
695 <a href=
"http://www.PostgreSQL.org/interfaces.html">
696 http://www.PostgreSQL.org/interfaces.html
</a> és a
<br>
697 <a href=
"http://gborg.PostgreSQL.org"> http://gborg.PostgreSQL.org
</a>
700 <hr style=
"width: 100%; height: 2px;">
701 <h2 style=
"text-align: center;">Adminisztr
áci
ós
702 k
érd
ések
</h2>
704 <a name=
"3.1"></a> <big><span style=
"text-decoration: underline;">3.1
705 Hogyan tudom a PostgreSQL-t /usr/local/pgsql
706 -t
õl elt
ér
õ helyre install
álni?
</span></big><br>
707 <p>A configure script --prefix param
éter
ének
708 haszn
álat
ával.
</p>
709 <a name=
"3.2"></a> <big style=
"text-decoration: underline;">3.2 AMikor
710 elind
ítom a postmaster-t, egy
711 "Bad System Call"-t vagy core dump-ot kapok. Mi
ért?
</big><br>
712 <p>Sz
ámos probl
éma lehet, de legel
össz
ör
713 ellen
õrizd le, hogy a kerneled System V
714 kieg
ész
ít
ésekkel rendelkezik-e. A
715 PostgreSQL haszn
álja a kernel osztott mem
ória
és
716 szemafor API-j
át.
</p>
717 <p><a name=
"3.3"></a><big style=
"text-decoration: underline;">3.3
719 megpr
ób
álom inditani a
720 postmaster-t,
"IpcMemoryCreate" hib
ákat kapok. Mi
ért?
</big></p>
722 Vagy nincs megfelel
õen konfigur
álva a kerneled osztott
723 mem
ória t
ámogat
ása vagy meg kell
724 nagyobb
ítanod a maxim
ális osztott
725 mem
ória m
éretet.
</p>
726 <p>A pontos m
éret sz
üks
églet f
ügg az
727 architekt
úr
ádt
ól
és att
ól hogy
728 h
ány buffert
és processzt konfigur
álsz a
730 Legal
ább
1 MB ter
ületre sz
üks
éged van. A
732 Adminisztr
áci
ó k
ézik
önyvben olvashatsz
733 r
észletesebb inform
áci
ókat az osztott
734 mem
óri
ár
ól
és a szemaforokr
ól.
</p>
735 <a name=
"3.4"></a><big style=
"text-decoration: underline;">3.4) Amikor
736 megpr
ób
álom inditani a
737 postmaster-t,
"IpcSemaphoreCreate" <br>
738 hib
ákat kapok. Mi
ért?
</big><br>
739 <p>Ha a hiba
üzenet ez:
" IpcSemaphoreCreate: semget failed (No
740 space left on device)", akkor a kerneled konfigur
áci
ója
742 tesz lehet
õv
é elegend
õ szemafort. A PostgreSQL
743 szerver processzenk
ént
1
744 szemafort ig
ényel. Egy
átmeneti megold
ás lehet az
746 postmastert kevesebb maxim
ális processz sz
ámmal inditod
747 el. Haszn
áld a
748 -D param
étert. Egy sokkal megfelel
õbb megold
ás az
750 kerneled SEMMNS
és SEMMNI param
étereit.
</p>
751 <p>A hib
ás szemaforok is adat
ázis
752 lerobban
ás
ához is vezethet nagy terhel
és
753 eset
én.Ha a hiba
üzenet valami m
ás, lehet hogy nincs
755 t
ámogat
ás
</p>
756 <p>forditva a kerneledbe. Olvasd el a PostgreSQL
757 adminisztr
átorok k
ézik
önyv
ében az osztott
758 mem
óri
ár
ól
és a szemaforokr
ól
759 sz
ól
ó fejezetet.
</p>
760 <p><a name=
"3.5"></a><big style=
"text-decoration: underline;">3.5)
761 Hogyan tudom kontroll
álni a m
ás
762 g
épekr
õl
érkez
õ kapcsolat
763 k
ér
éseket?
</big></p>
764 <p>Alap
értelmez
ésben a PostgreSQL a helyi kapcsolatokat
766 socketekkel val
ós
ítja meg. M
ás g
épek nem
768 k
épesek csatlakozni, ha nem enged
élyezed azt -i
769 opci
óval a postmasternek,
és
770 nem
áll
ítod be host a alap
ú
771 azonos
ít
ást a pg_hba.conf
772 állom
ányban. Ezzel v
álnak lehet
õv
é a
773 TCP/IP kapcsolatok.
</p>
774 <p><a name=
"3.6"></a><big style=
"text-decoration: underline;">3.6)
776 teljes
ítm
ényre hangolni az adatb
ázisomat?
</big></p>
777 <p>Az indexel
és felt
étlen
ül gyors
ítja a
778 lek
érdez
éseket. Az EXPLAIN parancs lehet
õv
é
779 teszi hogy l
ásd, hogy a
780 PostgreSQL mik
ént interpret
álja a
781 lek
érdez
ést
és melyik indexet haszn
álja.
</p>
782 <p>Ha sok INSERT m
ûveletet hajtassz v
égre, csin
áld
783 nagy k
ötegekben a COPY paranccsal. Ez sokkal gyorsabb mint az
784 egyedi INSERT parancsok.
785 M
ásodszor: Azok a m
ûveletek, amelyek nincsenek
786 tranzakci
ó blokkon
787 bel
ül, azok saj
át tranzakci
ót ind
ítanak. Sok
788 m
ûveletet
érdemes
789 egy tranzakci
ón bel
ül v
égrehajtani. Ez
790 cs
ökkenti a tranzakci
ó
791 kezel
és t
öbbletidej
ét. Az indexeket javasolt a nagy
792 adatv
áltoz
ások el
ött
793 elt
ávol
ítani, majd
újra l
étrehozni.
</p>
794 <p>Sz
ámos teljes
ítm
ény jav
ít
ó
795 lehet
õs
ég van. Kikapcsolhatod az fsync() m
ûveletet
796 a postmaster -o -F opci
ókval val
ó
797 ind
ít
ásakor.
Így nem fog az amugy lass
ú
798 fsync() f
üggv
ény
799 megh
ív
ódni minden tranzakci
ó v
ég
én.
</p>
800 <p>Haszn
álhatod a postmaster -B opci
ój
át is az
801 osztott mem
ória szegmens m
éret
ének
802 n
övel
és
éhez. Ha az
803 ért
éket t
úl magasra
áll
ítod, lehet
804 hogy a postmaster nem indul el, mert t
úll
épted az
805 oper
áci
ós rendszer
által
megengedett
806 m
éretet. Minden buffer
8K m
éret
û
807 és alap
értelmez
ésban
64 buffer van.
</p>
808 <p>A -S opci
óval n
övelheted a szerver
átmeneti
809 rendez
ésekre fenntartott mem
ória ter
ület
ét.
810 Az
ért
éket
811 kilobyteban add meg. Az alap
értelmezett
ért
ék
813 <p>Haszn
álhatod a CLUSTER utas
ít
ást is, hogy a
814 t
ábl
ákat egy indexnek megfelel
õen
815 csoportos
ítsd. Olvasd el a CLUSTER
816 k
ézik
önyv oldalt tov
ábbi r
észletek
ért.
<br>
818 <p>Hardver kiv
álaszt
ás
ában seg
íthet:
<a
819 href=
"http://candle.pha.pa.us/main/writings/pgsql/hw_performance/index.html">http://candle.pha.pa.us/main/writings/pgsql/hw_performance/index.html
</a>
820 és
<a href=
"http://www.powerpostgresql.com/PerfList/">http://www.powerpostgresql.com/PerfList/
</a>.
<br>
822 <p>A postgresql.conf be
állit
ásaival kapcsolatos
823 tudnival
ók:
<a
824 href=
"http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.html">http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.html
</a>
826 href=
"http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html">http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html
</a>.
</p>
828 <p><a name=
"3.7"></a> <big style=
"text-decoration: underline;">3.7)
829 Milyen hibakeres
õ
830 lehet
õs
égek
érhet
õek el?
</big></p>
831 <p>A PostgreSQL sz
ámos lehet
ös
éggel rendelkezik ami
832 ért
ékes lehet a hibakeres
ésn
él.
</p>
833 El
össz
ör is, futtathatod a configure scriptet
834 --enable-cassert opci
óval, sok assert()
835 funkci
óhiv
ás ellen
örzi
836 a program fut
ás
át
és meg
állitja ha valami
837 v
ératlan hiba t
ört
énik.
<br>
838 <p>Mind a postmaster
és a postgres sz
ámos hibakeres
ö
839 lehet
üs
éggel rendelkezik. Mindig amikor elinditod a
840 postmastert, gy
öz
ödj meg
841 r
óla, hogy a kimenetet log
állom
ányba
842 k
üld
öd. Igy:
</p>
843 <p>cd /usr/local/pgsql
</p>
844 <p>./bin/postmaster
>server.log
2>&1 &</p>
845 <p>Ez egy server.log
állom
ányt hoz l
étre a
847 PostgreSQL k
önyvt
árban. Ez az
állom
ány
848 tartlamaz majd sz
ámos hasznos
849 inform
áci
ót a szerverrel kapcsolatos
850 probl
ém
ákr
ól
és
851 hib
ákr
ól. A postmaster -d opci
ój
ával lehet
852 r
észletesebb hibakeres
ö inform
áci
ót kapni. A
853 -d opci
óhoz meg kell hat
ározni egy hiba szintet.
854 Vigy
ázz, a magas
855 hibakeres
ö szint nagy log
állom
ányt okozhat.
</p>
856 <p>Ha a postmaster nem fut, akkor futtathatod a postgres szervert
857 parancssorb
ól is,
és az SQL kifejez
ést
858 k
özvetlen
ül ennek adhatod
át. Ez csak
859 hibakeres
és eset
ében javasolt. Az
új sor a
860 kifejez
és v
ég
ét jelenti, nem a pontosvessz
ö.
861 Ha hibakeres
ö opci
ókkal
862 forditottad a szervert, haszn
álhatsz egy debuggert is hogy
864 t
ört
énik. Mivel igy a szervert nem a postmaster inditotta,
866 t
öbbfelhaszn
ál
ós k
örnyezetk
ént fut, igy
867 a z
árol
ási
és a szerverek
868 k
öz
ötti kommunik
áci
ós hiba jelens
égek
869 nem jelentkeznek.
</p>
870 <p>Ha m
ár fut a postmaster, indits egy psql-t,
és
871 n
ézd meg a szerver processz PID-j
ét! Egy debuggert
872 haszn
álhatsz a processzhez
873 csatlakoz
áshoz. Be
állithatsz t
ör
éspontokat
874 és elindithatsz
875 lek
érdez
éseket. Ha a postgres indit
ásban keresel
876 hib
át, a PGOPTIONS k
örnyezeti
877 v
áltoz
ót
állitsd be
"-W n" ért
ékre.
878 Ez n m
ásodperc v
árakoz
ást
879 id
éz el
ö, igy tudsz csatlakozni a processzhez, el tdsz
880 hejezni t
ör
éspontokat, majd
881 folytathatod a ind
ít
ást.
</p>
882 <p>A postgres program -s, -A
és -t opci
ói is nagyon
883 hasznosak lehetnek hibakeres
ésn
él
és
884 teljes
ítm
ény
885 m
ér
ésn
él.
</p>
886 <p>Profiling leht
ös
éggel is fordithatod a szervert, hogy
887 l
ásd melyik funkci
ók foglalj
ák el a fut
ási
889 szerver profile
állom
ányai a pgsql/data/base/dbname
890 k
önzvt
árba ker
ülnek, a kliens
891 profile
állom
ányok az aktu
ális
892 k
önyvt
árba.
893 Linuxon ehhez sz
üks
éges a -DLINUX_PROFILE
894 ford
ít
ási direktiva.
</p>
895 <a name=
"3.8"></a> <big style=
"text-decoration: underline;">3.8)
896 Mi
ért kapok
"Sorry, too many clients"
897 (T
úl sok kliens)
<br>
898 hib
át csatlakoz
ásn
ál?
</big><br>
899 <p>N
övelned kell a postmaster egyidej
ûleg futtatott szerver
900 processz sz
ám korl
átj
át.
</p>
901 <p>Az alap
értelmezett korl
át
32 processz. Ezt
902 n
övelhetjed
úgy, hogy
újrainditod a postmastert
903 és -N opci
óval
904 meghat
árotod az
új
ért
éket, vagy
905 m
ódositod a postgresql.conf-ot.
</p>
906 <p>Ne felejtsd el, hogy ha n
öveled a szerver processzek
907 maxim
ális sz
ám
át, akkor bufferek
908 sz
ám
át is n
övelned kell,
909 legal
ább a processzek sz
ám
ának
910 k
étszeres
ére. Nagy processz sz
ámokeset
ében
911 val
ószin
üleg a Unix konfigur
áci
ós
912 param
étereken is n
övelni kell.
913 Ellen
örizd a SHMMAX (az osztott mem
ória szegmensek
914 maxim
ális m
érete),
915 a SEMMNS
és a SEMMNI (a szemaforok maxim
ális
916 sz
áma), az NPROC (a processzek
917 maxim
ális sz
áma), a MAXUPRC
918 (felhaszn
ál
ónk
énti maxim
ális
919 processz sz
ám)
és a NFILE
és NINODE (a megnzitott
920 állom
ánzok maxim
ális sz
áma)
921 param
étereket. A PostgreSQL az
ért korl
átozza
922 k
ül
ön a processz
923 sz
ámot, hogy a rendszeredet ne terhelhesse meg
924 t
úls
ágosan.
</p>
925 <p>A PostgreSQL
6.5 verzi
óban a maxim
ális szerver
927 sz
ám
64 volt
és a m
ódosit
áshoz bele kellett
929 include/storage/sinvaladt.h
állom
ányba
és
930 újra kellett forditani a servert.
<a name=
"3.9"></a></p>
931 <big style=
"text-decoration: underline;">3.9) Mi van pgsql_tmp
932 k
önyvt
árban?
</big><br>
933 <p>Ez a k
önyvt
ár a lek
érdez
és
934 v
égrehajt
ó által l
étrehezott
935 átmeneti
állom
ányokat tartalmazza.
936 P
éld
ául ha egy
937 rendez
ést kell v
égrehajtani egy ORDER BY kifejez
és
938 miatt
és a m?velet t
öbb
939 mem
óri
át vesz ig
énybe, mint amennyit a -S
940 param
éter megenged, akkor az
941 átmeneti k
önyvt
árban hoz l
étre egy
942 állom
ányt a
943 fennmarad
ó adat t
árol
ás
ára.
</p>
944 <p>Az
átmeneti
állom
ányok t
öbbnyire
945 t
örl?dnek, de meg is maradhat ha p
éld
ául
946 v
áratlan hib
ával le
áll a
947 szerver egy rendez
és k
özben. Indit
áskor
és
948 le
állit
áskor ezeket az
949 állom
ányokat t
örli a postmaster.
</p>
950 <a name=
"3.10"></a> <big style=
"text-decoration: underline;">3.10)
951 Mi
ért kell dumpolni
és
952 újrat
ölteni PostgreSQL kiad
ás
953 v
ált
ás
án
ál?
</big><br>
954 <p>A PostgreSQL csapat csak apr
óbb
955 v
áltoztat
ásokat
956 hajt v
égre a kisebb kiad
ások k
öz
ött, igy ha
7.2
957 verzi
ór
ól
958 állsz
át
7.2.1 verzi
óra, akkor nem
959 sz
üks
éges kidumplonod az adatb
ázist. A nagy
960 kiad
ások eset
ében (p
éld
ául
961 verzi
ór
ól
7.3-ra
átt
ér
ésn
él)
962 v
áltozik a belsi
õ adatstrukt
úr
ák
és
963 adat
állom
ányok form
átuma. Ezek a
964 v
áltoz
ások gyakran nagyon
összetettek, ez
ért
965 ink
áb nem tartunk fenn visszafel
é
966 kompatibilit
ást. A dump az adatot
által
ános
967 form
átumban irja ki, majd az
968 új form
átumban lehet azt visszat
öleni.
970 Azokban a kiad
ásokban, amelyek k
öz
ött az adat
971 form
átum nem v
áltozik, a pg_upgrade program
972 haszn
álhat
ó dumpol
ás
973 és helyre
állit
ás n
élk
ül.
974 <hr style=
"width: 100%; height: 2px;"><br>
975 <h2 style=
"text-align: center;"> M
ûk
ödtet
ési
976 k
érd
ések
</h2>
978 <a name=
"4.1"></a> <big style=
"text-decoration: underline;">4.1) Mi a
979 k
ül
önbs
ég a
980 bin
áris
és a norm
ál kurzorok k
öz
ött?
</big><br>
981 <p>N
ézd meg a DECLARE dokument
áci
ój
át.
</p>
982 <a name=
"4.2"></a> <big style=
"text-decoration: underline;">4.2)
983 Hogyan tudom select-elni a
984 lek
érdez
és els
õ p
ár sor
át?
</big><br>
985 <p>Olvasd el a FETCH dokument
áci
ój
át, vagy
986 haszn
áld a SELECT LIMIT-et.
</p>
987 <p>Az eg
ész lek
érdez
ést v
égre kell
989 m
ég akkor is, ha csak az els
õ p
ár sort akarod
990 megkapni. Gondolj arra, hogy a
991 lek
érdez
ésben lehet ORDER BY is. Ha van olyan index, ami
992 megfelel az ORDER BY kifejez
ésednek,
993 a PostgreSQL k
épes lehet az els
ö n
éh
ány
995 visszaad
ás
ára, vagy a teljes lek
érdez
ésnek
996 le kell futnia, amig a k
ért rekordok
997 le nem gener
ál
ódnak.
998 <a name=
"4.3"></a><big style=
"text-decoration: underline;"><br>
1000 <p><big style=
"text-decoration: underline;">4.3) Hogy tudom
1002 t
ábl
ákat vagy m
ás dolgokat a PostgreSQL-ben?
</big></p>
1003 <p>Elolvashatod a psql forr
ás k
ódj
ában a
1004 pgsql/src/bin/psql/describe.c
állom
ányban. Ez SQL
1005 parancsokat tartalmaz, amelyek azokat
1006 a kimeneteket
állitj
ák el
ö, amiket a per jellel
1008 parancsok adnak vissza.
</p>
1009 <a name=
"4.4"></a> <big style=
"text-decoration: underline;">4.4)
1010 Hogyan tudok elt
ávol
ítani egy
1011 oszlopot egy t
ábl
áb
ól?
</big><br>
1013 <p>Ez a funkcionalit
ás a
7.3 verzi
ót
ül kezdve
1014 érhet
ö el az ALTER TABLE DROP COLUMN -nal. A r
égebbi
1015 verti
ókban igy lehet
1016 v
égrehajtani:
</p>
1018 <pre>LOCK TABLE old_table;
</pre>
1019 <pre>SELECT ... -- minden oszlopot, kiv
étel amit t
ör
ölni szeretn
él
<br></pre>
1020 <pre>INTO TABLE new_table
</pre>
1021 <pre>FROM old_table;
</pre>
1022 <pre>DROP TABLE old_table;
</pre>
1023 <pre>ALTER TABLE new_table RENAME TO old_table;
</pre>
1026 <h4><a name=
"4.5"></a><big
1027 style=
"text-decoration: underline; font-weight: normal;">4.5) Mi a
1028 maxim
ális m
érete egy sornak,
1029 egy t
ábl
ának vagy egy adatb
ázisnak?
</big></h4>
1031 <p>A korl
átok:
</p>
1034 <p>adatb
ázis: korl
átlan (
1 TB az
általunk
1039 <p>t
ábla:
16 TB
</p>
1042 <p>rekord/sor
1.6TB
</p>
1045 <p>mez
ö 1 GB
</p>
1048 <p>a t
ábla sorainak sz
áma: korl
átlan
</p>
1051 <p>a t
ábla oszlopainak sz
áma:
250-
1600 az oszlop
1052 nevekt
õl f
ügg
öen
</p>
1055 <p>A t
ábla indexeinek sz
áma: korl
átlan
</p>
1058 <p>Term
észetesen nem igaz
án korl
átlan, de a
1059 t
árter
ület, mem
ória
és egy
éb
1060 k
üls
ö t
ényez
ök korl
átozz
ák. A
1061 teljesitm
ény romolhat, ha ezek az
ért
ékek
1062 szokatlanul nagyok.
</p>
1063 <p>A
16 TB-os legnagyobb t
ábla m
éret nem ig
ényel
1065 állom
ány t
ámogat
ást. A nagy
1066 t
ábl
ák t
öbb
1 GB m
éret
ü
1067 állom
ányba ker
ölnek, igy az
állom
ány
1068 rendszer korl
átai nem l
ényegesek.
</p>
1069 <p>A maxim
ális t
ábla m
éret
és az oszlopok
1070 maxim
ális oszlop sz
ám n
övelhet
ö, ha az
1071 alap
értelmezett blokkm
éretet
32k-ra n
öveled.
</p>
1072 <a name=
"4.6"></a> <big style=
"text-decoration: underline;">4.6)
1073 Mekkora adatb
ázis lemez ter
ület
1074 sz
üks
éges egy tipikus sz
öveg
állom
ány
<br>
1075 t
árol
ás
ához?
</big><br>
1076 <p>A PostgreSQL ak
ár a sz
öveg
állom
ány
1077 helyig
ény
ének
ötsz
ör
ös
ét is
1079 <p>K
épzelj el p
éld
ául, egy
100.000 soros
1080 sz
öveget, aminek minde sora egy sz
ámb
ól
és
1081 egy sz
övegb
õl
1082 áll. Tegy
ük el, hogy
átlagosan
20 byte hossz
ú
1083 sz
övegek. Ez a sz
öveg
állom
ány
1084 k
ör
ülbel
ül
2.8 MB helyet foglalna el. A t
ábla ami
1085 a fenti adatszerkezetet elt
ároln
á,
1086 k
ör
ülbel
ül
6.4 MB-os lenne. Ezt a
1087 k
övetkez
ök
éppen sz
ámolhatjuk ki:
</p>
1088 <p>36 byte: sor fejl
éc
</p>
1089 <pre>24 byte: egy int mez
ö + egy sz
öveg mez
ö</pre>
1090 <pre>4 byte: mutato
</pre>
1091 <pre>---------------------------------------
</pre>
1092 <pre>64 byte soronkent.
</pre>
1093 <p>Az adat oldal m
érete a PostgreSQL-ben
8192 byte, igy
8192 /
1094 64 =
128 rekord adatb
ázis oldalank
ént
1095 (lefel
é kerekitve).
</p>
1096 <pre>100000 rekord /
128 rekord oldalank
ént =
782 adat oldal
<br>(felel
é kerekitve).
</pre>
1097 <pre>782 adatb
ázis oldal *
8192 byte olalank
ént =
6,
406,
144<br>byte (
6.4 MB)
</pre>
1098 <p>Az indexek nem foglalnak t
úl sokat, de tartalmazz
ák az
1099 indexelt adatot, igy ezek is lehetnek nagyok.
</p>
1100 <p>A NULL
ért
ékek bitt
érk
épben vannak
1101 t
árolva, igy kev
és helyet foglanak.
</p>
1102 <p><a name=
"4.7"></a><big style=
"text-decoration: underline;">4.7) Hogy
1103 tudhatom meg milyen t
ábl
ák,
1104 indexek, adatb
ázisok vagy felhaszn
ál
ók
</big></p>
1105 <big style=
"text-decoration: underline;">vannak defini
álva?
<br>
1107 <p>A psql-ben tal
álsz sz
ámos '\' karakterrel
1108 kezd
öd
ö utas
ít
ást az ilyen
1109 inform
áci
ók list
áz
ás
ára. A '\?'
1110 segits
ég
ével tudot kilist
ázni ezeketa parancsokat.
1111 Ezen kiv
ül vannak rendszer t
ábl
ák,
1112 amelyek nevei 'pg_'-vel kezd
ödnek.
</p>
1113 <p>Pr
ób
áld ki a pgsql/src/tutorial/syscat.source
1114 állom
ányt is. Ez sok p
éld
át tartalmaz az
1115 rendszert
ábl
ákon
1116 v
égrehajtott SELECT-ekr
öl.
</p>
1117 <p><a name=
"4.8"></a><big style=
"text-decoration: underline;">4.8) A
1118 lek
érdez
éseim lass
úak,
1119 vagy nem haszn
álj
ák az indexeket. Mi
ért?
</big></p>
1120 <p><big style=
"text-decoration: underline;"></big></p>
1121 <p>Az indexeket nem haszn
álja a szerver minden
1122 lek
érdez
ésn
él automatikusan. Csak akkor
1123 haszn
ál indexet, ha a t
ábla m
érete egy
1124 megadott als
ó hat
ár felett van,
és a
1125 lek
érdez
és csak a sorok egy kis
1126 r
ész
ét
érinti. Ez az
ért van, mert a
1127 v
életlen hozz
áf
ér
és m
ég
1128 mindig lassabb lehet mint az t
ábla szekvenci
ális
1129 olvas
ása.
</p>
1130 <p>Hogy a PostgreSQL meg tudja hat
ározni hogy kell-e indexet
1131 haszn
álni, l
éteznie kell egy statisztik
ának a
1132 t
ábl
ár
ól. Ez a statisztikai adatok a VAACUM
1133 ANALYZE vagy az egyszer
û ANALYZE m
ûveletek
1134 sor
án j
önnek l
étre. A statisztikai adatok
1135 felhaszn
ál
ás
ával az optimaliz
ál
ó meg
1136 tudja hat
ározni, hogy h
ány sor van a
1137 t
ábl
ában,
és el tudja d
önteni, hogy
1138 haszn
áljon-e indexet. A statisztiaki
1139 adatgy
üjt
ést id
õnk
ént v
égre kell
1140 hajtani, ahogy a t
ábla adatai v
áltoznak.
</p>
1141 <p>Az indexeket norm
ális esetben nem haszn
álja az ORDER
1143 vagy az OUTER JOIN. A szekvenci
ális olvas
ás
1144 által
ában gyorsabb, mint az index keres
és egy nagy
1145 t
ábl
ában. B
ár a LIMIT az ORDER BY-val
1146 kombin
álva haszn
álhat
1147 indexet, mert a t
ábla csak kis r
észe
érintett.
1149 és MAX SQL funkci
ók sem haszn
álj
ák az
1150 indexeket, ezeket az
1151 ért
ékeket egy ORDER BY + LIMIT
1152 lek
érdez
éssel is le lehet k
érdezni:
</p>
1153 <pre>SELECT col
</pre>
1155 <pre>ORDER BY col [ DESC ]
</pre>
1158 <p>Amikor helyettes
ít
õ jel oper
átorokat
1159 haszn
álsz, mint a LIKE kulcssz
ó vagy a ~, az indexeket
1160 csak bizonyos k
ör
ülm
ények
1161 k
öz
ött lehet haszn
álni:
</p>
1162 <p>A keres
õ string kezdete a keres
ési minta elej
én
1163 kell hogy legyen. P
éld
ául:
</p>
1165 <li>A LIKE mint
ák nem kezd
õdhetnek % jellel.
</li>
1166 <li> ~ (regexp) kifejez
ések nem kezd
õdhetnek ^
1168 <li>A keres
ési kifejez
és nem kezd
õdhet karakter
1169 oszt
állyal.
</li>
1170 <li>A case-insensitive keres
és (ILIKE, ~*) nem
1172 indexet ehelyett funkcion
ális indexet haszn
álnak, amit a
1174 pontban tal
álhatsz.
</li>
1175 <li>Az alap
értelmezett C hellyel kell futtatni az initdb-t.
</li>
1177 <a name=
"4.9"></a> <big style=
"text-decoration: underline;">4.9) Hogy
1178 tudom ellen
õrizni, hogy
1179 optimaliz
álta a lek
érdez
és
1180 optimaliz
ál
ó<br>
1181 a lek
érdez
ésem?
<br>
1183 <p>Olvasd el a dokument
áci
ó EXPLAIN-r
ól
1184 sz
ól
ó r
ész
ét.
</p>
1185 <p><a name=
"4.10"></a><big style=
"text-decoration: underline;">4.10) Mi
1186 az R-tree index?
</big></p>
1187 <p>Az R-tree index a t
érbeli adat indexel
és
ére
1188 alkalmas. Egy hash index nem k
épes tartom
ány
1189 keres
ésekre. A B-tree
1190 index csak egy dimenzi
ón kezeli a tartom
ány
1192 P
éld
ául ha az indexet egy pont (point adatt
ípus)
1193 t
ípus
ú mez.re
1194 ép
ítj
ük, gyorsabban kezeli az olyan jelleg
ü
1195 lek
érdez
éseket, mint egy
1196 adott k
örben
</p>
1197 <p>tal
álhat
ó pontok.
</p>
1198 <p>Az R-tree tervez
ési mint
át eredetileg
1200 sz
öveg: Guttman, A.
"R-trees: A Dynamic Index Structure for
1201 Spatial Searching." Proceedings of the
1984 ACM SIGMOD Int'l Conf on
1202 Mgmt of Data,
45-
57.
</p>
1203 <p>Ezt olvashatod Stonebraker
"Readings in Database Systems" c.
1204 k
önyv
ében.
</p>
1205 <p>A be
ép
ített R-tree kezelni tudj
ák a
1206 soksz
ögeket (polygon adatt
ípus)
és a dobozokat
1207 (box). Elm
életileg, az R-tree
1208 kiterjeszthet
õ tov
ábbi dimenzi
ókra is.
1209 Gyakorlatilag ezen dolgoznod kell egy kicsit,
1210 és m
ég nincs dokument
áci
ónk arr
ól
1212 hogyan m
ûk
ödik.
</p>
1213 <p><a name=
"4.11"></a><big style=
"text-decoration: underline;">4.11) Mi
1214 a Genetic Query Optimizer?
</big></p>
1215 <p><big style=
"text-decoration: underline;"></big></p>
1216 <p>A GEQO modul a lek
érdez
és optimaliz
áci
ó
1217 sebess
ég
ét n
öveli nagy mennyis
ég
û
1218 t
ábla
összekapcsol
ása
1219 eset
én. Lehet
õv
é teszi a nagy
1220 lek
érdez
ések v
égrehajt
ás
át nem
1221 teljes keres
éssel.
</p>
1222 <p><a name=
"4.12"></a><big style=
"text-decoration: underline;">4.12)
1223 Hogyan tudok regexp keres
ést
és
1224 case-insensitive regexp keres
ést
</big><big
1225 style=
"text-decoration: underline;">haszn
álni? Hogyan tudok
1226 indexet haszn
álni
1227 case-insensitive keres
éshez?
</big><br>
1229 <p>A ~ oper
átor hajt v
égre regul
áris
1231 (regexp)
értelmez
ést, a ~* ennek case-insensitive
1232 v
áltozata. A LIKE case-insensitive v
áltozata az ILIKE.
</p>
1233 <p>A case-insensitive egyenl
õs
ég m
ûveleteket
1234 által
ában igy hajtjuk v
égre:
</p>
1237 <pre>WHERE lower(col) = 'abc';
</pre>
1238 <p>Ez nem fog indexet haszn
álni, b
ár l
étrehozhatsz
1239 egy funkci
ó indexet:
</p>
1240 <pre>CREATE INDEX tabindex ON tab (lower(col));
</pre>
1241 <a name=
"4.13"></a> <big style=
"text-decoration: underline;">4.13)
1242 Hogyan tudom
észlelni egy
1243 lek
érdez
ésben, ha egy mez
õ NULL?
</big><br>
1244 <p>Haszn
áld
"IS NULL"-t
és az
"IS NOT NULL"-t.
</p>
1245 <p><a name=
"4.14"></a><big style=
"text-decoration: underline;">4.14) Mi
1246 a k
ül
önbs
ég a
1247 k
ül
önb
öz
õ karaktert
ípusok k
öz
ött?
</big></p>
1249 <li>"char" egy karakter hossz
ú string
</li>
1250 <li>CHAR(n) bpchar
üres hellyel a megadott n
1251 hossz
ús
ágig
</li>
1252 <li>VARCHAR(n) varchar m
éret maxim
ális hossz
1253 meghat
ároz
ás
ával, a lefogllat ter
ület is
1254 v
áltoz
ó hossz
ú lesz
</li>
1255 <li>TEXT nincs meghat
ározott fels
ő korl
át
</li>
1256 <li>BYTEA v
áltoz
ó hossz
ús
ág
ú
1259 <p>L
átni fogod a bels
õ elnevez
és
üket, ha
1260 tanulm
ányozod a rendszert
ábl
ákat
és
1261 n
éh
ány hiba
üzenetet.
</p>
1262 <p>Az ut
óbbi n
égy a
"varlena" t
ípusok, ami a
1263 t
árol
ásuk m
ódj
ára utal: az els
õ 4
1264 byte a lemezen a hossz
ús
ág, a t
öbbi
1265 az adat. A val
ódi m
éret teh
át nagyobb mint a
1267 hossz
ús
ág.Ezek azadatok t
öm
öritve
1268 t
árol
ódnak el, igy kevesebb helyet foglalnek el az
1269 el
öre sz
ámitottn
ál.
</p>
1270 <p>A CHAR(n) a legjobb megold
ás, ha stabil
1271 hossz
ús
ág
ú stringet t
árolsz. A VARCHAR(n)
1272 j
ó arra az esetekre, ha a hossz
ús
ág
1273 v
áltozik, de van fels
õ korl
átja. A TEXT
1274 t
ípus korl
átlan
1275 hossz
ús
ág
ú (
1 GB-ig) sz
övegek
1276 t
árol
ás
ára alklamas. A BYTEA bin
áris adatok
1277 t
árol
ás
ára van. A teljesitm
ény
1278 mutat
ói hasonl
óak ezenek a
1279 t
ípusoknak.
</p>
1280 <p><a name=
"4.15.1"></a><big style=
"text-decoration: underline;">4.15.1)
1281 Hogyan tudok l
étrehozni
1282 automatikusan n
övekv
õ ért
ék
û
1283 mez
õt?
</big></p>
1285 A PostgreSQL rendelkezik egy SERIAL adatt
ípussal. Ez egy
1286 szekvenci
át
és egy indexet hoz l
étre az oszlopon.
1287 P
éld
ául ez:
<br>
1288 <pre>CREATE TABLE person (
</pre>
1289 <pre>id SERIAL,
</pre>
1290 <pre>name TEXT
</pre>
1292 <p>ugyanezt jelenti:
</p>
1293 <pre>CREATE SEQUENCE person_id_seq;
</pre>
1294 <pre>CREATE TABLE person (
</pre>
1295 <pre>id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
</pre>
1296 <pre>name TEXT
</pre>
1298 <pre>CREATE UNIQUE INDEX person_id_key ON person ( id );
</pre>
1300 <p>A szekvenci
ákkal kapcsolatban olvasd el a create_sequence man
1301 oldalt. A sor OID-j
ét is haszn
álhatod egyedi
1302 azonosit
ók
ént, b
ár ebben az esetben figyelj a
1303 pg_gump haszn
álat
án
ál a
1304 -o opci
óra (COPY WITH OIDS, m
ásol
ás OID-dal), hogy
1306 ért
ékeket.
</p>
1307 <p><a name=
"4.15.2"></a><big style=
"text-decoration: underline;">4.15.2)
1308 Hogyan kaphatom meg egy SERIAL
1309 besz
úr
ás
ért
ék
ét?
</big></p>
1310 <p>Egy megold
ás erre az, ha a nextval() funkci
óval
1311 megszerzed az
ért
éket m
ég miel
ött
1312 besz
úrn
ád
1313 az adatot a t
ábl
ába. Erre itt l
áthatsz egy
1314 p
éld
át:
</p>
1315 <pre>new_id = execute(
"SELECT nextval('person_id_seq')");
</pre>
1316 <pre>execute(
"INSERT INTO person (id, name) VALUES (new_id, 'Blaise<br>Pascal')");
</pre>
1318 Esetleg lek
érdezheted a szekvencia
állapot
át a sor
1319 besz
úr
ása ut
án.
</p>
1320 <pre>execute(
"INSERT INTO person (name) VALUES ('Blaise Pascal')");
</pre>
1321 <pre>new_id = execute(
"SELECT currval('person_id_seq')");
</pre>
1323 V
ég
ül pedig, haszn
álhatod a visszaadott OID
1324 ért
éket is, b
ár ez a lehet
õ
1325 legkev
ésb
é portolhat
ó. Perl DBI-ben, Edmund Mergl
1326 DBD::Pg modulj
ában az OID
ért
ék
1327 haszn
álhat
ó a
1328 $sth-
>execute() ut
án ($sth-
>{pg_oid_status}).
</p>
1329 <a name=
"4.15.3"></a> <big style=
"text-decoration: underline;">4.15.3)
1330 A currval()
és a nextval() nem
1331 teremt holtpont vesz
élyes helyzetet a felhaszn
ál
ók
1332 k
öz
ött?
</big><br>
1333 <p>Nem. A currval() funkci
ó a szerver processzed
által
1335 ért
éket adja vissza, nem pedig a t
öbbi szerver
1336 processz
által adottat.
</p>
1337 <big style=
"text-decoration: underline;"><a name=
"4.15.4"></a>4.15.4)
1338 Mi
ért nem haszn
ál
ódnak fel
újra a
1339 sequence sz
ámok tranzakci
ó abort eset
én?
</big><br>
1340 <p>Mi
ért vannak probl
ém
ák a serial oszlopok
1341 sz
ámoz
ás
ával?
</p>
1342 <p>A p
árhuzamoss
ág fejleszt
ése
1343 érdek
ében a sorozat sz
ámokat k
ér
ésre
1344 adja ki a szerver fut
ó tranzakci
óknak,
és azokat
1345 nem z
árja, amig a tranzakci
ó v
éget nem
ér.
1347 sz
ámoz
ásokban a visszaforditott tranzakci
ók miatt.
</p>
1348 <p><a name=
"4.16"></a><big style=
"text-decoration: underline;"> 4.16)
1350 OID? Mi a TID?
</big></p>
1351 <p>Az OID a PostgreSQL egyedi sor azonosit
ója. Minden sor, ami
1352 l
étrej
ön a szerveren, kap egy OID-t. Minden OID, amit az
1353 initdb alatt j
ön
1354 l
étre
16384 alatt van (l
ásd include/access/transam.h).
1356 felhaszn
ál
ó által l
étrehozott OID
1357 legal
ább ennyi.
1358 Alap
értelmez
ésben, az OID nem csak a
1359 t
ábl
ában vagy az adatb
ázisban egyedi,
1360 hanem a teljes PostgreSQL adatb
ázis rendszerben.
</p>
1361 <p>A PostgreSQL az OID-okat a bels
ö t
ábl
áiban
1362 haszn
álja a sorok t
ábl
ák k
öz
ött
1363 összekapcsol
ás
ához. Ezek az OID-k
1364 haszn
álhat
óak a rekordok azonosit
ás
ára is
1365 amikor t
ábl
ákat csatol
1366 össze a szerver (JOIN). Az OID-ot haszn
álhatod mez
ö
1367 t
ípusk
ént is,
1368 és indexelheted is.
</p>
1369 <p>Az OID
ért
ék egy k
özponti ter
ületr
öl
1370 sz
ármazik, amit minden szerver processz haszn
ál. Ha az
1371 OID-ot valami m
ásra
1372 szeretn
éd cser
élni:
</p>
1373 <p>CREATE TABLE new_table(old_oid oid, mycol int);
</p>
1374 <pre>SELECT old_oid, mycol INTO new FROM old;
</pre>
1375 <pre>COPY new TO '/tmp/pgtable';
</pre>
1376 <pre>DELETE FROM new;
</pre>
1377 <pre>COPY new WITH OIDS FROM '/tmp/pgtable';
</pre>
1379 <p>Az OID
4 byte-os integer
ért
ékk
ént
1380 t
árol
ódik, igy
4 milli
árdn
ál
1381 t
úlcsordul. M
ég soha senki nem jelezte hogy ez
1382 t
ört
ént volna,
1383 és ezt a korl
átot igyeksz
ünk elt
ávolitani,
1384 m
ég miel
ött
1385 b
árki
észrevenn
é.
</p>
1386 <p>A TID a fizikai sorok blokk
és offszet c
ímmel
1388 azonosit
ás
ára szolg
ál. A TID v
áltozik
1389 minden rekord m
ódosit
ás
és
1390 t
örl
és alkalm
ával. Ezeket az indexek
1391 haszn
álj
ák hogy a fizikai sort gyorsan
1392 megtal
álj
ák.
</p>
1393 <p><a name=
"4.17"></a><big style=
"text-decoration: underline;">4.17) Mi
1394 a PostgreSQL-ben haszn
ált
1395 kifejez
ések jelent
ése?
</big></p>
1397 <p>N
éhol a forr
ás k
ódban
és a
1398 dokumnet
áci
óban tal
álhat
óak
1399 kifejez
ések, amelyek
által
ánosabb
1400 jelent
éssel b
írnak.
1401 Itt van n
éh
ány:
</p>
1403 <li>t
ábla (table), rel
áci
ó (relation),
1404 oszt
ály (class)
</li>
1405 <li>sor (row), rekord (record), tuple (nincs magyar jelent
és)
</li>
1406 <li>oszlop (column), mez
ö (field), attributum (attribute)
</li>
1407 <li>retrieve, select
</li>
1408 <li>helyettesit (replace), m
ódosit (update)
</li>
1409 <li>hozz
áf
ûz (append), besz
úr (insert)
</li>
1410 <li>OID, sorozat
ért
ék (serial value)
</li>
1411 <li>portal, cursor
</li>
1412 <li>range variable, t
ábla n
év, t
ábla alias
</li>
1414 Az
által
ános adatb
ázis kifejez
ések
1415 összefoglal
ój
át itt olvashat
ó:
1417 href=
"http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary%0A/glossary.html">http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html
</a></p>
1419 <a name=
"4.18"></a> <big style=
"text-decoration: underline;">4.18)
1420 Mi
ért kapom ezt a hib
át:
1421 "ERROR: Memory exhausted in AllocSetAlloc()"?
<br>
1423 <p>Lehet hogy elfogyott a virtu
ális mem
óri
ád, vagy
1425 kerneled er
õforr
ás korl
átai alacsonyak.
1426 Pr
ób
áld ki ezt miel
ött
1427 elinditan
ád a postmastert:
</p>
1428 <pre>ulimit -d
262144</pre>
1429 <pre>limit datasize
256m
</pre>
1430 <p>A shellt
õl f
ügg
õen ezek k
öz
ül csak az
1431 egyik fut majd le, de a processzek adatszegmens
ét sokkal
1432 magasabbra
állitja, ami
1433 tal
án el
ég lesz a lek
érdez
és
1434 v
égrehajt
ás
ához. Ez az utas
ít
ás a
1435 jelenlegi processzre (a shelled)
érv
ényes,
és
1437 általa l
étrehozott processzre. Ha probl
ém
ád
1438 van az SQL klienssel, mert a
1439 szerver t
úl nagy adatot k
üld vissza, pr
ób
áld
1441 klienssel is ugyanezt.
</p>
1442 <p><a name=
"4.19"></a><big style=
"text-decoration: underline;">4.19)
1443 Hogyan tudhatom meg PostgreSQL, milyen
1444 verzi
ót futtatok?
</big></p>
1445 <p>A psql programban select version();
</p>
1446 <a name=
"4.20"></a> <big style=
"text-decoration: underline;">4.20)
1447 Mi
ért kapok
"invalid large obj
1448 descriptor" hib
át nagy objektumok
1449 kezel
és
én
él?
</big><br>
1450 <p>A nagy objektumok kezel
és
ét egy tranzakci
ós
1451 blokkban helyezd el. (BEGIN
és COMMIT k
öz
ött)
</p>
1453 Jelenleg a PostgreSQL ezt a szab
ályt azzal teszi
1454 k
ötelez
õv
é, hogy a tranzakci
ó
1455 v
ég
én a nagy objektumokat
1456 lez
árja, igy a tranzakci
ó ut
án az els
õ
1457 m
ûvelet amit az objektumon
1458 v
égrahajtan
ál hib
ás lesz.
</p>
1459 <p>Ha olyan programoz
ási fel
ületet haszn
álsz mint az
1460 ODBC vagy a JDBC akkor val
ószin
ûleg ki kell kapcsolnod az
1462 <p><a name=
"4.21"></a><big style=
"text-decoration: underline;">4.21)
1463 Hogy hozhatok l
étre olyan oszlopot,
1464 aminek alap
értelmezett
</big><big
1465 style=
"text-decoration: underline;">ér
étke a jelenlegi
1466 id
õ?
</big><br>
1468 <p>Haszn
áld a CURRENT_TIMESTAMP -ot:
</p>
1469 <pre>CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
</pre>
1470 <a name=
"4.22"></a> <big style=
"text-decoration: underline;">4.22)
1471 Mi
ért olyan lass
úak az
1472 al-lek
érdez
éseim IN-nel?
</big><br>
1473 <p>Jelenleg az al-lek
érdez
éseket a k
üls
õ
1474 lek
érdez
éshez csatoljuk. Ha az allek
érdez
és
1475 csak kev
és sort eredm
ényez
1476 és a k
üls
õ lek
érdez
és sokat, akkor az
1477 IN is gyors. Az EXISTS kulcssz
ó
1478 haszn
álat
ával gyorsithatod a lek
érdez
éseket.
</p>
1481 <pre>WHERE col IN (SELECT subcol FROM subtab);
</pre>
1483 <p>EXISTS haszn
álat
ával:
</p>
1486 <pre>WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
</pre>
1487 Ahhoz hogy ez gyorsan fusson le, a subcol indexelt oszlopnak kell hogy
1488 legyen. Rem
élj
ük ezt a korl
átot siker
ül
1489 hamarosan legy
õzn
ünk.
1490 <p><a name=
"4.23"></a><big style=
"text-decoration: underline;">4.23)
1491 Hogyan tudok outer join-t v
égrehajtani?
</big></p>
1492 <p>A PostgreSQL a szabv
ányos SQL szintaktik
át
1494 Itt van k
ét p
élda:
</p>
1496 <pre>FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
</pre>
1500 <pre>FROM t1 LEFT OUTER JOIN t2 USING (col);
</pre>
1501 <p>Ezek az identikus lek
érdez
ések
1502 összekapcsolj
ák a t1.col
és a t2.col mez
õket,
1503 és a t1 b
ármelyik kapcsolatlan
1504 sor
át is visszadj
ák. A RIGHT JOIN a t2 kapcsolatlan
1505 sorait adta volna vissza, a FULL JOIN pedig a kapcsolt,
és
1506 mindk
ét t
ábla kapcsolatlan sorait
1507 adja. Az OUTER kulcssz
ó opcion
ális, a LEFT, RIGHT
1509 szintaktikailag helyes. Az
átlagos
1510 összekapcsol
ásokat INNER JOIN-nak
1512 <p>Az el
õz
õ kiad
ásokban a OUTER JOIN
1513 lek
érdez
éseket UNION
és NOT IN kulcsszavakkal
1514 lehetett szimul
álni. P
éld
ául a tab1
1515 és a tab2
összekapcsol
ása:
</p>
1516 <pre><code>SELECT tab1.col1, tab2.col2
</code></pre>
1518 FROM tab1, tab2
</code></pre>
1520 WHERE tab1.col1 = tab2.col1
</code></pre>
1522 UNION ALL
</code></pre>
1524 SELECT tab1.col1, NULL
</code></pre>
1526 FROM tab1
</code></pre>
1528 WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
</code></pre>
1530 ORDER BY col1
</code></pre>
1531 <pre><code></code></pre>
1533 <a name=
"4.24"></a> <big style=
"text-decoration: underline;">4.24)
1534 Hogyan tudok t
öbb adatb
ázison
1535 v
égrehajtani lek
érdez
ést?
<br>
1537 <p>Arra nincs lehet
õs
ég, hogy m
ás
1538 adatb
ázisb
ól k
érdezz le adatot.Mivel a PostgreSQL
1539 adatb
ázis specifikus rendszer
1540 t
ábl
ákat t
öltbe, bizonytalan hogy egy
1541 adatb
ázisok k
öz
ötti
1542 lek
érdez
ésnek hogyankellene viselkednie.
</p>
1543 <p>A contrib/dblink k
önyvt
árban tal
álsz egy
1544 megold
ást erre, ami funkci
ó hiv
ások
1545 segits
ég
ével
1546 m
ûk
ödik. Persze, a kliens hozhat
1547 l
étreszimult
án kapcsolatot t
öbb adatb
ázissal,
1549 összef
és
ülheti az eredm
ényeket.
</p>
1550 <p><big style=
"text-decoration: underline;"><a name=
"4.25"></a>4.25)
1551 Hogy tudok t
öbb soros vagy oszlopos
1552 eredm
ényt visszaadni egy funkci
ób
ól?
</big><br>
1554 <big style=
"text-decoration: underline;"></big>
1555 <p>A PL/pgSQL t
árolt elj
ár
ás nyelvvel refcursor
1556 haszn
álat
ával. R
észletesen itt:
</p>
1558 href=
"http://www.PostgreSQL.org/idocs/index.php?plpgsql-cursors.html">http://www.PostgreSQL.org/idocs/index.php?plpgsql-cursors.html
</a></p>
1559 <a name=
"4.26"></a> <big style=
"text-decoration: underline;">4.26)
1560 Mi
ért nem tudom megbizhat
óan
1561 l
étrehozni
és t
ör
ölni az
átmeneti
1562 t
ábl
ákat a PL/pgSQL funkci
ókban?
</big><br>
1563 <p>A PL/pgSQL cacheli a funkci
ók tartalm
át, aminek az a
1564 szerencs
étlen mell
ékhat
ása, hogy ha egy PL/pgSQL
1566 haszn
ál egy
átmeneti t
ábl
át, ami
1567 k
és
őbb t
örl
õdik majd ujra
1568 l
étrej
ön, akkor az
újra lefut
ó funkci
ó
1569 nem fogja megtal
álni a t
ábl
át, mert
1570 a cache v
áltozat a r
égi t
ábl
ára tartalmaz
1571 mutat
ót. A megold
ás erre
1572 az
<code>EXECUTE
</code> haszn
álata az
átmeneti
1573 t
ábl
ák
1574 kezel
és
ére PL/pgSQL-ben. Ez a lek
érdez
és
1575 újraford
ít
ás
át
1576 fogja el
õid
ézni minden alkalommal.
</p>
1577 <big style=
"text-decoration: underline;">4.27)
1578 Milyen replik
áci
ós
1579 lehet
õs
égek vannak?
</big><br>
1580 <p>B
ár a replik
áci
ó egyetlen ter
ület,
1581 t
öbb technol
ógia l
étezik replik
áci
óra,
1582 term
észetesen mindnek meg vannak a maga el
őnyei
és
1583 h
átr
ányai.
</p>
1584 <p>A master/slave replik
áci
ós megold
ással a master
1585 adatb
ázison hajthatunk v
égre modos
ít
ásokat,
1586 m
íg a slave adatb
ázisokon csak
1587 lek
érdez
éseket. A PostgreSQL legn
épszer
űbb
1588 master/slave replik
áci
ós megold
ása a Solny-I.
</p>
1589 <p>Sz
ámos m
ás master/slave replik
áci
ós
1590 lehet
õs
ég l
étezik.Egy List
át olvashatsz
1591 ezekr
õl itt:
</p>
1592 <p><a href=
"http://gborg.PostgreSQL.org/genpage?replication_research">http://gborg.PostgreSQL.org/genpage?replication_research
</a></p>
1593 <p>A multi-master replik
áci
ó lehet
őv
é teszi
1594 t
öbb master adatb
ázis haszn
álat
át, b
ár
1595 ez a technol
ógia drasztikusan cs
ökkenti az adatb
ázis
1596 teljes
ítm
ény
ét a sok szinkorniz
áci
ó
1597 miatt. A PGCluster a legelterjedtebb ilyen megold
ás.
</p>
1598 <p>Egy t
öbbfelhaszn
ál
ós replik
áci
ós
1599 rendszer k
ész
ül itt:
</p>
1601 href=
"http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php">http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.
</a></p>
1602 <p><a name=
"4.28"></a><big style=
"text-decoration: underline;">4.28)
1603 Milyen k
ódol
ási
1604 lehet
õs
égek vannak?
</big></p>
1606 <li>A contrib/pgcrypto tartlamaz sz
ámos SQL
1607 lek
érdez
ésben haszn
álhat
ó
1608 k
ódol
ást.
</li>
1609 <li>A kliens-szerver kommunik
áci
ó
1610 rejtjelez
és
ére a hostssl haszn
álhat
ó. Ezt a
1611 pg_hba.conf-ben enged
élyeztheted.
</li>
1612 <li>Az adatb
ázis felhszn
ál
ók jelszavait
1613 t
árol
áskor k
ódolja a rendszer.
</li>
1614 <li>R
égebbi verzi
ókban a PASSWORD_ENCRYPTION
1616 lehetett bekapcsolni.
</li>
1617 <li>A szerveren haszn
álhatsz k
ódolt f
ájrendszert.
<br>
1620 <hr style=
"width: 100%; height: 2px;"><br>
1621 <div style=
"text-align: center;">
1622 <h2>A PostgreSQL kiterjeszt
ése
</h2>
1625 <a name=
"5.1"></a> <big style=
"text-decoration: underline;">5.1)
1626 Írtam egy felhaszn
ál
ói
1627 funkci
ót. Mi
ért core dumpol az adatb
ázis amikor
1628 haszn
álom?
<br>
1630 <p>Sz
ámos probl
éma lehet. El
öbb prob
áld ki a
1631 funkci
ódat egy k
ül
ön
áll
ó
1632 alkalmaz
ásban.
</p>
1633 <p><a name=
"5.2"></a><big style=
"text-decoration: underline;">5.2)
1634 Hogyan lehet
új adatt
ípusokat
1635 és funkci
ókat hozz
áadni a PostgreSQL
</big><big
1636 style=
"text-decoration: underline;">disztrib
úci
óhoz?
</big><br>
1638 <p>K
üldd el a kieg
ész
ít
éseid a pgsql-hackers
1639 levelez
ési list
ára
és a forr
áskodjaid
1640 v
ég
ül a contrib-ban k
ötnek ki.
</p>
1641 <a name=
"5.3"></a> <big style=
"text-decoration: underline;">5.3)
1642 Hogyan lehet olyan C funkci
ót
1643 írni, ami Tuple-t ad vissza?
</big><br>
1644 <p>A
7.3 verzi
ót
ól kezdve a PostgreSQL t
ámogatja a
1645 t
ábl
ázatokat viszzaad
ó funkci
ókat C,
1646 PL/pgSQL
és SQL nyelveken.
1647 B
õvebb dokument
áci
ót a Programoz
ó
1648 k
ézik
önyvben tal
álsz. Egy C p
élda
1649 funkci
ó tal
álhat
ó a contrib/tablefunc
1650 k
önyvt
árban.
</p>
1651 <p><a name=
"5.4"></a><big style=
"text-decoration: underline;">5.4)
1652 Megv
áltoztattam egy forr
ás
1653 állom
ányt. Mi
ért nem v
áltozik a
1654 bin
áris
</big><big style=
"text-decoration: underline;">újraford
ít
ás
1655 ut
án?
</big><br>
1657 <p>A Makefile-ok nem ismerik a include
állom
ányok
1658 megfelel
õ f
ügg
õs
égeit. V
égre kell
1659 hajtanod egy make clean-t, majd
újra egy
1660 make-t. Ha GCC-t haszn
álsz felhaszn
álhatod a configure
1662 --enable-depend opci
ój
át,
így a compiler maga
1663 fogja ellen
õrizni a
1664 f
ügg
õs
égeket.
</p>