		PostgreSQL iin Ska Sorulan Sorular (SSS)
                                       
   Son gncelleme : 23 ubat 2004  Pazartesi - 13:34:26

   Bruce Momjian (pgman@candle.pha.pa.us)
   eviren : Devrim GNDZ (devrim@gunduz.org), Nicolai Tufar (ntufar@yahoo.com), Volkan YAZICI (vyazici@phreaker.net)
   
   Bu belgenin en gncel hali, http://www.gunduz.org/seminer/pg/FAQ_turkish.html ve 
   http://www.PostgreSQL.org/docs/faq-turkish.html 
   adreslerinde gorlebilir.
   
   Platforma zel sorularnz, 
   http://www.PostgreSQL.org/users-lounge/docs/faq.html adresinde yantlanr.
     _________________________________________________________________
   
                             Genel Sorular
                                      
   1.1) PostgreSQL nedir? Nasl okunur?
   1.2) PostgreSQL' in haklar nedir?
   1.3) PostgreSQL, hangi Unix platformlarnda alsr?
   1.4) Hangi Unix olmayan uyarlamalar bulunmaktadr?
   1.5) PostgreSQL'i nereden indirebilirim?
   1.6) Destei nereden alabilirim?
   1.7) En son srm nedir?
   1.8) Hangi belgelere ulasabilirim?
   1.9) Bilinen hatalar ya da eksik zelliklere nereden ulasabilirim?
   1.10) Nasl SQL grenebilirim?
   1.11) PostgreSQL 2000 ylna uyumlu mudur?
   1.12) Gelitirme takmna nasl katlabilirim?
   1.13) Bir hata raporunu nasl gnderebilirim?
   1.14) PostgreSQL, diger DBMS'lerle nasl karlatrlabilir?
   1.15) PostgreSQL'e maddi adan nasl destek olabilirim?
   
                      Kullanc/istemci Sorular
                                      
   2.1) PostgreSQL icin ODBC srcleri var m?
   2.2) PostgreSQL'i web sayfalarnda kullanabilmek iin hangi aralar bulunmaktadr?
   2.3) PostgreSQL'in grafik kullanc arabirimi var mdr? 
        Report generator var mdr? Gml sorgu dili arabirimi var mdr?
   2.4) PostgreSQL ile iletiimi kurabilmek iin hangi dilleri kullanabilirim?
   
                   Ynetimsel Sorular
                                      

   3.1) PostgreSQL'i, /usr/local/pgsql dizininden baka dizinlere nasl kurabilirim?
   3.2) Postmaster'i baslattgmda, Bad System Call ya da core dumped mesaj 
	alyorum. Neden?
   3.3) Postmaster'i balattmda, IpcMemoryCreate hatas alyorum. Neden?
   3.4) Postmaster'i balattmda, IpcSemaphoreCreate hatas alyorum. Neden?
   3.5) Dier bilgisayarlarn benim PostgreSQL veritaban sunucuma balantlarn nasl 
	kontrol edebilirim?
   3.6) Veritaban motorunu daha iyi baarm icin nasl ayarlayabilirim?
   3.7) Hangi hata ayklama zellikleri bulunmaktadr?
   3.8) Balanmaya alrken, neden "Sorry, too many clients" hatasn alyorum?
   3.9) pgsql_tmp dizininin iindeki dosyalar nelerdir?
   3.10) PostgreSQL srmlerini ykselmek iin neden bir dump/reload ilemi gerekletirmek 
	zorundaym?

                        letimsel Sorular
                                      
   4.1) Binary cursor ve normal cursor arasndaki fark nedir?
   4.2) Sorgunun sadece ilk birka satrn nasl SELECT edebilirim?
   4.3) psql'in iinde grdm tablolarn ya da dier eylerin listesini nasl alabilirim?
   4.4) Bir tablodan bir kolonu nasl kaldrabilirim?
   4.5) Bir satr, tablo ve veritaban icin en fazla byklk nedir? 
   4.6) Tipik bir metin dosyasndaki veriyi saklamak iin ne kadar disk alan gereklidir?
   4.7) Veritabannda hangi tablo ya da indexlerin tanmlandgn nasl grebilirim?
   4.8) Sorgularm cok yava, ya da indexlerimi kullanmyorlar. Neden?
   4.9) Query-optimizer in sorgularm nasl deerlendirdigini, ileme soktuunu nasl grebilirim?
   4.10) R-tree index nedir?
   4.11) Genetic Query Optimizer nedir?
   4.12) Dzenli ifade (Regular Expression) aramalarn ve byk/kk harfe duyarsz aramalar nasl yapabilirim?
	Bu byk(kk harfe duyarl aramalar iin indeksi nasl kullanabilirim?

   4.13) Bir sorguda, bir alann "NULL" olduunu nasl ortaya karabilirim?
   4.14) esitli karakter tipleri arasndaki farklar nelerdir?
   4.15.1) Nasl serial/otomatik artan(auto-incrementing) bir alan yaratabilirim?
   4.15.2) SERIAL giriinin deerini nasl alabilirim?
   4.15.3) currval() ve  nextval() dier kullanclara sorun yaratmaz m?
   4.15.4) Neden sequence saylarn transaction ileminin iptalinden sonra yeniden kullanlyor? Neden sequence/SERIAL 
	kolonumdaki saylarda atlamalar oluyor?
   4.16) OID nedir? TID nedir?
   4.17) PostgreSQL' de kullanlan baz terimlerin anlamlar nelerdir?
   4.18) Neden  "ERROR: Memory exhausted in AllocSetAlloc()"? hatasn alyorum?
   4.19) Hangi PostgreSQL srmn alstrdm nasl grebilirim?
   4.20) Neden large-object ilemlerim, "invalid large obj descriptor"? hatasn veriyor?
   4.21) u andaki zaman ntanml deer olarak kabul eden kolonu nasl yaratrm?
   4.22) Neden IN kullanan subquerylerim ok yava?
   4.23) Outer join ilemini nasl yapabilirim?
   4.24) Ayn anda birden fazla veritabannda nasl ilem yapabilirim?
   4.25) Bir fonksiyondan nasl oklu satr ya da kolon dndrebilirim?
   4.26) Neden PL/pgSQL fonksiyonlar iinden gvenli bir ekilde tablo yaratma/kaldrma ilemlerini yapamyoruz?
   4.27) Hangi replikasyon seenekleri bulunmaktadr?
   4.28) Hangi ifreleme seenekleri bulunmaktadr?
	
	PostgreSQL zelliklerini Geniletmek
                                      
   5.1) Kullanc-tanml bir fonksiyon yazdm. psql'de altrdm zaman neden 
	core dump ediyor?
   5.2) PostgreSQL'e nasl yeni veri tipleri/fonksiyonlar ekleyebilirim?
   5.3) Bir tuple dndrmek iin bir C fonksiyonunu nasl yazarm?
   5.4) Bir kaynak dosyasnda deisiklik yaptm. Yeniden derlememe ramen 
	deiiklik geerli olmuyor. Neden?
     _________________________________________________________________
   
                             Genel sorular
                                      
    1.1) PostgreSQL nedir?
    
   PostgreSQL, Post-Gres-Q-L olarak okunur.
   
   PostgreSQL, yeni-nesil VTYS arastrma prototipi olan POSTGRES veritaban 
   ynetim sisteminin gelitirilmesidir. POSTGRES' in zengin veri 
   tiplerini ve gl veri modelini tutarken, SQL'in gelitirilmis alt kmesi 
   olan PostQuel dilini kullanr. PostgreSQL cretsizdir ve kaynak kodu ak datlr.

   PostgreSQL, PostgreSQL gelistirme listesine ye olan bir nternet gelistirici
   takm tarafndan gelitirilir. u andaki koordinatr, Marc G. Fournier 
   (scrappy@PostgreSQL.org). (Bu takma nasl katlacagnz grenmek iin  
   1.6 numaral maddeyi okuyunuz.) Bu takm, tm PostgreSQL geliiminden sorumludur.

   PostgreSQL 1.01 srmnn yazarlar Andrew Yu ve Jolly Chen idi. Bunlarn dsnda bir ka kisi de uyarlama,
   hata ayklama ve kodun gelistirilmesi iin alsmst. PostgreSQL'in tredigi orijinal Postgres kodu, 
   lisans, lisansst ve akademisyenler tarafindan, Professor Michael Stonebraker ) University of
   California, Berkeley) koordinatrlgnde yazlmstr.
   
   Berkley'deki yazlmm ad Postgres idi. SQL uyumlulugu 1995'te eklenince, ad Postgres 95
   oldu. 1996 ylnn sonlarnda 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.
   
   stteki metin klasik ak-kod lisans olan BSD lisansdr. Kaynak kodun nasl 
   kullanlabileceine dair snrlamalar yoktur. Bu lisansi seviyoruz ve deitirme 
   niyetimiz bulunmamaktadr.
   
       1.3) PostgreSQL, hangi Unix platforlarnda alsr?
    
   Genel olarak, modern bir Unix-uyumlu platform PostgreSQL'i alstracaktr.
   Ayrntl bilgi iin kurulum belgelerine bakabilirsiniz
   
       1.4) Hangi Unix olmayan uyarlamalar bulunmaktadr?
    
   stemci
   
   libpq C ktphanesini, psql ve diger arabirimleri ve binary dosyalar, MS
   Windows ortamlarnda alsmas iin derlemeniz mmkndr. Bu rnekte  istemcide
   MS Windows alsyor ve desteklenen Unix platformlarndan birinde alsan PostgreSQL
   sunucuna TCP/IP ile baglanmaktadr. Datm iindeki win32.mak dosyas ile,
   Win32 libpg ktphanesi ve psql yaratabilirsiniz. PostgreSQL ayn zamanda ODBC
   istemcileri ile haberlesebilmektedir.

   Sunucu

   Veritaban sunucusu Cygwin kullanarak Windows NT, 2K ya da XP zerinde altrlabilir.
   Datm iindeki pgsql/doc/FAQ_MSWN dosyasn ya da web sitemizdeki MS Windows FAQ'u
   inceleyebilirsiniz. 
	
   Doal Windows NT/2000/XP portu iin u anda almalar devam etmektedir. Windows srm  
   hakknda gncel bilgi iin, http://techdocs.postgresql.org/guides/Windows adresini 
   ziyaret edebilirsiniz.
 	
   Ayrca, http://forge.novell.com adresinde Novell Netware 6 portu bulunmaktadr.  

       1.5) PostgreSQL'i nereden indirebilirim?
    
   PostgreSQL iin ana anonim ftp sitesi ftp://ftp.PostgreSQL.org/pub ' dur.
   Yanslar iin, ana web sayfamza bakabilirsiniz.
   
   1.6) Destei nereden alabilirim?
    
   Ana e-posta listesi : pgsql-general@PostgreSQL.org. PostgreSQL konusundaki tartmalara
   aktr. ye olmak iin, asadaki satrlar e-postanzn gvde ksmna (konu ksmna deil)
   yazp, pgsql-general-request@PostgreSQL.org adresine gnderin:

    subscribe
    end

   Ayn zamanda, bir digest listesi bulunmaktadr. Bu listeye ye olmak iin, 
    pgsql-general-digest-request@PostgreSQL.org adresine, body ksmnda
   
    subscribe
    end

   yazan bir e-posta atmanz yeterli olacaktr.

   Digest postalar, ana liste 30k civarnda e-postaya ulastnda yelere gnderilmektedir.

   Buglar iin bir e-posta listesi bulunmaktadr. Bu listeye ye olmak iin,
   pgsql-bugs-request@PostgreSQL.org adresine, body ksmnda

    subscribe
    end

    yazan bir e-posta atmanz yeterli olacaktr.

   Ayn zamanda, gelitiriciler iin tartma listesi bulunmaktadr. Bu listeye ye olmak
   iin,  pgsql-hackers-request@PostgreSQL.org adresine,  gvde ksmnda

    subscribe
    end

   yazan bir e-posta atmanz yeterli olacaktr.

   Bunlarn dndaki e-posta listelerine ve PostgreSQL hakknda bilgiye, PostgreSQL WWW 
   ana sayfasndan ulaabilirsiniz:
   
     http://www.PostgreSQL.org

   Ayn zamanda, EFNet ve OpenProjects zerinde, #PostgreSQL adl bir IRC kanal bulunmaktadr. Bunun iin,
    irc -c '#PostgreSQL' "$USER" irc.phoenix.net Unix komutunu kullanabilirsiniz.
   
   Ticari destek veren firmalarn listesine,

   http://www.postgresql.org/users-lounge/commercial-support.html
 
   adresinden ulasabilirsiniz.
   
       1.7) En son srm nedir?
    
   PostgreSQL'in son srm 7.3.3'tr. 

   Her 4 ayda major release karlmas planlanmaktadr.
   
       1.8) Hangi belgelere ulasabilirim?
    
   Datmn icinde, kitapciklar, kitapcik sayfalari ve bazi kk rnekler verilmektedir.
   /doc dizinine baknz. Ayrica, bu el kitapklarn 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 bulunmaktadr. PostgreSQL kitablarnn listesine, 
   http://www.ca.PostgreSQL.org/books/ adresinden ulaaiblirsiniz. Ayrca, PostgreSQL 
   konusundaki teknik makalelere de http://techdocs.PostgreSQL.org/ adresinden 
   ulaabilirsiniz.

   psql'in, \d ile baslayan veri tipler, operatorler, fonksiyonlar, aggregateler,vb. ile 
   ilgili gzel komutlar vardr.
   
   Web sitemiz daha fazla belgeyi iermektedir.
   
       1.9) Bilinen hatalar ya da eksik zelliklere nereden ulasabilirim?
    
   PostgreSQL SQL-92 uyumlugugu icindedir, standartlardan fazla da zellikleri
   bulunmaktadr. Bilinen hatalar, eksik zellikler ve gelecek ile ilgili planlar iin
   TODO listesine baknz.
   
       1.10) Nasl SQL grenebilirim?
    
   http:/www.PostgreSQL.org/docs/awbook.html adresindeki kitap SQL gretecektir.
   http://www.commandprompt.com/ppbook adresinde de bir baska PostgreSQL kitab bulunmaktadr.

   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 gzel belgeler bulunmaktadr.

   Bir bakas da,  http://members.tripod.com/er4ebus/sql/index.htm adresinde bulunan
   "Teach Yourself SQL in 21 Days, Second Edition" kitabdr.
   
   Baz kullanclarmz 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 ylna uyumlu mudur?
    
   Evet. 
   
       1.12) Gelistirme takmna nasl katlabilirim?
    
   ncelikle, en son kaynak kodunu indirin ve web sitemizdeki ya da dagtmn iindeki 
   PostgreSQL Developer belgesini okuyun. Ardindan, pgsql-hackers ve pgsql-patches 
   listelerine ye olun. nc olarak da, pgsql-pacthes listesine yksek kalitede 
   yamalar gnderin.

   PostgreSQL CVS arsivine erisim izni olan, 10 kadar gelistirici bulunmaktadir.
   Hepsi defalarca, diger kisilerin yaptigindan cok daha  yksek-kaliteli patchler 
   gondermislerdir. Ayrica biz de bu gelistiricilerin ekledikleri yamalarin yksek
   kalitede olduguna gveniyoruz.
   
       1.13) Bir hata raporunu nasl gnderebilirim? 

  PostgreSQL BugTool sayfasina gidiniz. O sayfada bir bug bildirmek icin neleri 
  yapmanz gerektigi anlatilmistir.
   
  Ayrca, ftp://ftp.PostgreSQL.org/pub ftp adresimizde, yeni bir PostgreSQL srm 
  ya da yamasi olup olmadigini kontrol ediniz.
   
       1.14) PostgreSQL, diger DBMS'lerle nasl karsilastrlabilir?
    
   Bir yazilimin gcn lmek iin esitli yollar vardir: Yazilimin zellikleri, 
   basarm, gvenilirligi, destegi ve creti.
   
   zellikler

   PostgreSQL mevcut byk ticari veritabanlarinin, transaction, subselect, 
   trigger, view, foreign key referential integrity ve sophisticated locking gibi
   tm zelliklerine sahiptir. Onlarin sahip olmadiklari, kullanici-tanimli tipler 
   (user-defined types), rules, inheritance  ve lock cakmalarn drmek iin 
   multi-version uyumluluk zellikleri bulunmaktadir.
          
   Performans (Baarm)

   PostgreSQL, dier ticari ve ak kaynak kodlu veritabanlaryla yakn baarm salar. 
   Baz alardan daha hzldr, dier alardan da yavatr. MySQL ya da daha zayf 
   veritabanlar ile karlatrldnda,insert/update islemlerinde, transaction bazl 
   alstmz iin daha yavaz. MySQL, yukardaki "zellikler" ksmnda belirtilenlerden
   hi birine sahip deildir. Biz, baarmmz her srmde arttrsak da, esneklik ve 
   gelimi zellikler iin yaplanms durumdayz . PostgreSQL'i MySQL ile karlatran  
   u web sitesine bakabilirsiniz: http://openacs.org/why-not-mysql.html
          
   Gvenilirlik
   DBMSlerin gvenilir olmas gerketigi, yoksa degerleri olmayacagini dsnyoruz
   ok iyi test edilmis, dengeli alsan minimum sayda hata ieren kod sunmaya alsyoruz.
   Her bir srm en az 1 aylk beta testlerinden geirilmektedir. Srm gemiine bakarsanz,
   retime hazr, dengeli ve kararl kodlar sundugumuzu grebilirsiniz. Bu alanda, diger 
   veritaban yaZlmlarna stnlgmz olduguna inanmaktayz

   Destek
   E-posta listemiz, olusan herhangi bir sorunu zebilecek byk sayda kullanc
   ve gelistirici grubunu ierir. Sorununuz iin, en az bir ticari veritaban kadar
   rahat zm bulabilirsiniz. Gelistiricilere, kullanc grubuna, belgelere ve
   kaynak koda direk olarak erisebilme, PostgreSQL destegini, diger DBMSlere gre daha
   nemli klar. Gereksinimi olanlara, ticari destek verilebilir. (Destek iin 1.6 blmne baknz.)
          
   Fiyat
   Ticari ve ticari olmayan tm kullanmlarnz iin PostgreSQL cretsizdir. Kodumuzu, yukarda belirtilen
   BSD-stili lisanstaki snrlamalar hari, rnnzn iine ekleyebilirsiniz.
          
       1.15) PostgreSQL'e maddi adan nasl destek olabilirim?
    
   PostgreSQL, 1996 ylndan beri 1.snf altyapya ashiptir. Bunun iin, yllar boyu alsp bu altyapy
   olusturup yneten Marc Fournier'e tesekkrler.

   Bir ak kaynak kodlu proje iin, kaliteli altyap ok nemlidir. Bu altyap, projenin
   kesilmesini nler ve projenin ilerlemesini hzlandrr.
   
   Tabii ki bu altyap ucuz degildir. slerin yrmesi iin eitli ylk ve anlk 
   harcamalarmz olmaktadr. Eger siz ya da sirketinizin bu abamza bagsta 
   bulunabilecek paras varsa, ltfen http://www.pgsql.com/pg_goodies adresine 
   gidiniz ve bagsta, hibede bulununuz.

   Web sayfasnn PostgreSQL, nc.' den bahsetmesine ragmen, "katkda bulunanlar" 
   (contributors) maddesi sadece PostgreSQL projesini desteklemek iindir ve belirli bir 
   sirketin para kaynag degildir. isterseniz, baglant adresine bir ek gnderebilirsiniz.

   ____________________________________________________________________________
   
                      Kullanc/istemci Sorular
                                      
   2.1) PostgreSQL icin ODBC srcleri var m?
    
   iki tane ODBC srcs bulunmaktadr:  PsqlODBC ve OpenLink ODBC.
   
   PsqlODBC'i http://gborg.postgresql.org/project/psqlodbc/projdisplay.php adresinden 
   indirebilirsiniz.
  
  OpenLink ODBC http://www.openlinksw.com adresinden alnabilir.Bu src,
  kendi standart ODBC istemci yazlm ile alstndan, destekledikleri 
  her platformda (Win, Mac, Unix, VMS) PostgreSQL ODBC bulunmalidir.
   
  cretsiz srm olmakla beraber, ticari kalitede destek almak isteyenlere satmak isteyeceklerdir. 
  Sorularnz ltfen postgres95@openlink.co.uk adresine gnderiniz.
   
        2.2) PostgreSQL'i web sayfalarnda kullanabilmek iin hangi aralar bulunmaktadr?

   http://www.webreview.com adresinde, arka planda veritaban alstran Web sayfalar
   iin giris seviyesinde bilgi bulunmaktadr.
   
   Web ile btnlesme iin, PHP mkemmel bir arabirim sunar. http://www.php.net .
   
   Karmak sorunlar iin, ou kisi Perl arabirimini ve  CGI.pm  ya da mod_perl kullanr.
   

       2.3) PostgreSQL'in grafik kullanc arabirimi var mdr? 
    
   eitli grafik arabirimlerimiz bulunmaktadr. Bunlarn arasnda, PgAccess (http://www.pgaccess.org),
   PgAdmin II (http://www.pgadmin.org, sadece Win32 iin), RHDB Admin (http://sources.redhat.com/rhdb/ )
   ve Rekall (http://www.thekompany.com/products/rekall/) bulunmaktadr. Ayrca, PostgreSQL iin web
   tabanl bir arabirim olan PHPPgAdmin (  http://phppgadmin.sourceforge.net/ ) bulunmaktadr.
   
   Daha ayrntl liste iin http://techdocs.postgresql.org/guides/GUITools adresine bakabilirsiniz.

       2.4) PostgreSQL ile iletiimi kurabilmek iin hangi dilleri kullanabilirim?

     * C (libpq)
     * Embedded C (ecpg)
     * Java (jdbc)
     * Python (PyGreSQL)
     * TCL (libpgtcl)

     Dierleri iin, http://gborg.postgresql.org adresindeki Drivers/Interfaces blmne 
     bakabilirsiniz.
     _________________________________________________________________
   
                       Ynetimsel Sorular
                                      
   3.1) PostgreSQL'i, /usr/local/pgsql dizininden baska dizinlere nasl kurabilirim?
    
   configure betigini alstrrken, --prefix seenegini veriniz.
   
       3.2) postmaster'i baslattgmda, a Bad System Call ya da core dumped mesaj 
	alyorum. Neden?
    
   Bunun birok nedeni olabilir. Ancak ilk kontrol edilmesi gereken sey, ekirdeginize
   System V uzantlarnn kurulu olup olmadgn kontrol etmek olabilir. PostgreSQL 
   shared memory ve semaphores iin ekirdek destegine gereksinim duyar.

       3.3) postmaster'i baslattgmda, a pcMemoryCreate hatas alyorum. Neden?
    
   Ya ekirdeginizde shared memory desteginiz dzgnce yaplandrlmamstr, ya da 
   ekirdeginizdeki mevcut shared memory miktarn bytmeniz gerekecektir. Gereksinim
   duyacagnz miktar, mimarinize ve postmaster iin ayarladgnz tampon ile backend 
   islemi saysna bagldr. Tm sistemler iin, tamponlar ve islemlerde ntanml saylarla,
   ~ 1MB kadar yere gereksinmeniz olacaktir.PostgreSQL Administrator's Guide' a, shared memory 
   ve semaphorelar  hakkndaki ayrntl bilgi iin bakabilirsiniz.

       3.4) postmaster'i baslattgmda, a pcSemaphoreCreate hatas alyorum. Neden?
    
   Eger hata, "pcSemaphoreCreate: semget failed (No space left on device)" ise, 
   ekirdeginiz yeterli semaphore ile yaplandrlmams demektir. Postgres, her 
   bir potansiyel backend iin bir semaphore gereksinmesi duyar. Geici bir zm, 
   postmaster backend islemleri iin daha az miktarda snrla baslatmak olabilir. 
   -N i varsalan deger olan 32'den kk bir degerle baslatnz. Daha kalc bir 
    zm, ekirdeinizin SEMMNS ve SEMMNI parametrelerini ykseltmek olacaktr.
   
   almayan semaphorelar ar veritaban islemlerinde kme yaratabilirler.

   Eger hata mesajnz baska birsey ise, ekirdeginizde semaphore destegini 
   yaplandrmams olabilirsiniz. Shared memory ve semaphorelar hakkndaki daha 
   ayrntl bilgi iin PostgreSQL Administrator's Guide'a bakabilirsiniz.
   
       3.5) Diger bilgisayarlarn benim PostgreSQL veritaban sunucuma baglantlarn 
	nasl kontrol edebilirim?
    
   n tanml olarak, PostgreSQL sadece yerel makineden Unix domain sockets kullanarak 
   baglanlmasna izin verir. Diger makineler, postmaster'a -i etiketini geirmezseniz 
   ve $PGDATA_pg_hba.conf dosyasn dzenleyerek  host-based authentication'a 
   olanak vermezseniz, baglant yapamayacaklardr. 
   
       3.6) Veritabani motorunu daha iyi basarim icin nasl ayarlayabilirim?
  
   Indexler sorgular hzlandrabilir. EXPLAIN komutu, PostgreSQL'in sorgunuzu nasl
   yorumladn ve hangi indexleri kullandigini grmenize izin verir.

   Eer cok fazla INSERT islemi yapiyorsaniz, bunlar byk bir toplu islem dosyasi kullanp
   COPY komutu ile veritabanina girmeyi deneyiniz. Bu, tekil NSERTlerden daha hzldr.
   ikinci olarak,  BEGN WORK/COMMT transaction blogu iinde olmayan  ifadeler kendi 
   transactionlarindaymis gibi dsnlr. oklu ifadeleri tek bir transaction blou iinde 
   yapabilirsiniz. Bu, transaction overheadini drecektir. Tek bir 
   transaction blou iinde  birden ok ifadeyi altrmay 
   deneyebilirsiniz. Bu, transaction overhead ini drr.
   
   eitli ayarlama seenekleri mevcuttur. fsync() ilemini, postmaster' -o -F seenei ile 
   balatarak devre d brakabilirsiniz. Bu ilem, fsync()'lerin her transactiondan sonra 
   diske flush etmesini engelleyecektir.

   Ayn zamanda, postmaster'i -B seenei ile balatp, backend ilemleri tarafndan kullanlan 
   shared memorf buffers saylarn arttrabilirsiniz. Eger bu parametreyi ok yksek tutarsanz, 
   ekirdeinizin shared memory blgesindeki limiti ama olaslnz yznden postmaster 
   balayamayabilir. Her bir tampon (buffer) 8K'dr. ntanml say ise 64 tampondur.
   
   Ayn ekilde, backend'in -S seeneini geici sralamalar iin backend sreleri tarafndan
   kullanlacak hafzay arttrmak amacyla kullanabilirsiniz. -S seenei kilobayt cinsinden deer alr 
   ve n tanml deeri 512'dir (512 K)
     
   Tablolardaki veriyi bir indekse elemek amacyla gruplama iin CLUSTER komutunu kullanabilirsiniz.
   Ayrntl bilgi iin CLUSTER komutunun yardm sayfasna bakabilirsiniz.

       3.7) Hangi hata ayklama zellikleri bulunmaktadr?

   PostgreSQL, hata ayklama amacyla kullanlabilecek durum bilgisi rapor eden eitli 
   zeliklere sahiptir.
 
   ncelikle, configure betiini --enable-cassert seeneiyle altrrsanz, bir ok assert() backend calmasn 
   gzlemler ve beklenmeyen bir durumda program durdurur.

   Postmaster ve postgres eitli hata ayklama seeneklerine sahiptir. ncelikle, 
   postmaster'i balattnzda, standart kty ve hatalar bir log dosyasna 
   ynlendirdiinize emin olun:

    cd /usr/local/pgsql
    ./bin/postmaster >server.log 2>&1 &

    Bu ilem PostgreSQL ana dizinine server.log dosyas yerletirecektir. Bu dosya sunucunun 
    yaad sorunlar ya da hatalar hakknda yararl bilgiler ierir. -d seenei, hata 
    ayklama seviyesini belirten bir rakam ile kullanlr. Yksek hata ayklama 
    seviyelerinin byk log dosyalar oluturacan unutmaynz.
  
    Eer postmaster almyorsa, postgres backend'ini komut satrndan altrabilir ve SQL ifadenizi
    direk olarak yazabilirsiniz. Bu sadece hata ayklama amacyla nerilir. Burada, noktal virgln deil de
    yeni bir satrn sorguyu sonlandrdn unutmaynz. Eer hata ayklama sembolleri ile derlediyseniz,
    ne olduunu grmek iin bir hata ayklayc kullanabilirsiniz. backend postmasterdan balatlmadndan,
    edeer bir ortamda almamaktadr ve locking/backend etkileim sorunlar artabilir.
   
    Eer postmaster alyorsa, bir pencerede psql'i altrn ve psql tarafndan kullanlan postgres srecinin sre 
    numarasn (PID) bulun. Postgres sreci ile ilikilendirmek iin bir hata ayklarc kullann. Sorgular psql 
    aracl ile altrabilirsiniz. Eer postgres balangcnda hata ayklamak istiyorsanz, PGOPTIONS="-W n" 
    seeneini ayarlayabilir ve psql'i balatabilirsiniz. Bu ilem, balangcn n saniye kadar gecikmesini 
    salayacaktr; bylece hata ayklaycy srece ilikilendirdikten sonra balang srecinin devam etmesini 
    salayabilirsiniz.

    postgres program hata ayklama ve baarm lmleri iin -s, -A ve -t seeneklerine sahiptir.
      
       3.8) Baglanmaya alsken, neden "Sorry, too many clients" hatasn alyorum?
    
   Postmaster'in  ezamanl olarak balatabilecei backend sreleri snrlarn 
   arttrmanz gerekmektedir.
   
   n tanml deer 32 sretir. Bunu, postmaster'i uygun -N deeri ile ya da 
   postgresql.conf dosyasn dzenleyerek yeniden balatmakla arttrabilirsiniz.

   Eer -N deerini 32'den byk yapacaksanz, ayn zamanda -B deerini de deitirmeniz
   gerektiini unutmayn. -B -N'nin en az 2 kat kadar olmaldr; daha iyi baarm iin 
   bu sayy daha da arttrmalsnz. Yksek saydaki backend sreleri iin, eitli ekirdek yaplandrma
   parametrelerini arttrmanz gerekecektir. Yaplmas gerekenler, SHMMAX, SEMMNS, SEMMNI, NPROC, MAXUPRC ve 
   alabilecek dosyalarn maksimum says olan NFILE ve NINODE deerlerini kartrmaktr. Bunun nedeni, PostgreSQL'in 
   izin verilen backend srelerinin says zerinde bir snr olmasdr. Bylelikle sistem kaynaklarnn dna 
   klmayacaktr.

   PostgreSQL'in 6.5 srmne kadar, en fazla backend says 64 idi ve bunu deitirmek iin 
   include/storage/sinvaladt.h dosyas iindeki MaxBAckendid sabitini deitirdek sonra 
   yazlm yeniden derlemek gerekiyordu.
   
   	3.9) pgsql_tmp dizinin iindeki dosyalar nelerdir?
    
   Sorgu alstrc (query executer) tarafndan yaratlan geici dosyalardr. rnegin,
   bir sralama ORDER BY ile yapilacaksa ve sralama backend'in -s parametresinin izin
   verdiginden daha fazla alana gereksinim duyuyorsa, ekstra veriyi tutmak iin geici
   dosyalar yaratlr.

   Geici dosyalar, eger sralama srasnda backend gmezse otomatik olarak silinecektir.
   Eger alsan durumda bir backendiniz yoksa, pg_tempNNN.NN dosyalarn silmeniz gvenlidir..

   3.10) PostgreSQL srmlerini ykselmek iin neden bir dump/reload ilemi gerekletirmek zorundaym?

   PostgreSQL takm ara srmlerde sadece kk deiiklikler yapmaktadr; bu yzden 7.2 
   srmnden 7.2.1'e ykseltmek dump/restore ilemi gerekmemektedir. Ancak, esas srmlerde 
   (rnek: 7.2'den 7.3'e) ounlukla sistem tablolarnn ve veri dosyalarnn i yaps 
   deitirilir. Bu deiiklikler ounlukla karmaktr; dolaysyla veri dosyalarnn 
   geriye dnk uyumluluu ilemlerini yapmyoruz. Dump ilemi, veriyi genel biimde 
   alacandan yeniden ykleme esnasnda veri, yeni i biime uygun ekilde 
   yerletirilecektir.

   Disk biiminin deimedii srmlerde, pg_upgrade betii gncellemenin bir dump/restore 
   gerektirmeden yaplmasn salayacaktr. pg_upgrade betiinin o srm iin bulunup 
   bulunmadn srm notlar iinde bulabilirsiniz.

     _________________________________________________________________
   
			letimsel Sorular

                                      
       4.1) Binary cursor ve normal cursor arasindaki fark nedir?
    
   DECLARE yardm sayfasina bakiniz.
   
       4.2) Sorgunun sadece ilk birka satrn nasl SELECT edebilirim?
	    
   FETCH yardm sayfasina bakiniz, aya da  SELECT ... LIMIT.... kullannz.
   
   lk birka satr almak isteseniz bile, tm sorgu deerlendirilmek durumunda kalnabilir. ORDER BY ieren bir 
   sorgu dnn. Eer ORDER BY ie eleen bir index varsa, PostgreSQL istenen ilk birka satr ileyebilir, ya da
   tm sorgu istenen satrlar retilene kadar ilenebilir.
   
       4.3) psql'in iinde grdgm tablolarin ya da diger seylerin listesini nasl alabilirim?
    
   pgsql/src/bin/psql/describe.c iindeki psql kaynak kodunu okuyabilirsiniz. Bu kod, 
   psql'in \ ile baslayan komutlarnn ktsn olusturan SQL komutlarini ierir. Ayn 
   zamanda, psql'i -E seenei ile balatp, verdiiniz komutlar altrmak iin yapt 
   sorgularn ktlarn grebilirsiniz.

       4.4) Bir tablodan bir kolonu nasl kaldrabilirim?
    
   Bu zellik (ALTER TABLE DROP COLUMN)  7.3 srm ile gelmitir. Eski srmlerde 
   aadakileri uygulamalsnz: 

    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 satr, tablo ve veritaban icin en fazla byklk nedir? 
  
    Snrlar:   
 
    Veritabani icin en fazla byklk nedir?			Snrsz (32 TB'lk veritaban bulunmaktadr)
    Bir tablo icin en fazla byklk nedir?			32 TB
    Bir satr iin en fazla byklk nedir?			1.6 TB
    Bir alan iin en fazla byklk nedir?			1 GB
    Tabloda en fazla satr says katr?			Snrsz
    Bir tabloda olabilecek en fazla kolon says katr? 	Kolon tiplerine bal olarak  250-1600 
    Bir tabloda olabilecek en fazla index says katr?	snrsz

   Tabii ki bunlar aslinda snrsz degildir. Burada belirtilen snrlar, fiziksel 
   snrlarn haricindeki snrlardr. Bo disk alan, hafza/takas alan na bal 
   snrlamalar vardr. Baarm, snr deerlere yaklastka, ya da deerler cok byk 
   olduunda debilir.
   
   Bir tablo iin byklk snr olan 16 TB, iletim sisteminin byk dosya destei olup
   olmamasndan bamszdr. Byk tablolar, 1 GB'lik dosyalarda sakland iin, dosya 
   sistemi snrlarnin bir nemi yoktur.
   
   Tablo ve kolon says byklkleri, n tanml blok bykl 32k ya karlarak 
   arttrlabilir.
   
      4.6) Tipik bir metin dosyasndaki veriyi saklamak iin ne kadar disk alan gereklidir?
    
   Bir PostgreSQL veritaban, veriyi "flat" metin dosyasnda saklamak iin gereken 
   alann 5 kat fazla disk alanna gereksinim duyabilir.

   Her satrnda bir tamsay ve metin (text) ieren, 100.000 satrlk bir dosya dnn. 
   Her satrn ortalama 20 byte olduunu farzedelim. Metin dosyas 2.8 MB olacaktr. Bu veriyi
   tutan PostgreSQL veritaban yaklak 6.4 MB yer kaplayacaktr.

     36 byte: Her bir satr baslg (yaklasik)
   + 24 byte: Bir tamsay (int) alani ve bir metin (text) alan 
   +  4 byte: Sayfada tuple a pointer
   ----------------------------------------
    64 byte -> kayt basna

   PostgreSQL'de data page bykl 8192 byte (8k)dir, dolaysyla:

   8192 byte -> page basna
   -------------------------  =  Her bir veritabani page i bana 128 satr (yaklak)
     Satr basna 64 byte

   100000 veri satr
   --------------------  =  782 veritaban sayfas
       128 satr

    782 veritaban sayfas * sayfa bana 8192 byte =  6,406,144 bytes (6.4 MB)

   Indexler cok fazla yere gereksinim duymazlar, ama indexlenmis veriyi tutacaklarndan
   byk olabilirler.
   
   NULL deerler bitmapler iinde tutulur; dolaysyla ok az yer kaplarlar.

       4.7) Veritabannda hangi tablo ya da indexlerin tanmlandgn nasl grebilirim?
    
    psql, bu tr bilgileri gstermek iin, \ ile balayan bir ok komut sunmaktadr. 
    \? komutu ile bu komutlar grebilirsiniz. Ayrca, bunlar aklayan ve pg_ ile balayan 
    ok sayda sistem tablosu bulunmaktadr. Ayn zamanda, psql -l ile tm veritabanlarn 
    listeyelebirsiniz.
   
   Ayrca, pgsql/src/tutorial/syscat.source kodunu inceleyebilirsiniz. Bu dosya, veritaban 
   sistem dosyalarindan bilgiyi almak iin gereksinim duyulan  bir ok SELECTleri gsterir.

    4.8) Sorgularm cok yava, ya da indexlerimi kullanmyorlar. Neden? 
Indexler her sorgu tarafndan otomatik olarak kullanlmazlar. Indexler eer bir tablonun bykl minimum bir 
byklkten fazla ise ve sorgu tablodaki satrlarn sadece kk bir yzdesini seiyorsa kullanlr. Bunun nedeni, 
index eriiminin neden olduu raslansal disk eriimi nin diskin ya da tablonun sral okunmasndan daha yavas 
olabilmesidir.

Bir index'in kullanlp kullanlmayacan belirlemek iin, PostgreSQL tablo hakkndaki istatistiklere gereksinmesi 
vardr. Bu istatistikler, VACUUM ANALYZE kullanlarak toplanrlar. Optimizer, istatistikleri kullanarak, tabloda ka 
satr olduunu ve bilir ve indexin kullanlp kullanlmayacana daha iyi karar verir. Istatistikler, ayn zamanda en 
uygun join srasn ve yntemini belirlemekte ok nemlidir. statistik toplanmas, tablo ierikleri deitike 
periyodik olarak yaplmaldr.

Indexler normalde ORDER BY sorgular ya da join ilemlerini gerekletirmek iin kullanlmazlar. Ak bir sralamay 
takip eden sral bir arama (sequential scan), byk bir tabloda index aramas yapmaktan genelde daha hzldr.
Ancak, ORDER BY ile birlemi LIMIT genellikle bir index kullanacaktr; nk tablonun sadece belirli bir miktar 
dndrlecektir. Aslnda, MAX() ve MIN() fonksiyonlarnn index kullanmamalarndan dolay, bu gibi deerleri ORDER BY 
ve LIMIT kullanarak da almak olasdr:

    SELECT col
    FROM tab
    ORDER BY col [ DESC ]
    LIMIT 1;

Eer optimizer'n sral arama yapmasnn yanl olduuna inanyorsanz, SET enable_seqscan TO 'off' kullann ve 
index kullanan aramalarn hala daha hzl olup olmadn grn.

LIKE ya da ~ gibi operatrler kullanyorsanz, index'ler sadece aadaki koullarda kullanlabilir:

    * Arama dizininin ba, dizinin ba ile balanmaldr. Yani,
          o LIKE sorgular % ile balamamaldr.
          o Dzenli ifade sorgular ^ ie balamamaldr.
    * Arama metni bir karakter snf ile balayamaz. rnek: [a-e]
    * ILIKE ve ~* gibi byk/kk harfe duyarsz aramalar index'lerden yararlanmazlar. Onun yerine, blm 4.12'de 
anlatlan fonksiyonel index'leri kullanabilirsiniz.
    * initdb srasnda ntanml C locale'i kullanlmaldr.

 4.9) query-optimizer in sorgularm nasl deerlendirdiini, ileme soktuunu nasl grebilirim?
    
   EXPLAIN yardm sayfasna baknz.	
   
       4.10) R-tree index nedir?
R-tree index, uzaysal (spatial) verileri indexlemek iin kullanlr. Bir hash index, dizi aramalarnda (range search) 
kullanlamaz. B-tree index dizi aramalarnda sadece tek boyutlu almaktadr. R-tree, ok boyutlu veriyi destekler. 
rnein, eer bir R-tree index point veri tipi zerinde ina edililebilirse, sistem "select all points within a 
bounding rectangle" gibi sorgulara daha verimli yantlar verecektir.

Orijinal R-tree tasarmn aklayan belge:

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 belgeyi, Stonebraker'n "Readings in Database Systems" kitabnda bulabilirsiniz.

Gml R-tree indexleri poligon ve boxlar kullanabilir. Teorik olarak, R-tree indexlerin zelliklerini 
geniletmek bir miktar aba gerektirir ve bunun nasl yaplacana dair bir belgemiz henz bulunmamaktadr.

       4.11) Genetic Query Optimizer nedir?
  
   GEQO modl, Genetic Algorith(GA) kullanlarak tablolar birletirildiinde sorgu optimizasyonunu hzlandrr. 

    4.12) Dzenli ifade (Regular Expression) aramalarn ve byk/kk harfe duyarsz aramalar nasl yapabilirim?
	Bu byk(kk harfe duyarl aramalar iin indeksi nasl kullanabilirim?
    
   ~ operatr dzenli ifade elemesi ve ~*  byk/kk harfe duyarsz dzenli ifade elemesi yapar.
   Byk/kk harfe duyarl olan LIKE'in  byk/kk harfe duyarsz olan biini ILIKE'tr ve PostgreSQL
   7.1 srm ile birlikte gelmitir.
     
   Byk-kk harfe duyarsz eitlik karlatrmalar aadaki gibi ifade edilir:

    SELECT *
    FROM tab
    WHERE lower(col) = 'abc'

   Bu standart bir indeks yaratmayacaktr. Ancak eer fonksiyonel bir indeks yaratrsanz; o kullanlacaktr:

    CREATE INDEX tabindex on tab (lower(col));

    4.13)  Bir sorguda, bir alanin "NULL" oldugunu nasl ortaya karabilirim?
    
   Kolonu, IS NULL ve IS NOT NULL ile test edebilirsiniz.
   
       4.14) esitli karakter tipleri arasndaki farklar nelerdir?
    
Veri Tipi	 Ad              Not
--------------------------------------------------
VARCHAR(n)      varchar         boyut en byk uzunluu verir; sadece verilen kadar veri tutulur.
CHAR(n)         bpchar          belirtilen uzunlupa kadar sonuna  boluk eklenir.
TEXT            text            uzunlukta herhangi bir st snr yoktur. 
BYTEA           bytea           variable-length byte array (null-byte safe)
"char"          char            bir karakter 

 adlar (internal name) sistem kataloglarn ve baz hata meajlarn incelerken greceksiniz.
  
   lk drt veri tipi "varlena" tipidir (yani, diskteki ilk 4 bayt uzunluktur; devam da veridir.) Dolaysyla,
   Bylece, kullanlan gerek alan, belirtilen alandan biraz daha byktr. Ancak, bu veri tipleri, sktrlmaya tabi 
   tutulabilir; dolaysyla disk alan beklenilenden kck olabilir. VARCHAR(n) bykl artabilen ama en byk 
   uzunluu snrl oan verileri saklamak iin en uygun yntemdir. TEXT, 1 GB bykle kadar olan verileri tutmak iin 
   kullanlr.

   CHAR(n), ayn uzunluktaki dizilerin saklanmas iin kullanmr. CHAR(n) belirtilen uzunlua kadar boluk ile 
   doldurur; ancak VARCHAR(n) sadece verilen karakterleri saklar.BYTEA binary veri saklamak iindir; ayrca "NULL" bayt 
   ieren deerleri de saklar. Burada anlatlan  veri tipi de benzer baarm karakteristiklere sahiptir.
   
       4.15.1) nasl serial/otomatik artan(auto-incrementing) bir alan yaratabilirim?
    
     PostgreSQL'de SERIAL veri tipi vardr. Bu veri tipi bir sequence ve kolon zerinde bir indeks yaratr.

    rnek, aadaki sorgu:

    CREATE TABLE person (
        id   SERIAL,
        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 hakknda daha fazla bilgi iin create_sequence yardm sayfasna bakabilirsiniz. Her satrn OID alann 
  tekil bir say olarak alabilirsiniz. Ancak, veritabannzn dump'n alp yeniden yklerseniz, OID deerlerini
  koruyabilmek iin pg_dump'n -o parametresini ya da "COPY WITH OIDS" seeneini kullanmanz gerekecektir.
   
   4.15.2) SERIAL giriinin degerini nasl alabilirim?

  Bir yaklam, sequence nesnesindeki SERIAL deerini, veriyi girmeden nce nextval() ile alp, aldnz deeri 
kendinizin girmesidir. 4.15.1'deki rnek tabloyu kullanarak bir rnek verelim:

    new_id = execute("SELECT nextval('person_id_seq')");
    execute("INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal')");

  Dier sorgular iin new_id'de yeni deerin saklanmas gerekir. Otomatik olarak yaratlan SEQUENE nesnesinin ad,
  <tablo ad>_<serial kolonu ad>_seq eklinde olacaktr (< > iaretleri olmadan).

 Alternatif olarak, atanm SERIAL deerini, deer 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 tanml deeri bulmak iin INSERT ifadesinden dnen OID deerini kullanabilirsiniz; ancak bu
  en az tanabilir zm olacaktr. Perl'de, Edmund Mergl'in DBD:Pg mdl ile birlikte DBI kullanarak, OID deeri
  $sth->execute() altrldktan sonra $sth->(pg_OID_status) ile alnabilir.

       4.15.3) currval() ve  nextval() diger kullanicilara sorun yaratmaz m?
    
   Hayr. curval(), tm kullanclar degil, backend tarafndan atanan geerli  
   degeri dndrr.
   
      4.15.4) Neden sequence saylarn transaction ileminin iptalinden sonra yeniden kullanlyor? Neden sequence/SERIAL 
		kolonumdaki saylarda atlamalar oluyor?

   Uyumluluu arttrmak iin, sequence deerleri alan transactionlara gerektii ekilde aktarlr ve transaction 
   bitene kadar o deer kilitlenmez. Bu, iptal edilen transaction ilemleri nedeniyle boluklara neden olur. 

    4.16) OID nedir? TID nedir?

OIDler, tekil satr numaralarna PostgreSQL'in yantdr. PostgreSQL'de yaratlan her say, tekil bir OID alr. 
initdb ilemi srasnda yaratlan tm OID'ler 16384'ten kktr (backend/access/transam.h). Kullanclar tarafndan 
yaratlan tm OID'ler bu sayya eit ya da bu saydan byktr. Varsaylan durumda, tm bu OIDler sadece bir tablo ya 
da veritabannda deil, tm PostgreSQL kurulumunda tekildir.

PostgreSQL OIDleri, tablolar arasnda satrlar ilikilendirmek iin kendi i tablolarnda kullanr. Bu OIDler 
belirli kullanc satrlarn belirtmek iin kullanabilir ve join ilemlerinde kullanlr. OID deerlerini saklamak 
iin OID kolon tipini kullanmanz nerinir. Daha hzl bir eriim iin, OID alannda bir index yaratabilirsiniz.

OID'ler yeni satrlara, tm veritabanlar tarafnda kullanlan ortak bir alandan atanrlar. Eer OID'i baka bir 
deere eitlemek isterseniz ya da tablonun bir kopyasn orijinal OIDler ile karmak isterseniz, bu mmkndr:

        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 WITH OIDS FROM '/tmp/pgtable';

OIDler 4-bit tamsay olarak saklanrlar ve 4 milyarda overflow olacaktr. Kimse bu sayya ulatna dair bir bilgi 
iletmedi ve bu snr kimse bu snra ulamadan kaldracaz.

TIDler, belirli fiziksel satrlar block ve offset deerleri ile belirtmekte kullanlr. TIDler, satrlar deitiinde 
ya da yeniden yklendiinde deiirler. Index girdileri tarafndan fiziksel satrlar gstermek iin kullanlrlar.
   
       4.17) PostgreSQL'de kullanlan baz terimlerin anlamlar nelerdir?
    
   Kaynak kodun bir ksm ve eski belgeler, daha geni kullanm alan olan terimleri
   kullanrlar. Bunlarn bazlar:

     * 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()"? hatasn alyorum?
    
   Sisteminizde sanal belleinizi tketmis olabilirsiniz, ya da ekirdeiniz
   belli kaynaklar icin dk bir snra sahip olabilir. Postmaster'i balatmadan nce 
   aadakileri deneyebilirsiniz:

    ulimit -d 262144
    limit datasize 256m

   Kabuunuza bal olarak, bunlardan sadece biri olumlu sonu verecektir, ama
   bu ilem veri segment snrnz arttracak, ve belki de sorgunuzun tamamlanmasn
   saglayacaktr. Bu komut, varolan srece (current process) ve komut alstrldktan
   sonraki tm alt islemlere uygulanr. Eer SQL istemcinizle, backendin ok fazla veri 
   dndrmesi nedeniyle bir sorun yayorsanz, bunu istemciyi balatmadan nce deneyiniz.
   
       4.19) Hangi PostgreSQL srmn alstrdgm nasl grebilirim?
    
   psql arabiriminde, SELECT version(); yaznz.
   
   4.20) Neden large-object islemlerim, "invalid large obj descriptor"? hatasn veriyor?

   Large object ilemlerinizin ularna, yani  lo_open ... lo_close komutlarnn evresine, 
    BEGIN WORK ve COMMIT koymanz gerekmektedir.

   Eger ODBC gibi bir istemci arabirimi kullanyorsanz, auto-commit'i kapatmanz gerekebilir.
   
   4.21) u andaki zaman ntanml deer olarak kabul eden kolonu nasl yaratabilirim?
    
   Alttakini kullanabilirsiniz:

   CURRENT_TIMESTAMP:
	CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );

   4.22) Neden IN kullanan subquerylerim ok yavas?

7.4 srmnden nce, subqueryler. Eer subquery sadece birka satr ve outer query bol sayda satr dndryorsa, IN 
en hzlsdr. Sorgular hzlandrmak iin IN yerine EXISTS kullann:

    SELECT *
    FROM tab
    WHERE col IN (SELECT subcol FROM subtab);

sorgusunu, aadaki ile deitirin:

    SELECT *
    FROM tab
    WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);

 Bunun hzl olabilmesi iin, subcol'un indekslenmi bir kolon olmas gerekmektedir.
 
	7.4 srm ve sonrasnda, IN aslnda normal sorgularla ayn karmak join tekniklerini kullanr ve EXISTS'e tercih 
	edilir.
   
       4.23) Outer join islemini nasl yapabilirim?
    
   PostgreSQL outer join ilemlerini SQL standartlarn kullanarak gerekletirmektedir.
   Aada 2 rnek bulunmaktadr:

    SELECT *
    FROM t1 LEFT OUTER JON t2 ON (t1.col = t2.col);

   ya da 

    SELECT *
    FROM t1 LEFT OUTER JON t2 USNG (col);

   Bu zde sorgular t1.col ' i  t2.col'ye join ederler ve ayn zamanda t1'deki unjoined satrlar 
   (t2'de elenmenis olanlarla) dndrrler. RIGHT JON t2'nin unjoined satrlarn ekleyecektir.
   Bir FULL join, elemi btn satrlar ve t1 ile t2'den tm balanmam (unjoined) satrlar alr.
   OUTER szc seimseldir ve LEFT, RIGHT ve FULL join ilemlerinde olduu kabul edilir. Sradan 
   join ilemleri INNER join olarak adlandrlr.

   nceki srmlerde, OUTER JOINler UNION ve NOT IN kullanlarak simle edilebiliyordu. rnein, tab1 
   ve tab2'yi birletirirken, aadaki sorgu iki tablonun dtan balanmasn salar:

    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) Ayn anda birden fazla veritabannda nasl ilem yapabilirim?

   Mevcut veritabannz dsndaki baska bir veritabannz sorgulamanzn bir yolu bulunmamaktadr.
   bunun nedeni, PostgreSQL'in veritabanna zel sistem kataloglar yklemesidir. Bu nedenle, 
   cross-database bir sorgunun nasl davranacagn kestirmek zordur.
   
   contrib/dblink fonksiyon arlarn kullanarak cross-database sorgulara izin vermektedir. Tabii ki, 
   bir istemci deiik veritabanlarna ayn anda eriim salayabilir ve bilgiyi bu sekilde
   birletirebilir.

   4.25) Bir fonksiyondan nasl oklu satr ya da kolon dndrebilirim?

   7.3 srmnde, bir fonksiyondan kolaylkla oklu satr ya da stun dndrebilirsiniz.

	http://techdocs.postgresql.org/guides/SetReturningFunctions .

   4.26) Neden PL/pgSQL fonksiyonlar iinden gvenli bir ekilde tablo yaratma/kaldrma ilemlerini yapamyoruz?

   PL/pgSQL fonksiyon ierikleri cacheler. Bunun istenmeyen bir taraf, eer bir PL/pgSQL fonksiyonu geici bir
   tabloya eriiyorsa ve bu tablo ileride kaldrlp yeniden oluturulduktan sonra fonksiyon yeniden arlrsa,
   fonksiyon almayacaktr; nk cachelenmi fonksiyon hala eski geici tabloyu gsteriyor olacaktr. zm,
   geici tablo eriimleri iin PL/pgSQL'de EXECUTE kullanmaktr. Bu, sorgunun her seferinde yeniden ilenmesini
   salayacaktr.

   4.27) Hangi replikasyon seenekleri bulunmaktadr?

   eitli master/slave replikasyon seenekleri bulunmaktadr. Bunlar master veritabannn veritaban deiikliklerini 
   yaparken, slave sunucunun sadece veritabannda okuma yapmasna izin verir. 
   http://gborg.PostgreSQL.org/genpage?replication_research sayfasnn altnda bunlarn listesini bulabilirsiniz.
   http://gborg.PostgreSQL.org/project/pgreplication/projdisplay.php adresinde, oklu-master replikasyon zm 
   zerinde allyor.

   4.28) Hangi ifreleme seenekleri bulunmaktadr?

    * contrib/pgcrypto SQL sorgularnda kullanlabilmesi iin ifreleme fonksiyonlar iermektedir.
    * stemciden sunucuya iletiimi ifrelemek iin, sunucuda ssl seenei postgresql.conf iinde ak olmaldr.
      Ayrca,pg_hba.conf dosyas iinde host ya da hostssl kayd mutlaka olmaldr ve istemci sslmode 
      kapatlmamaldr. (Ayn zamanda,PostgreSQL'in doal SSL balantlar dnda ssh ya da ssl gibi 3.parti 
      ifrelenmi veri iletimi de mmkndr.)
    * Veritaban kullanc ad ve ifreleri 7.3 srm ile birlikte otomatik olarak ifrelenirler. nceki 
      srmlerde, postgresql.conf iindeki PASSWORD_ENCRYPTION seeneini aktif hale getirmeniz gerekmektedir.
    * Sunucunun kendisini ifreli dosya sistemi zerinde altrabilirsiniz.

     _________________________________________________________________
   
    		PostgreSQL zelliklerini Geniletmek

    5.1)  Kullanc-tanml bir fonksiyon yazdm. psql'de altrdm zaman neden core dump ediyor?
    
   Sorunun nedeni birden fazla sey olabilir. Kullanici-tanimli fonksiyonunuzu stand-alone bir programda
   calistirmayi deneyiniz.
   
    5.2) PostgreSQL'e nasl yeni veri tipleri/fonksiyonlar ekleyebilirim?
    
   almalarnz pgsql-hackers e-posta listesine gnderiniz. Kodunuz incelendikten sonra
   /contrib dizinine konacaktr.
   
    5.3) Bir tuple dndrmek icin bir C fonksiyonunu nasl yazarm?
    
     PostgreSQL 7.3 srm ile birlikte, C, PL/pgSQL ve SQL kullanlarak tablo-dndren 
     fonksiyonlar tamamen desteklenmektedir. Ayrntl bilgi iin "Programmer's Guide" a 
     bakabilirsiniz. Bir rnei contrib/tablefunc iinde bulabilirsiniz.

    5.4) Bir kaynak dosyasnda deiiklik yaptm. Yeniden derlememe ramen deiiklik 
     geerli olmuyor. Neden?
    
   Makefile'lar include dosyalar iin tam bir bamllk iermezler. 
   ncelikle make clean, ardndan da baska bir make ilemi yapmanz gerekir.
   GCC kullanyorsaniz, configure betiinin --enable-depend seeneini, derleyicinin
   bamllklar otomatik olarak hesaplamas iin kullanabilirsiniz. 

