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