diff options
-rw-r--r-- | doc/FAQ_turkish | 1731 | ||||
-rw-r--r-- | doc/src/FAQ/FAQ_turkish.html | 2544 |
2 files changed, 2320 insertions, 1955 deletions
diff --git a/doc/FAQ_turkish b/doc/FAQ_turkish index ce15326b6fe..e9e23986fb8 100644 --- a/doc/FAQ_turkish +++ b/doc/FAQ_turkish @@ -1,709 +1,1040 @@ + PostgreSQL i�in S�k�a Sorulan Sorular (SSS) + + Son g�ncelleme : 19.05.2003 Cuma 05:03 - PostgreSQL i�in S�k�a Sorulan Sorular (SSS) Son g�ncelleme : 19 May�s - 2003 Pazartesi - 03:05:21 Current maintainer: Bruce Momjian - ([email protected] ) �eviren : Devrim G�ND�Z ([email protected] ) - Nicolai Tufar ([email protected] ) Bu belgenin en g�ncel hali, - http://www.PostgreSQL.org/docs/faqs/FAQ_turkish.html ve - http://www.gunduz.org/seminer/pg/FAQ_turkish adreslerinde g�r�lebilir. - Platforma �zel sorular�n�z,http://www.PostgreSQL.org/docs/index.html - adresinde yan�tlan�r.. - ---------------------------------------------------------------------- - -- Genel Sorular 1.1 <#1.1>) PostgreSQL nedir? Nas�l okunur? 1.2 - <#1.2>) PostgreSQL' in haklar� nedir? 1.3 <#1.3>) PostgreSQL, hangi - Unix platformlar�nda �al�s�r? 1.4 <#1.4>) Hangi Unix olmayan - uyarlamalar� bulunmaktad�r? 1.5 <#1.5>) PostgreSQL'i nereden - indirebilirim? 1.6 <#1.6>) Deste�i nereden alabilirim? 1.7 <#1.7>) En - son s�r�m� nedir? 1.8 <#1.8>) Hangi belgelere ulasabilirim? 1.9 - <#1.9>) Bilinen hatalar ya da eksik �zelliklere nereden ulasabilirim? - 1.10 <#1.10>) Nas�l SQL ��renebilirim? 1.11 <#1.11>) PostgreSQL 2000 - y�l�na uyumlu mudur? 1.12 <#1.12>) Geli�tirme tak�m�na nas�l - kat�labilirim?? 1.13 <#1.13>) Bir hata raporunu nas�l g�nderebilirim? - 1.14 <#1.14>) PostgreSQL, diger VTYS(DBMS lerle nas�l - kar��la�t�r�labilir? 1.15 <#1.15>) PostgreSQL'e maddi a��dan nas�l - destek olabilirim? Kullan�c�/istemci Sorular� 2.1 <#2.1>) Are there - ODBC drivers for PostgreSQL? 2.2 <#2.2>) What tools are available for - using PostgreSQL with Web pages? 2.3 <#2.3>) Does PostgreSQL have a - graphical user interface? 2.4 <#2.4>) What languages are available to - communicate with PostgreSQL? Administrative Questions 3.1 <#3.1>) How - do I install PostgreSQL somewhere other than //usr/local/pgsql/? 3.2 - <#3.2>) When I start /postmaster/, I get a /Bad System Call/ or core - dumped message. Why? 3.3 <#3.3>) When I try to start /postmaster/, I - get /IpcMemoryCreate/ errors. Why? 3.4 <#3.4>) When I try to start - /postmaster/, I get /IpcSemaphoreCreate/ errors. Why? 3.5 <#3.5>) How - do I control connections from other hosts? 3.6 <#3.6>) How do I tune - the database engine for better performance? 3.7 <#3.7>) What debugging - features are available? 3.8 <#3.8>) Why do I get /"Sorry, too many - clients"/ when trying to connect? 3.9 <#3.9>) What is in the - /pgsql_tmp/ directory? 3.10 <#3.10>) Why do I need to do a dump and - restore to upgrade PostgreSQL releases? Operational Questions 4.1 - <#4.1>) What is the difference between binary cursors and normal - cursors? 4.2 <#4.2>) How do I SELECT only the first few rows of a - query? 4.3 <#4.3>) How do I get a list of tables or other things I can - see in /psql/? 4.4 <#4.4>) How do you remove a column from a table? - 4.5 <#4.5>) What is the maximum size for a row, a table, and a - database? 4.6 <#4.6>) How much database disk space is required to - store data from a typical text file? 4.7 <#4.7>) How do I find out - what tables, indexes, databases, and users are defined? 4.8 <#4.8>) My - queries are slow or don't make use of the indexes. Why? 4.9 <#4.9>) - How do I see how the query optimizer is evaluating my query? 4.10 - <#4.10>) What is an R-tree index? 4.11 <#4.11>) What is the Genetic - Query Optimizer? 4.12 <#4.12>) How do I perform regular expression - searches and case-insensitive regular expression searches? How do I - use an index for case-insensitive searches? 4.13 <#4.13>) In a query, - how do I detect if a field is NULL? 4.14 <#4.14>) What is the - difference between the various character types? 4.15.1 <#4.15.1>) How - do I create a serial/auto-incrementing field? 4.15.2 <#4.15.2>) How do - I get the value of a SERIAL insert? 4.15.3 <#4.15.3>) Don't - /currval()/ and /nextval()/ lead to a race condition with other users? - 4.15.4 <#4.15.4>) Why aren't my sequence numbers reused on transaction - abort? Why are there gaps in the numbering of my sequence/SERIAL - column? 4.16 <#4.16>) What is an OID? What is a TID? 4.17 <#4.17>) - What is the meaning of some of the terms used in PostgreSQL? 4.18 - <#4.18>) Why do I get the error /"ERROR: Memory exhausted in - AllocSetAlloc()"/? 4.19 <#4.19>) How do I tell what PostgreSQL version - I am running? 4.20 <#4.20>) Why does my large-object operations get - /"invalid large obj descriptor"/? 4.21 <#4.21>) How do I create a - column that will default to the current time? 4.22 <#4.22>) Why are my - subqueries using |IN| so slow? 4.23 <#4.23>) How do I perform an outer - join? 4.24 <#4.24>) How do I perform queries using multiple databases? - 4.25 <#4.25>) How do I return multiple rows or columns from a - function? 4.26 <#4.26>) Why can't I reliably create/drop temporary - tables in PL/PgSQL functions? 4.27 <#4.27>) What replication options - are available? 4.28 <#4.28>) What encryption options are available? - Extending PostgreSQL 5.1 <#5.1>) I wrote a user-defined function. When - I run it in /psql/, why does it dump core? 5.2 <#5.2>) How can I - contribute some nifty new types and functions to PostgreSQL? 5.3 - <#5.3>) How do I write a C function to return a tuple? 5.4 <#5.4>) I - have changed a source file. Why does the recompile not see the change? - ---------------------------------------------------------------------- - -- General Questions 1.1) What is PostgreSQL? How is it pronounced? - PostgreSQL is pronounced /Post-Gres-Q-L/. PostgreSQL is an enhancement - of the POSTGRES database management system, a next-generation DBMS - research prototype. While PostgreSQL retains the powerful data model - and rich data types of POSTGRES, it replaces the PostQuel query - language with an extended subset of SQL. PostgreSQL is free and the - complete source is available. PostgreSQL development is performed by a - team of developers who all subscribe to the PostgreSQL development - mailing list. The current coordinator is Marc G. Fournier - ([email protected] ). (See section 1.6 <#1.6> on how to join). - This team is now responsible for all development of PostgreSQL. The - authors of PostgreSQL 1.01 were Andrew Yu and Jolly Chen. Many others - have contributed to the porting, testing, debugging, and enhancement - of the code. The original Postgres code, from which PostgreSQL is - derived, was the effort of many graduate students, undergraduate - students, and staff programmers working under the direction of - Professor Michael Stonebraker at the University of California, - Berkeley. The original name of the software at Berkeley was Postgres. - When SQL functionality was added in 1995, its name was changed to - Postgres95. The name was changed at the end of 1996 to PostgreSQL. - 1.2) What is the copyright on PostgreSQL? PostgreSQL is subject to the - following COPYRIGHT: PostgreSQL Data Base Management System Portions - copyright (c) 1996-2002, PostgreSQL Global Development Group Portions - Copyright (c) 1994-6 Regents of the University of California + Bruce Momjian ([email protected]) + �eviren : Devrim G�ND�Z ([email protected]), Nicolai Tufar ([email protected]), Volkan Yaz�c� ([email protected]) + + Bu belgenin en g�ncel hali, http://www.gunduz.org/seminer/pg/FAQ_turkish ve + http://www.PostgreSQL.org/docs/faq-turkish.html + adreslerinde gor�lebilir. + + Platforma �zel sorular�n�z, + http://www.PostgreSQL.org/users-lounge/docs/faq.html adresinde yan�tlan�r. + _________________________________________________________________ + + Genel Sorular + + 1.1) PostgreSQL nedir? Nas�l okunur? + 1.2) PostgreSQL' in haklar� nedir? + 1.3) PostgreSQL, hangi Unix platformlar�nda �al�s�r? + 1.4) Hangi Unix olmayan uyarlamalar� bulunmaktad�r? + 1.5) PostgreSQL'i nereden indirebilirim? + 1.6) Deste�i nereden alabilirim? + 1.7) En son s�r�m� nedir? + 1.8) Hangi belgelere ulasabilirim? + 1.9) Bilinen hatalar ya da eksik �zelliklere nereden ulasabilirim? + 1.10) Nas�l SQL �grenebilirim? + 1.11) PostgreSQL 2000 y�l�na uyumlu mudur? + 1.12) Geli�tirme tak�m�na nas�l kat�labilirim? + 1.13) Bir hata raporunu nas�l g�nderebilirim? + 1.14) PostgreSQL, diger DBMS'lerle nas�l kar��la�t�r�labilir? + 1.15) PostgreSQL'e maddi a��dan nas�l destek olabilirim? + + Kullan�c�/istemci Sorular� + + 2.1) PostgreSQL icin ODBC s�r�c�leri var m�? + 2.2) PostgreSQL'i web sayfalar�nda kullanabilmek i�in hangi ara�lar bulunmaktad�r? + 2.3) PostgreSQL'in grafik kullan�c� arabirimi var m�d�r? + Report generator var m�d�r? G�m�l� sorgu dili arabirimi var m�d�r? + 2.4) PostgreSQL ile ileti�imi kurabilmek i�in hangi dilleri kullanabilirim? + + Y�netimsel Sorular + + + 3.1) PostgreSQL'i, /usr/local/pgsql dizininden ba�ka dizinlere nas�l kurabilirim? + 3.2) Postmaster'i baslatt�g�mda, Bad System Call ya da core dumped mesaj� + al�yorum. Neden? + 3.3) Postmaster'i ba�latt���mda, IpcMemoryCreate hatas� al�yorum. Neden? + 3.4) Postmaster'i ba�latt���mda, IpcSemaphoreCreate hatas� al�yorum. Neden? + 3.5) Di�er bilgisayarlar�n benim PostgreSQL veritaban� sunucuma ba�lant�lar�n� nas�l + kontrol edebilirim? + 3.6) Veritaban� motorunu daha iyi ba�ar�m icin nas�l ayarlayabilirim? + 3.7) Hangi hata ay�klama �zellikleri bulunmaktad�r? + 3.8) Ba�lanmaya �al���rken, neden "Sorry, too many clients" hatas�n� al�yorum? + 3.9) pgsql_tmp dizininin i�indeki dosyalar nelerdir? + 3.10) PostgreSQL s�r�mlerini y�kselmek i�in neden bir dump/reload i�lemi ger�ekle�tirmek + zorunday�m? + + ��letimsel Sorular + + 4.1) Binary cursor ve normal cursor aras�ndaki fark nedir? + 4.2) Sorgunun sadece ilk birka� sat�r�n� nas�l SELECT edebilirim? + 4.3) psql'in i�inde g�rd���m tablolar�n ya da di�er �eylerin listesini nasil alabilirim? + 4.4) Bir tablodan bir kolonu nas�l kald�rabilirim? + 4.5) Bir sat�r, tablo ve veritaban� icin en fazla b�y�kl�k nedir? + 4.6) Tipik bir metin dosyas�ndaki veriyi saklamak i�in ne kadar disk alan� gereklidir? + 4.7) Veritaban�nda hangi tablo ya da indexlerin tan�mland�g�n� nas�l g�rebilirim? + 4.8) Sorgular�m cok yava�, ya da indexlerimi kullanm�yorlar. Neden? + 4.9) Query-optimizer in sorgular�m� nas�l de�erlendirdigini, i�leme soktu�unu nas�l g�rebilirim? + 4.10) R-tree index nedir? + 4.11) Genetic Query Optimizer nedir? + 4.12) D�zenli ifade (Regular Expression) aramalar�n� ve b�y�k/k���k harfe duyars�z aramalar� nasil yapabilirim? + Bu b�y�k(k���k harfe duyarl� aramalar i�in indeksi nasil kullanabilirim? + + 4.13) Bir sorguda, bir alan�n "NULL" oldu�unu nas�l ortaya ��karabilirim? + 4.14) �esitli karakter tipleri aras�ndaki farklar nelerdir? + 4.15.1) Nas�l serial/otomatik artan(auto-incrementing) bir alan yaratabilirim? + 4.15.2) SERIAL giri�inin de�erini nas�l alabilirim? + 4.15.3) currval() ve nextval() di�er kullan�c�lara sorun yaratmaz m�? + 4.15.4) Neden sequence say�lar�n transaction i�leminin iptalinden sonra yeniden kullan�l�yor? Neden sequence/SERIAL + kolonumdaki say�larda atlamalar oluyor? + 4.16) OID nedir? TID nedir? + 4.17) PostgreSQL' de kullan�lan baz� terimlerin anlamlar� nelerdir? + 4.18) Neden "ERROR: Memory exhausted in AllocSetAlloc()"? hatas�n� al�yorum? + 4.19) Hangi PostgreSQL s�r�m�n� �al�st�rd���m� nas�l g�rebilirim? + 4.20) Neden large-object i�lemlerim, "invalid large obj descriptor"? hatas�n� veriyor? + 4.21) �u andaki zaman� �ntan�ml� de�er olarak kabul eden kolonu nas�l yarat�r�m? + 4.22) Neden IN kullanan subquerylerim �ok yava�? + 4.23) Outer join i�lemini nas�l yapabilirim? + 4.24) Ayn� anda birden fazla veritaban�nda nas�l i�lem yapabilirim? + 4.25) Bir fonksiyondan nas�l �oklu sat�r ya da kolon d�nd�rebilirim? + 4.26) Neden Pl/PgSQL fonksiyonlar� i�inden g�venli bir �ekilde tablo yaratma/kald�rma i�lemlerini yapam�yoruz? + 4.27) Hangi replikasyon se�enekleri bulunmaktad�r? + 4.28) Hangi �ifreleme se�enekleri bulunmaktad�r? + + PostgreSQL �zelliklerini Geni�letmek + + 5.1) Kullan�c�-tan�ml� bir fonksiyon yazd�m. psql'de �al��t�rd���m zaman neden + core dump ediyor? + 5.2) PostgreSQL'e nas�l yeni veri tipleri/fonksiyonlar ekleyebilirim? + 5.3) Bir tuple d�nd�rmek i�in bir C fonksiyonunu nas�l yazar�m? + 5.4) Bir kaynak dosyas�nda de�isiklik yapt�m. Yeniden derlememe ra�men + de�i�iklik ge�erli olmuyor. Neden? + _________________________________________________________________ + + Genel sorular + + 1.1) PostgreSQL nedir? + + PostgreSQL, Post-Gres-Q-L olarak okunur. + + PostgreSQL, yeni-nesil VTYS arast�rma prototipi olan POSTGRES veritaban� + y�netim sisteminin geli�tirilmesidir. POSTGRES' in zengin veri + tiplerini ve g��l� veri modelini tutarken, SQL'in geli�tirilmis alt k�mesi + olan PostQuel dilini kullan�r. PostgreSQL �cretsizdir ve kaynak kodu a��k da��t�l�r. + + PostgreSQL, PostgreSQL gelistirme listesine �ye olan bir �nternet gelistirici + tak�m� taraf�ndan geli�tirilir. �u andaki koordinat�r, Marc G. Fournier + ([email protected]). (Bu tak�ma nas�l kat�lacag�n�z� �grenmek i�in + 1.6 numaral� maddeyi okuyunuz.) Bu tak�m, t�m PostgreSQL geli�iminden sorumludur. + + PostgreSQL 1.01 s�r�m�n�n yazarlar� Andrew Yu ve Jolly Chen idi. Bunlar�n d�s�nda bir ka� kisi de uyarlama, + hata ay�klama ve kodun gelistirilmesi i�in �al�sm�st�. PostgreSQL'in t�redigi orijinal Postgres kodu, + lisans, lisans�st� ve akademisyenler tarafindan, Professor Michael Stonebraker ) University of + California, Berkeley) koordinat�rl�g�nde yaz�lm�st�r. + + Berkley'deki yaz�l�m�m ad� Postgres idi. SQL uyumlulugu 1995'te eklenince, ad� Postgres 95 + oldu. 1996 y�l�n�n sonlar�nda ad� PostgreSQL olarak degistirildi. + + 1.2) PostgreSQL'in haklar� nedir? + + PostgreSQL Data Base Management System + + Portions copyright (c) 1996-2002, PostgreSQL Global Development Group + Portions Copyright (c) 1994-6 Regents of the University of California + Permission to use, copy, modify, and distribute this software and its documentation for any purpose, without fee, and without a written agreement is hereby granted, provided that the above copyright notice and this paragraph and the following two paragraphs appear in all - copies. IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO - ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL - DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS - SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA - HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE UNIVERSITY OF - CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" - BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE - MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. The - above is the BSD license, the classic open-source license. It has no - restrictions on how the source code may be used. We like it and have - no intention of changing it. 1.3) What Unix platforms does PostgreSQL - run on? In general, a modern Unix-compatible platform should be able - to run PostgreSQL. The platforms that had received explicit testing at - the time of release are listed in the installation instructions. 1.4) - What non-Unix ports are available? *Client* It is possible to compile - the /libpq/ C library, psql, and other interfaces and client - applications to run on MS Windows platforms. In this case, the client - is running on MS Windows, and communicates via TCP/IP to a server - running on one of our supported Unix platforms. A file /win32.mak/ is - included in the distribution for making a Win32 /libpq/ library and - /psql/. PostgreSQL also communicates with ODBC clients. *Server* The - database server can run on Windows NT and Win2k using Cygwin, the - Cygnus Unix/NT porting library. See /pgsql/doc/FAQ_MSWIN/ in the - distribution or the MS Windows FAQ at - http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN - www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN>. A native port to MS Win - NT/2000/XP is currently being worked on. For more details on the - current status of PostgreSQL on Windows see - http://techdocs.postgresql.org/guides/Windows - techdocs.postgresql.org/guides/Windows>. There is also a Novell - Netware 6 port at http://forge.novell.com. 1.5) Where can I get - PostgreSQL? The primary anonymous ftp site for PostgreSQL is - ftp://ftp.PostgreSQL.org/pub. For mirror sites, see our main web site. - 1.6) Where can I get support? The main mailing list is: - [email protected] . It is available for discussion of - matters pertaining to PostgreSQL. To subscribe, send mail with the - following lines in the body (not the subject line): subscribe end to - [email protected] . There is also a digest list - available. To subscribe to this list, send email to: - [email protected] with a body of: subscribe - end Digests are sent out to members of this list whenever the main - list has received around 30k of messages. The bugs mailing list is - available. To subscribe to this list, send email to - [email protected] with a body of: subscribe end There - is also a developers discussion mailing list available. To subscribe - to this list, send email to [email protected] with - a body of: subscribe end Additional mailing lists and information - about PostgreSQL can be found via the PostgreSQL WWW home page at: - http://www.PostgreSQL.org There is also an IRC channel on EFNet and - OpenProjects, channel /#PostgreSQL/. I use the Unix command |irc -c - '#PostgreSQL' "$USER" irc.phoenix.net.| A list of commercial support - companies is available at - http://www.ca.PostgreSQL.org/users-lounge/commercial-support.html. - 1.7) What is the latest release? The latest release of PostgreSQL is - version 7.3.3. We plan to have major releases every four months. 1.8) - What documentation is available? Several manuals, manual pages, and - some small test examples are included in the distribution. See the - //doc/ directory. You can also browse the manuals online at - http://www.PostgreSQL.org/docs. There are two PostgreSQL books - available online at http://www.PostgreSQL.org/docs/awbook.html and - http://www.commandprompt.com/ppbook/. There is a list of PostgreSQL - books available for purchase at http://www.ca.PostgreSQL.org/books/. - There is also a collection of PostgreSQL technical articles at - http://techdocs.PostgreSQL.org/. /psql/ has some nice \d commands to - show information about types, operators, functions, aggregates, etc. - Our web site contains even more documentation. 1.9) How do I find out - about known bugs or missing features? PostgreSQL supports an extended - subset of SQL-92. See our TODO developer.PostgreSQL.org/todo.php> list - for known bugs, missing features, and future plans. 1.10) How can I - learn SQL? The PostgreSQL book at - http://www.PostgreSQL.org/docs/awbook.html teaches SQL. There is - another PostgreSQL book at http://www.commandprompt.com/ppbook. - www.commandprompt.com/ppbook/> There is a nice tutorial at + copies. + + IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY + FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, + INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND + ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE + PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF + CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, + UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + + �stteki metin klasik a��k-kod lisans� olan BSD lisans�d�r. Kaynak kodun nas�l + kullan�labilece�ine dair s�n�rlamalar� yoktur. Bu lisansi seviyoruz ve de�i�tirme + niyetimiz bulunmamaktad�r. + + 1.3) PostgreSQL, hangi Unix platforlar�nda �al�s�r? + + Genel olarak, modern bir Unix-uyumlu platform PostgreSQL'i �al�st�racakt�r. + Ayr�nt�l� bilgi i�in kurulum belgelerine bakabilirsiniz + + 1.4) Hangi Unix olmayan uyarlamalar� bulunmaktad�r? + + �stemci + + libpq C k�t�phanesini, psql ve diger arabirimleri ve binary dosyalar�, MS + Windows ortamlar�nda �al�smas� i�in derlemeniz m�mk�nd�r. Bu �rnekte istemcide + MS Windows �al�s�yor ve desteklenen Unix platformlar�ndan birinde �al�san PostgreSQL + sunucuna TCP/IP ile baglanmaktad�r. Da��t�m i�indeki win31.mak dosyas� ile, + Win32 libpg k�t�phanesi ve psql yaratabilirsiniz. PostgreSQL ayn� zamanda ODBC + istemcileri ile haberlesebilmektedir. + + Sunucu + + Veritaban� sunuucsu Cygwin kullanarak Windows NT, 2K ya da XP �zerinde calistirilabilir. + Dag�t�m i�indeki pgsql/doc/FAQ_MSW�N dosyas�n� ya da web sitemizdeki MS Windows FAQ'u + inceleyebilirsiniz. + + Do�al Windows NT/2000/XP portu i�in �u anda �al��malar devam etmektedir. Windows s�r�m� + hakk�nda g�ncel bilgi i�in, http://techdocs.postgresql.org/guides/Windows adresini + ziyaret edebilirsiniz. + + Ayr�ca, http://forge.novell.com adresinde Novell Netware 6 portu bulunmaktad�r. + + 1.5) PostgreSQL'in nereden indirebilirim? + + PostgreSQL i�in ana anonim ftp sitesi ftp://ftp.PostgreSQL.org/pub ' dur. + Yans�lar i�in, ana web sayfam�za bakabilirsiniz. + + 1.6) Deste�i nereden alabilirim? + + Ana e-posta listesi : [email protected]. PostgreSQL konusundaki tart�smalara + a��kt�r. �ye olmak i�in, asag�daki sat�rlar� e-postanizin body k�sm�na (konu k�sm�na degil) + yaz�p, [email protected] adresine g�nderin: + + subscribe + end + + Ayn� zamanda, bir digest listesi bulunmaktad�r. Bu listeye �ye olmak i�in, + [email protected] adresine, body k�sm�nda + + subscribe + end + + yazan bir e-posta atman�z yeterli olacakt�r. + + Digest postalar, ana liste 30k civar�nda e-postaya ulastiginda �yelere g�nderilmektedir. + + Buglar i�in bir e-posta listesi bulunmaktad�r. Bu listeye �ye olmak i�in, + email to [email protected] adresine, body k�sm�nda + + subscribe + end + + yazan bir e-posta atman�z yeterli olacakt�r. + + Ayn� zamanda, gelistiriciler i�in tart�sma listesi bulunmaktad�r. Bu listeye �ye olmak + i�in, [email protected] adresine, body k�sm�nda + + subscribe + end + + yazan bir e-posta atman�z yeterli olacakt�r. + + Bunun d�s�ndaki e-posta listelerine ve PostgreSQL hakk�nda bilgiye, PostgreSQL WWW + ana sayfas�ndan ulasabilirsiniz: + + http://www.PostgreSQL.org + + Ayn� zamanda, EFNet �zerinde, #PostgreSQL adl� bir �RC kanal� bulunmaktad�r. Bunun i�in, + irc -c '#PostgreSQL' "$USER" irc.phoenix.net Unix komutunu kullanabilirsiniz. + + Ticari destek veren firmalar�n listesine, + + http://www.postgresql.org/users-lounge/commercial-support.html + + adresinden ulasabilirsiniz. + + 1.7) En son s�r�m� nedir? + + PostgreSQL'in son s�r�m� 7.3.3't�r. + + Her 4 ayda major release ��kar�lmas� planlanmaktad�r. + + 1.8) Hangi belgelere ulasabilirim? + + Da��t�m�n icinde, kitapciklar, kitapcik sayfalari ve bazi k���k �rnekler verilmektedir. + /doc dizinine bak�n�z. Ayrica, bu el kitap��klar�n� online olarak + http://www.PostgreSQL.org/docs/ adresinden inceleyebilirsiniz. + + http://www.PostgreSQL.org/docs/awbook.html ve http://www.commandprompt.com/ppbook + adreslerinde PostgreSQL kitaplar� bulunmaktad�r. PostgreSQL kitablar�n�n listesine, + http://www.ca.PostgreSQL.org/books/ adresinden ula�aiblirsiniz. Ayr�ca, PostgreSQL + konusundaki teknik makalelere de http://techdocs.PostgreSQL.org/ adresinden + ula�abilirsiniz. + + psql'in, \d ile baslayan veri tipler, operatorler, fonksiyonlar, aggregateler,vb. ile + ilgili g�zel komutlar� vard�r. + + Web sitemiz daha fazla belgeyi i�ermektedir. + + 1.9) Bilinen hatalar ya da eksik �zelliklere nereden ulasabilirim? + + PostgreSQL SQL-92 uyumlugugu icindedir, standartlardan fazla da �zellikleri + bulunmaktad�r. Bilinen hatalar, eksik �zellikler ve gelecek ile ilgili planlar i�in + TODO listesine bak�n�z. + + 1.10) Nas�l SQL �grenebilirim? + + http:/www.PostgreSQL.org/docs/awbook.html adresindeki kitap SQL �gretecektir. + http://www.commandprompt.com/ppbook adresinde de bir baska PostgreSQL kitab� bulunmaktad�r. + http://www.intermedia.net/support/sql/sqltut.shtm, - www.intermedia.net/support/sql/sqltut.shtm> at - http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM, - ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM> and at - http://sqlcourse.com. sqlcourse.com/> Another one is "Teach Yourself - SQL in 21 Days, Second Edition" at - http://members.tripod.com/er4ebus/sql/index.htm Many of our users like - /The Practical SQL Handbook/, Bowman, Judith S., et al., - Addison-Wesley. Others like /The Complete Reference SQL/, Groff et - al., McGraw-Hill. 1.11) Is PostgreSQL Y2K compliant? Yes, we easily - handle dates past the year 2000 AD, and before 2000 BC. 1.12) How do I - join the development team? First, download the latest source and read - the PostgreSQL Developers documentation on our web site, or in the - distribution. Second, subscribe to the /pgsql-hackers/ and - /pgsql-patches/ mailing lists. Third, submit high quality patches to - pgsql-patches. There are about a dozen people who have commit - privileges to the PostgreSQL CVS archive. They each have submitted so - many high-quality patches that it was impossible for the existing - committers to keep up, and we had confidence that patches they - committed were of high quality. 1.13) How do I submit a bug report? - Please visit the PostgreSQL BugTool page at - http://www.PostgreSQL.org/bugs/bugs.php, which gives guidelines and - directions on how to submit a bug report. Also check out our ftp site - ftp://ftp.PostgreSQL.org/pub to see if there is a more recent - PostgreSQL version or patches. 1.14) How does PostgreSQL compare to - other DBMSs? There are several ways of measuring software: features, - performance, reliability, support, and price. *Features* PostgreSQL - has most features present in large commercial DBMSs, like - transactions, subselects, triggers, views, foreign key referential - integrity, and sophisticated locking. We have some features they do - not have, like user-defined types, inheritance, rules, and - multi-version concurrency control to reduce lock contention. - *Performance* PostgreSQL has performance similar to other commercial - and open source databases. it is faster for some things, slower for - others. In comparison to MySQL or leaner database systems, we are - slower on inserts/updates because of transaction overhead. Of course, - MySQL does not have any of the features mentioned in the /Features/ - section above. We are built for reliability and features, though we - continue to improve performance in every release. There is an - interesting Web page comparing PostgreSQL to MySQL at - http://openacs.org/philosophy/why-not-mysql.html - openacs.org/philosophy/why-not-mysql.html> *Reliability* We realize - that a DBMS must be reliable, or it is worthless. We strive to release - well-tested, stable code that has a minimum of bugs. Each release has - at least one month of beta testing, and our release history shows that - we can provide stable, solid releases that are ready for production - use. We believe we compare favorably to other database software in - this area. *Support* Our mailing lists provide contact with a large - group of developers and users to help resolve any problems - encountered. While we cannot guarantee a fix, commercial DBMSs do not - always supply a fix either. Direct access to developers, the user - community, manuals, and the source code often make PostgreSQL support - superior to other DBMSs. There is commercial per-incident support - available for those who need it. (See FAQ section 1.6 <#1.6>.) *Price* - We are free for all use, both commercial and non-commercial. You can - add our code to your product with no limitations, except those - outlined in our BSD-style license stated above. 1.15) How can I - financially assist PostgreSQL? PostgreSQL has had a first-class - infrastructure since we started in 1996. This is all thanks to Marc - Fournier, who has created and managed this infrastructure over the - years. Quality infrastructure is very important to an open-source - project. It prevents disruptions that can greatly delay forward - movement of the project. Of course, this infrastructure is not cheap. - There are a variety of monthly and one-time expenses that are required - to keep it going. If you or your company has money it can donate to - help fund this effort, please go to http://store.pgsql.com/shopping/ - and make a donation. Although the web page mentions PostgreSQL, Inc, - the "contributions" item is solely to support the PostgreSQL project - and does not fund any specific company. If you prefer, you can also - send a check to the contact address. - ---------------------------------------------------------------------- - -- User Client Questions 2.1) Are there ODBC drivers for PostgreSQL? - There are two ODBC drivers available, PsqlODBC and OpenLink ODBC. You - can download PsqlODBC from - http://gborg.postgresql.org/project/psqlodbc/projdisplay.php - gborg.postgresql.org/project/psqlodbc/projdisplay.php>. OpenLink ODBC - can be gotten from http://www.openlinksw.com www.openlinksw.com/>. It - works with their standard ODBC client software so you'll have - PostgreSQL ODBC available on every client platform they support (Win, - Mac, Unix, VMS). They will probably be selling this product to people - who need commercial-quality support, but a freeware version will - always be available. Please send questions to - [email protected] . 2.2) What tools are available for using - PostgreSQL with Web pages? A nice introduction to Database-backed Web - pages can be seen at: http://www.webreview.com For Web integration, - PHP is an excellent interface. It is at http://www.php.net. For - complex cases, many use the Perl interface and CGI.pm or mod_perl. - 2.3) Does PostgreSQL have a graphical user interface? Yes, there are - several graphical interfaces to PostgreSQL available. These include - PgAccess http://www.pgaccess.org www.pgaccess.org>), PgAdmin II - (http://www.pgadmin.org, Win32-only), RHDB Admin - (http://sources.redhat.com/rhdb/ ) and Rekall ( - http://www.thekompany.com/products/rekall/ - www.thekompany.com/products/rekall/>, proprietary). There is also - PHPPgAdmin ( http://phppgadmin.sourceforge.net/ - phppgadmin.sourceforge.net/>), a web-based interface to PostgreSQL. - See http://techdocs.postgresql.org/guides/GUITools for a more detailed - list. 2.4) What languages are able to communicate with PostgreSQL? - Most popular programming languages contain an interface to PostgreSQL. - Check your programming language's list of extension modules. The - following interfaces are included in the PostgreSQL distribution: * C - (libpq) * Embedded C (ecpg) * Java (jdbc) * Python (PyGreSQL) * TCL - (libpgtcl) Additional interfaces are available at - http://gborg.postgresql.org in the /Drivers/Interfaces/ section. - ---------------------------------------------------------------------- - -- Administrative Questions 3.1) How do I install PostgreSQL somewhere - other than //usr/local/pgsql/? Specify the /--prefix/ option when - running /configure/. 3.2) When I start /postmaster/, I get a /Bad - System Call/ or core dumped message. Why? It could be a variety of - problems, but first check to see that you have System V extensions - installed in your kernel. PostgreSQL requires kernel support for - shared memory and semaphores. 3.3) When I try to start /postmaster/, I - get /IpcMemoryCreate/ errors. Why? You either do not have shared - memory configured properly in your kernel or you need to enlarge the - shared memory available in the kernel. The exact amount you need - depends on your architecture and how many buffers and backend - processes you configure for /postmaster/. For most systems, with - default numbers of buffers and processes, you need a minimum of ~1 MB. - See the PostgreSQL Administrator's Guide - www.PostgreSQL.org/docs/view.php?version=current&idoc=1&file=kernel-re - sources.html> for more detailed information about shared memory and - semaphores. 3.4) When I try to start /postmaster/, I get - /IpcSemaphoreCreate/ errors. Why? If the error message is - /IpcSemaphoreCreate: semget failed (No space left on device)/ then - your kernel is not configured with enough semaphores. Postgres needs - one semaphore per potential backend process. A temporary solution is - to start /postmaster/ with a smaller limit on the number of backend - processes. Use /-N/ with a parameter less than the default of 32. A - more permanent solution is to increase your kernel's SEMMNS and SEMMNI - parameters. Inoperative semaphores can also cause crashes during heavy - database access. If the error message is something else, you might not - have semaphore support configured in your kernel at all. See the - PostgreSQL Administrator's Guide for more detailed information about - shared memory and semaphores. 3.5) How do I control connections from - other hosts? By default, PostgreSQL only allows connections from the - local machine using Unix domain sockets. Other machines will not be - able to connect unless you add the /-i/ flag to /postmaster/, *and* - enable host-based authentication by modifying the file - /$PGDATA/pg_hba.conf/ accordingly. This will allow TCP/IP connections. - 3.6) How do I tune the database engine for better performance? - Certainly, indexes can speed up queries. The EXPLAIN command allows - you to see how PostgreSQL is interpreting your query, and which - indexes are being used. If you are doing many INSERTs, consider doing - them in a large batch using the COPY command. This is much faster than - individual INSERTS. Second, statements not in a BEGIN WORK/COMMIT - transaction block are considered to be in their own transaction. - Consider performing several statements in a single transaction block. - This reduces the transaction overhead. Also, consider dropping and - recreating indexes when making large data changes. There are several - tuning options. You can disable /fsync()/ by starting /postmaster/ - with a /-o -F/ option. This will prevent /fsync()/s from flushing to - disk after every transaction. You can also use the /postmaster/ /-B/ - option to increase the number of shared memory buffers used by the - backend processes. If you make this parameter too high, the - /postmaster/ may not start because you have exceeded your kernel's - limit on shared memory space. Each buffer is 8K and the default is 64 - buffers. You can also use the backend /-S/ option to increase the - maximum amount of memory used by the backend process for temporary - sorts. The /-S/ value is measured in kilobytes, and the default is 512 - (i.e. 512K). You can also use the CLUSTER command to group data in - tables to match an index. See the CLUSTER manual page for more - details. 3.7) What debugging features are available? PostgreSQL has - several features that report status information that can be valuable - for debugging purposes. First, by running /configure/ with the - --enable-cassert option, many /assert()/s monitor the progress of the - backend and halt the program when something unexpected occurs. Both - /postmaster/ and /postgres/ have several debug options available. - First, whenever you start /postmaster/, make sure you send the - standard output and error to a log file, like: cd /usr/local/pgsql - ./bin/postmaster >server.log 2>&1 & This will put a server.log file in - the top-level PostgreSQL directory. This file contains useful - information about problems or errors encountered by the server. - /Postmaster/ has a /-d/ option that allows even more detailed - information to be reported. The /-d/ option takes a number that - specifies the debug level. Be warned that high debug level values - generate large log files. If /postmaster/ is not running, you can - actually run the /postgres/ backend from the command line, and type - your SQL statement directly. This is recommended *only* for debugging - purposes. Note that a newline terminates the query, not a semicolon. - If you have compiled with debugging symbols, you can use a debugger to - see what is happening. Because the backend was not started from - /postmaster/, it is not running in an identical environment and - locking/backend interaction problems may not be duplicated. If - /postmaster/ is running, start /psql/ in one window, then find the PID - of the /postgres/ process used by /psql/. Use a debugger to attach to - the /postgres/ PID. You can set breakpoints in the debugger and issue - queries from /psql/. If you are debugging /postgres/ startup, you can - set PGOPTIONS="-W n", then start /psql/. This will cause startup to - delay for /n/ seconds so you can attach to the process with the - debugger, set any breakpoints, and continue through the startup - sequence. The /postgres/ program has /-s, -A/, and /-t/ options that - can be very useful for debugging and performance measurements. You can - also compile with profiling to see what functions are taking execution - time. The backend profile files will be deposited in the - /pgsql/data/base/dbname/ directory. The client profile file will be - put in the client's current directory. Linux requires a compile with - /-DLINUX_PROFILE/ for proper profiling. 3.8) Why do I get /"Sorry, too - many clients"/ when trying to connect? You need to increase - /postmaster/'s limit on how many concurrent backend processes it can - start. The default limit is 32 processes. You can increase it by - restarting /postmaster/ with a suitable /-N/ value or modifying - /postgresql.conf/. Note that if you make /-N/ larger than 32, you must - also increase /-B/ beyond its default of 64; /-B/ must be at least - twice /-N/, and probably should be more than that for best - performance. For large numbers of backend processes, you are also - likely to find that you need to increase various Unix kernel - configuration parameters. Things to check include the maximum size of - shared memory blocks, SHMMAX; the maximum number of semaphores, SEMMNS - and SEMMNI; the maximum number of processes, NPROC; the maximum number - of processes per user, MAXUPRC; and the maximum number of open files, - NFILE and NINODE. The reason that PostgreSQL has a limit on the number - of allowed backend processes is so your system won't run out of - resources. 3.9) What is in the /pgsql_tmp/ directory? This directory - contains temporary files generated by the query executor. For example, - if a sort needs to be done to satisfy an ORDER BY and the sort - requires more space than the backend's /-S/ parameter allows, then - temporary files are created here to hold the extra data. The temporary - files are usually deleted automatically, but might remain if a backend - crashes during a sort. A stop and restart of the /postmaster/ will - remove files from those directories. 3.10) Why do I need to do a dump - and restore to upgrade between major PostgreSQL releases? The - PostgreSQL team makes only small changes between minor releases, so - upgrading from 7.2 to 7.2.1 does not require a dump and restore. - However, major releases (e.g. from 7.2 to 7.3) often change the - internal format of system tables and data files. These changes are - often complex, so we don't maintain backward compatability for data - files. A dump outputs data in a generic format that can then be loaded - in using the new internal format. In releases where the on-disk format - does not change, the /pg_upgrade/ script can be used to upgrade - without a dump/restore. The release notes mention whether /pg_upgrade/ - is available for the release. - ---------------------------------------------------------------------- - -- Operational Questions 4.1) What is the difference between binary - cursors and normal cursors? See the DECLARE manual page for a - description. 4.2) How do I SELECT only the first few rows of a query? - See the FETCH manual page, or use SELECT ... LIMIT.... The entire - query may have to be evaluated, even if you only want the first few - rows. Consider using a query that has an ORDER BY. If there is an + http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM + http://sqlcourse.com ve http://sqlcourse2.com adreslerinde de g�zel belgeler bulunmaktad�r. + + Bir ba�kas� da, http://members.tripod.com/er4ebus/sql/index.htm adresinde bulunan + "Teach Yourself SQL in 21 Days, Second Edition" kitab�d�r. + + Baz� kullan�c�lar�m�z da �u kitab� �nermektedirler: + The Practical SQL Handbook, Bowman, Judith S., et al.,Addison-Wesley. Others + like The Complete Reference SQL, Groff et al., McGraw-Hill. + + 1.11) PostgreSQL 2000 y�l�na uyumlu mudur? + + Evet. + + 1.12) Gelistirme tak�m�na nas�l kat�labilirim? + + �ncelikle, en son kaynak kodunu indirin ve web sitemizdeki ya da dag�t�m�n i�indeki + PostgreSQL Developer belgesini okuyun. Ardindan, pgsql-hackers ve pgsql-patches + listelerine �ye olun. ���nc� olarak da, pgsql-pacthes listesine y�ksek kalitede + yamalar g�nderin. + + PostgreSQL CVS arsivine erisim izni olan, 10 kadar gelistirici bulunmaktadir. + Hepsi defalarca, diger kisilerin yaptigindan cok daha y�ksek-kaliteli patchler + gondermislerdir. Ayrica biz de bu gelistiricilerin ekledikleri yamalarin y�ksek + kalitede olduguna g�veniyoruz. + + 1.13) Bir hata raporunu nas�l g�nderebilirim? + + PostgreSQL BugTool sayfasina gidiniz. O sayfada bir bug bildirmek icin neleri + yapman�z gerektigi anlatilmistir. + + Ayr�ca, ftp://ftp.PostgreSQL.org/pub ftp adresimizde, yeni bir PostgreSQL s�r�m� + ya da yamasi olup olmadigini kontrol ediniz. + + 1.14) PostgreSQL, diger DBMS'lerle nas�l karsilast�r�labilir? + + Bir yazilimin g�c�n� �l�mek i�in �esitli yollar vardir: Yazilimin �zellikleri, + basar�m�, g�venilirligi, destegi ve �creti. + + �zellikler + + PostgreSQL mevcut b�y�k ticari veritabanlarinin, transaction, subselect, + trigger, view, foreign key referential integrity ve sophisticated locking gibi + t�m �zelliklerine sahiptir. Onlarin sahip olmadiklari, kullanici-tanimli tipler + (user-defined types), rules, inheritance ve lock cak�smalarini d�s�rmek icin + multi-version uyumluluk �zellikleri bulunmaktadir. + + Performans (Ba�ar�m) + + PostgreSQL, di�er ticari ve a��k kaynak kodlu veritabanlar�yla yak�n ba�ar�m� sa�lar. + Baz� a��lardan daha h�zl�d�r, di�er a��lardan da yava�t�r. MySQL ya da daha zay�f + veritabanlar� ile kar��la�t�r�ld���nda,insert/update islemlerinde, transaction bazl� + �al�st���m�z i�in daha yava��z. MySQL, yukar�daki "�zellikler" k�sm�nda belirtilenlerden + hi� birine sahip de�ildir. Biz, ba�ar�m�m�z� her s�r�mde artt�rsak da, esneklik ve + geli�mi� �zellikler i�in yap�lanm�s durumday�z . PostgreSQL'i MySQL ile kar��la�t�ran + �u web sitesine bakabilirsiniz: http://openacs.org/why-not-mysql.html + + G�venilirlik + DBMSlerin g�venilir olmas� gerketigi, yoksa degerleri olmayacagini d�s�n�yoruz + �ok iyi test edilmis, dengeli �al�san minimum say�da hata i�eren kod sunmaya �al�s�yoruz. + Her bir s�r�m en az 1 ayl�k beta testlerinden ge�irilmektedir. S�r�m ge�mi�ine bakarsan�z, + �retime haz�r, dengeli ve kararl� kodlar sundugumuzu g�rebilirsiniz. Bu alanda, diger + veritaban� yaZ�l�mlar�na �st�nl�g�m�z olduguna inanmaktay�z + + Destek + E-posta listemiz, olusan herhangi bir sorunu ��zebilecek b�y�k say�da kullan�c� + ve gelistirici grubunu i�erir. Sorununuz i�in, en az bir ticari veritaban� kadar + rahat ��z�m bulabilirsiniz. Gelistiricilere, kullan�c� grubuna, belgelere ve + kaynak koda direk olarak erisebilme, PostgreSQL destegini, diger DBMSlere g�re daha + �nemli k�lar. Gereksinimi olanlara, ticari destek verilebilir. (Destek i�in 1.6 b�l�m�ne bak�n�z.) + + Fiyat + Ticari ve ticari olmayan t�m kullan�mlar�n�z i�in PostgreSQL �cretsizdir. Kodumuzu, yukar�da belirtilen + BSD-stili lisanstaki s�n�rlamalar hari�, �r�n�n�z�n i�ine ekleyebilirsiniz. + + 1.15) PostgreSQL'e maddi a��dan nas�l destek olabilirim? + + PostgreSQL, 1996 y�l�ndan beri 1.s�n�f altyap�ya ashiptir. Bunun i�in, y�llar boyu �al�s�p bu altyap�y� + olusturup y�neten Marc Fournier'e tesekk�rler. + + Bir a��k kaynak kodlu proje i�in, kaliteli altyap� �ok �nemlidir. Bu altyap�, projenin + kesilmesini �nler ve projenin ilerlemesini h�zland�r�r. + + Tabii ki bu altyap� ucuz degildir. �slerin y�r�mesi i�in �e�itli y�l�k ve anl�k + harcamalar�m�z olmaktad�r. Eger siz ya da sirketinizin bu �abam�za bag�sta + bulunabilecek paras� varsa, l�tfen http://www.pgsql.com/pg_goodies adresine + gidiniz ve bag�sta, hibede bulununuz. + + Web sayfas�n�n PostgreSQL, �nc.' den bahsetmesine ragmen, "katk�da bulunanlar" + (contributors) maddesi sadece PostgreSQL projesini desteklemek i�indir ve belirli bir + sirketin para kaynag� degildir. isterseniz, baglant� adresine bir �ek g�nderebilirsiniz. + + ____________________________________________________________________________ + + Kullan�c�/istemci Sorular� + + 2.1) PostgreSQL icin ODBC s�r�c�leri var m�? + + iki tane ODBC s�r�c�s� bulunmaktad�r: PsqlODBC ve OpenLink ODBC. + + PsqlODBC'i http://gborg.postgresql.org/project/psqlodbc/projdisplay.php adresinden + indirebilirsiniz. + + OpenLink ODBC http://www.openlinksw.com adresinden al�nabilir.Bu s�r�c�, + kendi standart ODBC istemci yaz�l�m� ile �al�st���ndan, destekledikleri + her platformda (Win, Mac, Unix, VMS) PostgreSQL ODBC bulunmalidir. + + �cretsiz s�r�m� olmakla beraber, ticari kalitede destek almak isteyenlere satmak isteyeceklerdir. + Sorular�n�z� l�tfen [email protected] adresine g�nderiniz. + + 2.2) PostgreSQL'i web sayfalar�nda kullanabilmek i�in hangi ara�lar bulunmaktad�r? + + http://www.webreview.com adresinde, arka planda veritaban� �al�st�ran Web sayfalar� + i�in giris seviyesinde bilgi bulunmaktad�r. + + Web ile b�t�nlesme i�in, PHP m�kemmel bir arabirim sunar. http://www.php.net . + + Karma��k sorunlar i�in, �o�u kisi Perl arabirimini ve CGI.pm ya da mod_perl kullan�r. + + + 2.3) PostgreSQL'in grafik kullan�c� arabirimi var m�d�r? + + �e�itli grafik arabirimlerimiz bulunmaktad�r. Bunlar�n aras�nda, PgAccess (http://www.pgaccess.org), + PgAdmin II (http://www.pgadmin.org, sadece Win32 i�in), RHDB Admin (http://sources.redhat.com/rhdb/ ) + ve Rekall (http://www.thekompany.com/products/rekall/) bulunmaktad�r. Ayr�ca, PostgreSQL i�in web + tabanl� bir arabirim olan PHPPgAdmin ( http://phppgadmin.sourceforge.net/ ) bulunmaktad�r. + + Daha ayr�nt�l� liste i�in http://techdocs.postgresql.org/guides/GUITools adresine bakabilirsiniz. + + 2.4) PostgreSQL ile ileti�imi kurabilmek i�in hangi dilleri kullanabilirim? + + * C (libpq) + * Embedded C (ecpg) + * Java (jdbc) + * Python (PyGreSQL) + * TCL (libpgtcl) + + Di�erleri i�in, http://gborg.postgresql.org adresindeki Drivers/Interfaces b�l�m�ne + bakabilirsiniz. + _________________________________________________________________ + + Y�netimsel Sorular + + 3.1) PostgreSQL'i, /usr/local/pgsql dizininden baska dizinlere nas�l kurabilirim? + + configure betigini �al�st�r�rken, --prefix se�enegini veriniz. + + 3.2) postmaster'i baslatt�g�mda, a Bad System Call ya da core dumped mesaj� + al�yorum. Neden? + + Bunun bir�ok nedeni olabilir. Ancak ilk kontrol edilmesi gereken sey, �ekirdeginize + System V uzant�lar�n�n kurulu olup olmad�g�n� kontrol etmek olabilir. PostgreSQL + shared memory ve semaphores i�in �ekirdek destegine gereksinim duyar. + + 3.3) postmaster'i baslatt�g�mda, a �pcMemoryCreate hatas� al�yorum. Neden? + + Ya �ekirdeginizde shared memory desteginiz d�zg�nce yap�land�r�lmam�st�r, ya da + �ekirdeginizdeki mevcut shared memory miktar�n� b�y�tmeniz gerekecektir. Gereksinim + duyacag�n�z miktar, mimarinize ve postmaster i�in ayarlad�g�n�z tampon ile backend + islemi say�s�na bagl�d�r. T�m sistemler i�in, tamponlar ve islemlerde �ntan�ml� say�larla, + ~ 1MB kadar yere gereksinmeniz olacaktir.PostgreSQL Administrator's Guide' a, shared memory + ve semaphorelar hakk�ndaki ayr�nt�l� bilgi i�in bakabilirsiniz. + + 3.4) postmaster'i baslatt�g�mda, a �pcSemaphoreCreate hatas� al�yorum. Neden? + + Eger hata, "�pcSemaphoreCreate: semget failed (No space left on device)" ise, + �ekirdeginiz yeterli semaphore ile yap�land�r�lmam�s demektir. Postgres, her + bir potansiyel backend i�in bir semaphore gereksinmesi duyar. Ge�ici bir ��z�m, + postmaster� backend islemleri i�in daha az miktarda s�n�rla baslatmak olabilir. + -N i varsa�lan deger olan 32'den k���k bir degerle baslat�n�z. Daha kal�c� bir + ��z�m, �ekirde�inizin SEMMNS ve SEMMNI parametrelerini y�kseltmek olacakt�r. + + �al��mayan semaphorelar a��r veritaban� islemlerinde ��kme yaratabilirler. + + Eger hata mesaj�n�z baska birsey ise, �ekirdeginizde semaphore destegini + yap�land�rmam�s olabilirsiniz. Shared memory ve semaphorelar hakk�ndaki daha + ayr�nt�l� bilgi i�in PostgreSQL Administrator's Guide'a bakabilirsiniz. + + 3.5) Diger bilgisayarlar�n benim PostgreSQL veritaban� sunucuma baglant�lar�n� + nas�l kontrol edebilirim? + + �n tan�ml� olarak, PostgreSQL sadece yerel makineden Unix domain sockets kullanarak + baglan�lmas�na izin verir. Diger makineler, postmaster'a -i etiketini ge�irmezseniz + ve $PGDATA_pg_hba.conf dosyas�n� d�zenleyerek host-based authentication'a + olanak vermezseniz, baglant� yapamayacaklard�r. + + 3.6) Veritabani motorunu daha iyi basarim icin nasil ayarlayabilirim? + + Indexler sorgular� h�zland�rabilir. EXPLAIN komutu, PostgreSQL'in sorgunuzu nas�l + yorumlad���n� ve hangi indexleri kullandigini g�rmenize izin verir. + + E�er cok fazla INSERT islemi yapiyorsaniz, bunlar� b�y�k bir toplu islem dosyasi kullan�p + COPY komutu ile veritabanina girmeyi deneyiniz. Bu, tekil �NSERTlerden daha h�zl�d�r. + ikinci olarak, BEG�N WORK/COMM�T transaction blogu i�inde olmayan ifadeler kendi + transactionlarindaymis gibi d�s�n�l�r. �oklu ifadeleri tek bir transaction blo�u i�inde + yapabilirsiniz. Bu, transaction overheadini d���recektir. Tek bir + transaction blo�u i�inde birden �ok ifadeyi �al��t�rmay� + deneyebilirsiniz. Bu, transaction overhead ini d���r�r. + + �e�itli ayarlama se�enekleri mevcuttur. fsync() i�lemini, postmaster'� -o -F se�ene�i ile + ba�latarak devre d��� b�rakabilirsiniz. Bu i�lem, fsync()'lerin her transactiondan sonra + diske flush etmesini engelleyecektir. + + Ayn� zamanda, postmaster'i -B se�ene�i ile ba�lat�p, backend i�lemleri taraf�ndan kullan�lan + shared memorf buffers say�lar�n� artt�rabilirsiniz. Eger bu parametreyi �ok y�ksek tutarsan�z, + �ekirde�inizin shared memory b�lgesindeki limiti a�ma olas�l���n�z y�z�nden postmaster + ba�layamayabilir. Her bir tampon (buffer) 8K'd�r. �ntan�ml� say� ise 64 tampondur. + + Ayn� �ekilde, backend'in -S se�ene�ini ge�ici s�ralamalar i�in backend s�re�leri taraf�ndan + kullan�lacak haf�zay� artt�rmak amac�yla kullanabilirsiniz. -S se�ene�i kilobayt cinsinden de�er al�r + ve �n tan�ml� de�eri 512'dir (512 K) + + Tablolardaki veriyi bir indekse e�lemek amac�yla gruplama i�in CLUSTER komutunu kullanabilirsiniz. + Ayr�nt�l� bilgi i�in CLUSTER komutunun yard�m sayfas�na bakabilirsiniz. + + 3.7) Hangi hata ay�klama �zellikleri bulunmaktad�r? + + PostgreSQL, hata ay�klama amac�yla kullan�labilecek durum bilgisi rapor eden �e�itli + �zeliklere sahiptir. + + �ncelikle, configure beti�ini --enable-cassert se�ene�iyle �al��t�r�rsan�z, bir �ok assert() backend cal��mas�n� + g�zlemler ve beklenmeyen bir durumda program� durdurur. + + Postmaster ve postgres �e�itli hata ay�klama se�eneklerine sahiptir. �ncelikle, + postmaster'i ba�latt���n�zda, standart ��kt�y� ve hatalar� bir log dosyas�na + y�nlendirdi�inize emin olun: + + cd /usr/local/pgsql + ./bin/postmaster >server.log 2>&1 & + + Bu i�lem PostgreSQL ana dizinine server.log dosyas� yerle�tirecektir. Bu dosya sunucunun + ya�ad��� sorunlar ya da hatalar hakk�nda yararl� bilgiler i�erir. -d se�ene�i, hata + ay�klama seviyesini belirten bir rakam ile kullan�l�r. Y�ksek hata ay�klama + seviyelerinin b�y�k log dosyalar� olu�turaca��n� unutmay�n�z. + + E�er postmaster �al��m�yorsa, postgres backend'ini komut sat�r�ndan �al��t�rabilir ve SQL ifadenizi + direk olarak yazabilirsiniz. Bu sadece hata ay�klama amac�yla �nerilir. Burada, noktal� virg�l�n de�il de + yeni bir sat�r�n sorguyu sonland�rd���n� unutmay�n�z. E�er hata ay�klama sembolleri ile derlediyseniz, + ne oldu�unu g�rmek i�in bir hata ay�klay�c� kullanabilirsiniz. backend postmasterdan ba�lat�lmad���ndan, + e�de�er bir ortamda �al��mamaktad�r ve locking/backend etkile�im sorunlar� artabilir. + + E�er postmaster �al���yorsa, bir pencerede psql'i �al��t�r�n ve psql taraf�ndan kullan�lan postgres s�recinin s�re� + numaras�n� (PID) bulun. Postgres s�reci ile ili�kilendirmek i�in bir hata ay�klar�c� kullan�n. Sorgular� psql + arac�l��� ile �al��t�rabilirsiniz. E�er postgres ba�lang�c�nda hata ay�klamak istiyorsan�z, PGOPTIONS="-W n" + se�ene�ini ayarlayabilir ve psql'i ba�latabilirsiniz. Bu i�lem, ba�lang�c�n n saniye kadar gecikmesini + sa�layacakt�r; b�ylece hata ay�klay�c�y� s�rece ili�kilendirdikten sonra ba�lang�� s�recinin devam etmesini + sa�layabilirsiniz. + + postgres program� hata ay�klama ve ba�ar�m �l��mleri i�in -s, -A ve -t se�eneklerine sahiptir. + + 3.8) Baglanmaya �al�s�ken, neden "Sorry, too many clients" hatas�n� al�yorum? + + Postmaster'in e�zamanl� olarak ba�latabilece�i backend s�re�leri s�n�rlar�n� + artt�rman�z gerekmektedir. + + �n tan�ml� de�er 32 s�re�tir. Bunu, postmaster'i uygun -N de�eri ile ya da + postgresql.conf dosyas�n� d�zenleyerek yeniden ba�latmakla artt�rabilirsiniz. + + E�er -N de�erini 32'den b�y�k yapacaksan�z, ayn� zamanda -B de�erini de de�i�tirmeniz + gerekti�ini unutmay�n. -B -N'nin en az 2 kat� kadar olmal�d�r; daha iyi ba�ar�m i�in + bu say�y� daha da artt�rmal�s�n�z. Y�ksek say�daki backend s�re�leri i�in, �e�itli �ekirdek yap�land�rma + parametrelerini artt�rman�z gerekecektir. Yap�lmas� gerekenler, SHMMAX, SEMMNS, SEMMNI, NPROC, MAXUPRC ve + a��labilecek dosyalar�n maksimum say�s� olan NFILE ve NINODE de�erlerini kar��t�rmakt�r. Bunun nedeni, PostgreSQL'in + izin verilen backend s�re�lerinin say�s� �zerinde bir s�n�r� olmas�d�r. B�ylelikle sistem kaynaklar�n�n d���na + ��k�lmayacakt�r. + + PostgreSQL'in 6.5 s�r�m�ne kadar, en fazla backend say�s� 64 idi ve bunu de�i�tirmek i�in + include/storage/sinvaladt.h dosyas� i�indeki MaxBAckendid sabitini de�i�tirdek sonra + yaz�l�m� yeniden derlemek gerekiyordu. + + 3.9) pgsql_tmp dizinin i�indeki dosyalar nelerdir? + + Sorgu �al�st�r�c� (query executer) taraf�ndan yarat�lan ge�ici dosyalard�r. �rnegin, + bir s�ralama ORDER BY ile yapilacaksa ve s�ralama backend'in -s parametresinin izin + verdiginden daha fazla alana gereksinim duyuyorsa, ekstra veriyi tutmak i�in ge�ici + dosyalar yarat�l�r. + + Ge�ici dosyalar, eger s�ralama s�ras�nda backend g��mezse otomatik olarak silinecektir. + Eger �al�san durumda bir backendiniz yoksa, pg_tempNNN.NN dosyalar�n� silmeniz g�venlidir.. + + 3.10) PostgreSQL s�r�mlerini y�kselmek i�in neden bir dump/reload i�lemi ger�ekle�tirmek zorunday�m? + + PostgreSQL tak�m� ara s�r�mlerde sadece k���k de�i�iklikler yapmaktad�r; bu y�zden 7.2 + s�r�m�nden 7.2.1'e y�kseltmek dump/restore i�lemi gerekmemektedir. Ancak, esas s�r�mlerde + (�rnek: 7.2'den 7.3'e) �o�unlukla sistem tablolar�n�n ve veri dosyalar�n�n i� yap�s� + de�i�tirilir. Bu de�i�iklikler �o�unlukla karma��kt�r; dolay�s�yla veri dosyalar�n�n + geriye d�n�k uyumlulu�u i�lemlerini yapm�yoruz. Dump i�lemi, veriyi genel bi�imde + alaca��ndan yeniden y�kleme esnas�nda veri, yeni i� bi�ime uygun �ekilde + yerle�tirilecektir. + + Disk bi�iminin de�i�medi�i s�r�mlerde, pg_upgrade beti�i g�ncellemenin bir dump/restore + gerektirmeden yap�lmas�n� sa�layacakt�r. pg_upgrade beti�inin o s�r�m i�in bulunup + bulunmad���n� s�r�m notlar� i�inde bulabilirsiniz. + + _________________________________________________________________ + + ��letimsel Sorular + + + 4.1) Binary cursor ve normal cursor arasindaki fark nedir? + + DECLARE yard�m sayfasina bakiniz. + + 4.2) Sorgunun sadece ilk birka� sat�r�n� nasil SELECT edebilirim? + + FETCH yard�m sayfasina bakiniz, aya da SELECT ... LIMIT.... kullan�n�z. + + The entire query may have to be evaluated, even if you only want the + first few rows. Consider a query that has an ORDER BY. �f there is an index that matches the ORDER BY, PostgreSQL may be able to evaluate only the first few records requested, or the entire query may have to - be evaluated until the desired rows have been generated. 4.3) How do I - get a list of tables or other things I can see in /psql/? You can read - the source code for /psql/ in file /pgsql/src/bin/psql/describe.c/. It - contains SQL commands that generate the output for psql's backslash - commands. You can also start /psql/ with the /-E/ option so it will - print out the queries it uses to execute the commands you give. 4.4) - How do you remove a column from a table? This functionality was added - in release 7.3 with ALTER TABLE DROP COLUMN. In earlier versions, you - can do this: BEGIN; LOCK TABLE old_table; SELECT ... -- select all - columns but the one you want to remove INTO TABLE new_table FROM - old_table; DROP TABLE old_table; ALTER TABLE new_table RENAME TO - old_table; COMMIT; 4.5) What is the maximum size for a row, a table, - and a database? These are the limits: Maximum size for a database? - unlimited (4 TB databases exist) Maximum size for a table? 16 TB - Maximum size for a row? 1.6TB Maximum size for a field? 1 GB Maximum - number of rows in a table? unlimited Maximum number of columns in a - table? 250-1600 depending on column types Maximum number of indexes on - a table? unlimited Of course, these are not actually unlimited, but - limited to available disk space and memory/swap space. Performance may - suffer when these values get unusually large. The maximum table size - of 16 TB does not require large file support from the operating - system. Large tables are stored as multiple 1 GB files so file system - size limits are not important. The maximum table size and maximum - number of columns can be increased if the default block size is - increased to 32k. 4.6) How much database disk space is required to - store data from a typical text file? A PostgreSQL database may require - up to five times the disk space to store data from a text file. As an - example, consider a file of 100,000 lines with an integer and text - description on each line. Suppose the text string avergages twenty - bytes in length. The flat file would be 2.8 MB. The size of the - PostgreSQL database file containing this data can be estimated as 6.4 - MB: 36 bytes: each row header (approximate) 24 bytes: one int field - and one text field + 4 bytes: pointer on page to tuple - ---------------------------------------- 64 bytes per row The data - page size in PostgreSQL is 8192 bytes (8 KB), so: 8192 bytes per page - ------------------- = 128 rows per database page (rounded down) 64 - bytes per row 100000 data rows -------------------- = 782 database - pages (rounded up) 128 rows per page 782 database pages * 8192 bytes - per page = 6,406,144 bytes (6.4 MB) Indexes do not require as much - overhead, but do contain the data that is being indexed, so they can - be large also. NULLs are stored in bitmaps, so they use very little - space. 4.7) How do I find out what tables, indexes, databases, and - users are defined? /psql/ has a variety of backslash commands to show - such information. Use \? to see them. There are also system tables - beginning with /pg_/ that describe these too. Also, /psql -l/ will - list all databases. Also try the file - /pgsql/src/tutorial/syscat.source/. It illustrates many of the SELECTs - needed to get information from the database system tables. 4.8) My - queries are slow or don't make use of the indexes. Why? Indexes are - not automatically used by every query. Indexes are only used if the - table is larger than a minimum size, and the query selects only a - small percentage of the rows in the table. This is because the random - disk access caused by an index scan can be slower than a straight read - through the table, or sequential scan. To determine if an index should - be used, PostgreSQL must have statistics about the table. These - statistics are collected using VACUUM ANALYZE, or simply ANALYZE. - Using statistics, the optimizer knows how many rows are in the table, - and can better determine if indexes should be used. Statistics are - also valuable in determining optimal join order and join methods. - Statistics collection should be performed periodically as the contents - of the table change. Indexes are normally not used for ORDER BY or to - perform joins. A sequential scan followed by an explicit sort is - usually faster than an index scan of a large table. However, LIMIT - combined with ORDER BY often will use an index because only a small - portion of the table is returned. In fact, though MAX() and MIN() - don't use indexes, it is possible to retrieve such values using an - index with ORDER BY and LIMIT: SELECT col FROM tab ORDER BY col [ DESC - ] LIMIT 1; If you believe the optimizer is incorrect in choosing a - sequential scan, use |SET enable_seqscan TO 'off'| and run tests to - see if an index scan is indeed faster. When using wild-card operators - such as LIKE or /~/, indexes can only be used in certain - circumstances: * The beginning of the search string must be anchored - to the start of the string, i.e. o LIKE patterns must not start with - /%/. o /~/ (regular expression) patterns must start with /^/. * The - search string can not start with a character class, e.g. [a-e]. * - Case-insensitive searches such as ILIKE and /~*/ do not utilise - indexes. Instead, use functional indexes, which are described in - section 4.12 <#4.12>. * The default /C/ locale must be used during - /initdb/. 4.9) How do I see how the query optimizer is evaluating my - query? See the EXPLAIN manual page. 4.10) What is an R-tree index? An - R-tree index is used for indexing spatial data. A hash index can't - handle range searches. A B-tree index only handles range searches in a - single dimension. R-trees can handle multi-dimensional data. For - example, if an R-tree index can be built on an attribute of type - /point/, the system can more efficiently answer queries such as - "select all points within a bounding rectangle." The canonical paper - that describes the original R-tree design is: 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. You can also find - this paper in Stonebraker's "Readings in Database Systems". Built-in - R-trees can handle polygons and boxes. In theory, R-trees can be - extended to handle higher number of dimensions. In practice, extending - R-trees requires a bit of work and we don't currently have any - documentation on how to do it. 4.11) What is the Genetic Query - Optimizer? The GEQO module speeds query optimization when joining many - tables by means of a Genetic Algorithm (GA). It allows the handling of - large join queries through nonexhaustive search. 4.12) How do I - perform regular expression searches and case-insensitive regular - expression searches? How do I use an index for case-insensitive - searches? The /~/ operator does regular expression matching, and /~*/ - does case-insensitive regular expression matching. The - case-insensitive variant of LIKE is called ILIKE. Case-insensitive - equality comparisons are normally expressed as: SELECT * FROM tab - WHERE lower(col) = 'abc'; This will not use an standard index. - However, if you create a functional index, it will be used: CREATE - INDEX tabindex ON tab (lower(col)); 4.13) In a query, how do I detect - if a field is NULL? You test the column with IS NULL and IS NOT NULL. - 4.14) What is the difference between the various character types? Type - Internal Name Notes -------------------------------------------------- - VARCHAR(n) varchar size specifies maximum length, no padding CHAR(n) - bpchar blank padded to the specified fixed length TEXT text no - specific upper limit on length BYTEA bytea variable-length byte array - (null-byte safe) "char" char one character You will see the internal - name when examining system catalogs and in some error messages. The - first four types above are "varlena" types (i.e., the first four bytes - on disk are the length, followed by the data). Thus the actual space - used is slightly greater than the declared size. However, these data - types are also subject to compression or being stored out-of-line by - TOAST, so the space on disk might also be less than expected. - VARCHAR(n) is best when storing variable-length strings and it limits - how long a string can be. TEXT is for strings of unlimited length, - with a maximum of one gigabyte. CHAR(n) is for storing strings that - are all the same length. CHAR(n) pads with blanks to the specified - length, while VARCHAR(n) only stores the characters supplied. BYTEA is - for storing binary data, particularly values that include NULL bytes. - All the types described here have similar performance characteristics. - 4.15.1) How do I create a serial/auto-incrementing field? PostgreSQL - supports a SERIAL data type. It auto-creates a sequence and index on - the column. For example, this: CREATE TABLE person ( id SERIAL, name - TEXT ); is automatically translated into this: CREATE SEQUENCE - person_id_seq; CREATE TABLE person ( id INT4 NOT NULL DEFAULT - nextval('person_id_seq'), name TEXT ); CREATE UNIQUE INDEX - person_id_key ON person ( id ); See the /create_sequence/ manual page - for more information about sequences. You can also use each row's - /OID/ field as a unique value. However, if you need to dump and reload - the database, you need to use /pg_dump/'s /-o/ option or COPY WITH - OIDS option to preserve the OIDs. 4.15.2) How do I get the value of a - SERIAL insert? One approach is to retrieve the next SERIAL value from - the sequence object with the /nextval()/ function /before/ inserting - and then insert it explicitly. Using the example table in 4.15.1 - <#4.15.1>, an example in a pseudo-language would look like this: - new_id = execute("SELECT nextval('person_id_seq')"); execute("INSERT - INTO person (id, name) VALUES (new_id, 'Blaise Pascal')"); You would - then also have the new value stored in |new_id| for use in other - queries (e.g., as a foreign key to the |person| table). Note that the - name of the automatically created SEQUENCE object will be named - __/seq/, where /table/ and /serialcolumn/ are the names of your table - and your SERIAL column, respectively. Alternatively, you could - retrieve the assigned SERIAL value with the /currval()/ function - /after/ it was inserted by default, e.g., execute("INSERT INTO person - (name) VALUES ('Blaise Pascal')"); new_id = execute("SELECT - currval('person_id_seq')"); Finally, you could use the OID <#4.16> - returned from the INSERT statement to look up the default value, - though this is probably the least portable approach. In Perl, using - DBI with Edmund Mergl's DBD::Pg module, the oid value is made - available via /$sth->{pg_oid_status}/ after /$sth->execute()/. 4.15.3) - Don't /currval()/ and /nextval()/ lead to a race condition with other - users? No. /currval()/ returns the current value assigned by your - backend, not by all users. 4.15.4) Why aren't my sequence numbers - reused on transaction abort? Why are there gaps in the numbering of my - sequence/SERIAL column? To improve concurrency, sequence values are - given out to running transactions as needed and are not locked until - the transaction completes. This causes gaps in numbering from aborted - transactions. 4.16) What is an OID? What is a TID? OIDs are - PostgreSQL's answer to unique row ids. Every row that is created in - PostgreSQL gets a unique OID. All OIDs generated during /initdb/ are - less than 16384 (from /include/access/transam.h/). All user-created - OIDs are equal to or greater than this. By default, all these OIDs are - unique not only within a table or database, but unique within the - entire PostgreSQL installation. PostgreSQL uses OIDs in its internal - system tables to link rows between tables. These OIDs can be used to - identify specific user rows and used in joins. It is recommended you - use column type OID to store OID values. You can create an index on - the OID field for faster access. OIDs are assigned to all new rows - from a central area that is used by all databases. If you want to - change the OID to something else, or if you want to make a copy of the - table, with the original OIDs, there is no reason you can't do it: - CREATE TABLE new_table(old_oid oid, mycol int); SELECT old_oid, mycol - INTO new FROM old; COPY new TO '/tmp/pgtable'; DELETE FROM new; COPY - new WITH OIDS FROM '/tmp/pgtable'; OIDs are stored as 4-byte integers, - and will overflow at 4 billion. No one has reported this ever - happening, and we plan to have the limit removed before anyone does. + be evaluated until the desired rows have been generated. + + 4.3) psql'in i�inde g�rd�g�m tablolarin ya da diger seylerin listesini nasil alabilirim? + + pgsql/src/bin/psql/describe.c i�indeki psql kaynak kodunu okuyabilirsiniz. Bu kod, + psql'in \ ile baslayan komutlar�n�n ��kt�s�n� olusturan SQL komutlarini i�erir. Ayn� + zamanda, psql'i -E se�ene�i ile ba�lat�p, verdi�iniz komutlar� �al��t�rmak i�in yapt��� + sorgular�n ��kt�lar�n� g�rebilirsiniz. + + 4.4) Bir tablodan bir kolonu nas�l kald�rabilirim? + + Bu �zellik (ALTER TABLE DROP COLUMN) 7.3 s�r�m� ile gelmi�tir. Eski s�r�mlerde + a�a��dakileri uygulamal�s�n�z: + + BEGIN; + LOCK TABLE old_table; + SELECT ... -- select all columns but the one you want to remove + INTO TABLE new_table + FROM old_table; + DROP TABLE old_table; + ALTER TABLE new_table RENAME TO old_table; + COMMIT; + + 4.5) Bir sat�r, tablo ve veritaban� icin en fazla b�y�kl�k nedir? + + S�n�rlar: + + Veritabani icin en fazla b�y�kl�k nedir? S�n�rs�z (4 TB'l�k veritaban� bulunmaktad�r) + Bir tablo icin en fazla b�y�kl�k nedir? 16 TB + Bir sat�r i�in en fazla b�y�kl�k nedir? 1.6 TB + Bir alan i�in en fazla b�y�kl�k nedir? 1 GB + Tabloda en fazla sat�r say�s� ka�t�r? S�n�rs�z + Bir tabloda olabilecek en fazla kolon say�s� ka�t�r? Kolon tiplerine ba�l� olarak 250-1600 + Bir tabloda olabilecek en fazla index say�s� ka�t�r? s�n�rs�z + + Tabii ki bunlar aslinda s�n�rs�z degildir. Burada belirtilen s�n�rlar, fiziksel + s�n�rlar�n haricindeki s�n�rlard�r. Bo� disk alan�, haf�za/takas alan� na ba�l� + s�n�rlamalar vard�r. Ba�ar�m, s�n�r de�erlere yaklast�k�a, ya da de�erler cok b�y�k + oldu�unda d��ebilir. + + Bir tablo i�in b�y�kl�k s�n�r� olan 16 TB, i�letim sisteminin b�y�k dosya deste�i olup + olmamas�ndan ba��ms�zd�r. B�y�k tablolar, 1 GB'lik dosyalarda sakland��� i�in, dosya + sistemi s�n�rlar�nin bir �nemi yoktur. + + Tablo ve kolon say�s� b�y�kl�kleri, �n tan�ml� blok b�y�kl��� 32k ya ��kar�larak + artt�r�labilir. + + 4.6) Tipik bir metin dosyas�ndaki veriyi saklamak i�in ne kadar disk alan� gereklidir? + + Bir PostgreSQL veritaban�, veriyi "flat" metin dosyas�nda saklamak i�in gereken + alan�n 5 kat fazla disk alan�na gereksinim duyabilir. + + Her sat�r�nda bir tamsay� ve metin (text) i�eren, 100.000 sat�rl�k bir dosya d���n�n. + Her sat�r�n ortalama 20 byte oldu�unu farzedelim. Metin dosyas� 2.8 MB olacakt�r. Bu veriyi + tutan PostgreSQL veritaban� yakla��k 6.4 MB yer kaplayacakt�r. + + 36 byte: Her bir sat�r basl�g� (yaklasik) + + 24 byte: Bir tamsay� (int) alani ve bir metin (text) alan� + + 4 byte: Sayfada tuple a pointer + ---------------------------------------- + 64 byte -> kay�t bas�na + + PostgreSQL'de data page b�y�kl��� 8192 byte (8k)dir, dolay�s�yla: + + 8192 byte -> page bas�na + ------------------------- = Her bir veritabani page i ba��na 128 sat�r (yakla��k) + Sat�r bas�na 64 byte + + 100000 veri sat�r� + -------------------- = 782 veritaban� sayfas� + 128 sat�r + + 782 veritaban� sayfas� * sayfa ba��na 8192 byte = 6,406,144 bytes (6.4 MB) + + Indexler cok fazla yere gereksinim duymazlar, ama indexlenmis veriyi tutacaklar�ndan + b�y�k olabilirler. + + NULL de�erler bitmapler i�inde tutulur; dolay�s�yla �ok az yer kaplarlar. + + 4.7) Veritaban�nda hangi tablo ya da indexlerin tan�mland�g�n� nasil g�rebilirim? + + psql, bu t�r bilgileri g�stermek i�in, \ ile ba�layan bir �ok komut sunmaktad�r. + \? komutu ile bu komutlar� g�rebilirsiniz. Ayr�ca, bunlar� a��klayan ve pg_ ile ba�layan + �ok say�da sistem tablosu bulunmaktad�r. Ayn� zamanda, psql -l ile t�m veritabanlar�n� + listeyelebirsiniz. + + Ayr�ca, pgsql/src/tutorial/syscat.source kodunu inceleyebilirsiniz. Bu dosya, veritaban� + sistem dosyalarindan bilgiyi almak i�in gereksinim duyulan bir �ok SELECTleri g�sterir. + + 4.8) Sorgular�m cok yava�, ya da indexlerimi kullanm�yorlar. Neden? + + Indexes are not automatically used by every query. Indexes are only used if the table is larger than a minimum size, +and the query selects only a small percentage of the rows in the table. This is because the random disk access caused +by an index scan can be slower than a straight read through the table, or sequential scan. + +To determine if an index should be used, PostgreSQL must have statistics about the table. These statistics are +collected using VACUUM ANALYZE, or simply ANALYZE. Using statistics, the optimizer knows how many rows are in the +table, and can better determine if indexes should be used. Statistics are also valuable in determining optimal join +order and join methods. Statistics collection should be performed periodically as the contents of the table change. + +Indexes are normally not used for ORDER BY or to perform joins. A sequential scan followed by an explicit sort is +usually faster than an index scan of a large table. +However, LIMIT combined with ORDER BY often will use an index because only a small portion of the table is returned. +In fact, though MAX() and MIN() don't use indexes, it is possible to retrieve such values using an index with ORDER +BY and LIMIT: + + SELECT col + FROM tab + ORDER BY col [ DESC ] + LIMIT 1; + + E�er optimizer'in sequential scan i�leminde hata yapt���n� d���n�yorsan�z, SET enable_seqscan TO 'off' 'u kullan�n�z + ve index scan'in hala h�zl� olup olmad���n� g�rmek i�in testler yap�n�z. + + LIKE ya da ~ gibi operatorler kullaniyorsan�z, indeksler sadece a�a��daki ko�ullarda kullan�labilir: + + * Arama dizininin ba��, dizinin ba�� ile ba�lanmal�d�r. Yani, + o LIKE sorgular� % ile ba�lamamal�d�r. + o D�zenli ifade sorgular� ^ i�e ba�lamamal�d�r. + * Arama metni bir karakter s�n�f� ile ba�layamaz. �rnek: [a-e] + * ILIKE ve ~* gibi b�y�k/k���k harfe duyars�z aramalar indekslerden yararlanmazlar. Onun yerine, b�l�m 4.12'de +anlat�lan fonksiyonel indeksleri kullanabilirsiniz. + * initdb s�ras�nda �ntan�ml� C localei kullan�lmal�d�r. + + 4.9) query-optimizer in sorgular�m� nas�l de�erlendirdi�ini, i�leme soktu�unu nas�l g�rebilirim? + + EXPLAIN yard�m sayfas�na bak�n�z. + + 4.10) R-tree index nedir? + + An R-tree index is used for indexing spatial data. A hash index can't handle range searches. A B-tree index only +handles range searches in a single dimension. R-trees can handle multi-dimensional data. For example, if an R-tree +index can be built on an attribute of type point, the system can more efficiently answer queries such as "select all +points within a bounding rectangle." + +The canonical paper that describes the original R-tree design is: + +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. + +Bu paperi, Stonebraker'�n "Readings in Database Systems" kitab�nda bulabilirsiniz. + +Built-in R-trees can handle polygons and boxes. In theory, R-trees can be extended to handle higher number of +dimensions. In practice, extending R-trees requires a bit of work and we don't currently have any documentation on +how to do it. + + 4.11) Genetic Query Optimizer nedir? + + GEQO mod�l�, Genetic Algorith(GA) kullan�larak tablolar birle�tirildi�inde sorgu optimizasyonunu h�zland�r�r. + It allows the handling of large join queries through nonexhaustive search. + + 4.12) D�zenli ifade (Regular Expression) aramalar�n� ve b�y�k/k���k harfe duyars�z aramalar� nasil yapabilirim? + Bu b�y�k(k���k harfe duyarl� aramalar i�in indeksi nasil kullanabilirim? + + ~ operat�r� d�zenli ifade e�le�mesi ve ~* b�y�k/k���k harfe duyars�z d�zenli ifade e�le�mesi yapar. + B�y�k/k���k harfe duyarl� olan LIKE'in b�y�k/k���k harfe duyars�z olan bi�ini ILIKE't�r ve PostgreSQL + 7.1 s�r�m� ile birlikte gelmi�tir. + + B�y�k-k���k harfe duyars�z e�itlik kar��la�t�rmalar� a�a��daki gibi ifade edilir: + + SELECT * + FROM tab + WHERE lower(col) = 'abc' + + Bu standart bir indeks yaratmayacakt�r. Ancak e�er fonksiyonel bir indeks yarat�rsan�z; o kullan�lacakt�r: + + CREATE INDEX tabindex on tab (lower(col)); + + 4.13) Bir sorguda, bir alanin "NULL" oldugunu nasil ortaya ��karabilirim? + + Kolonu, IS NULL ve IS NOT NULL ile test edebilirsiniz. + + 4.14) �esitli karakter tipleri aras�ndaki farklar nelerdir? + +Veri Tipi �� Ad� Not +-------------------------------------------------- +VARCHAR(n) varchar boyut en b�y�k uzunlu�u verir; sadece verilen kadar veri tutulur. +CHAR(n) bpchar belirtilen uzunlupa kadar sonuna bo�luk eklenir. +TEXT text uzunlukta herhangi bir �st s�n�r yoktur. +BYTEA bytea variable-length byte array (null-byte safe) +"char" char bir karakter + +�� adlar� (internal name) sistem kataloglar�n� ve baz� hata meajlar�n� incelerken g�receksiniz. + + �lk d�rt veri tipi "varlena" tipidir (yani, diskteki ilk 4 bayt uzunluktur; devam� da veridir.) Dolay�s�yla, + B�ylece, kullan�lan ger�ek alan, belirtilen alandan biraz daha b�y�kt�r. Ancak, bu veri tipleri, s�k��t�r�lmaya tabi + tutulabilir; dolay�s�yla disk alan� beklenilenden k�c�k olabilir. VARCHAR(n) b�y�kl��� artabilen ama en b�y�k + uzunlu�u s�n�rl� oan verileri saklamak i�in en uygun y�ntemdir. TEXT, 1 GB b�y�kl��e kadar olan verileri tutmak i�in + kullan�l�r. + + CHAR(n), ayn� uzunluktaki dizilerin saklanmas� i�in kullan�m�r. CHAR(n) belirtilen uzunlu�a kadar bo�luk ile + doldurur; ancak VARCHAR(n) sadece verilen karakterleri saklar.BYTEA binary veri saklamak i�indir; ayr�ca "NULL" bayt + i�eren de�erleri de saklar. Burada anlat�lan �� veri tipi de benzer ba�ar�m karakteristiklere sahiptir. + + 4.15.1) Nasil serial/otomatik artan(auto-incrementing) bir alan yaratabilirim? + + PostgreSQL'de SERIAL veri tipi vard�r. Bu veri tipi bir sequence ve kolon �zerinde bir indeks yarat�r. + + �rnek, a�a��daki sorgu: + + CREATE TABLE person ( + id SER�AL, + name TEXT + ); + + buna �evrilir: + + CREATE SEQUENCE person_id_seq; + CREATE TABLE person ( + id �NT4 NOT NULL DEFAULT nextval('person_id_seq'), + name TEXT + ); + CREATE UNIQUE �NDEX person_id_key ON person ( id ); + + Sequenceler hakk�nda daha fazla bilgi i�in create_sequence yard�m sayfas�na bakabilirsiniz. Her sat�r�n OID alan�n� + tekil bir say� olarak alabilirsiniz. Ancak, veritaban�n�z�n dump'�n� al�p yeniden y�klerseniz, OID de�erlerini + koruyabilmek i�in pg_dump'�n -o parametresini ya da "COPY WITH OIDS" se�ene�ini kullanman�z gerekecektir. + + 4.15.2) SERIAL giri�inin degerini nasil alabilirim? + +One approach is to retrieve the next SERIAL value from the sequence object with the nextval() function before +inserting and then insert it explicitly. Using the example table in 4.15.1, an example in a pseudo-language would +look like this: + + new_id = execute("SELECT nextval('person_id_seq')"); + execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')"); + +You would then also have the new value stored in new_id for use in other queries (e.g., as a foreign key to the +person table). Note that the name of the automatically created SEQUENCE object will be named +<table>_<serialcolumn>_seq, where table and serialcolumn are the names of your table and your SERIAL column, +respectively. + + Alternatif olarak, atanm�� SERIAL de�erini, de�er girildikten sonra currval() fonksiyonu ile alabilirsiniz: + + execute("INSERT INTO person (name) VALUES ('Blaise Pascal')"); + new_id = execute("SELECT currval('person_id_seq')"); + + Son olarak, �n tan�ml� de�eri bulmak i�in INSERT ifadesinden d�nen OID de�erini kullanabilirsiniz; ancak bu + en az ta��nabilir ��z�m olacakt�r. Perl'de, Edmund Mergl'in DBD:Pg m�d�l� ile birlikte DBI kullanarak, oid de�eri + $sth->execute() �al��t�r�ld�ktan sonra $sth->(pg_oid_status) ile al�nabilir. + + 4.15.3) currval() ve nextval() diger kullanicilara sorun yaratmaz m�? + + Hay�r. curval(), t�m kullan�c�lar degil, backend taraf�ndan atanan ge�erli + degeri d�nd�r�r. + + 4.15.4) Neden sequence say�lar�n transaction i�leminin iptalinden sonra yeniden kullan�l�yor? Neden sequence/SERIAL + kolonumdaki say�larda atlamalar oluyor? + + Uyumlulu�u artt�rmak i�in, sequence de�erleri �al��an transactionlara gerekti�i �ekilde aktar�l�r ve transaction + bitene kadar o de�er kilitlenmez. Bu, iptal edilen transaction i�lemleri nedeniyle bo�luklara neden olur. + + 4.16) OID nedir? TID nedir? + + O�Ds are PostgreSQL's answer to unique row ids. Every row that is + created in PostgreSQL gets a unique O�D. All O�Ds generated during + initdb are less than 16384 (from backend/access/transam.h). All + user-created O�Ds are equal to or greater than this. By default, all + these O�Ds are unique not only within a table or database, but unique + within the entire PostgreSQL installation. + + PostgreSQL uses O�Ds in its internal system tables to link rows + between tables. These O�Ds can be used to identify specific user rows + and used in joins. �t is recommended you use column type O�D to store + O�D values. You can create an index on the O�D field for faster + access. + + O�Ds are assigned to all new rows from a central area that is used by + all databases. �f you want to change the O�D to something else, or if + you want to make a copy of the table, with the original O�Ds, there is + no reason you can't do it: + CREATE TABLE new_table(old_oid oid, mycol int); + SELECT old_oid, mycol �NTO new FROM old; + COPY new TO '/tmp/pgtable'; + DELETE FROM new; + COPY new W�TH O�DS FROM '/tmp/pgtable'; + + O�Ds are stored as 4-byte integers, and will overflow at 4 billion. No + one has reported this ever happening, and we plan to have the limit + removed before anyone does. + TIDs are used to identify specific physical rows with block and offset - values. TIDs change after rows are modified or reloaded. They are used - by index entries to point to physical rows. 4.17) What is the meaning - of some of the terms used in PostgreSQL? Some of the source code and - older documentation use terms that have more common usage. Here are - some: * table, relation, class * row, record, tuple * column, field, - attribute * retrieve, select * replace, update * append, insert * OID, - serial value * portal, cursor * range variable, table name, table - alias A list of general database terms can be found at: - http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary - /glossary.html 4.18) Why do I get the error /"ERROR: Memory exhausted - in AllocSetAlloc()"/? You probably have run out of virtual memory on - your system, or your kernel has a low limit for certain resources. Try - this before starting /postmaster/: ulimit -d 262144 limit datasize - 256m Depending on your shell, only one of these may succeed, but it - will set your process data segment limit much higher and perhaps allow - the query to complete. This command applies to the current process, - and all subprocesses created after the command is run. If you are - having a problem with the SQL client because the backend is returning - too much data, try it before starting the client. 4.19) How do I tell - what PostgreSQL version I am running? From /psql/, type |SELECT - version();| 4.20) Why does my large-object operations get /"invalid - large obj descriptor"/? You need to put |BEGIN WORK| and |COMMIT| - around any use of a large object handle, that is, surrounding - |lo_open| ... |lo_close.| Currently PostgreSQL enforces the rule by - closing large object handles at transaction commit. So the first - attempt to do anything with the handle will draw /invalid large obj - descriptor/. So code that used to work (at least most of the time) - will now generate that error message if you fail to use a transaction. - If you are using a client interface like ODBC you may need to set - |auto-commit off.| 4.21) How do I create a column that will default to - the current time? Use /CURRENT_TIMESTAMP/: |CREATE TABLE test (x int, - modtime timestamp DEFAULT CURRENT_TIMESTAMP ); | 4.22) Why are my - subqueries using |IN| so slow? Currently, we join subqueries to outer - queries by sequentially scanning the result of the subquery for each - row of the outer query. If the subquery returns only a few rows and - the outer query returns many rows, |IN| is fastest. To speed up other - queries, replace |IN| with |EXISTS|: SELECT * FROM tab WHERE col IN - (SELECT subcol FROM subtab); to: SELECT * FROM tab WHERE EXISTS - (SELECT subcol FROM subtab WHERE subcol = col); For this to be fast, - |subcol| should be an indexed column. This preformance problem will be - fixed in 7.4. 4.23) How do I perform an outer join? PostgreSQL - supports outer joins using the SQL standard syntax. Here are two - examples: SELECT * FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col); or - SELECT * FROM t1 LEFT OUTER JOIN t2 USING (col); These identical - queries join t1.col to t2.col, and also return any unjoined rows in t1 - (those with no match in t2). A RIGHT join would add unjoined rows of - t2. A FULL join would return the matched rows plus all unjoined rows - from t1 and t2. The word OUTER is optional and is assumed in LEFT, - RIGHT, and FULL joins. Ordinary joins are called INNER joins. In - previous releases, outer joins can be simulated using UNION and NOT - IN. For example, when joining /tab1/ and /tab2/, the following query - does an /outer/ join of the two tables: SELECT tab1.col1, tab2.col2 - FROM tab1, tab2 WHERE tab1.col1 = tab2.col1 UNION ALL SELECT - tab1.col1, NULL FROM tab1 WHERE tab1.col1 NOT IN (SELECT tab2.col1 - FROM tab2) ORDER BY col1 4.24) How do I perform queries using multiple - databases? There is no way to query a database other than the current - one. Because PostgreSQL loads database-specific system catalogs, it is - uncertain how a cross-database query should even behave. - /contrib/dblink/ allows cross-database queries using function calls. - Of course, a client can make simultaneous connections to different - databases and merge the results on the client side. 4.25) How do I - return multiple rows or columns from a function? In 7.3, you can - easily return multiple rows or columns from a function, - http://techdocs.postgresql.org/guides/SetReturningFunctions - techdocs.postgresql.org/guides/SetReturningFunctions>. 4.26) Why can't - I reliably create/drop temporary tables in PL/PgSQL functions? - PL/PgSQL caches function contents, and an unfortunate side effect is - that if a PL/PgSQL function accesses a temporary table, and that table - is later dropped and recreated, and the function called again, the - function will fail because the cached function contents still point to - the old temporary table. The solution is to use EXECUTE for temporary - table access in PL/PgSQL. This will cause the query to be reparsed - every time. 4.27) What replication options are available? There are - several master/slave replication options available. These allow only - the master to make database changes and the slave can only do database - reads. The bottom of - http://gborg.PostgreSQL.org/genpage?replication_research - gborg.PostgreSQL.org/genpage?replication_research> lists them. A - multi-master replication solution is being worked on at - http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php. - 4.28) What encryption options are available? * /contrib/pgcrypto/ - contains many encryption functions for use in SQL queries. * The only - way to encrypt transmission from the client to the server is by using - /hostssl/ in /pg_hba.conf/. * Database user passwords are - automatically encrypted when stored in version 7.3. In previous - versions, you must enable the option /PASSWORD_ENCRYPTION/ in - /postgresql.conf/. * The server can run using an encrypted file - system. - ---------------------------------------------------------------------- - -- Extending PostgreSQL 5.1) I wrote a user-defined function. When I - run it in /psql/, why does it dump core? The problem could be a number - of things. Try testing your user-defined function in a stand-alone - test program first. 5.2) How can I contribute some nifty new types and - functions to PostgreSQL? Send your extensions to the /pgsql-hackers/ - mailing list, and they will eventually end up in the /contrib// - subdirectory. 5.3) How do I write a C function to return a tuple? In - versions of PostgreSQL beginning with 7.3, table-returning functions - are fully supported in C, PL/PgSQL, and SQL. See the Programmer's - Guide for more information. An example of a table-returning function - defined in C can be found in /contrib/tablefunc/. 5.4) I have changed - a source file. Why does the recompile not see the change? The - /Makefiles/ do not have the proper dependencies for include files. You - have to do a /make clean/ and then another /make/. If you are using - GCC you can use the /--enable-depend/ option of /configure/ to have - the compiler compute the dependencies automatically. + values. T�Ds change after rows are modified or reloaded. They are used + by index entries to point to physical rows. + + 4.17) PostgreSQL'de kullan�lan baz� terimlerin anlamlar� nelerdir? + + Kaynak kodun bir k�sm� ve eski belgeler, daha genis kullan�m alan� olan terimleri + kullan�rlar. Bunlar�n baz�lar�: + + * table, relation, class + * row, record, tuple + * column, field, attribute + * retrieve, select + * replace, update + * append, insert + * OID, serial value + * portal, cursor + * range variable, table name, table alias + + Genel veritaban� terimleri, + + http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html + adresinde bulunabilir. + + 4.18) Neden "ERROR: Memory exhausted in AllocSetAlloc()"? hatas�n� al�yorum? + + Sisteminizde sanal belleginizi t�ketmis olabilirsiniz, ya da �ekirdeginiz + belli kaynaklar icin d���k bir s�n�ra sahip olabilir. postmasteri baslatmadan �nce + asagidakileri deneyebilirsiniz: + + ulimit -d 262144 + limit datasize 256m + + Kabu�unuza ba�l� olarak, bunlardan sadece biri olumlu sonu� verecektir, ama + bu i�lem veri segment s�n�r�n�z� artt�racak, ve belki de sorgunuzun tamamlanmas�n� + saglayacakt�r. Bu komut, varolan isleme (current process) ve komut �al�st�r�ld�ktan + sonraki t�m alt islemlere uygulanir. Eger SQL istemcinizle, backendin �ok fazla veri + d�nd�rmesi nedeniyle bir sorun yas�yorsan�z, bunu istemciyi baslatmadan �nce deneyiniz. + + 4.19) Hangi PostgreSQL s�r�m�n� �al�st�rd�g�m� nasil g�rebilirim? + + psql arabiriminde, select version(); yaz�n�z. + + 4.20) Neden large-object islemlerim, "invalid large obj descriptor"? hatas�n� veriyor? + + Large object islemlerinizin uclarina, yani lo_open ... lo_close komutlar�n�n �evresine, + BEGIN WORK ve COMMIT koyman�z gerekmektedir; + + Eger ODBC gibi bir istemci arabirimi kullan�yorsan�z, auto-commit'i kapatman�z gerekebilir. + + 4.21) Su andaki zaman� �ntan�ml� deger olarak kabul eden How do � create a column that will default to the current time? + + Alttakini kullanabilirsiniz: + + CURRENT_TIMESTAMP: + CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP ); + + 4.22) Neden IN kullanan subquerylerim �ok yavas? + + Currently, we join subqueries to outer queries by sequentially scanning the result of the subquery for + each row of the outer query. IN' i EXISTS ile de�i�tirerek bir ��z�me ula��labilir. + +SELECT * + FROM tab + WHERE col1 �N (SELECT col2 FROM TAB2) + + to: +SELECT * + FROM tab + WHERE EX�STS (SELECT col2 FROM TAB2 WHERE col1 = col2) + + Bu s�n�rlamay� ilerdeki s�r�mlerimizde d�zeltmeyi planlamaktay�z. + + 4.23) Outer join islemini nasil yapabilirim? + + PostgreSQL outer joins islemlerini SQL standartlar�n� kullanarak ger�eklestirmektedir. + Asagida 2 �rnek bulunmaktad�r: + + SELECT * + FROM t1 LEFT OUTER JO�N t2 ON (t1.col = t2.col); + + ya da + + SELECT * + FROM t1 LEFT OUTER JO�N t2 US�NG (col); + + Bu �zdes sorgular t1.col ' i t2.col'ye join ederler ve ayn� zamanda t1'deki unjoined sat�rlar� + (t2'de eslenmenis olanlarla) d�nd�r�rler. R�GHT JO�N t2'nin unjoined sat�rlar�n� ekleyecektir. + Bir FULL join, e�le�mi� bt�n sat�rlar� ve t1 ile t2'den t�m ba�lanmam�� (unjoined) sat�rlar� al�r. + OUTER s�zc��� se�imseldir ve LEFT, RIGHT ve FULL join i�lemlerinde oldu�u kabul edilir. S�radan + join i�lemleri INNER join olarak adland�r�l�r. + + �nceki s�r�mlerde, OUTER JOINler UNION ve NOT IN kullan�larak sim�le edilebiliyordu. �rne�in, tab1 + ve tab2'yi birle�tirirken, a�a��daki sorgu iki tablonun d��tan ba�lanmas�n� sa�lar: + + SELECT tab1.col1, tab2.col2 + FROM tab1, tab2 + WHERE tab1.col1 = tab2.col1 + UNION ALL + SELECT tab1.col1, NULL + FROM tab1 + WHERE tab1.col1 NOT �N (SELECT tab2.col1 FROM tab2) + ORDER BY col1 + + 4.24) Ayni andan birden fazla veritabaninda nasil islem yapabilirim? + + Mevcut veritaban�n�z d�s�ndaki baska bir veritaban�n�z� sorgulaman�z�n bir yolu bulunmamaktad�r. + bunun nedeni, PostgreSQL'in veritaban�na �zel sistem kataloglar� y�klemesidir. Bu nedenle, + cross-database bir sorgunun nasil davranacag�n� kestirmek zordur. + + contrib/dblink fonksiyon �a�r�lar�n� kullanarak cross-database sorgulara izin verid. Tabii ki, + bir istemci degisik veritabanlar�na ayn� anda erisim saglayabilir ve bilgiyi bu sekilde + birlestirebilir. + + 4.25) Bir fonksiyondan nas�l �oklu sat�r ya da kolon d�nd�rebilirim? + + 7.3 s�r�m�nde, bir fonksiyondan kolayl�kla �oklu sat�r ya da s�tun d�nd�rebilirsiniz. + + http://techdocs.postgresql.org/guides/SetReturningFunctions. + + 4.26) Neden Pl/PgSQL fonksiyonlar� i�inden g�venli bir �ekilde tablo yaratma/kald�rma i�lemlerini yapam�yoruz? + + PL/PgSQL fonksiyon i�erikleri cacheler. Bunun istenmeyen bir taraf�, e�er bir PL/PgSQL fonksiyonu ge�ici bir + tabloya eri�iyorsa ve bu tablo ileride kald�r�l�p yeniden olu�turulduktan sonra fonksiyon yeniden �a�r�l�rsa, + fonksiyon �al��mayacakt�r; ��nk� cachelenmi� fonksiyon hala eski ge�ici tabloyu g�steriyor olacakt�r. ��z�m, + ge�ici tablo eri�imleri i�in PL/PgSQL'de EXECUTE kullanmakt�r. Bu, sorgunun her seferinde yeniden i�lenmesini + sa�layacakt�r. + + 4.27) Hangi replikasyon se�enekleri bulunmaktad�r? + + �e�itli master/slave replikasyon se�enekleri bulunmaktad�r. Bunlar master veritaban�n�n veritaban� de�i�ikliklerini + yaparken, slave sunucunun sadece veritaban�nda okuma yapmas�na izin verir. + http://gborg.PostgreSQL.org/genpage?replication_research sayfas�n�n alt�nda bunlar�n listesini bulabilirsiniz. + http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php adresinde, �oklu-master replikasyon ��z�m� + �zerinde �al���l�yor. + + 4.28) Hangi �ifreleme se�enekleri bulunmaktad�r? + + * contrib/pgcrypto SQL sorgular�nda kullan�labilmesi i�in �ifreleme fonksiyonlar� i�ermektedir. + * �stemciden sunucuya ileti�imi �ifrelemenin tek yolu, pg_hba.conf i�inde hostssl kullanmakt�r. + * Veritaban� kullan�c� ad� ve �ifreleri 7.3 s�r�m� ile birlikte otomatik olarak �ifrelenirler. �nceki + s�r�mlerde, postgresql.conf i�indeki PASSWORD_ENCRYPTION se�ene�ini aktif hale getirmeniz gerekmektedir. + * Sunucunun kendisini �ifreli dosya sistemi �zerinde �al��t�rabilirsiniz. + + _________________________________________________________________ + + PostgreSQL �zelliklerini Geni�letmek + + 5.1) Kullanici-tanimli bir fonksiyon yazdim. psql'de �alistirdigim zaman neden core dump ediyor? + + Sorunun nedeni birden fazla sey olabilir. Kullanici-tanimli fonksiyonunuzu stand-alone bir programda + calistirmayi deneyiniz. + + 5.2) PostgreSQL'e nasil yeni tipler/fonksiyonlar ekleyeiblirim? + + �al�smalar�n�z� pgsql-hackers e-posta listesine g�nderiniz. Kodunuz incelendikten sonra + /contrib dizinine konacakt�r. + + 5.3) Bir tuple dond�rmek icin bir C fonksiyonunu nasil yazar�m? + + PostgreSQL 7.3 s�r�m� ile birlikte, C, PL/PgSQL ve SQL kullan�larak tablo-d�nd�ren + fonksiyonlar tamamen desteklenmektedir. Ayr�nt�l� bilgi i�in "Programmer's Guide" a + bakabilrisiniz. Bir �rne�i contrib/tablefunc i�inde bulabilirsiniz. + + 5.4) Bir kaynak dosyas�nda de�i�iklik yapt�m. Yeniden derlememe ra�men de�i�iklik +ge�erli olmuyor. Neden? + + Makefile'lar include dosyalar� i�in tam bir ba��ml�l�k i�ermezler. + �ncelikle make clean, ard�ndan da baska bir make i�lemi yapman�z gerekir. + GCC kullan�yorsaniz, configure beti�inin --enable-depend se�ene�ini, derleyicinin + ba��ml�l�klar� otomatik olarak hesaplamas� i�in kullanabilirsiniz. + diff --git a/doc/src/FAQ/FAQ_turkish.html b/doc/src/FAQ/FAQ_turkish.html index 38944666bb8..9e700dac678 100644 --- a/doc/src/FAQ/FAQ_turkish.html +++ b/doc/src/FAQ/FAQ_turkish.html @@ -1,1255 +1,1289 @@ -
- PostgreSQL i�in S�k�a Sorulan Sorular (SSS)
-
-Son g�ncelleme : 19 May�s 2003 Pazartesi - 03:05:21
-
-Current maintainer: Bruce Momjian ([email protected]
-<mailto:[email protected]>)
-
-�eviren : Devrim G�ND�Z ([email protected] <mailto:[email protected]>)
-Nicolai Tufar ([email protected] <mailto:[email protected]>)
-
-Bu belgenin en g�ncel hali,
-http://www.PostgreSQL.org/docs/faqs/FAQ_turkish.html ve
-http://www.gunduz.org/seminer/pg/FAQ_turkish adreslerinde g�r�lebilir.
-
-Platforma �zel sorular�n�z,http://www.PostgreSQL.org/docs/index.html
-adresinde yan�tlan�r..
-
-------------------------------------------------------------------------
-
-
- Genel Sorular
-
-1.1 <#1.1>) PostgreSQL nedir? Nas�l okunur?
-1.2 <#1.2>) PostgreSQL' in haklar� nedir?
-1.3 <#1.3>) PostgreSQL, hangi Unix platformlar�nda �al�s�r?
-1.4 <#1.4>) Hangi Unix olmayan uyarlamalar� bulunmaktad�r?
-1.5 <#1.5>) PostgreSQL'i nereden indirebilirim?
-1.6 <#1.6>) Deste�i nereden alabilirim?
-1.7 <#1.7>) En son s�r�m� nedir?
-1.8 <#1.8>) Hangi belgelere ulasabilirim?
-1.9 <#1.9>) Bilinen hatalar ya da eksik �zelliklere nereden ulasabilirim?
-1.10 <#1.10>) Nas�l SQL ��renebilirim?
-1.11 <#1.11>) PostgreSQL 2000 y�l�na uyumlu mudur?
-1.12 <#1.12>) Geli�tirme tak�m�na nas�l kat�labilirim??
-1.13 <#1.13>) Bir hata raporunu nas�l g�nderebilirim?
-1.14 <#1.14>) PostgreSQL, diger VTYS(DBMS lerle nas�l kar��la�t�r�labilir?
-1.15 <#1.15>) PostgreSQL'e maddi a��dan nas�l destek olabilirim?
-
-
- Kullan�c�/istemci Sorular�
-
-2.1 <#2.1>) Are there ODBC drivers for PostgreSQL?
-2.2 <#2.2>) What tools are available for using PostgreSQL with Web pages?
-2.3 <#2.3>) Does PostgreSQL have a graphical user interface?
-2.4 <#2.4>) What languages are available to communicate with PostgreSQL?
-
-
- Administrative Questions
-
-3.1 <#3.1>) How do I install PostgreSQL somewhere other than
-//usr/local/pgsql/?
-3.2 <#3.2>) When I start /postmaster/, I get a /Bad System Call/ or core
-dumped message. Why?
-3.3 <#3.3>) When I try to start /postmaster/, I get /IpcMemoryCreate/
-errors. Why?
-3.4 <#3.4>) When I try to start /postmaster/, I get /IpcSemaphoreCreate/
-errors. Why?
-3.5 <#3.5>) How do I control connections from other hosts?
-3.6 <#3.6>) How do I tune the database engine for better performance?
-3.7 <#3.7>) What debugging features are available?
-3.8 <#3.8>) Why do I get /"Sorry, too many clients"/ when trying to connect?
-3.9 <#3.9>) What is in the /pgsql_tmp/ directory?
-3.10 <#3.10>) Why do I need to do a dump and restore to upgrade
-PostgreSQL releases?
-
-
- Operational Questions
-
-4.1 <#4.1>) What is the difference between binary cursors and normal
-cursors?
-4.2 <#4.2>) How do I SELECT only the first few rows of a query?
-4.3 <#4.3>) How do I get a list of tables or other things I can see in
-/psql/?
-4.4 <#4.4>) How do you remove a column from a table?
-4.5 <#4.5>) What is the maximum size for a row, a table, and a database?
-4.6 <#4.6>) How much database disk space is required to store data from
-a typical text file?
-4.7 <#4.7>) How do I find out what tables, indexes, databases, and users
-are defined?
-4.8 <#4.8>) My queries are slow or don't make use of the indexes. Why?
-4.9 <#4.9>) How do I see how the query optimizer is evaluating my query?
-4.10 <#4.10>) What is an R-tree index?
-4.11 <#4.11>) What is the Genetic Query Optimizer?
-4.12 <#4.12>) How do I perform regular expression searches and
-case-insensitive regular expression searches? How do I use an index for
-case-insensitive searches?
-4.13 <#4.13>) In a query, how do I detect if a field is NULL?
-4.14 <#4.14>) What is the difference between the various character types?
-4.15.1 <#4.15.1>) How do I create a serial/auto-incrementing field?
-4.15.2 <#4.15.2>) How do I get the value of a SERIAL insert?
-4.15.3 <#4.15.3>) Don't /currval()/ and /nextval()/ lead to a race
-condition with other users?
-4.15.4 <#4.15.4>) Why aren't my sequence numbers reused on transaction
-abort? Why are there gaps in the numbering of my sequence/SERIAL column?
-4.16 <#4.16>) What is an OID? What is a TID?
-4.17 <#4.17>) What is the meaning of some of the terms used in PostgreSQL?
-4.18 <#4.18>) Why do I get the error /"ERROR: Memory exhausted in
-AllocSetAlloc()"/?
-4.19 <#4.19>) How do I tell what PostgreSQL version I am running?
-4.20 <#4.20>) Why does my large-object operations get /"invalid large
-obj descriptor"/?
-4.21 <#4.21>) How do I create a column that will default to the current
-time?
-4.22 <#4.22>) Why are my subqueries using |IN| so slow?
-4.23 <#4.23>) How do I perform an outer join?
-4.24 <#4.24>) How do I perform queries using multiple databases?
-4.25 <#4.25>) How do I return multiple rows or columns from a function?
-4.26 <#4.26>) Why can't I reliably create/drop temporary tables in
-PL/PgSQL functions?
-4.27 <#4.27>) What replication options are available?
-4.28 <#4.28>) What encryption options are available?
-
-
- Extending PostgreSQL
-
-5.1 <#5.1>) I wrote a user-defined function. When I run it in /psql/,
-why does it dump core?
-5.2 <#5.2>) How can I contribute some nifty new types and functions to
-PostgreSQL?
-5.3 <#5.3>) How do I write a C function to return a tuple?
-5.4 <#5.4>) I have changed a source file. Why does the recompile not see
-the change?
-------------------------------------------------------------------------
-
-
- General Questions
-
-
- 1.1) What is PostgreSQL? How is it pronounced?
-
-PostgreSQL is pronounced /Post-Gres-Q-L/.
-
-PostgreSQL is an enhancement of the POSTGRES database management system,
-a next-generation DBMS research prototype. While PostgreSQL retains the
-powerful data model and rich data types of POSTGRES, it replaces the
-PostQuel query language with an extended subset of SQL. PostgreSQL is
-free and the complete source is available.
-
-PostgreSQL development is performed by a team of developers who all
-subscribe to the PostgreSQL development mailing list. The current
-coordinator is Marc G. Fournier ([email protected]
-<mailto:[email protected]>). (See section 1.6 <#1.6> on how to
-join). This team is now responsible for all development of PostgreSQL.
-
-The authors of PostgreSQL 1.01 were Andrew Yu and Jolly Chen. Many
-others have contributed to the porting, testing, debugging, and
-enhancement of the code. The original Postgres code, from which
-PostgreSQL is derived, was the effort of many graduate students,
-undergraduate students, and staff programmers working under the
-direction of Professor Michael Stonebraker at the University of
-California, Berkeley.
-
-The original name of the software at Berkeley was Postgres. When SQL
-functionality was added in 1995, its name was changed to Postgres95. The
-name was changed at the end of 1996 to PostgreSQL.
-
-
- 1.2) What is the copyright on PostgreSQL?
-
-PostgreSQL is subject to the following COPYRIGHT:
-
-PostgreSQL Data Base Management System
-
-Portions copyright (c) 1996-2002, PostgreSQL Global Development Group
-Portions Copyright (c) 1994-6 Regents of the University of California
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose, without fee, and without a written
-agreement is hereby granted, provided that the above copyright notice
-and this paragraph and the following two paragraphs appear in all copies.
-
-IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
-FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
-INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS
-DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF
-THE POSSIBILITY OF SUCH DAMAGE.
-
-THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
-INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
-ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS
-TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
-
-The above is the BSD license, the classic open-source license. It has no
-restrictions on how the source code may be used. We like it and have no
-intention of changing it.
-
-
- 1.3) What Unix platforms does PostgreSQL run on?
-
-In general, a modern Unix-compatible platform should be able to run
-PostgreSQL. The platforms that had received explicit testing at the time
-of release are listed in the installation instructions.
-
-
- 1.4) What non-Unix ports are available?
-
-*Client*
-
-It is possible to compile the /libpq/ C library, psql, and other
-interfaces and client applications to run on MS Windows platforms. In
-this case, the client is running on MS Windows, and communicates via
-TCP/IP to a server running on one of our supported Unix platforms. A
-file /win32.mak/ is included in the distribution for making a Win32
-/libpq/ library and /psql/. PostgreSQL also communicates with ODBC clients.
-
-*Server*
-
-The database server can run on Windows NT and Win2k using Cygwin, the
-Cygnus Unix/NT porting library. See /pgsql/doc/FAQ_MSWIN/ in the
-distribution or the MS Windows FAQ at
-http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN
-<http://www.PostgreSQL.org/docs/faqs/text/FAQ_MSWIN>.
-
-A native port to MS Win NT/2000/XP is currently being worked on. For
-more details on the current status of PostgreSQL on Windows see
-http://techdocs.postgresql.org/guides/Windows
-<http://techdocs.postgresql.org/guides/Windows>.
-
-There is also a Novell Netware 6 port at http://forge.novell.com.
-
-
- 1.5) Where can I get PostgreSQL?
-
-The primary anonymous ftp site for PostgreSQL is
-ftp://ftp.PostgreSQL.org/pub. For mirror sites, see our main web site.
-
-
- 1.6) Where can I get support?
-
-The main mailing list is: [email protected]
-<mailto:[email protected]>. It is available for discussion of
-matters pertaining to PostgreSQL. To subscribe, send mail with the
-following lines in the body (not the subject line):
-
- subscribe
- end
-
-<mailto:[email protected]>.
-
-There is also a digest list available. To subscribe to this list, send
-email to: [email protected]
-<mailto:[email protected]> with a body of:
-
- subscribe
- end
-
-Digests are sent out to members of this list whenever the main list has
-received around 30k of messages.
-
-The bugs mailing list is available. To subscribe to this list, send
-email to [email protected]
-<mailto:[email protected]> with a body of:
-
- subscribe
- end
-
-There is also a developers discussion mailing list available. To
-subscribe to this list, send email to
-<mailto:[email protected]> with a body of:
-
- subscribe
- end
-
-Additional mailing lists and information about PostgreSQL can be found
-via the PostgreSQL WWW home page at:
-
- http://www.PostgreSQL.org
-
-There is also an IRC channel on EFNet and OpenProjects, channel
-/#PostgreSQL/. I use the Unix command |irc -c '#PostgreSQL' "$USER"
-irc.phoenix.net.|
-
-A list of commercial support companies is available at
-http://www.ca.PostgreSQL.org/users-lounge/commercial-support.html.
-
-
- 1.7) What is the latest release?
-
-The latest release of PostgreSQL is version 7.3.3.
-
-We plan to have major releases every four months.
-
-
- 1.8) What documentation is available?
-
-Several manuals, manual pages, and some small test examples are included
-in the distribution. See the //doc/ directory. You can also browse the
-manuals online at http://www.PostgreSQL.org/docs.
-
-There are two PostgreSQL books available online at
-http://www.PostgreSQL.org/docs/awbook.html and
-http://www.commandprompt.com/ppbook/. There is a list of PostgreSQL
-books available for purchase at http://www.ca.PostgreSQL.org/books/.
-There is also a collection of PostgreSQL technical articles at
-http://techdocs.PostgreSQL.org/.
-
-/psql/ has some nice \d commands to show information about types,
-operators, functions, aggregates, etc.
-
-Our web site contains even more documentation.
-
-
- 1.9) How do I find out about known bugs or missing features?
-
-PostgreSQL supports an extended subset of SQL-92. See our TODO
-<http://developer.PostgreSQL.org/todo.php> list for known bugs, missing
-features, and future plans.
-
-
- 1.10) How can I learn SQL?
-
-The PostgreSQL book at http://www.PostgreSQL.org/docs/awbook.html
-teaches SQL. There is another PostgreSQL book at
-http://www.commandprompt.com/ppbook.
-<http://www.commandprompt.com/ppbook/> There is a nice tutorial at
-http://www.intermedia.net/support/sql/sqltut.shtm,
-<http://www.intermedia.net/support/sql/sqltut.shtm> at
-http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM,
-<http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM>
-and at http://sqlcourse.com. <http://sqlcourse.com/>
-
-Another one is "Teach Yourself SQL in 21 Days, Second Edition" at
-http://members.tripod.com/er4ebus/sql/index.htm
-
-Many of our users like /The Practical SQL Handbook/, Bowman, Judith S.,
-et al., Addison-Wesley. Others like /The Complete Reference SQL/, Groff
-et al., McGraw-Hill.
-
-
- 1.11) Is PostgreSQL Y2K compliant?
-
-Yes, we easily handle dates past the year 2000 AD, and before 2000 BC.
-
-
- 1.12) How do I join the development team?
-
-First, download the latest source and read the PostgreSQL Developers
-documentation on our web site, or in the distribution. Second, subscribe
-to the /pgsql-hackers/ and /pgsql-patches/ mailing lists. Third, submit
-high quality patches to pgsql-patches.
-
-There are about a dozen people who have commit privileges to the
-PostgreSQL CVS archive. They each have submitted so many high-quality
-patches that it was impossible for the existing committers to keep up,
-and we had confidence that patches they committed were of high quality.
-
-
- 1.13) How do I submit a bug report?
-
-Please visit the PostgreSQL BugTool page at
-http://www.PostgreSQL.org/bugs/bugs.php, which gives guidelines and
-directions on how to submit a bug report.
-
-Also check out our ftp site ftp://ftp.PostgreSQL.org/pub to see if there
-is a more recent PostgreSQL version or patches.
-
-
- 1.14) How does PostgreSQL compare to other DBMSs?
-
-There are several ways of measuring software: features, performance,
-reliability, support, and price.
-
-*Features*
- PostgreSQL has most features present in large commercial DBMSs, like
- transactions, subselects, triggers, views, foreign key referential
- integrity, and sophisticated locking. We have some features they do
- not have, like user-defined types, inheritance, rules, and
- multi-version concurrency control to reduce lock contention.
-
-*Performance*
- PostgreSQL has performance similar to other commercial and open
- source databases. it is faster for some things, slower for others.
- In comparison to MySQL or leaner database systems, we are slower on
- inserts/updates because of transaction overhead. Of course, MySQL
- does not have any of the features mentioned in the /Features/
- section above. We are built for reliability and features, though we
- continue to improve performance in every release. There is an
- interesting Web page comparing PostgreSQL to MySQL at
- http://openacs.org/philosophy/why-not-mysql.html
- <http://openacs.org/philosophy/why-not-mysql.html>
-
-*Reliability*
- We realize that a DBMS must be reliable, or it is worthless. We
- strive to release well-tested, stable code that has a minimum of
- bugs. Each release has at least one month of beta testing, and our
- release history shows that we can provide stable, solid releases
- that are ready for production use. We believe we compare favorably
- to other database software in this area.
-
-*Support*
- Our mailing lists provide contact with a large group of developers
- and users to help resolve any problems encountered. While we cannot
- guarantee a fix, commercial DBMSs do not always supply a fix either.
- Direct access to developers, the user community, manuals, and the
- source code often make PostgreSQL support superior to other DBMSs.
- There is commercial per-incident support available for those who
- need it. (See FAQ section 1.6 <#1.6>.)
-
-*Price*
- We are free for all use, both commercial and non-commercial. You can
- add our code to your product with no limitations, except those
- outlined in our BSD-style license stated above.
-
-
- 1.15) How can I financially assist PostgreSQL?
-
-PostgreSQL has had a first-class infrastructure since we started in
-1996. This is all thanks to Marc Fournier, who has created and managed
-this infrastructure over the years.
-
-Quality infrastructure is very important to an open-source project. It
-prevents disruptions that can greatly delay forward movement of the project.
-
-Of course, this infrastructure is not cheap. There are a variety of
-monthly and one-time expenses that are required to keep it going. If you
-or your company has money it can donate to help fund this effort, please
-go to http://store.pgsql.com/shopping/ and make a donation.
-
-Although the web page mentions PostgreSQL, Inc, the "contributions" item
-is solely to support the PostgreSQL project and does not fund any
-specific company. If you prefer, you can also send a check to the
-contact address.
-
-------------------------------------------------------------------------
-
-
- User Client Questions
-
-
- 2.1) Are there ODBC drivers for PostgreSQL?
-
-There are two ODBC drivers available, PsqlODBC and OpenLink ODBC.
-
-You can download PsqlODBC from
-http://gborg.postgresql.org/project/psqlodbc/projdisplay.php
-<http://gborg.postgresql.org/project/psqlodbc/projdisplay.php>.
-
-OpenLink ODBC can be gotten from http://www.openlinksw.com
-<http://www.openlinksw.com/>. It works with their standard ODBC client
-software so you'll have PostgreSQL ODBC available on every client
-platform they support (Win, Mac, Unix, VMS).
-
-They will probably be selling this product to people who need
-commercial-quality support, but a freeware version will always be
-available. Please send questions to [email protected]
-<mailto:[email protected]>.
-
-
- 2.2) What tools are available for using PostgreSQL with Web pages?
-
-A nice introduction to Database-backed Web pages can be seen at:
-http://www.webreview.com
-
-For Web integration, PHP is an excellent interface. It is at
-http://www.php.net.
-
-For complex cases, many use the Perl interface and CGI.pm or mod_perl.
-
-
- 2.3) Does PostgreSQL have a graphical user interface?
-
-Yes, there are several graphical interfaces to PostgreSQL available.
-These include PgAccess http://www.pgaccess.org
-<http://www.pgaccess.org>), PgAdmin II (http://www.pgadmin.org,
-Win32-only), RHDB Admin (http://sources.redhat.com/rhdb/ ) and Rekall (
-http://www.thekompany.com/products/rekall/
-<http://www.thekompany.com/products/rekall/>, proprietary). There is
-also PHPPgAdmin ( http://phppgadmin.sourceforge.net/
-<http://phppgadmin.sourceforge.net/>), a web-based interface to PostgreSQL.
-
-See http://techdocs.postgresql.org/guides/GUITools for a more detailed list.
-
-
- 2.4) What languages are able to communicate with PostgreSQL?
-
-Most popular programming languages contain an interface to PostgreSQL.
-Check your programming language's list of extension modules.
-
-The following interfaces are included in the PostgreSQL distribution:
-
- * C (libpq)
- * Embedded C (ecpg)
- * Java (jdbc)
- * Python (PyGreSQL)
- * TCL (libpgtcl)
-
-Additional interfaces are available at http://gborg.postgresql.org in
-the /Drivers/Interfaces/ section.
-
-------------------------------------------------------------------------
-
-
- Administrative Questions
-
-
- 3.1) How do I install PostgreSQL somewhere other than
- //usr/local/pgsql/?
-
-Specify the /--prefix/ option when running /configure/.
-
-
- 3.2) When I start /postmaster/, I get a /Bad System Call/ or
- core dumped message. Why?
-
-It could be a variety of problems, but first check to see that you have
-System V extensions installed in your kernel. PostgreSQL requires kernel
-support for shared memory and semaphores.
-
-
- 3.3) When I try to start /postmaster/, I get /IpcMemoryCreate/
- errors. Why?
-
-You either do not have shared memory configured properly in your kernel
-or you need to enlarge the shared memory available in the kernel. The
-exact amount you need depends on your architecture and how many buffers
-and backend processes you configure for /postmaster/. For most systems,
-with default numbers of buffers and processes, you need a minimum of ~1
-MB. See the PostgreSQL Administrator's Guide
-<http://www.PostgreSQL.org/docs/view.php?version=current&idoc=1&file=kernel-resources.html>
-for more detailed information about shared memory and semaphores.
-
-
- 3.4) When I try to start /postmaster/, I get
- /IpcSemaphoreCreate/ errors. Why?
-
-If the error message is /IpcSemaphoreCreate: semget failed (No space
-left on device)/ then your kernel is not configured with enough
-semaphores. Postgres needs one semaphore per potential backend process.
-A temporary solution is to start /postmaster/ with a smaller limit on
-the number of backend processes. Use /-N/ with a parameter less than the
-default of 32. A more permanent solution is to increase your kernel's
-SEMMNS and SEMMNI parameters.
-
-Inoperative semaphores can also cause crashes during heavy database access.
-
-If the error message is something else, you might not have semaphore
-support configured in your kernel at all. See the PostgreSQL
-Administrator's Guide for more detailed information about shared memory
-and semaphores.
-
-
- 3.5) How do I control connections from other hosts?
-
-By default, PostgreSQL only allows connections from the local machine
-using Unix domain sockets. Other machines will not be able to connect
-unless you add the /-i/ flag to /postmaster/, *and* enable host-based
-authentication by modifying the file /$PGDATA/pg_hba.conf/ accordingly.
-This will allow TCP/IP connections.
-
-
- 3.6) How do I tune the database engine for better performance?
-
-Certainly, indexes can speed up queries. The EXPLAIN command allows you
-to see how PostgreSQL is interpreting your query, and which indexes are
-being used.
-
-If you are doing many INSERTs, consider doing them in a large batch
-using the COPY command. This is much faster than individual INSERTS.
-Second, statements not in a BEGIN WORK/COMMIT transaction block are
-considered to be in their own transaction. Consider performing several
-statements in a single transaction block. This reduces the transaction
-overhead. Also, consider dropping and recreating indexes when making
-large data changes.
-
-There are several tuning options. You can disable /fsync()/ by starting
-/postmaster/ with a /-o -F/ option. This will prevent /fsync()/s from
-flushing to disk after every transaction.
-
-You can also use the /postmaster/ /-B/ option to increase the number of
-shared memory buffers used by the backend processes. If you make this
-parameter too high, the /postmaster/ may not start because you have
-exceeded your kernel's limit on shared memory space. Each buffer is 8K
-and the default is 64 buffers.
-
-You can also use the backend /-S/ option to increase the maximum amount
-of memory used by the backend process for temporary sorts. The /-S/
-value is measured in kilobytes, and the default is 512 (i.e. 512K).
-
-You can also use the CLUSTER command to group data in tables to match an
-index. See the CLUSTER manual page for more details.
-
-
- 3.7) What debugging features are available?
-
-PostgreSQL has several features that report status information that can
-be valuable for debugging purposes.
-
-First, by running /configure/ with the --enable-cassert option, many
-/assert()/s monitor the progress of the backend and halt the program
-when something unexpected occurs.
-
-Both /postmaster/ and /postgres/ have several debug options available.
-First, whenever you start /postmaster/, make sure you send the standard
-output and error to a log file, like:
-
- cd /usr/local/pgsql
- ./bin/postmaster >server.log 2>&1 &
-
-This will put a server.log file in the top-level PostgreSQL directory.
-This file contains useful information about problems or errors
-encountered by the server. /Postmaster/ has a /-d/ option that allows
-even more detailed information to be reported. The /-d/ option takes a
-number that specifies the debug level. Be warned that high debug level
-values generate large log files.
-
-If /postmaster/ is not running, you can actually run the /postgres/
-backend from the command line, and type your SQL statement directly.
-This is recommended *only* for debugging purposes. Note that a newline
-terminates the query, not a semicolon. If you have compiled with
-debugging symbols, you can use a debugger to see what is happening.
-Because the backend was not started from /postmaster/, it is not running
-in an identical environment and locking/backend interaction problems may
-not be duplicated.
-
-If /postmaster/ is running, start /psql/ in one window, then find the
-PID of the /postgres/ process used by /psql/. Use a debugger to attach
-to the /postgres/ PID. You can set breakpoints in the debugger and issue
-queries from /psql/. If you are debugging /postgres/ startup, you can
-set PGOPTIONS="-W n", then start /psql/. This will cause startup to
-delay for /n/ seconds so you can attach to the process with the
-debugger, set any breakpoints, and continue through the startup sequence.
-
-The /postgres/ program has /-s, -A/, and /-t/ options that can be very
-useful for debugging and performance measurements.
-
-You can also compile with profiling to see what functions are taking
-execution time. The backend profile files will be deposited in the
-/pgsql/data/base/dbname/ directory. The client profile file will be put
-in the client's current directory. Linux requires a compile with
-/-DLINUX_PROFILE/ for proper profiling.
-
-
- 3.8) Why do I get /"Sorry, too many clients"/ when trying to
- connect?
-
-You need to increase /postmaster/'s limit on how many concurrent backend
-processes it can start.
-
-The default limit is 32 processes. You can increase it by restarting
-/postmaster/ with a suitable /-N/ value or modifying /postgresql.conf/.
-
-Note that if you make /-N/ larger than 32, you must also increase /-B/
-beyond its default of 64; /-B/ must be at least twice /-N/, and probably
-should be more than that for best performance. For large numbers of
-backend processes, you are also likely to find that you need to increase
-various Unix kernel configuration parameters. Things to check include
-the maximum size of shared memory blocks, SHMMAX; the maximum number of
-semaphores, SEMMNS and SEMMNI; the maximum number of processes, NPROC;
-the maximum number of processes per user, MAXUPRC; and the maximum
-number of open files, NFILE and NINODE. The reason that PostgreSQL has a
-limit on the number of allowed backend processes is so your system won't
-run out of resources.
-
-
- 3.9) What is in the /pgsql_tmp/ directory?
-
-This directory contains temporary files generated by the query executor.
-For example, if a sort needs to be done to satisfy an ORDER BY and the
-sort requires more space than the backend's /-S/ parameter allows, then
-temporary files are created here to hold the extra data.
-
-The temporary files are usually deleted automatically, but might remain
-if a backend crashes during a sort. A stop and restart of the
-/postmaster/ will remove files from those directories.
-
-
- 3.10) Why do I need to do a dump and restore to upgrade between
- major PostgreSQL releases?
-
-The PostgreSQL team makes only small changes between minor releases, so
-upgrading from 7.2 to 7.2.1 does not require a dump and restore.
-However, major releases (e.g. from 7.2 to 7.3) often change the internal
-format of system tables and data files. These changes are often complex,
-so we don't maintain backward compatability for data files. A dump
-outputs data in a generic format that can then be loaded in using the
-new internal format.
-
-In releases where the on-disk format does not change, the /pg_upgrade/
-script can be used to upgrade without a dump/restore. The release notes
-mention whether /pg_upgrade/ is available for the release.
-
-------------------------------------------------------------------------
-
-
- Operational Questions
-
-
- 4.1) What is the difference between binary cursors and normal
- cursors?
-
-See the DECLARE manual page for a description.
-
-
- 4.2) How do I SELECT only the first few rows of a query?
-
-See the FETCH manual page, or use SELECT ... LIMIT....
-
-The entire query may have to be evaluated, even if you only want the
-first few rows. Consider using a query that has an ORDER BY. If there is
-an index that matches the ORDER BY, PostgreSQL may be able to evaluate
-only the first few records requested, or the entire query may have to be
-evaluated until the desired rows have been generated.
-
-
- 4.3) How do I get a list of tables or other things I can see in
- /psql/?
-
-You can read the source code for /psql/ in file
-/pgsql/src/bin/psql/describe.c/. It contains SQL commands that generate
-the output for psql's backslash commands. You can also start /psql/ with
-the /-E/ option so it will print out the queries it uses to execute the
-commands you give.
-
-
- 4.4) How do you remove a column from a table?
-
-This functionality was added in release 7.3 with ALTER TABLE DROP
-COLUMN. In earlier versions, you can do this:
-
- BEGIN;
- LOCK TABLE old_table;
- SELECT ... -- select all columns but the one you want to remove
- INTO TABLE new_table
- FROM old_table;
- DROP TABLE old_table;
- ALTER TABLE new_table RENAME TO old_table;
- COMMIT;
-
-
- 4.5) What is the maximum size for a row, a table, and a database?
-
-These are the limits:
-
- Maximum size for a database? unlimited (4 TB databases exist)
- Maximum size for a table? 16 TB
- Maximum size for a row? 1.6TB
- Maximum size for a field? 1 GB
- Maximum number of rows in a table? unlimited
- Maximum number of columns in a table? 250-1600 depending on column types
- Maximum number of indexes on a table? unlimited
-
-Of course, these are not actually unlimited, but limited to available
-disk space and memory/swap space. Performance may suffer when these
-values get unusually large.
-
-The maximum table size of 16 TB does not require large file support from
-the operating system. Large tables are stored as multiple 1 GB files so
-file system size limits are not important.
-
-The maximum table size and maximum number of columns can be increased if
-the default block size is increased to 32k.
-
-
- 4.6) How much database disk space is required to store data from
- a typical text file?
-
-A PostgreSQL database may require up to five times the disk space to
-store data from a text file.
-
-As an example, consider a file of 100,000 lines with an integer and text
-description on each line. Suppose the text string avergages twenty bytes
-in length. The flat file would be 2.8 MB. The size of the PostgreSQL
-database file containing this data can be estimated as 6.4 MB:
-
- 36 bytes: each row header (approximate)
- 24 bytes: one int field and one text field
- + 4 bytes: pointer on page to tuple
- ----------------------------------------
- 64 bytes per row
-
- The data page size in PostgreSQL is 8192 bytes (8 KB), so:
-
- 8192 bytes per page
- ------------------- = 128 rows per database page (rounded down)
- 64 bytes per row
-
- 100000 data rows
- -------------------- = 782 database pages (rounded up)
- 128 rows per page
-
-782 database pages * 8192 bytes per page = 6,406,144 bytes (6.4 MB)
-
-Indexes do not require as much overhead, but do contain the data that is
-being indexed, so they can be large also.
-
-NULLs are stored in bitmaps, so they use very little space.
-
-
- 4.7) How do I find out what tables, indexes, databases, and
- users are defined?
-
-/psql/ has a variety of backslash commands to show such information. Use
-\? to see them. There are also system tables beginning with /pg_/ that
-describe these too. Also, /psql -l/ will list all databases.
-
-Also try the file /pgsql/src/tutorial/syscat.source/. It illustrates
-many of the SELECTs needed to get information from the database system
-tables.
-
-
- 4.8) My queries are slow or don't make use of the indexes. Why?
-
-Indexes are not automatically used by every query. Indexes are only used
-if the table is larger than a minimum size, and the query selects only a
-small percentage of the rows in the table. This is because the random
-disk access caused by an index scan can be slower than a straight read
-through the table, or sequential scan.
-
-To determine if an index should be used, PostgreSQL must have statistics
-about the table. These statistics are collected using VACUUM ANALYZE, or
-simply ANALYZE. Using statistics, the optimizer knows how many rows are
-in the table, and can better determine if indexes should be used.
-Statistics are also valuable in determining optimal join order and join
-methods. Statistics collection should be performed periodically as the
-contents of the table change.
-
-Indexes are normally not used for ORDER BY or to perform joins. A
-sequential scan followed by an explicit sort is usually faster than an
-index scan of a large table.
-
-However, LIMIT combined with ORDER BY often will use an index because
-only a small portion of the table is returned. In fact, though MAX() and
-MIN() don't use indexes, it is possible to retrieve such values using an
-index with ORDER BY and LIMIT:
-
- SELECT col
- FROM tab
- ORDER BY col [ DESC ]
- LIMIT 1;
-
-If you believe the optimizer is incorrect in choosing a sequential scan,
-use |SET enable_seqscan TO 'off'| and run tests to see if an index scan
-is indeed faster.
-
-When using wild-card operators such as LIKE or /~/, indexes can only be
-used in certain circumstances:
-
- * The beginning of the search string must be anchored to the start
- of the string, i.e.
- o LIKE patterns must not start with /%/.
- o /~/ (regular expression) patterns must start with /^/.
- * The search string can not start with a character class, e.g. [a-e].
- * Case-insensitive searches such as ILIKE and /~*/ do not utilise
- indexes. Instead, use functional indexes, which are described in
- section 4.12 <#4.12>.
- * The default /C/ locale must be used during /initdb/.
-
-
- 4.9) How do I see how the query optimizer is evaluating my query?
-
-See the EXPLAIN manual page.
-
-
- 4.10) What is an R-tree index?
-
-An R-tree index is used for indexing spatial data. A hash index can't
-handle range searches. A B-tree index only handles range searches in a
-single dimension. R-trees can handle multi-dimensional data. For
-example, if an R-tree index can be built on an attribute of type
-/point/, the system can more efficiently answer queries such as "select
-all points within a bounding rectangle."
-
-The canonical paper that describes the original R-tree design is:
-
-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.
-
-You can also find this paper in Stonebraker's "Readings in Database
-Systems".
-
-Built-in R-trees can handle polygons and boxes. In theory, R-trees can
-be extended to handle higher number of dimensions. In practice,
-extending R-trees requires a bit of work and we don't currently have any
-documentation on how to do it.
-
-
- 4.11) What is the Genetic Query Optimizer?
-
-The GEQO module speeds query optimization when joining many tables by
-means of a Genetic Algorithm (GA). It allows the handling of large join
-queries through nonexhaustive search.
-
-
- 4.12) How do I perform regular expression searches and
- case-insensitive regular expression searches? How do I use an
- index for case-insensitive searches?
-
-The /~/ operator does regular expression matching, and /~*/ does
-case-insensitive regular expression matching. The case-insensitive
-variant of LIKE is called ILIKE.
-
-Case-insensitive equality comparisons are normally expressed as:
-
- SELECT *
- FROM tab
- WHERE lower(col) = 'abc';
-
-This will not use an standard index. However, if you create a functional
-index, it will be used:
-
- CREATE INDEX tabindex ON tab (lower(col));
-
-
- 4.13) In a query, how do I detect if a field is NULL?
-
-You test the column with IS NULL and IS NOT NULL.
-
-
- 4.14) What is the difference between the various character types?
-
-Type Internal Name Notes
---------------------------------------------------
-VARCHAR(n) varchar size specifies maximum length, no padding
-CHAR(n) bpchar blank padded to the specified fixed length
-TEXT text no specific upper limit on length
-BYTEA bytea variable-length byte array (null-byte safe)
-"char" char one character
-
-You will see the internal name when examining system catalogs and in
-some error messages.
-
-The first four types above are "varlena" types (i.e., the first four
-bytes on disk are the length, followed by the data). Thus the actual
-space used is slightly greater than the declared size. However, these
-data types are also subject to compression or being stored out-of-line
-by TOAST, so the space on disk might also be less than expected.
-
-VARCHAR(n) is best when storing variable-length strings and it limits
-how long a string can be. TEXT is for strings of unlimited length, with
-a maximum of one gigabyte.
-
-CHAR(n) is for storing strings that are all the same length. CHAR(n)
-pads with blanks to the specified length, while VARCHAR(n) only stores
-the characters supplied. BYTEA is for storing binary data, particularly
-values that include NULL bytes. All the types described here have
-similar performance characteristics.
-
-
- 4.15.1) How do I create a serial/auto-incrementing field?
-
-PostgreSQL supports a SERIAL data type. It auto-creates a sequence and
-index on the column. For example, this:
-
- CREATE TABLE person (
- id SERIAL,
- name TEXT
- );
-
-is automatically translated into this:
-
- CREATE SEQUENCE person_id_seq;
- CREATE TABLE person (
- id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
- name TEXT
- );
- CREATE UNIQUE INDEX person_id_key ON person ( id );
-
-See the /create_sequence/ manual page for more information about
-sequences. You can also use each row's /OID/ field as a unique value.
-However, if you need to dump and reload the database, you need to use
-/pg_dump/'s /-o/ option or COPY WITH OIDS option to preserve the OIDs.
-
-
- 4.15.2) How do I get the value of a SERIAL insert?
-
-One approach is to retrieve the next SERIAL value from the sequence
-object with the /nextval()/ function /before/ inserting and then insert
-it explicitly. Using the example table in 4.15.1 <#4.15.1>, an example
-in a pseudo-language would look like this:
-
- new_id = execute("SELECT nextval('person_id_seq')");
- execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");
-
-You would then also have the new value stored in |new_id| for use in
-other queries (e.g., as a foreign key to the |person| table). Note that
-the name of the automatically created SEQUENCE object will be named
-</table/>_</serialcolumn/>_/seq/, where /table/ and /serialcolumn/ are
-the names of your table and your SERIAL column, respectively.
-
-Alternatively, you could retrieve the assigned SERIAL value with the
-/currval()/ function /after/ it was inserted by default, e.g.,
-
- execute("INSERT INTO person (name) VALUES ('Blaise Pascal')");
- new_id = execute("SELECT currval('person_id_seq')");
-
-Finally, you could use the OID <#4.16> returned from the INSERT
-statement to look up the default value, though this is probably the
-least portable approach. In Perl, using DBI with Edmund Mergl's DBD::Pg
-module, the oid value is made available via /$sth->{pg_oid_status}/
-after /$sth->execute()/.
-
-
- 4.15.3) Don't /currval()/ and /nextval()/ lead to a race
- condition with other users?
-
-No. /currval()/ returns the current value assigned by your backend, not
-by all users.
-
-
- 4.15.4) Why aren't my sequence numbers reused on transaction
- abort? Why are there gaps in the numbering of my sequence/SERIAL
- column?
-
-To improve concurrency, sequence values are given out to running
-transactions as needed and are not locked until the transaction
-completes. This causes gaps in numbering from aborted transactions.
-
-
- 4.16) What is an OID? What is a TID?
-
-OIDs are PostgreSQL's answer to unique row ids. Every row that is
-created in PostgreSQL gets a unique OID. All OIDs generated during
-/initdb/ are less than 16384 (from /include/access/transam.h/). All
-user-created OIDs are equal to or greater than this. By default, all
-these OIDs are unique not only within a table or database, but unique
-within the entire PostgreSQL installation.
-
-PostgreSQL uses OIDs in its internal system tables to link rows between
-tables. These OIDs can be used to identify specific user rows and used
-in joins. It is recommended you use column type OID to store OID values.
-You can create an index on the OID field for faster access.
-
-OIDs are assigned to all new rows from a central area that is used by
-all databases. If you want to change the OID to something else, or if
-you want to make a copy of the table, with the original OIDs, there is
-no reason you can't do it:
-
- CREATE TABLE new_table(old_oid oid, mycol int);
- SELECT old_oid, mycol INTO new FROM old;
- COPY new TO '/tmp/pgtable';
- DELETE FROM new;
- COPY new WITH OIDS FROM '/tmp/pgtable';
-
-OIDs are stored as 4-byte integers, and will overflow at 4 billion. No
-one has reported this ever happening, and we plan to have the limit
-removed before anyone does.
-
-TIDs are used to identify specific physical rows with block and offset
-values. TIDs change after rows are modified or reloaded. They are used
-by index entries to point to physical rows.
-
-
- 4.17) What is the meaning of some of the terms used in PostgreSQL?
-
-Some of the source code and older documentation use terms that have more
-common usage. Here are some:
-
- * table, relation, class
- * row, record, tuple
- * column, field, attribute
- * retrieve, select
- * replace, update
- * append, insert
- * OID, serial value
- * portal, cursor
- * range variable, table name, table alias
-
-A list of general database terms can be found at:
-http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html
-
-
- 4.18) Why do I get the error /"ERROR: Memory exhausted in
- AllocSetAlloc()"/?
-
-You probably have run out of virtual memory on your system, or your
-kernel has a low limit for certain resources. Try this before starting
-/postmaster/:
-
- ulimit -d 262144
- limit datasize 256m
-
-Depending on your shell, only one of these may succeed, but it will set
-your process data segment limit much higher and perhaps allow the query
-to complete. This command applies to the current process, and all
-subprocesses created after the command is run. If you are having a
-problem with the SQL client because the backend is returning too much
-data, try it before starting the client.
-
-
- 4.19) How do I tell what PostgreSQL version I am running?
-
-From /psql/, type |SELECT version();|
-
-
- 4.20) Why does my large-object operations get /"invalid large
- obj descriptor"/?
-
-You need to put |BEGIN WORK| and |COMMIT| around any use of a large
-object handle, that is, surrounding |lo_open| ... |lo_close.|
-
-Currently PostgreSQL enforces the rule by closing large object handles
-at transaction commit. So the first attempt to do anything with the
-handle will draw /invalid large obj descriptor/. So code that used to
-work (at least most of the time) will now generate that error message if
-you fail to use a transaction.
-
-If you are using a client interface like ODBC you may need to set
-|auto-commit off.|
-
-
- 4.21) How do I create a column that will default to the current
- time?
-
-Use /CURRENT_TIMESTAMP/:
-
-|CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
-|
-
-
- 4.22) Why are my subqueries using |IN| so slow?
-
-Currently, we join subqueries to outer queries by sequentially scanning
-the result of the subquery for each row of the outer query. If the
-subquery returns only a few rows and the outer query returns many rows,
-|IN| is fastest. To speed up other queries, replace |IN| with |EXISTS|:
-
- SELECT *
- FROM tab
- WHERE col IN (SELECT subcol FROM subtab);
-
-to:
-
- SELECT *
- FROM tab
- WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
-
-For this to be fast, |subcol| should be an indexed column. This
-preformance problem will be fixed in 7.4.
-
-
- 4.23) How do I perform an outer join?
-
-PostgreSQL supports outer joins using the SQL standard syntax. Here are
-two examples:
-
- SELECT *
- FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
-
-or
-
- SELECT *
- FROM t1 LEFT OUTER JOIN t2 USING (col);
-
-These identical queries join t1.col to t2.col, and also return any
-unjoined rows in t1 (those with no match in t2). A RIGHT join would add
-unjoined rows of t2. A FULL join would return the matched rows plus all
-unjoined rows from t1 and t2. The word OUTER is optional and is assumed
-in LEFT, RIGHT, and FULL joins. Ordinary joins are called INNER joins.
-
-In previous releases, outer joins can be simulated using UNION and NOT
-IN. For example, when joining /tab1/ and /tab2/, the following query
-does an /outer/ join of the two tables:
-
- SELECT tab1.col1, tab2.col2
- FROM tab1, tab2
- WHERE tab1.col1 = tab2.col1
- UNION ALL
- SELECT tab1.col1, NULL
- FROM tab1
- WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2)
- ORDER BY col1
-
-
- 4.24) How do I perform queries using multiple databases?
-
-There is no way to query a database other than the current one. Because
-PostgreSQL loads database-specific system catalogs, it is uncertain how
-a cross-database query should even behave.
-
-/contrib/dblink/ allows cross-database queries using function calls. Of
-course, a client can make simultaneous connections to different
-databases and merge the results on the client side.
-
-
- 4.25) How do I return multiple rows or columns from a function?
-
-In 7.3, you can easily return multiple rows or columns from a function,
-http://techdocs.postgresql.org/guides/SetReturningFunctions
-<http://techdocs.postgresql.org/guides/SetReturningFunctions>.
-
-
- 4.26) Why can't I reliably create/drop temporary tables in
- PL/PgSQL functions?
-
-PL/PgSQL caches function contents, and an unfortunate side effect is
-that if a PL/PgSQL function accesses a temporary table, and that table
-is later dropped and recreated, and the function called again, the
-function will fail because the cached function contents still point to
-the old temporary table. The solution is to use EXECUTE for temporary
-table access in PL/PgSQL. This will cause the query to be reparsed every
-time.
-
-
- 4.27) What replication options are available?
-
-There are several master/slave replication options available. These
-allow only the master to make database changes and the slave can only do
-database reads. The bottom of
-http://gborg.PostgreSQL.org/genpage?replication_research
-<http://gborg.PostgreSQL.org/genpage?replication_research> lists them. A
-multi-master replication solution is being worked on at
-http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php.
-
-
- 4.28) What encryption options are available?
-
- * /contrib/pgcrypto/ contains many encryption functions for use in
- SQL queries.
- * The only way to encrypt transmission from the client to the server
- is by using /hostssl/ in /pg_hba.conf/.
- * Database user passwords are automatically encrypted when stored in
- version 7.3. In previous versions, you must enable the option
- /PASSWORD_ENCRYPTION/ in /postgresql.conf/.
- * The server can run using an encrypted file system.
-
-------------------------------------------------------------------------
-
-
- Extending PostgreSQL
-
-
- 5.1) I wrote a user-defined function. When I run it in /psql/,
- why does it dump core?
-
-The problem could be a number of things. Try testing your user-defined
-function in a stand-alone test program first.
-
-
- 5.2) How can I contribute some nifty new types and functions to
- PostgreSQL?
-
-Send your extensions to the /pgsql-hackers/ mailing list, and they will
-eventually end up in the /contrib// subdirectory.
-
-
- 5.3) How do I write a C function to return a tuple?
-
-In versions of PostgreSQL beginning with 7.3, table-returning functions
-are fully supported in C, PL/PgSQL, and SQL. See the Programmer's Guide
-for more information. An example of a table-returning function defined
-in C can be found in /contrib/tablefunc/.
-
-
- 5.4) I have changed a source file. Why does the recompile not
- see the change?
-
-The /Makefiles/ do not have the proper dependencies for include files.
-You have to do a /make clean/ and then another /make/. If you are using
-GCC you can use the /--enable-depend/ option of /configure/ to have the
-compiler compute the dependencies automatically.
-
+ + PostgreSQL i�in S�k�a Sorulan Sorular (SSS) + +Son g�ncelleme : 26 Temmuz 2003 Cumartesi - 18:32:11 + +Current maintainer: Bruce Momjian ([email protected] +<mailto:[email protected]>) + +�evirenler : Devrim G�nd�z ([email protected] <mailto:[email protected]>) +Nicholas Morris Tufar ([email protected] <mailto:[email protected]>) +Volkan Yaz�c� ([email protected] <mailto:[email protected]>) + +Bu belgenin en g�ncel hali, +http://www.PostgreSQL.org/docs/faqs/FAQ_turkish.html +<http://www.postgresql.org/docs/faqs/FAQ_turkish.html> ve +http://www.gunduz.org/seminer/pg/FAQ_turkish adreslerinde g�r�lebilir. + +Platforma �zel sorular�n�z, http://www.PostgreSQL.org/docs/index.html +<http://www.postgresql.org/docs/index.html> adresinde yan�tlan�r. + +------------------------------------------------------------------------ + + + Genel Sorular + +1.1 <#1.1>) PostgreSQL nedir? Nas�l okunur? +1.2 <#1.2>) PostgreSQL' in haklar� nedir? +1.3 <#1.3>) PostgreSQL, hangi Unix platformlar�nda �al�s�r? +1.4 <#1.4>) Hangi Unix olmayan uyarlamalar� bulunmaktad�r? +1.5 <#1.5>) PostgreSQL'i nereden indirebilirim? +1.6 <#1.6>) Deste�i nereden alabilirim? +1.7 <#1.7>) En son s�r�m� nedir? +1.8 <#1.8>) Hangi belgelere ula�abilirim? +1.9 <#1.9>) Bilinen hatalar ya da eksik �zelliklere nereden ulasabilirim? +1.10 <#1.10>) Nas�l SQL ��renebilirim? +1.11 <#1.11>) PostgreSQL 2000 y�l�na uyumlu mudur? +1.12 <#1.12>) Geli�tirme tak�m�na nas�l kat�labilirim?? +1.13 <#1.13>) Bir hata raporunu nas�l g�nderebilirim? +1.14 <#1.14>) PostgreSQL, di�er VTYS(DBMS) lerle nas�l kar��la�t�r�labilir? +1.15 <#1.15>) PostgreSQL'e maddi a��dan nas�l destek olabilirim? + + + Kullan�c�/istemci Sorular� + +2.1 <#2.1>) PostgreSQL i�in ODBC s�r�c�leri var m� ? +2.2 <#2.2>) PostgreSQL'i web sayfalar�nda kullanabilmek i�in hangi +ara�lar bulunmaktad�r ? +2.3 <#2.3>) PostgreSQL'in grafik kullan�c� arabirimi var m�d�r? +2.4 <#2.4>) PostgreSQL ile ileti�imi kurabilmek i�in hangi dilleri +kullanabilirim? + + + Y�netimsel Sorular + +3.1 <#3.1>) PostgreSQL'i //usr/local/pgsql/ dizininden ba�ka dizinlere +nas�l kurabilirim?? +3.2 <#3.2>) /Postmaster/'� ba�latt���mda /Bad System Call/ ya da core +dumped mesaj� al�yorum. Neden? +3.3 <#3.3>) /Postmaster/'� ba�latt���mda, /IpcMemoryCreate/ hatas� +al�yorum. Neden? +3.4 <#3.4>) /Postmaster/, ba�latt���mda, /IpcSemaphoreCreate hatas�/ +al�yorum. Neden? +3.5 <#3.5>) Di�er bilgisayarlar�n benim PostgreSQL veritaban� sunucuma +ba�lant�lar�n� nas�l kontrol edebilirim? +3.6 <#3.6>) Veritaban� motorunu daha iyi ba�ar�m icin nas�l ayarlayabilirim? +3.7 <#3.7>) Hangi hata ay�klama �zellikleri bulunmaktad�r? +3.8 <#3.8>) Ba�lanmaya �al���rken, neden "/Sorry, too many clients/" +hatas�n� al�yorum? +3.9 <#3.9>) /pgsql_tmp/dizinin i�indeki dosyalar nelerdir? +3.10 <#3.10>) PostgreSQL s�r�mlerini y�kselmek i�in neden bir +dump/reload i�lemi ger�ekle�tirmek zorunday�m? + + + ��letimsel Sorular + +4.1 <#4.1>) Binary cursor ve normal cursor aras�ndaki fark ned�r? +4.2 <#4.2>)Sorgunun sadece ilk birka� sat�r�n� nas�l SELECT edebilirim? +4.3 <#4.3>) /psql/'in i�inde g�rd�g�m tablolarin ya da di�er �eylerin +listesini nas�l alabilirim? +4.4 <#4.4>)Bir tablodan bir kolonu nas�l kald�rabilirim? +4.5 <#4.5>)Bir sat�r, tablo ve veritaban� icin en fazla b�y�kl�k nedir? +4.6 <#4.6>) Tipik bir metin dosyas�ndaki veriyi saklamak i�in ne kadar +disk alan� gereklidir? +4.7 <#4.7>) Veritaban�nda hangi tablo ya da indexlerin tan�mland�g�n� +nasil g�rebilirim? +4.8 <#4.8>) Sorgular�m cok yavas, ya da indexlerimi kullanmiyorlar. Neden? +4.9 <#4.9>) Query-optimizer in sorgular�m� nas�l de�erlendirdigini, +i�leme soktu�unu nas�l g�rebilirim? +4.10 <#4.10>) R-tree index nedir? +4.11 <#4.11>) Genetic Query Optimizer nedir? +4.12 <#4.12>) D�zenli ifade (Regular Expression) aramalar�n� ve +b�y�k/k���k harfe duyars�z aramalar� nasil yapabilirim? Bu b�y�k(k���k +harfe duyarl� aramalar i�in indeksi nasil kullanabilirim? +4.13 <#4.13>) Bir sorguda, bir alan�n NULL oldu�unu nas�l ortaya +��karabilirim? +4.14 <#4.14>) �esitli karakter tipleri aras�ndaki farklar nelerdir? +4.15.1 <#4.15.1>) Nas�l serial/otomatik artan(auto-incrementing) bir +alan yaratabilirim? +4.15.2 <#4.15.2>) Serial giri�inin de�erini nas�l alabilirim? +4.15.3 <#4.15.3>) /currval()/ ve /nextval()/ di�er kullan�c�lara sorun +yaratmaz m�?> +4.15.4 <#4.15.4>) Neden sequence say�lar�n transaction i�leminin +iptalinden sonra yeniden kullan�l�yor? Neden sequence/SERIAL kolonumdaki +say�larda atlamalar oluyor? +4.16 <#4.16>) OID nedir? TID nedir? +4.17 <#4.17>) PostgreSQL' de kullan�lan baz� terimlerin anlamlar� nelerdi? +4.18 <#4.18>) Neden /"ERROR: Memory exhausted in AllocSetAlloc()"/ +hatas�n� al�yorum? +4.19 <#4.19>) Hangi PostgreSQL s�r�m�n� �al�st�rd���m� nas�l g�rebilirim?? +4.20 <#4.20>) Neden large-object i�lemlerim, /"invalid large obj +descriptor"/ hatas�n� veriyor? +4.21 <#4.21>) �u andaki zaman� �ntan�ml� de�er olarak kabul eden kolonu +nas�l yarat�r�m? +4.22 <#4.22>) Neden |IN| kullanan subquerylerim �ok yava�? +4.23 <#4.23>) Outer join i�lemini nas�l yapabilirim? +4.24 <#4.24>) Ayn� anda birden fazla veritaban�nda nas�l i�lem yapabilirim? +4.25 <#4.25>) Bir fonksiyondan nas�l �oklu sat�r ya da kolon +d�nd�rebilirim?? +4.26 <#4.26>) Neden Pl/PgSQL fonksiyonlar� i�inden g�venli bir �ekilde +tablo yaratma/kald�rma i�lemlerini yapam�yoruz? +4.27 <#4.27>) Hangi replikasyon se�enekleri bulunmaktad�r? +4.28"D <#4.28>) Hangi �ifreleme se�enekleri bulunmaktad�r? + + + PostgreSQL �zelliklerini Geni�letmek + +5.1 <#5.1>) Kullan�c�-tan�ml� bir fonksiyon yazd�m. /psql/'de +�al��t�rd���m zaman neden core dump ediyor? +5.2 <#5.2>) PostgreSQL'e nas�l yeni veri tipleri/fonksiyonlar ekleyebilirim? +5.3 <#5.3>) Bir tuple d�nd�rmek i�in bir C fonksiyonunu nas�l yazar�m? +5.4 <#5.4>) Bir kaynak dosyas�nda de�isiklik yapt�m. Yeniden derlememe +ra�men de�i�iklik ge�erli olmuyor. Neden?? +------------------------------------------------------------------------ + + + Genel Sorular + + + 1.1) PostgreSQL nedir? Nas�l okunur? + +PostgreSQL, /Post-Gres-Q-L/. olarak okunur + +PostgreSQL, yeni-nesil VTYS ara�t�rma prototipi olan POSTGRES veritaban� +y�netim sisteminin geli�tirilmesidir. POSTGRES' in zengin veri tiplerini +ve g��l� veri modelini tutarken, SQL'in geli�tirilmis alt k�mesi olan +PostQuel dilini kullan�r. PostgreSQL �cretsizdir ve kaynak kodu a��k +da��t�l�r. + +PostgreSQL, PostgreSQL geli�tirme listesine �ye olan bir Internet +geli�tirici tak�m� taraf�ndan geli�tirilir. �u andaki koordinat�r, Marc +G. Fournier ([email protected] <mailto:[email protected]>). +(Bu tak�ma nas�l kat�lacag�n�z� ��renmek i�in 1.6 <#1.6> numaral� +maddeyi okuyunuz.) Bu tak�m, t�m PostgreSQL geli�iminden sorumludur. + +PostgreSQL 1.01 s�r�m�n�n yazarlar� Andrew Yu ve Jolly Chen idi. +Bunlar�n d���nda bir ka� kisi de uyarlama, hata ay�klama ve kodun +geli�tirilmesi i�in �al�sm��t�. PostgreSQL'in t�redigi orijinal Postgres +kodu, lisans, lisans�st� ve akademisyenler taraf�ndan, Professor Michael +Stonebraker ) University of California, Berkeley) koordinat�rl�g�nde +yaz�lm�st�r. + +Berkley'deki yaz�l�m�n ad� Postgres idi. SQL uyumlulu�u 1995'te +eklenince, ad� Postgres 95 oldu. 1996 y�l�n�n sonlar�nda ad� PostgreSQL +olarak de�i�tirildi. + + + 1.2) PostgreSQL'in haklar� nedir? + +PostgreSQL Data Base Management System + +Portions copyright (c) 1996-2002, PostgreSQL Global Development Group +Portions Copyright (c) 1994-6 Regents of the University of California + +Permission to use, copy, modify, and distribute this software and its +documentation for any purpose, without fee, and without a written +agreement is hereby granted, provided that the above copyright notice +and this paragraph and the following two paragraphs appear in all copies. + +IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY +FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, +INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS +DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. + +THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS +ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS +TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + +�stteki metin klasik a��k-kod lisans� olan BSD lisans�d�r. Kaynak kodun +nas�l kullan�labilece�ine dair s�n�rlamalar� yoktur. Bu lisans� +seviyoruz. De�i�tirme niyetimiz bulunmamaktad�r. + + + 1.3) PostgreSQL, hangi Unix platforlar�nda �al�s�r? + +Genel olarak, modern bir Unix-uyumlu platform PostgreSQL'i +�al��t�racakt�r. Ayr�nt�l� bilgi i�in kurulum belgelerine bakabilirsiniz. + + + 1.4) Hangi Unix olmayan uyarlamalar� bulunmaktad�r? + +*�stemci* + +libpq C k�t�phanesini, psql ve diger arabirimleri ve binary dosyalar�, +MS Windows ortamlar�nda �al�smas� i�in derlemeniz m�mk�nd�r. Bu �rnekte +istemcide MS Windows �al�s�yor ve desteklenen Unix platformlar�ndan +birinde �al�san PostgreSQL sunucuna TCP/IP ile baglanmaktad�r. Da��t�m +i�indeki win31.mak dosyas� ile, Win32 libpg k�t�phanesi ve psql +yaratabilirsiniz. PostgreSQL ayn� zamanda ODBC istemcileri ile +haberlesebilmektedir. + +*Sunucu* + +Veritaban� sunuucsu Cygwin kullanarak Windows NT, 2K ya da XP �zerinde +calistirilabilir. Dag�t�m i�indeki pgsql/doc/FAQ_MSW�N dosyas�n� ya da +web sitemizdeki MS Windows FAQ'u inceleyebilirsiniz. + +Do�al Windows NT/2000/XP portu i�in �u anda �al��malar devam etmektedir. +Windows s�r�m� hakk�nda g�ncel bilgi i�in, +http://techdocs.postgresql.org/guides/Windows adresini ziyaret +edebilirsiniz. + +Ayr�ca, http://forge.novell.com adresinde Novell Netware 6 portu +bulunmaktad�r. + + + 1.5) PostgreSQL'i nereden indirebilirim? + +PostgreSQL i�in ana anonim ftp sitesi ftp://ftp.PostgreSQL.org/pub' dur. +Yans�lar i�in, ana web sayfam�za bakabilirsiniz. + + + 1.6) Nereden destek alabilirim? + +Ana e-posta listesi : [email protected]. PostgreSQL +konusundaki tart�smalara a��kt�r. �ye olmak i�in, asag�daki sat�rlar� +e-postanizin body k�sm�na (konu k�sm�na degil) yaz�p, [email protected] adresine g�nderin: + +subscribe +end + +Ayn� zamanda, bir digest listesi bulunmaktad�r. Bu listeye �ye olmak +i�in, [email protected] adresine, body k�sm�nda + +subscribe +end + +yazan bir e-posta atman�z yeterli olacakt�r. + +Digest postalar, ana liste 30k civar�nda e-postaya ulastiginda �yelere +g�nderilmektedir. + +Buglar i�in bir e-posta listesi bulunmaktad�r. Bu listeye �ye olmak +i�in, email to [email protected] adresine, body k�sm�nda + +subscribe +end + +yazan bir e-posta atman�z yeterli olacakt�r. + +Ayn� zamanda, gelistiriciler i�in tart�sma listesi bulunmaktad�r. Bu +listeye �ye olmak i�in, [email protected] adresine, +body k�sm�nda + +subscribe +end + +yazan bir e-posta atman�z yeterli olacakt�r. + +Bunun d�s�ndaki e-posta listelerine ve PostgreSQL hakk�nda bilgiye, +PostgreSQL WWW ana sayfas�ndan ulasabilirsiniz: + +http://www.PostgreSQL.org + +Ayn� zamanda, EFNet �zerinde, #PostgreSQL adl� bir �RC kanal� +bulunmaktad�r. Bunun i�in, irc -c '#PostgreSQL' "$USER" irc.phoenix.net +Unix komutunu kullanabilirsiniz. + +Ticari destek veren firmalar�n listesine + +http://www.postgresql.org/users-lounge/commercial-support.html + +adresinden ulasabilirsiniz. + + + 1.7) En son s�r�m nedir? + +PostgreSQL'in son s�r�m� 7.3.3't�r. + +Her 4 ayda major release ��kar�lmas� planlanmaktad�r. + + + 1.8) Hangi belgelere ulasabilirim? + +Da��t�m�n icinde, kitapciklar, kitapcik sayfalari ve bazi k���k �rnekler +verilmektedir. /doc dizinine bak�n�z. Ayrica, bu el kitap��klar�n� +online olarak http://www.PostgreSQL.org/docs/ adresinden inceleyebilirsiniz. + +http://www.PostgreSQL.org/docs/awbook.html ve +http://www.commandprompt.com/ppbook adreslerinde PostgreSQL kitaplar� +bulunmaktad�r. PostgreSQL kitablar�n�n listesine, +http://www.ca.PostgreSQL.org/books/ adresinden ula�aiblirsiniz. Ayr�ca, +PostgreSQL konusundaki teknik makalelere de +http://techdocs.PostgreSQL.org/ adresinden ula�abilirsiniz. + +psql'in, \d ile baslayan veri tipler, operatorler, fonksiyonlar, +aggregateler, vb. ile ilgili g�zel komutlar� vard�r. + +Web sitemiz daha fazla belgeyi i�ermektedir. + + + 1.9) Bilinen hatalar ya da eksik �zelliklere nereden ulasabilirim? + +PostgreSQL SQL-92 uyumlugugu icindedir, standartlardan fazla da +�zellikleri bulunmaktad�r. Bilinen hatalar, eksik �zellikler ve gelecek +ile ilgili planlar i�in TODO listesine bak�n�z. + + + 1.10) Nas�l SQL ��renebilirim? + +http:/www.PostgreSQL.org/docs/awbook.html adresindeki kitap SQL +�gretecektir. http://www.commandprompt.com/ppbook adresinde de bir baska +PostgreSQL kitab� bulunmaktad�r. + +http://www.intermedia.net/support/sql/sqltut.shtm, +http://ourworld.compuserve.com/homepages/graeme_birchall/HTM_COOK.HTM +http://sqlcourse.com ve http://sqlcourse2.com adreslerinde de g�zel +belgeler bulunmaktad�r. + +Bir ba�kas� da, http://members.tripod.com/er4ebus/sql/index.htm +adresinde bulunan "Teach Yourself SQL in 21 Days, Second Edition" kitab�d�r. + +Baz� kullan�c�lar�m�z da �u kitab� �nermektedirler: The Practical SQL +Handbook, Bowman, Judith S., et al.,Addison-Wesley. Others like The +Complete Reference SQL, Groff et al., McGraw-Hill. + + + 1.11) PostgreSQL 2000 y�l�na uyumlu mudur? + +Evet. + + + 1.12) Gelistirme tak�m�na nas�l kat�labilirim? + +�ncelikle, en son kaynak kodunu indirin ve web sitemizdeki ya da +dag�t�m�n i�indeki PostgreSQL Developer belgesini okuyun. Ardindan, +pgsql-hackers ve pgsql-patches listelerine �ye olun. ���nc� olarak da, +pgsql-pacthes listesine y�ksek kalitede yamalar g�nderin. + +PostgreSQL CVS arsivine erisim izni olan, 10 kadar gelistirici +bulunmaktadir. Hepsi defalarca, diger kisilerin yaptigindan cok daha +y�ksek-kaliteli patchler gondermislerdir. Ayrica biz de bu +gelistiricilerin ekledikleri yamalarin y�ksek kalitede olduguna g�veniyoruz. + + + 1.13) Bir hata raporunu nas�l g�nderebilirim? + +PostgreSQL BugTool sayfasina gidiniz. O sayfada bir bug bildirmek icin +neleri yapman�z gerektigi anlatilmistir. + +Ayr�ca, ftp://ftp.PostgreSQL.org/pub ftp adresimizde, yeni bir +PostgreSQL s�r�m� ya da yamasi olup olmadigini kontrol ediniz. + + + 1.14) PostgreSQL, diger DBMS'lerle nas�l karsilast�r�labilir? + +Bir yazilimin g�c�n� �l�mek i�in �esitli yollar vardir: Yazilimin +�zellikleri, basar�m�, g�venilirligi, destegi ve �creti. + +�zellikler: + +PostgreSQL mevcut b�y�k ticari veritabanlarinin, transaction, subselect, +trigger, view, foreign key referential integrity ve sophisticated +locking gibi (user-defined types), rules, inheritance ve lock +cak�smalarini d�s�rmek icin multi-version uyumluluk �zellikleri +bulunmaktadir. + +Performans (Ba�ar�m): + +PostgreSQL, di�er ticari ve a��k kaynak kodlu veritabanlar�yla yak�n +ba�ar�m� sa�lar. Baz� a��lardan daha h�zl�d�r, di�er a��lardan da +yava�t�r. MySQL ya da daha zay�f veritabanlar� ile +kar��la�t�r�ld���nda,insert/update islemlerinde, transaction bazl� +�al�st���m�z i�in daha yava��z. MySQL, yukar�daki "�zellikler" k�sm�nda +belirtilenlerden hi� birine sahip de�ildir. Biz, ba�ar�m�m�z� her +s�r�mde artt�rsak da, esneklik ve geli�mi� �zellikler i�in yap�lanm�s +durumday�z . PostgreSQL'i MySQL ile kar��la�t�ran �u web sitesine +bakabilirsiniz: http://openacs.org/why-not-mysql.html + +G�venilirlik: + +DBMSlerin g�venilir olmas� gerketigi, yoksa degerleri olmayacagini +d�s�n�yoruz �ok iyi test edilmis, dengeli �al�san minimum say�da hata +i�eren kod sunmaya �al�s�yoruz. Her bir s�r�m en az 1 ayl�k beta +testlerinden ge�irilmektedir. S�r�m ge�mi�ine bakarsan�z, �retime haz�r, +dengeli ve kararl� kodlar sundugumuzu g�rebilirsiniz. Bu alanda, diger +veritaban� yaZ�l�mlar�na �st�nl�g�m�z olduguna inanmaktay�z + +Destek: + +E-posta listemiz, olusan herhangi bir sorunu ��zebilecek b�y�k say�da +kullan�c� ve gelistirici grubunu i�erir. Sorununuz i�in, en az bir +ticari veritaban� kadar rahat ��z�m bulabilirsiniz. Gelistiricilere, +kullan�c� grubuna, belgelere ve kaynak koda direk olarak erisebilme, +PostgreSQL destegini, diger DBMSlere g�re daha �nemli k�lar. Gereksinimi +olanlara, ticari destek verilebilir. (Destek i�in 1.6 b�l�m�ne bak�n�z.) + +Fiyat: + +Ticari ve ticari olmayan t�m kullan�mlar�n�z i�in PostgreSQL +�cretsizdir. Kodumuzu, yukar�da belirtilen BSD-stili lisanstaki +s�n�rlamalar hari�, �r�n�n�z�n i�ine ekleyebilirsiniz. + + + 1.15) PostgreSQL'e maddi a��dan nas�l destek olabilirim? + +PostgreSQL, 1996 y�l�ndan beri 1.s�n�f altyap�ya ashiptir. Bunun i�in, +y�llar boyu �al�s�p bu altyap�y� olusturup y�neten Marc Fournier'e +tesekk�rler. + +Bir a��k kaynak kodlu proje i�in, kaliteli altyap� �ok �nemlidir. Bu +altyap�, projenin kesilmesini �nler ve projenin ilerlemesini h�zland�r�r. + +Tabii ki bu altyap� ucuz degildir. �slerin y�r�mesi i�in �e�itli y�l�k +ve anl�k harcamalar�m�z olmaktad�r. Eger siz ya da sirketinizin bu +�abam�za bag�sta bulunabilecek paras� varsa, l�tfen +http://www.pgsql.com/pg_goodies adresine gidiniz ve bag�sta, hibede +bulununuz. + +Web sayfas�n�n PostgreSQL, �nc.' den bahsetmesine ragmen, "katk�da +bulunanlar" (contributors) maddesi sadece PostgreSQL projesini +desteklemek i�indir ve belirli bir sirketin para kaynag� degildir. +isterseniz, baglant� adresine bir �ek g�nderebilirsiniz. + +------------------------------------------------------------------------ + + + Kullan�c�/istemci Sorular� + + + 2.1) PostgreSQL icin ODBC s�r�c�leri var m�? + +iki tane ODBC s�r�c�s� bulunmaktad�r: PsqlODBC ve OpenLink ODBC. + +PsqlODBC'i http://gborg.postgresql.org/project/psqlodbc/projdisplay.php +adresinden indirebilirsiniz. + +OpenLink ODBC http://www.openlinksw.com adresinden al�nabilir.Bu s�r�c�, +kendi standart ODBC istemci yaz�l�m� ile �al�st���ndan, destekledikleri +her platformda (Win, Mac, Unix, VMS) PostgreSQL ODBC bulunmalidir. + +�cretsiz s�r�m� olmakla beraber, ticari kalitede destek almak +isteyenlere satmak isteyeceklerdir. Sorular�n�z� l�tfen [email protected] adresine g�nderiniz. + + + 2.2) PostgreSQL'i web sayfalar�nda kullanabilmek i�in hangi + ara�lar bulunmaktad�r? + +http://www.webreview.com adresinde, arka planda veritaban� �al�st�ran +Web sayfalar� i�in giris seviyesinde bilgi bulunmaktad�r. + +Web ile b�t�nlesme i�in, PHP m�kemmel bir arabirim sunar. http://www.php.net + +Karma��k sorunlar i�in, �o�u kisi Perl arabirimini ve CGI.pm ya da +mod_perl kullan�r. + + + 2.3) PostgreSQL'in grafik kullan�c� arabirimi var m�d�r? + +�e�itli grafik arabirimlerimiz bulunmaktad�r. Bunlar�n aras�nda, +PgAccess (http://www.pgaccess.org), PgAdmin II (http://www.pgadmin.org, +sadece Win32 i�in), RHDB Admin (http://sources.redhat.com/rhdb/ ) ve +Rekall (http://www.thekompany.com/products/rekall/) bulunmaktad�r. +Ayr�ca, PostgreSQL i�in web tabanl� bir arabirim olan PHPPgAdmin ( +http://phppgadmin.sourceforge.net/ ) bulunmaktad�r. + +Daha ayr�nt�l� liste i�in http://techdocs.postgresql.org/guides/GUITools +adresine bakabilirsiniz. + + + 2.4) PostgreSQL ile ileti�imi kurabilmek i�in hangi dilleri + kullanabilirim? + + * C (libpq) + * Embedded C (ecpg) + * Java (jdbc) + * Python (PyGreSQL) + * TCL (libpgtcl) + +Di�erleri i�in, http://gborg.postgresql.org adresindeki +Drivers/Interfaces b�l�m�ne bakabilirsiniz. + +------------------------------------------------------------------------ + + + Y�netimsel Sorular + + + 3.1) PostgreSQL'i, /usr/local/pgsql dizininden baska dizinlere + nas�l kurabilirim? + +configure betigini �al�st�r�rken, --prefix se�enegini veriniz. + + + 3.2) postmaster'i baslatt�g�mda, a Bad System Call ya da core + dumped mesaj� al�yorum. Neden? + +Bunun bir�ok nedeni olabilir. Ancak ilk kontrol edilmesi gereken sey, +�ekirdeginize System V uzant�lar�n�n kurulu olup olmad�g�n� kontrol +etmek olabilir. PostgreSQL shared memory ve semaphores i�in �ekirdek +destegine gereksinim duyar. + + + 3.3) postmaster'i baslatt�g�mda, a �pcMemoryCreate hatas� + al�yorum. Neden? + +Ya �ekirdeginizde shared memory desteginiz d�zg�nce +yap�land�r�lmam�st�r, ya da �ekirdeginizdeki mevcut shared memory +miktar�n� b�y�tmeniz gerekecektir. Gereksinim duyacag�n�z miktar, +mimarinize ve postmaster i�in ayarlad�g�n�z tampon ile backend islemi +say�s�na bagl�d�r. T�m sistemler i�in, tamponlar ve islemlerde �ntan�ml� +say�larla, ~ 1MB kadar yere gereksinmeniz olacaktir.PostgreSQL +Administrator's Guide' a, shared memory ve semaphorelar hakk�ndaki +ayr�nt�l� bilgi i�in bakabilirsiniz. + + + 3.4) postmaster'i baslatt�g�mda, a �pcSemaphoreCreate hatas� + al�yorum. Neden? + +Eger hata, "�pcSemaphoreCreate: semget failed (No space left on device)" +ise, �ekirdeginiz yeterli semaphore ile yap�land�r�lmam�s demektir. +Postgres, her bir potansiyel backend i�in bir semaphore gereksinmesi +duyar. Ge�ici bir ��z�m, postmaster� backend islemleri i�in daha az +miktarda s�n�rla baslatmak olabilir. -N i varsa�lan deger olan 32'den +k���k bir degerle baslat�n�z. Daha kal�c� bir ��z�m, �ekirde�inizin +SEMMNS ve SEMMNI parametrelerini y�kseltmek olacakt�r. + +�al��mayan semaphorelar a��r veritaban� islemlerinde ��kme yaratabilirler. + +Eger hata mesaj�n�z baska birsey ise, �ekirdeginizde semaphore destegini +yap�land�rmam�s olabilirsiniz. Shared memory ve semaphorelar hakk�ndaki +daha ayr�nt�l� bilgi i�in PostgreSQL Administrator's Guide'a bakabilirsiniz. + + + 3.5) Diger bilgisayarlar�n benim PostgreSQL veritaban� sunucuma + baglant�lar�n� nas�l kontrol edebilirim? + +�n tan�ml� olarak, PostgreSQL sadece yerel makineden Unix domain sockets +kullanarak baglan�lmas�na izin verir. Diger makineler, postmaster'a -i +etiketini ge�irmezseniz ve $PGDATA_pg_hba.conf dosyas�n� d�zenleyerek +host-based authentication'a olanak vermezseniz, baglant� yapamayacaklard�r. + + + 3.6) Veritabani motorunu daha iyi basarim icin nasil + ayarlayabilirim? + +Indexler sorgular� h�zland�rabilir. EXPLAIN komutu, PostgreSQL'in +sorgunuzu nas�l yorumlad���n� ve hangi indexleri kullandigini g�rmenize +izin verir. + +E�er cok fazla INSERT islemi yapiyorsaniz, bunlar� b�y�k bir toplu islem +dosyasi kullan�p COPY komutu ile veritabanina girmeyi deneyiniz. Bu, +tekil �NSERTlerden daha h�zl�d�r. ikinci olarak, BEG�N WORK/COMM�T +transaction blogu i�inde olmayan ifadeler kendi transactionlarindaymis +gibi d�s�n�l�r. �oklu ifadeleri tek bir transaction blo�u i�inde +yapabilirsiniz. Bu, transaction overheadini d���recektir. Tek bir +transaction blo�u i�inde birden �ok ifadeyi �al��t�rmay� +deneyebilirsiniz. Bu, transaction overhead ini d���r�r. + +�e�itli ayarlama se�enekleri mevcuttur. fsync() i�lemini, postmaster'� +-o -F se�ene�i ile ba�latarak devre d��� b�rakabilirsiniz. Bu i�lem, +fsync()'lerin her transactiondan sonra diske flush etmesini engelleyecektir. + +Ayn� zamanda, postmaster'i -B se�ene�i ile ba�lat�p, backend i�lemleri +taraf�ndan kullan�lan shared memorf buffers say�lar�n� +artt�rabilirsiniz. Eger bu parametreyi �ok y�ksek tutarsan�z, +�ekirde�inizin shared memory b�lgesindeki limiti a�ma olas�l���n�z +y�z�nden postmaster ba�layamayabilir. Her bir tampon (buffer) 8K'd�r. +�ntan�ml� say� ise 64 tampondur. + +Ayn� �ekilde, backend'in -S se�ene�ini ge�ici s�ralamalar i�in backend +s�re�leri taraf�ndan kullan�lacak haf�zay� artt�rmak amac�yla +kullanabilirsiniz. -S se�ene�i kilobayt cinsinden de�er al�r ve �n +tan�ml� de�eri 512'dir (512 K) + +Tablolardaki veriyi bir indekse e�lemek amac�yla gruplama i�in CLUSTER +komutunu kullanabilirsiniz. Ayr�nt�l� bilgi i�in CLUSTER komutunun +yard�m sayfas�na bakabilirsiniz. + + + 3.7) Hangi hata ay�klama �zellikleri bulunmaktad�r? + +PostgreSQL, hata ay�klama amac�yla kullan�labilecek durum bilgisi rapor +eden �e�itli �zeliklere sahiptir. + +�ncelikle, configure beti�ini --enable-cassert se�ene�iyle +�al��t�r�rsan�z, bir �ok assert() backend cal��mas�n� g�zlemler ve +beklenmeyen bir durumda program� durdurur. + +Postmaster ve postgres �e�itli hata ay�klama se�eneklerine sahiptir. +�ncelikle, postmaster'i ba�latt���n�zda, standart ��kt�y� ve hatalar� +bir log dosyas�na y�nlendirdi�inize emin olun: + +cd /usr/local/pgsql +./bin/postmaster >server.log 2>&1 & + +Bu i�lem PostgreSQL ana dizinine server.log dosyas� yerle�tirecektir. Bu +dosya sunucunun ya�ad��� sorunlar ya da hatalar hakk�nda yararl� +bilgiler i�erir. -d se�ene�i, hata ay�klama seviyesini belirten bir +rakam ile kullan�l�r. Y�ksek hata ay�klama seviyelerinin b�y�k log +dosyalar� olu�turaca��n� unutmay�n�z. + +E�er postmaster �al��m�yorsa, postgres backend'ini komut sat�r�ndan +�al��t�rabilir ve SQL ifadenizi direk olarak yazabilirsiniz. Bu sadece +hata ay�klama amac�yla �nerilir. Burada, noktal� virg�l�n de�il de yeni +bir sat�r�n sorguyu sonland�rd���n� unutmay�n�z. E�er hata ay�klama +sembolleri ile derlediyseniz, ne oldu�unu g�rmek i�in bir hata +ay�klay�c� kullanabilirsiniz. backend postmasterdan ba�lat�lmad���ndan, +e�de�er bir ortamda �al��mamaktad�r ve locking/backend etkile�im +sorunlar� artabilir. + +E�er postmaster �al���yorsa, bir pencerede psql'i �al��t�r�n ve psql +taraf�ndan kullan�lan postgres s�recinin s�re� numaras�n� (PID) bulun. +Postgres s�reci ile ili�kilendirmek i�in bir hata ay�klar�c� kullan�n. +Sorgular� psql arac�l��� ile �al��t�rabilirsiniz. E�er postgres +ba�lang�c�nda hata ay�klamak istiyorsan�z, PGOPTIONS="-W n" se�ene�ini +ayarlayabilir ve psql'i ba�latabilirsiniz. Bu i�lem, ba�lang�c�n n +saniye kadar gecikmesini sa�layacakt�r; b�ylece hata ay�klay�c�y� s�rece +ili�kilendirdikten sonra ba�lang�� s�recinin devam etmesini +sa�layabilirsiniz. + +postgres program� hata ay�klama ve ba�ar�m �l��mleri i�in -s, -A ve -t +se�eneklerine sahiptir. + + + 3.8) Baglanmaya �al�s�ken, neden "Sorry, too many clients" + hatas�n� al�yorum? + +Postmaster'in e�zamanl� olarak ba�latabilece�i backend s�re�leri +s�n�rlar�n� artt�rman�z gerekmektedir. + +�n tan�ml� de�er 32 s�re�tir. Bunu, postmaster'i uygun -N de�eri ile ya +da postgresql.conf dosyas�n� d�zenleyerek yeniden ba�latmakla +artt�rabilirsiniz. + +E�er -N de�erini 32'den b�y�k yapacaksan�z, ayn� zamanda -B de�erini de +de�i�tirmeniz gerekti�ini unutmay�n. -B -N'nin en az 2 kat� kadar +olmal�d�r; daha iyi ba�ar�m i�in bu say�y� daha da artt�rmal�s�n�z. +Y�ksek say�daki backend s�re�leri i�in, �e�itli �ekirdek yap�land�rma +parametrelerini artt�rman�z gerekecektir. Yap�lmas� gerekenler, SHMMAX, +SEMMNS, SEMMNI, NPROC, MAXUPRC ve a��labilecek dosyalar�n maksimum +say�s� olan NFILE ve NINODE de�erlerini kar��t�rmakt�r. Bunun nedeni, +PostgreSQL'in izin verilen backend s�re�lerinin say�s� �zerinde bir +s�n�r� olmas�d�r. B�ylelikle sistem kaynaklar�n�n d���na ��k�lmayacakt�r. + +PostgreSQL'in 6.5 s�r�m�ne kadar, en fazla backend say�s� 64 idi ve bunu +de�i�tirmek i�in include/storage/sinvaladt.h dosyas� i�indeki +MaxBAckendid sabitini de�i�tirdek sonra yaz�l�m� yeniden derlemek +gerekiyordu. + + + 3.9) pgsql_tmp dizinin i�indeki dosyalar nelerdir? + +Sorgu �al�st�r�c� (query executer) taraf�ndan yarat�lan ge�ici +dosyalard�r. �rnegin, bir s�ralama ORDER BY ile yapilacaksa ve s�ralama +backend'in -s parametresinin izin verdiginden daha fazla alana +gereksinim duyuyorsa, ekstra veriyi tutmak i�in ge�ici dosyalar yarat�l�r. + +Ge�ici dosyalar, eger s�ralama s�ras�nda backend g��mezse otomatik +olarak silinecektir. Eger �al�san durumda bir backendiniz yoksa, +pg_tempNNN.NN dosyalar�n� silmeniz g�venlidir.. + + + 3.10) PostgreSQL s�r�mlerini y�kselmek i�in neden bir + dump/reload i�lemi ger�ekle�tirmek zorunday�m? + +PostgreSQL tak�m� ara s�r�mlerde sadece k���k de�i�iklikler yapmaktad�r; +bu y�zden 7.2 s�r�m�nden 7.2.1'e y�kseltmek dump/restore i�lemi +gerekmemektedir. Ancak, esas s�r�mlerde (�rnek: 7.2'den 7.3'e) +�o�unlukla sistem tablolar�n�n ve veri dosyalar�n�n i� yap�s� +de�i�tirilir. Bu de�i�iklikler �o�unlukla karma��kt�r; dolay�s�yla veri +dosyalar�n�n geriye d�n�k uyumlulu�u i�lemlerini yapm�yoruz. Dump +i�lemi, veriyi genel bi�imde alaca��ndan yeniden y�kleme esnas�nda veri, +yeni i� bi�ime uygun �ekilde yerle�tirilecektir. + +Disk bi�iminin de�i�medi�i s�r�mlerde, pg_upgrade beti�i g�ncellemenin +bir dump/restore gerektirmeden yap�lmas�n� sa�layacakt�r. pg_upgrade +beti�inin o s�r�m i�in bulunup bulunmad���n� s�r�m notlar� i�inde +bulabilirsiniz. + +------------------------------------------------------------------------ + + + ��letimsel Sorular + + + 4.1) Binary cursor ve normal cursor arasindaki fark nedir? + +DECLARE yard�m sayfasina bakiniz. + + + 4.2) Sorgunun sadece ilk birka� sat�r�n� nasil SELECT edebilirim? + +FETCH yard�m sayfasina bakiniz, aya da SELECT ... LIMIT.... kullan�n�z. + +The entire query may have to be evaluated, even if you only want the +first few rows. Consider a query that has an ORDER BY. �f there is an +index that matches the ORDER BY, PostgreSQL may be able to evaluate only +the first few records requested, or the entire query may have to be +evaluated until the desired rows have been generated. + + + 4.3) psql'in i�inde g�rd�g�m tablolarin ya da diger seylerin + listesini nasil alabilirim? + +pgsql/src/bin/psql/describe.c i�indeki psql kaynak kodunu +okuyabilirsiniz. Bu kod, psql'in \ ile baslayan komutlar�n�n ��kt�s�n� +olusturan SQL komutlarini i�erir. Ayn� zamanda, psql'i -E se�ene�i ile +ba�lat�p, verdi�iniz komutlar� �al��t�rmak i�in yapt��� sorgular�n +��kt�lar�n� g�rebilirsiniz. + + + 4.4) Bir tablodan bir kolonu nas�l kald�rabilirim? + +Bu �zellik (ALTER TABLE DROP COLUMN) 7.3 s�r�m� ile gelmi�tir. Eski +s�r�mlerde a�a��dakileri uygulamal�s�n�z: + +BEGIN; +LOCK TABLE old_table; +SELECT ... -- select all columns but the one you want to remove +INTO TABLE new_table +FROM old_table; +DROP TABLE old_table; +ALTER TABLE new_table RENAME TO old_table; +COMMIT; + + + + 4.5) Bir sat�r, tablo ve veritaban� icin en fazla b�y�kl�k nedir? + +S�n�rlar: + +Veritabani icin en fazla b�y�kl�k nedir? +S�n�rs�z (4 TB'l�k veritaban� bulunmaktad�r) + +Bir tablo icin en fazla b�y�kl�k nedir? +16 TB + +Bir sat�r i�in en fazla b�y�kl�k nedir? +1.6 TB + +Bir alan i�in en fazla b�y�kl�k nedir? +1 GB + +Tabloda en fazla sat�r say�s� ka�t�r? +S�n�rs�z + +Bir tabloda olabilecek en fazla kolon say�s� ka�t�r? +Kolon tiplerine ba�l� olarak 250-1600 + +Bir tabloda olabilecek en fazla index say�s� ka�t�r? +s�n�rs�z + +These are the limits: + + Maximum size for a database? unlimited (4 TB databases exist) + Maximum size for a table? 16 TB + Maximum size for a row? 1.6TB + Maximum size for a field? 1 GB + Maximum number of rows in a table? unlimited + Maximum number of columns in a table? 250-1600 depending on column types + Maximum number of indexes on a table? unlimited + +Of course, these are not actually unlimited, but limited to available +disk space and memory/swap space. Performance may suffer when these +values get unusually large. + +The maximum table size of 16 TB does not require large file support from +the operating system. Large tables are stored as multiple 1 GB files so +file system size limits are not important. + +The maximum table size and maximum number of columns can be increased if +the default block size is increased to 32k. + + + 4.6) How much database disk space is required to store data from + a typical text file? + +A PostgreSQL database may require up to five times the disk space to +store data from a text file. + +As an example, consider a file of 100,000 lines with an integer and text +description on each line. Suppose the text string avergages twenty bytes +in length. The flat file would be 2.8 MB. The size of the PostgreSQL +database file containing this data can be estimated as 6.4 MB: + + 36 bytes: each row header (approximate) + 24 bytes: one int field and one text field + + 4 bytes: pointer on page to tuple + ---------------------------------------- + 64 bytes per row + + The data page size in PostgreSQL is 8192 bytes (8 KB), so: + + 8192 bytes per page + ------------------- = 128 rows per database page (rounded down) + 64 bytes per row + + 100000 data rows + -------------------- = 782 database pages (rounded up) + 128 rows per page + +782 database pages * 8192 bytes per page = 6,406,144 bytes (6.4 MB) + +Indexes do not require as much overhead, but do contain the data that is +being indexed, so they can be large also. + +NULLs are stored in bitmaps, so they use very little space. + + + 4.7) How do I find out what tables, indexes, databases, and + users are defined? + +/psql/ has a variety of backslash commands to show such information. Use +\? to see them. There are also system tables beginning with /pg_/ that +describe these too. Also, /psql -l/ will list all databases. + +Also try the file /pgsql/src/tutorial/syscat.source/. It illustrates +many of the SELECTs needed to get information from the database system +tables. + + + 4.8) My queries are slow or don't make use of the indexes. Why? + +Indexes are not automatically used by every query. Indexes are only used +if the table is larger than a minimum size, and the query selects only a +small percentage of the rows in the table. This is because the random +disk access caused by an index scan can be slower than a straight read +through the table, or sequential scan. + +To determine if an index should be used, PostgreSQL must have statistics +about the table. These statistics are collected using VACUUM ANALYZE, or +simply ANALYZE. Using statistics, the optimizer knows how many rows are +in the table, and can better determine if indexes should be used. +Statistics are also valuable in determining optimal join order and join +methods. Statistics collection should be performed periodically as the +contents of the table change. + +Indexes are normally not used for ORDER BY or to perform joins. A +sequential scan followed by an explicit sort is usually faster than an +index scan of a large table. + +However, LIMIT combined with ORDER BY often will use an index because +only a small portion of the table is returned. In fact, though MAX() and +MIN() don't use indexes, it is possible to retrieve such values using an +index with ORDER BY and LIMIT: + + SELECT col + FROM tab + ORDER BY col [ DESC ] + LIMIT 1; + +If you believe the optimizer is incorrect in choosing a sequential scan, +use |SET enable_seqscan TO 'off'| and run tests to see if an index scan +is indeed faster. + +When using wild-card operators such as LIKE or /~/, indexes can only be +used in certain circumstances: + + * The beginning of the search string must be anchored to the start + of the string, i.e. + o LIKE patterns must not start with /%/. + o /~/ (regular expression) patterns must start with /^/. + * The search string can not start with a character class, e.g. [a-e]. + * Case-insensitive searches such as ILIKE and /~*/ do not utilise + indexes. Instead, use functional indexes, which are described in + section 4.12 <#4.12>. + * The default /C/ locale must be used during /initdb/. + + + 4.9) How do I see how the query optimizer is evaluating my query? + +See the EXPLAIN manual page. + + + 4.10) What is an R-tree index? + +An R-tree index is used for indexing spatial data. A hash index can't +handle range searches. A B-tree index only handles range searches in a +single dimension. R-trees can handle multi-dimensional data. For +example, if an R-tree index can be built on an attribute of type +/point/, the system can more efficiently answer queries such as "select +all points within a bounding rectangle." + +The canonical paper that describes the original R-tree design is: + +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. + +You can also find this paper in Stonebraker's "Readings in Database +Systems". + +Built-in R-trees can handle polygons and boxes. In theory, R-trees can +be extended to handle higher number of dimensions. In practice, +extending R-trees requires a bit of work and we don't currently have any +documentation on how to do it. + + + 4.11) What is the Genetic Query Optimizer? + +The GEQO module speeds query optimization when joining many tables by +means of a Genetic Algorithm (GA). It allows the handling of large join +queries through nonexhaustive search. + + + 4.12) How do I perform regular expression searches and + case-insensitive regular expression searches? How do I use an + index for case-insensitive searches? + +The /~/ operator does regular expression matching, and /~*/ does +case-insensitive regular expression matching. The case-insensitive +variant of LIKE is called ILIKE. + +Case-insensitive equality comparisons are normally expressed as: + + SELECT * + FROM tab + WHERE lower(col) = 'abc'; + +This will not use an standard index. However, if you create a functional +index, it will be used: + + CREATE INDEX tabindex ON tab (lower(col)); + + + 4.13) In a query, how do I detect if a field is NULL? + +You test the column with IS NULL and IS NOT NULL. + + + 4.14) What is the difference between the various character types? + +Type Internal Name Notes +-------------------------------------------------- +VARCHAR(n) varchar size specifies maximum length, no padding +CHAR(n) bpchar blank padded to the specified fixed length +TEXT text no specific upper limit on length +BYTEA bytea variable-length byte array (null-byte safe) +"char" char one character + +You will see the internal name when examining system catalogs and in +some error messages. + +The first four types above are "varlena" types (i.e., the first four +bytes on disk are the length, followed by the data). Thus the actual +space used is slightly greater than the declared size. However, these +data types are also subject to compression or being stored out-of-line +by TOAST, so the space on disk might also be less than expected. + +VARCHAR(n) is best when storing variable-length strings and it limits +how long a string can be. TEXT is for strings of unlimited length, with +a maximum of one gigabyte. + +CHAR(n) is for storing strings that are all the same length. CHAR(n) +pads with blanks to the specified length, while VARCHAR(n) only stores +the characters supplied. BYTEA is for storing binary data, particularly +values that include NULL bytes. All the types described here have +similar performance characteristics. + + + 4.15.1) How do I create a serial/auto-incrementing field? + +PostgreSQL supports a SERIAL data type. It auto-creates a sequence and +index on the column. For example, this: + + CREATE TABLE person ( + id SERIAL, + name TEXT + ); + +is automatically translated into this: + + CREATE SEQUENCE person_id_seq; + CREATE TABLE person ( + id INT4 NOT NULL DEFAULT nextval('person_id_seq'), + name TEXT + ); + CREATE UNIQUE INDEX person_id_key ON person ( id ); + +See the /create_sequence/ manual page for more information about +sequences. You can also use each row's /OID/ field as a unique value. +However, if you need to dump and reload the database, you need to use +/pg_dump/'s /-o/ option or COPY WITH OIDS option to preserve the OIDs. + + + 4.15.2) How do I get the value of a SERIAL insert? + +One approach is to retrieve the next SERIAL value from the sequence +object with the /nextval()/ function /before/ inserting and then insert +it explicitly. Using the example table in 4.15.1 <#4.15.1>, an example +in a pseudo-language would look like this: + + new_id = execute("SELECT nextval('person_id_seq')"); + execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')"); + +You would then also have the new value stored in |new_id| for use in +other queries (e.g., as a foreign key to the |person| table). Note that +the name of the automatically created SEQUENCE object will be named +</table/>_</serialcolumn/>_/seq/, where /table/ and /serialcolumn/ are +the names of your table and your SERIAL column, respectively. + +Alternatively, you could retrieve the assigned SERIAL value with the +/currval()/ function /after/ it was inserted by default, e.g., + + execute("INSERT INTO person (name) VALUES ('Blaise Pascal')"); + new_id = execute("SELECT currval('person_id_seq')"); + +Finally, you could use the OID <#4.16> returned from the INSERT +statement to look up the default value, though this is probably the +least portable approach. In Perl, using DBI with Edmund Mergl's DBD::Pg +module, the oid value is made available via /$sth->{pg_oid_status}/ +after /$sth->execute()/. + + + 4.15.3) Don't /currval()/ and /nextval()/ lead to a race + condition with other users? + +No. /currval()/ returns the current value assigned by your backend, not +by all users. + + + 4.15.4) Why aren't my sequence numbers reused on transaction + abort? Why are there gaps in the numbering of my sequence/SERIAL + column? + +To improve concurrency, sequence values are given out to running +transactions as needed and are not locked until the transaction +completes. This causes gaps in numbering from aborted transactions. + + + 4.16) What is an OID? What is a TID? + +OIDs are PostgreSQL's answer to unique row ids. Every row that is +created in PostgreSQL gets a unique OID. All OIDs generated during +/initdb/ are less than 16384 (from /include/access/transam.h/). All +user-created OIDs are equal to or greater than this. By default, all +these OIDs are unique not only within a table or database, but unique +within the entire PostgreSQL installation. + +PostgreSQL uses OIDs in its internal system tables to link rows between +tables. These OIDs can be used to identify specific user rows and used +in joins. It is recommended you use column type OID to store OID values. +You can create an index on the OID field for faster access. + +OIDs are assigned to all new rows from a central area that is used by +all databases. If you want to change the OID to something else, or if +you want to make a copy of the table, with the original OIDs, there is +no reason you can't do it: + + CREATE TABLE new_table(old_oid oid, mycol int); + SELECT old_oid, mycol INTO new FROM old; + COPY new TO '/tmp/pgtable'; + DELETE FROM new; + COPY new WITH OIDS FROM '/tmp/pgtable'; + +OIDs are stored as 4-byte integers, and will overflow at 4 billion. No +one has reported this ever happening, and we plan to have the limit +removed before anyone does. + +TIDs are used to identify specific physical rows with block and offset +values. TIDs change after rows are modified or reloaded. They are used +by index entries to point to physical rows. + + + 4.17) What is the meaning of some of the terms used in PostgreSQL? + +Some of the source code and older documentation use terms that have more +common usage. Here are some: + + * table, relation, class + * row, record, tuple + * column, field, attribute + * retrieve, select + * replace, update + * append, insert + * OID, serial value + * portal, cursor + * range variable, table name, table alias + +A list of general database terms can be found at: +http://hea-www.harvard.edu/MST/simul/software/docs/pkgs/pgsql/glossary/glossary.html + + + 4.18) Why do I get the error /"ERROR: Memory exhausted in + AllocSetAlloc()"/? + +You probably have run out of virtual memory on your system, or your +kernel has a low limit for certain resources. Try this before starting +/postmaster/: + + ulimit -d 262144 + limit datasize 256m + +Depending on your shell, only one of these may succeed, but it will set +your process data segment limit much higher and perhaps allow the query +to complete. This command applies to the current process, and all +subprocesses created after the command is run. If you are having a +problem with the SQL client because the backend is returning too much +data, try it before starting the client. + + + 4.19) How do I tell what PostgreSQL version I am running? + +From /psql/, type |SELECT version();| + + + 4.20) Why does my large-object operations get /"invalid large + obj descriptor"/? + +You need to put |BEGIN WORK| and |COMMIT| around any use of a large +object handle, that is, surrounding |lo_open| ... |lo_close.| + +Currently PostgreSQL enforces the rule by closing large object handles +at transaction commit. So the first attempt to do anything with the +handle will draw /invalid large obj descriptor/. So code that used to +work (at least most of the time) will now generate that error message if +you fail to use a transaction. + +If you are using a client interface like ODBC you may need to set +|auto-commit off.| + + + 4.21) How do I create a column that will default to the current + time? + +Use /CURRENT_TIMESTAMP/: + +|CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP ); +| + + + 4.22) Why are my subqueries using |IN| so slow? + +Currently, we join subqueries to outer queries by sequentially scanning +the result of the subquery for each row of the outer query. If the +subquery returns only a few rows and the outer query returns many rows, +|IN| is fastest. To speed up other queries, replace |IN| with |EXISTS|: + + SELECT * + FROM tab + WHERE col IN (SELECT subcol FROM subtab); + +to: + + SELECT * + FROM tab + WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col); + +For this to be fast, |subcol| should be an indexed column. This +preformance problem will be fixed in 7.4. + + + 4.23) How do I perform an outer join? + +PostgreSQL supports outer joins using the SQL standard syntax. Here are +two examples: + + SELECT * + FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col); + +or + + SELECT * + FROM t1 LEFT OUTER JOIN t2 USING (col); + +These identical queries join t1.col to t2.col, and also return any +unjoined rows in t1 (those with no match in t2). A RIGHT join would add +unjoined rows of t2. A FULL join would return the matched rows plus all +unjoined rows from t1 and t2. The word OUTER is optional and is assumed +in LEFT, RIGHT, and FULL joins. Ordinary joins are called INNER joins. + +In previous releases, outer joins can be simulated using UNION and NOT +IN. For example, when joining /tab1/ and /tab2/, the following query +does an /outer/ join of the two tables: + + SELECT tab1.col1, tab2.col2 + FROM tab1, tab2 + WHERE tab1.col1 = tab2.col1 + UNION ALL + SELECT tab1.col1, NULL + FROM tab1 + WHERE tab1.col1 NOT IN (SELECT tab2.col1 FROM tab2) + ORDER BY col1 + + + 4.24) How do I perform queries using multiple databases? + +There is no way to query a database other than the current one. Because +PostgreSQL loads database-specific system catalogs, it is uncertain how +a cross-database query should even behave. + +/contrib/dblink/ allows cross-database queries using function calls. Of +course, a client can make simultaneous connections to different +databases and merge the results on the client side. + + + 4.25) How do I return multiple rows or columns from a function? + +In 7.3, you can easily return multiple rows or columns from a function, +http://techdocs.postgresql.org/guides/SetReturningFunctions +<http://techdocs.postgresql.org/guides/SetReturningFunctions>. + + + 4.26) Why can't I reliably create/drop temporary tables in + PL/PgSQL functions? + +PL/PgSQL caches function contents, and an unfortunate side effect is +that if a PL/PgSQL function accesses a temporary table, and that table +is later dropped and recreated, and the function called again, the +function will fail because the cached function contents still point to +the old temporary table. The solution is to use EXECUTE for temporary +table access in PL/PgSQL. This will cause the query to be reparsed every +time. + + + 4.27) What replication options are available? + +There are several master/slave replication options available. These +allow only the master to make database changes and the slave can only do +database reads. The bottom of +http://gborg.PostgreSQL.org/genpage?replication_research +<http://gborg.postgresql.org/genpage?replication_research> lists them. A +multi-master replication solution is being worked on at +http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php +<http://gborg.postgresql.org/project/pgreplication/projdisplay.php>. + + + 4.28) What encryption options are available? + + * /contrib/pgcrypto/ contains many encryption functions for use in + SQL queries. + * The only way to encrypt transmission from the client to the server + is by using /hostssl/ in /pg_hba.conf/. + * Database user passwords are automatically encrypted when stored in + version 7.3. In previous versions, you must enable the option + /PASSWORD_ENCRYPTION/ in /postgresql.conf/. + * The server can run using an encrypted file system. + +------------------------------------------------------------------------ + + + Extending PostgreSQL + + + 5.1) I wrote a user-defined function. When I run it in /psql/, + why does it dump core? + +The problem could be a number of things. Try testing your user-defined +function in a stand-alone test program first. + + + 5.2) How can I contribute some nifty new types and functions to + PostgreSQL? + +Send your extensions to the /pgsql-hackers/ mailing list, and they will +eventually end up in the /contrib// subdirectory. + + + 5.3) Bir tuple d�nd�rmek i�in bir C fonksiyonunu nas�l yazar�m? + +PostgreSQL 7.3 s�r�m� ile birlikte, C, PL/PgSQL ve SQL kullan�larak +tablo-d�nd�ren fonksiyonlar tamamen desteklenmektedir. Ayr�nt�l� bilgi +i�in "Programmer's Guide" a bakabilrisiniz. Bir �rne�i +/contrib/tablefunc/ i�inde bulabilirsiniz. + + + 5.4) Bir kaynak dosyas�nda de�i�iklik yapt�m. Yeniden derlememe + ra�men de�i�iklik ge�erli olmuyor. Neden? + +/Makefile'lar/ include dosyalar� i�in tam bir ba��ml�l�k i�ermezler. +�ncelikle /make clean/, ard�ndan da baska bir /make/ i�lemi yapman�z +gerekir. GCC kullan�yorsaniz, /configure/ beti�inin /--enable-depend/ +se�ene�ini, derleyicinin ba��ml�l�klar� otomatik olarak hesaplamas� i�in +kullanabilirsiniz. + |