Skip to content
Snippets Groups Projects
Select Git revision
  • benchmark-tools
  • postgres-lambda
  • master default
  • REL9_4_25
  • REL9_5_20
  • REL9_6_16
  • REL_10_11
  • REL_11_6
  • REL_12_1
  • REL_12_0
  • REL_12_RC1
  • REL_12_BETA4
  • REL9_4_24
  • REL9_5_19
  • REL9_6_15
  • REL_10_10
  • REL_11_5
  • REL_12_BETA3
  • REL9_4_23
  • REL9_5_18
  • REL9_6_14
  • REL_10_9
  • REL_11_4
23 results

FAQ_turkish

Blame
  • FAQ_turkish 51.26 KiB
    
                      PostgreSQL iin Ska Sorulan Sorular (SSS)
                                           
       Son gncelleme : 15 Kasm 2004 Pazartesi - 15:03:23
       
       Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
       
       evirenler : Devrim Gndz (devrim@tdmsoft.com)
       Nicolai Tufar (ntufar@tdmsoft.com)
       Volkan YAZICI (volkany@phreaker.net)
       
       Bu belgenin en gncel hali,
       http://www.PostgreSQL.org/docs/faqs/FAQ_turkish.html ve
       http://www.gunduz.org/seminer/pg/FAQ_turkish.html adreslerinde
       grlebilir.
       
       Platforma zel sorularnz, http://www.PostgreSQL.org/docs/index.html
       adresinde yantlanr.
         _________________________________________________________________
       
                                   Genel Sorular
                                          
       1.1) PostgreSQL nedir? Nasl okunur?
       1.2) PostgreSQL'in haklar nedir?
       1.3) PostgreSQL, hangi Unix platformlarnda alr?
       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 ulaabilirim?
       1.9) Bilinen hatalar ya da eksik zelliklere nereden ulasabilirim?
       1.10) Nasl SQL renebilirim?
       1.11) PostgreSQL 2000 ylna uyumlu mudur?
       1.12) Gelitirme takmna nasl katlabilirim??
       1.13) Bir hata raporunu nasl gnderebilirim?
       1.14) PostgreSQL, dier VTYS(DBMS) lerle nasl karlatrlabilir?
       1.15) PostgreSQL'e maddi adan nasl destek olabilirim?
       
                             Kullanc/istemci Sorular
                                          
       2.1) PostgreSQL iin ODBC srcleri var m?
       2.2) PostgreSQL'i web sayfalarnda kullanabilmek iin hangi aralar
       bulunmaktadr?
       2.3) PostgreSQL'in grafik kullanc 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' balattmda Bad System Call ya da core dumped
       mesaj alyorum. Neden?
       3.3) Postmaster' balattmda, IpcMemoryCreate hatas alyorum.
       Neden?
       3.4) Postmaster', 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. Neden?
       3.9) pgsql_tmpdizinin iindeki dosyalar nelerdir?
       3.10) PostgreSQL srmlerini ykseltmek iin neden bir dump/reload
       ilemi gerekletirmek zorundaym?
       3.11) Nasl bir donanm kullanmalym?br>
       
                                 letimsel Sorular
                                          
       4.1) Binary cursor ve normal cursor arasndaki fark nedr?
       4.2) Sorgunun sadece ilk birka satrn nasl SELECT edebilirim?
       4.3) psql'in iinde grdgm tablolarn ya da dier eylerin listesini
       nasl alabilirim?
       4.4) Bir tablodan bir kolonu nasl kaldrabilirim?
       4.5) Bir satr, tablo ve veritaban iin 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 index'lerin tanmlandn nasl
       grebilirim?
       4.8) Sorgularm cok yava, ya da index'lerimi kullanmyorlar. Neden?
       4.9) Query-optimizer'n sorgularm nasl deerlendirdiini, 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 index'i 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 subquery'lerim 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 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 deiiklik yaptm. Yeniden derlememe ramen
       deiiklik geerli olmuyor. Neden?
         _________________________________________________________________
       
                                   Genel Sorular
                                          
        1.1) PostgreSQL nedir? Nasl okunur?
        
       PostgreSQL, Post-Gres-Q-L. olarak okunur
       
       PostgreSQL, yeni-nesil VTYS aratrma prototipi olan POSTGRES
       veritaban ynetim sisteminin gelitirilmesidir. POSTGRES'in zengin
       veri tiplerini ve gl veri modelini tutarken, SQL'in gelitirilmi
       alt kmesi olan PostQuel dilini kullanr. PostgreSQL cretsizdir ve
       kaynak kodu ak datlr.
       
       PostgreSQL, PostgreSQL gelitirme listesine ye olan bir Internet
       gelitirici takm tarafndan gelitirilir. u andaki koordinatr,
       Marc G. Fournier (scrappy@PostgreSQL.org). (Bu takma nasl
       katlacagnz renmek iin 1.6 numaral maddeyi okuyunuz.) Bu takm,
       tm PostgreSQL geliiminden sorumludur.
       
       PostgreSQL 1.01 srmnn yazarlar Andrew Yu ve Jolly Chen idi.
       Bunlarn dnda bir ka kisi de uyarlama, hata ayklama ve kodun
       gelitirilmesi iin alsmt. PostgreSQL'in tredii orijinal
       Postgres kodu, lisans, lisansst ve akademisyenler tarafndan,
       Professor Michael Stonebraker (University of California, Berkeley)
       koordinatrlgnde yazlmtr.
       
       Berkley'deki yazlmn ad Postgres idi. SQL uyumluluu 1995'te
       eklenince, ad Postgres 95 oldu. 1996 ylnn sonlarnda ad
       PostgreSQL olarak deitirildi.
       
        1.2) PostgreSQL'in haklar nedir?
        
       PostgreSQL Data Base Management System
       
       Portions Copyright (c) 1996-2008, 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 lisans
       seviyoruz. Deitirme niyetimiz bulunmamaktadr.
       
        1.3) PostgreSQL, hangi Unix platforlarnda alr?
        
       Genel olarak, modern bir Unix-uyumlu platform PostgreSQL'i
       altracaktr. Ayrntl bilgi iin kurulum belgelerine
       bakabilirsiniz.
       
        1.4) Hangi Unix olmayan uyarlamalar bulunmaktadr?
        
       PostgreSQL 8.0 srm ile , PostgreSQL artk Win2000, WinXP ve Win2003
       gibi Microsoft Windows NT tabanl iletim sistemlerinde doal olarak
       almaya balamtr. Paketlenmi bir kurulum program,
       http://pgfoundry.org/projects/pginstaller. adresinden indirilebilir.
       
       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
       adresidir. Yanslar iin, ana web sayfamza bakabilirsiniz.
       
        1.6) Nereden destek alabilirim?
        
       Ana e-posta listesi : pgsql-general@PostgreSQL.org. PostgreSQL
       konusundaki tartmalara aktr. ye olmak iin, aadaki satrlar
       e-postanzn body 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 ulatnda yelere
       gnderilmektedir.
       
       Bug'lar 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,
       body ksmnda
    subscribe
    end
    
       yazan bir e-posta atmanz yeterli olacaktr.
       
       Bunun dndaki e-posta listelerine ve PostgreSQL hakknda bilgiye,
       PostgreSQL WWW ana sayfasndan ulasabilirsiniz:
       http://www.PostgreSQL.org
       
       Ayn zamanda, EFNet 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 ulabilirsiniz.
       
        1.7) En son srm nedir?
        
       PostgreSQL'in son srm 7.4.6'dr.
       
       Her 6-8 ayda ana srm karlmas planlanmaktadr.
       
        1.8) Hangi belgelere ulaabilirim?
        
       Datmn iinde, kitapklar, kitapk sayfalar ve baz kk
       rnekler verilmektedir. /doc dizinine baknz. Ayrca, 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,
       aggregate'ler, vb. ile ilgili gzel komutlar vardr.
       
       Web sitemiz daha fazla belgeyi iermektedir.
       
        1.9) Bilinen hatalar ya da eksik zelliklere nereden ulaabilirim?
        
       PostgreSQL SQL-92 uyumluluu iindedir, standartlardan fazla da
       zellikleri bulunmaktadr. Bilinen hatalar, eksik zellikler ve
       gelecek ile ilgili planlar iin TODO listesine baknz.
       
        1.10) Nasl SQL renebilirim?
        
       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". Bazlar ise "The
       Complete Reference SQL, Groff et al., McGraw-Hill" kitabn
       nermektedirler.
       
        1.11) PostgreSQL 2000 ylna uyumlu mudur?
        
       Evet.
       
        1.12) Gelitirme takmna nasl katlabilirim?
        
       ncelikle, en son kaynak kodunu indirin ve web sitemizdeki ya da
       datmn iindeki PostgreSQL Developer belgesini okuyun. Ardndan,
       pgsql-hackers ve pgsql-patches listelerine ye olun. nc olarak da,
       pgsql-pacthes listesine yksek kalitede yamalar gnderin.
       
       PostgreSQL CVS arivine eriim izni olan, 10 kadar gelitirici
       bulunmaktadr. Hepsi defalarca, dier kiilerin yaptndan ok daha
       yksek-kaliteli yamalar gndermilerdir. Ayrca biz de bu
       gelitiricilerin ekledikleri yamalarn yksek kalitede olduuna
       gveniyoruz.
       
        1.13) Bir hata raporunu nasl gnderebilirim?
        
       PostgreSQL BugTool sayfasna gidiniz. O sayfada bir bug bildirmek iin
       neleri yapmanz gerektii anlatlmtr.
       
       Ayrca, ftp://ftp.PostgreSQL.org/pub ftp adresimizde, yeni bir
       PostgreSQL srm ya da yamas olup olmadni kontrol ediniz.
       
        1.14) PostgreSQL, diger DBMS'lerle nasl karlastrlabilir?
        
       Bir yazlmn gcn lmek iin eitli yollar vardr: Yazlmn
       zellikleri, baarm, gvenilirlii, destei ve creti.
       
       zellikler:
       
       PostgreSQL mevcut byk ticari veritabanlarnn, transaction,
       subselect, trigger, view, foreign key referential integrity ve
       sophisticated locking gibi (user-defined types), rules, inheritance ve
       lock cakmalarn drmek iin multi-version uyumluluk zellikleri
       bulunmaktadr.
       
       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 ilemlerinde, 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
       yaplanm durumdayz. PostgreSQL'i MySQL ile karlatran u web
       sitesine bakabilirsiniz: http://openacs.org/why-not-mysql.html
       
       Gvenilirlik:
       
       DBMS'lerin gvenilir olmas gerketii, yoksa deerleri olmayacan
       dnyoruz. ok iyi test edilmi, dengeli alsan minimum sayda hata
       ieren kod sunmaya alyoruz. Her bir srm en az 1 aylk beta
       testlerinden geirilmektedir. Srm gemiine bakarsanz, retime
       hazr, dengeli ve kararl kodlar sunduumuzu grebilirsiniz. Bu
       alanda, dier veritaban yazlmlarna stnlmz olduuna
       inanmaktayz.
       
       Destek:
       
       E-posta listemiz, oluan herhangi bir sorunu zebilecek byk sayda
       kullanc ve gelitirici grubunu ierir. Sorununuz iin, en az bir
       ticari veritaban kadar rahat zm bulabilirsiniz. Gelistiricilere,
       kullanc grubuna, belgelere ve kaynak koda direk olarak eriebilme,
       PostgreSQL desteini, dier DBMS'lere 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 sahiptir. Bunun
       iin, yllar boyu alp bu altyapy oluturup yneten Marc
       Fournier'e teekkrler.
       
       Bir ak kaynak kodlu proje iin, kaliteli altyap ok nemlidir. Bu
       altyap, projenin kesilmesini nler ve projenin ilerlemesini
       hzlandrr.
       
       Tabii ki bu altyap ucuz deildir. lerin yrmesi iin eitli ylk
       ve anlk harcamalarmz olmaktadr. Eer siz ya da irketinizin bu
       abamza bata bulunabilecek paras varsa, ltfen
       http://store.pgsql.com/ adresine gidiniz ve bata, hibede bulununuz.
       
       Web sayfasnn 'PostgreSQL Inc.' den bahsetmesine ramen, "katkda
       bulunanlar" (contributors) maddesi sadece PostgreSQL projesini
       desteklemek iindir ve belirli bir irketin para kayna deildir.
       isterseniz, balant adresine bir ek gnderebilirsiniz.
         _________________________________________________________________
       
                             Kullanc/stemci 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 giri seviyesinde bilgi bulunmaktadr.
       
       Web ile btnleme iin, PHP () mkemmel bir arabirim sunar.
       
       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 baka dizinlere nasl
        kurabilirim?
        
       configure betiini alstrrken, --prefix seeneini 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 balattmda, pcMemoryCreate hatas alyorum. Neden?
        
       Ya ekirdeinizde shared memory desteiniz dzgnce
       yaplandrlmamtr, ya da ekirdeinizdeki mevcut shared memory
       miktarn bytmeniz gerekecektir. Gereksinim duyacanz miktar,
       mimarinize ve postmaster iin ayarladgnz tampon ile backend ilemi
       saysna baldr. Tm sistemler iin, tamponlar ve ilemlerde
       ntanml saylarla, ~ 1MB kadar yere gereksinmeniz olacaktr.
       PostgreSQL 7.3.2 Sistem Yneticileri Rehberi'ne, shared memory ve
       semaphorelar hakkndaki ayrntl bilgi iin bakabilirsiniz.
       
        3.4) postmaster' balattmda, pcSemaphoreCreate hatas alyorum. Neden?
        
       Eer hata, "pcSemaphoreCreate: semget failed (No space left on
       device)" ise, ekirdeiniz yeterli semaphore ile yaplandrlmam
       demektir. Postgres, her bir potansiyel backend iin bir semaphore
       gereksinimi duyar. Geici bir zm, postmaster backend ilemleri
       iin daha az miktarda snrla balatmak olabilir. -N'i varsaylan
       deer olan 32'den kk bir deerle balatnz. Daha kalc bir zm,
       ekirdeinizin SEMMNS ve SEMMNI parametrelerini ykseltmek olacaktr.
       
       almayan semaphore'lar ar veritaban ilemlerinde kme
       yaratabilirler.
       
       Eer hata mesajnz baka bir ey ise, ekirdeinizde semaphore
       desteini yaplandrmam olabilirsiniz. Shared memory ve
       semaphore'lar hakkndaki daha ayrntl bilgi iin PostgreSQL 7.3.2
       Sistem Yneticileri Rehberi'ne bakabilirsiniz.
       
        3.5) Diger bilgisayarlarn benim PostgreSQL veritaban sunucuma
        balantlarn nasl kontrol edebilirim?
        
       n tanml olarak, PostgreSQL sadece yerel makineden Unix domain
       sockets kullanarak balanlmasna izin verir. Diger makineler,
       postmaster'a -i etiketini geirmezseniz ve $PGDATA/pg_hba.conf
       dosyasn dzenleyerek host-based authentication'a olanak vermezseniz,
       balant yapamayacaklardr.
       
        3.6) Veritabani motorunu daha iyi baarm iin nasl ayarlayabilirim?
        
       Index'ler sorgular hzlandrabilir. EXPLAIN komutu, PostgreSQL'in
       sorgunuzu nasl yorumladn ve hangi index'leri kullandn
       grmenize izin verir.
       
       Eer cok fazla INSERT ilemi yapyorsanz, bunlar byk bir toplu
       ilem dosyaskullanp COPY komutu ile veritabanna girmeyi deneyiniz.
       Bu, tekil INSERT'lerden daha hzldr. kinci olarak, BEGIN
       WORK/COMMIT transaction blou iinde olmayan ifadeler kendi
       transaction'larndaym gibi dnlr. oklu ifadeleri tek bir
       transaction blou iinde yapabilirsiniz. Bu, transaction overhead'ini
       drecektir. Tek bir transaction blou iinde birden ok ifadeyi
       altrmay deneyebilirsiniz. Bu da ayn ekilde, 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 diski flush etmesini
       engelleyecektir.
       
       Ayn zamanda, postmaster'i -B seenei ile balatp, backend ilemleri
       tarafndan kullanlan shared memory buffers saylarn
       arttrabilirsiniz. Eer 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 index'e 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' 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 postmaster'dan
       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) Balanmaya alrken, neden "Sorry, too many clients" hatasn
        alyorum?
        
       Postmaster'n ezamanl olarak balatabilecei backend sreleri
       snrlarn arttrmanz gerekmektedir.
       
       n tanml deer 32 sretir. Bunu, postmaster' 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 yaplacaksa ve
       sralama backend'in -s parametresinin izin verdiinden daha fazla
       alana gereksinim duyuyorsa, ekstra veriyi tutmak iin geici dosyalar
       yaratlr.
       
       Geici dosyalar, eer sralama srasnda backend gmezse otomatik
       olarak silinecektir. Eer alan durumda bir backend'iniz yoksa,
       pg_tempNNN.NN dosyalarn silmeniz gvenlidir.
       
        3.10) PostgreSQL srmlerini ykseltmek 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.
       
        3.11) Nasl bir donanm kullanmalym?
        
       PC donanm tamamen uyumlu olduu iin, insanlar tm PC donanmlarnn
       ayn kalitede olduunu dnrler. Oysa byle deildir. ECC RAM, SCSI
       ve kaliteli anakartlar daha ucuz donanmlara gre daha ok
       gvenilirlerdir ve baarmlar daha yksektir. PostgreSQL hemen hemen
       tm donanmda alabilmektedir, ancak gvenilirlik ve baarm nemli
       ise donanm seeneklerini ok iyi aratrmak gereklidir. E-posta
       listelerimi donanmlarla ilgili sorular ve de ticaret iin
       kullanlabilir.
         _________________________________________________________________
       
                                 letimsel Sorular
                                          
        4.1) Binary cursor ve normal cursor arasndaki fark nedir?
        
       DECLARE yardm sayfasna baknz.
       
        4.2) Sorgunun sadece ilk birka satrn nasl SELECT edebilirim?
        
       FETCH yardm sayfasna baknz, ya 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 tablolarn ya da dier eylerin listesini
        nasl alabilirim?
        
       pgsql/src/bin/psql/describe.c iindeki psql kaynak kodunu
       okuyabilirsiniz. Bu kod, psql'in \ ile balayan komutlarnn ktsn
       olusturan SQL komutlarn 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 iin en fazla byklk nedir?
        
       Snrlar:
       
       Veritaban iin en fazla byklk nedir?
       Snrsz (32 TB'lk veritaban bulunmaktadr)
       Bir tablo iin 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 aslnda snrsz degildir. Burada belirtilen snrlar,
       fiziksel snrlarn haricindeki snrlardr. Bo disk alan,
       hafza/takas alan na bal snrlamalar vardr. Baarm, snr
       deerlere yaklatka, ya da deerler ok byk olduunda debilir.
       
       Bir tablo iin byklk snr olan 32 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 bal (yaklak)
    + 24 byte: Bir tamsay (int) alan ve bir metin (text) alan
    +  4 byte: Sayfada tuple a pointer
    ----------------------------------------
      64 byte -> kayt bana
    
       PostgreSQL'de veri sayfas (data page) bykl 8192 byte (8k)dr,
       dolaysyla:
    8192 byte -> page bana
    -------------------------  =  Her bir veritaban page' bana 128 satr (yaklak)
      Satr bana 64 byte
    
    100000 veri satr
    --------------------  =  782 veritaban sayfas
         128 satr
    
       782 veritaban sayfas * sayfa bana 8192 byte = 6,406,144 bytes (6.4
       MB)
       
       Index'ler ok fazla yere gereksinim duymazlar, ama index'lenmi veriyi
       tutacaklarndan byk olabilirler.
       
       NULL deerler bitmapler iinde tutulur; dolaysyla ok az yer
       kaplarlar.
       
        4.7) Veritabannda hangi tablo ya da index'lerin tanmlandn 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 dosyalarndan bilgiyi almak iin gereksinim
       duyulan bir ok SELECT'leri gsterir.
       
        4.8) Sorgularm cok yava, ya da index'lerimi 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,
              + LIKE sorgular % ile balamamaldr.
              + 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'n 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 Algorithm(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 index'i nasl kullanabilirim?
        
       ~ operatr dzenli ifade elemesi ve ~* byk/kk harfe duyarsz
       dzenli ifade elemesi yapar. Byk/kk harfe duyarl olan LIKE'n
       byk/kk harfe duyarsz olan biimi 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 index yaratmayacaktr. Ancak eer fonksiyonel bir
       index yaratrsanz; o kullanlacaktr:
    CREATE INDEX tabindex on tab (lower(col));
    
        4.13) Bir sorguda, bir alanin "NULL" olduunu 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 uzunlua 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
       mesajlarn incelerken greceksiniz.
       
       lk drt veri tipi "varlena" tipidir (yani, diskteki ilk 4 bayt
       uzunluktur; devam da veridir.) Dolaysyla, kullanlan gerek alan,
       belirtilen alandan biraz daha byktr. Ancak, bu veri tipleri,
       sktrlmaya tabi tutulabilir; dolaysyla disk alan beklenilenden
       kk olabilir. VARCHAR(n) bykl artabilen ama en byk uzunluu
       snrl olan 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 index yaratr.
       
       rnek, aadaki sorgu:
    CREATE TABLE person (
        id   SERIAL,
        name TEXT
    );
                    
       buna evrilir:
    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 );
                    
       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() dier kullanclara sorun yaratmaz m?
        
       Hayr. curval(), tm kullanclar deil, backend tarafndan atanan
       geerli deeri dndrr.
       
        4.15.4) Neden sequence saylar transaction ileminin iptalinden sonra
        yeniden kullanlyor? Neden sequence/SERIAL kolonumdaki saylarda atlamalar
        oluyor?
        
       Uyumluluu arttrmak iin, sequence deerleri alan transaction'lara
       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 INTO 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 tketmi olabilirsiniz, ya da
       ekirdeiniz belli kaynaklar icin dk bir snra sahip olabilir.
       postmaster' 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 salayacaktr. Bu komut, varolan ileme
       (current process) ve komut altrldktan sonraki tm alt ilemlere
       uygulanr. Eer SQL istemcinizle, backend'in ok fazla veri dndrmesi
       nedeniyle bir sorun yayorsanz, bunu istemciyi balatmadan nce
       deneyiniz.
       
        4.19) Hangi PostgreSQL srmn altrdm nasl grebilirim?
        
       psql arabiriminde, select version(); yaznz.
       
        4.20) Neden large-object ilemlerim, "invalid large obj descriptor"
        hatasn veriyor?
        
       Large object ilemlerinizin ularna, yani lo_open ... lo_close
       komutlarnn evresine, BEGIN WORK ve COMMIT koymanz gerekmektedir;
       
       u anda, PostgreSQL kurallar large objectleri transaction commit
       edildiinde kapatarak uygulamaktadr. Dolaysyla handle ile yaplacak
       ilk ey invalid large obj descriptor hatas ile
       sonulanacaktr.Dolaysyla alan kodunuz eer transaction
       kullanmazsanz hata mesajlar retecektir.
       
       Eer ODBC gibi bir istemci arabirimi kullanyorsanz, auto-commit'i
       kapatmanz gerekebilir.
       
        4.21) u andaki zaman ntanml deer olarak kabul eden How do I 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 subquery'lerim 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 col1 IN (SELECT col2 FROM TAB2)
                    
       sorgusunu, aadaki ile deitirin:
    SELECT *
        FROM tab
        WHERE EXISTS (SELECT col2 FROM TAB2 WHERE col1 = col2)
                    
       Bu ilemin hzl olmas iin, subcol'un indexlenmi 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 ilemini nasl yapabilirim?
        
       PostgreSQL outer joins islemlerini SQL standartlarn kullanarak
       gerekletirmektedir. Aada 2 rnek bulunmaktadr:
    SELECT *
    FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
                    
       ya da
    SELECT *
    FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
                    
       Bu zde sorgular t1.col' i t2.col'ye join ederler ve ayn zamanda
       t1'deki unjoined satrlar (t2'de elenmemi olanlarla) dndrrler.
       RIGHT JOIN 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 IN (SELECT tab2.col1 FROM tab2)
    ORDER BY col1
                    
        4.24) Ayn andan birden fazla veritabannda nasl ilem yapabilirim?
        
       Mevcut veritabannz dndaki baka bir veritabannz sorgulamanzn
       bir yolu bulunmamaktadr. Bunun nedeni, PostgreSQL'in veritabanna
       zel sistem kataloglar yklemesidir. Bu nedenle, cross-database bir
       sorgunun nasl davranacan kestirmek zordur.
       
       contrib/dblink fonksiyon arlarn kullanarak cross-database
       sorgulara izin verir. Tabii ki, bir istemci deiik veritabanlarna
       ayn anda eriim salayabilir ve bilgiyi bu ekilde 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 cache'ler. 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 cache'lenmi 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) 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 ey olabilir. Kullanc-tanml
       fonksiyonunuzu stand-alone bir programda altrmay deneyiniz.
       
        5.2) PostgreSQL'e nasl yeni tipler/fonksiyonlar ekleyebilirim?
        
       almalarnz pgsql-hackers e-posta listesine gnderiniz. Kodunuz
       incelendikten sonra /contrib dizinine konacaktr.
       
        5.3) Bir tuple dondrmek icin bir C fonksiyonunu nasil yazarm?
        
       PostgreSQL 7.3 srm ile birlikte, C, PL/PgSQL ve SQL kullanlarak
       tablo-dndren fonksiyonlar tamamen desteklenmektedir. Ayrntl bilgi
       iin PostgreSQL 7.3.2 Kullanc Rehberi'ne bakabilrisiniz. 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 kullanyorsanz, configure betiinin --enable-depend
       seeneini, derleyicinin bamllklar otomatik olarak hesaplamas
       iin kullanabilirsiniz.