mirror of
https://git.postgresql.org/git/postgresql.git
synced 2026-02-01 04:17:34 +08:00
Update Turkish FAQ, Devrim GUNDUZ
This commit is contained in:
309
doc/FAQ_turkish
309
doc/FAQ_turkish
@ -1,11 +1,11 @@
|
||||
PostgreSQL i�in S�k�a Sorulan Sorular (SSS)
|
||||
|
||||
Son g�ncelleme : 19.05.2003 Cuma 05:03
|
||||
Son g�ncelleme : 23 �ubat 2004 Pazartesi - 13:34:26
|
||||
|
||||
Bruce Momjian (pgman@candle.pha.pa.us)
|
||||
�eviren : Devrim G�ND�Z (devrim@gunduz.org), Nicolai Tufar (ntufar@yahoo.com), Volkan Yaz�c� (volkany@celiknet.com)
|
||||
�eviren : Devrim G�ND�Z (devrim@gunduz.org), Nicolai Tufar (ntufar@yahoo.com), Volkan YAZICI (vyazici@phreaker.net)
|
||||
|
||||
Bu belgenin en g�ncel hali, http://www.gunduz.org/seminer/pg/FAQ_turkish ve
|
||||
Bu belgenin en g�ncel hali, http://www.gunduz.org/seminer/pg/FAQ_turkish.html ve
|
||||
http://www.PostgreSQL.org/docs/faq-turkish.html
|
||||
adreslerinde gor�lebilir.
|
||||
|
||||
@ -60,7 +60,7 @@
|
||||
|
||||
4.1) Binary cursor ve normal cursor aras�ndaki fark nedir?
|
||||
4.2) Sorgunun sadece ilk birka� sat�r�n� nas�l SELECT edebilirim?
|
||||
4.3) psql'in i�inde g�rd���m tablolar�n ya da di�er �eylerin listesini nasil alabilirim?
|
||||
4.3) psql'in i�inde g�rd���m tablolar�n ya da di�er �eylerin listesini nas�l alabilirim?
|
||||
4.4) Bir tablodan bir kolonu nas�l kald�rabilirim?
|
||||
4.5) Bir sat�r, tablo ve veritaban� icin en fazla b�y�kl�k nedir?
|
||||
4.6) Tipik bir metin dosyas�ndaki veriyi saklamak i�in ne kadar disk alan� gereklidir?
|
||||
@ -69,8 +69,8 @@
|
||||
4.9) Query-optimizer in sorgular�m� nas�l de�erlendirdigini, i�leme soktu�unu nas�l g�rebilirim?
|
||||
4.10) R-tree index nedir?
|
||||
4.11) Genetic Query Optimizer nedir?
|
||||
4.12) D�zenli ifade (Regular Expression) aramalar�n� ve b�y�k/k���k harfe duyars�z aramalar� nasil yapabilirim?
|
||||
Bu b�y�k(k���k harfe duyarl� aramalar i�in indeksi nasil kullanabilirim?
|
||||
4.12) D�zenli ifade (Regular Expression) aramalar�n� ve b�y�k/k���k harfe duyars�z aramalar� nas�l yapabilirim?
|
||||
Bu b�y�k(k���k harfe duyarl� aramalar i�in indeksi nas�l kullanabilirim?
|
||||
|
||||
4.13) Bir sorguda, bir alan�n "NULL" oldu�unu nas�l ortaya ��karabilirim?
|
||||
4.14) �esitli karakter tipleri aras�ndaki farklar nelerdir?
|
||||
@ -89,7 +89,7 @@
|
||||
4.23) Outer join i�lemini nas�l yapabilirim?
|
||||
4.24) Ayn� anda birden fazla veritaban�nda nas�l i�lem yapabilirim?
|
||||
4.25) Bir fonksiyondan nas�l �oklu sat�r ya da kolon d�nd�rebilirim?
|
||||
4.26) Neden Pl/PgSQL fonksiyonlar� i�inden g�venli bir �ekilde tablo yaratma/kald�rma i�lemlerini yapam�yoruz?
|
||||
4.26) Neden PL/pgSQL fonksiyonlar� i�inden g�venli bir �ekilde tablo yaratma/kald�rma i�lemlerini yapam�yoruz?
|
||||
4.27) Hangi replikasyon se�enekleri bulunmaktad�r?
|
||||
4.28) Hangi �ifreleme se�enekleri bulunmaktad�r?
|
||||
|
||||
@ -169,14 +169,14 @@
|
||||
libpq C k�t�phanesini, psql ve diger arabirimleri ve binary dosyalar�, MS
|
||||
Windows ortamlar�nda �al�smas� i�in derlemeniz m�mk�nd�r. Bu �rnekte istemcide
|
||||
MS Windows �al�s�yor ve desteklenen Unix platformlar�ndan birinde �al�san PostgreSQL
|
||||
sunucuna TCP/IP ile baglanmaktad�r. Da��t�m i�indeki win31.mak dosyas� ile,
|
||||
sunucuna TCP/IP ile baglanmaktad�r. Da��t�m i�indeki win32.mak dosyas� ile,
|
||||
Win32 libpg k�t�phanesi ve psql yaratabilirsiniz. PostgreSQL ayn� zamanda ODBC
|
||||
istemcileri ile haberlesebilmektedir.
|
||||
|
||||
Sunucu
|
||||
|
||||
Veritaban� sunuucsu Cygwin kullanarak Windows NT, 2K ya da XP �zerinde calistirilabilir.
|
||||
Dag�t�m i�indeki pgsql/doc/FAQ_MSW�N dosyas�n� ya da web sitemizdeki MS Windows FAQ'u
|
||||
Veritaban� sunucusu Cygwin kullanarak Windows NT, 2K ya da XP �zerinde �al��t�r�labilir.
|
||||
Da��t�m i�indeki pgsql/doc/FAQ_MSW�N dosyas�n� ya da web sitemizdeki MS Windows FAQ'u
|
||||
inceleyebilirsiniz.
|
||||
|
||||
Do�al Windows NT/2000/XP portu i�in �u anda �al��malar devam etmektedir. Windows s�r�m�
|
||||
@ -185,15 +185,15 @@
|
||||
|
||||
Ayr�ca, http://forge.novell.com adresinde Novell Netware 6 portu bulunmaktad�r.
|
||||
|
||||
1.5) PostgreSQL'in nereden indirebilirim?
|
||||
1.5) PostgreSQL'i nereden indirebilirim?
|
||||
|
||||
PostgreSQL i�in ana anonim ftp sitesi ftp://ftp.PostgreSQL.org/pub ' dur.
|
||||
Yans�lar i�in, ana web sayfam�za bakabilirsiniz.
|
||||
|
||||
1.6) Deste�i nereden alabilirim?
|
||||
|
||||
Ana e-posta listesi : pgsql-general@PostgreSQL.org. PostgreSQL konusundaki tart�smalara
|
||||
a��kt�r. �ye olmak i�in, asag�daki sat�rlar� e-postanizin body k�sm�na (konu k�sm�na degil)
|
||||
Ana e-posta listesi : pgsql-general@PostgreSQL.org. PostgreSQL konusundaki tart��malara
|
||||
a��kt�r. �ye olmak i�in, asa��daki sat�rlar� e-postan�z�n g�vde k�sm�na (konu k�sm�na de�il)
|
||||
yaz�p, pgsql-general-request@PostgreSQL.org adresine g�nderin:
|
||||
|
||||
subscribe
|
||||
@ -207,30 +207,30 @@
|
||||
|
||||
yazan bir e-posta atman�z yeterli olacakt�r.
|
||||
|
||||
Digest postalar, ana liste 30k civar�nda e-postaya ulastiginda �yelere g�nderilmektedir.
|
||||
Digest postalar, ana liste 30k civar�nda e-postaya ulast���nda �yelere g�nderilmektedir.
|
||||
|
||||
Buglar i�in bir e-posta listesi bulunmaktad�r. Bu listeye �ye olmak i�in,
|
||||
email to pgsql-bugs-request@PostgreSQL.org adresine, body k�sm�nda
|
||||
pgsql-bugs-request@PostgreSQL.org adresine, body k�sm�nda
|
||||
|
||||
subscribe
|
||||
end
|
||||
|
||||
yazan bir e-posta atman�z yeterli olacakt�r.
|
||||
|
||||
Ayn� zamanda, gelistiriciler i�in tart�sma listesi bulunmaktad�r. Bu listeye �ye olmak
|
||||
i�in, pgsql-hackers-request@PostgreSQL.org adresine, body k�sm�nda
|
||||
Ayn� zamanda, geli�tiriciler i�in tart��ma listesi bulunmaktad�r. Bu listeye �ye olmak
|
||||
i�in, pgsql-hackers-request@PostgreSQL.org adresine, g�vde k�sm�nda
|
||||
|
||||
subscribe
|
||||
end
|
||||
|
||||
yazan bir e-posta atman�z yeterli olacakt�r.
|
||||
|
||||
Bunun d�s�ndaki e-posta listelerine ve PostgreSQL hakk�nda bilgiye, PostgreSQL WWW
|
||||
ana sayfas�ndan ulasabilirsiniz:
|
||||
Bunlar�n d���ndaki e-posta listelerine ve PostgreSQL hakk�nda bilgiye, PostgreSQL WWW
|
||||
ana sayfas�ndan ula�abilirsiniz:
|
||||
|
||||
http://www.PostgreSQL.org
|
||||
|
||||
Ayn� zamanda, EFNet �zerinde, #PostgreSQL adl� bir �RC kanal� bulunmaktad�r. Bunun i�in,
|
||||
Ayn� zamanda, EFNet ve OpenProjects �zerinde, #PostgreSQL adl� bir IRC kanal� bulunmaktad�r. Bunun i�in,
|
||||
irc -c '#PostgreSQL' "$USER" irc.phoenix.net Unix komutunu kullanabilirsiniz.
|
||||
|
||||
Ticari destek veren firmalar�n listesine,
|
||||
@ -318,7 +318,7 @@
|
||||
PostgreSQL mevcut b�y�k ticari veritabanlarinin, transaction, subselect,
|
||||
trigger, view, foreign key referential integrity ve sophisticated locking gibi
|
||||
t�m �zelliklerine sahiptir. Onlarin sahip olmadiklari, kullanici-tanimli tipler
|
||||
(user-defined types), rules, inheritance ve lock cak�smalarini d�s�rmek icin
|
||||
(user-defined types), rules, inheritance ve lock cak��malar�n� d���rmek i�in
|
||||
multi-version uyumluluk �zellikleri bulunmaktadir.
|
||||
|
||||
Performans (Ba�ar�m)
|
||||
@ -460,7 +460,7 @@
|
||||
ve $PGDATA_pg_hba.conf dosyas�n� d�zenleyerek host-based authentication'a
|
||||
olanak vermezseniz, baglant� yapamayacaklard�r.
|
||||
|
||||
3.6) Veritabani motorunu daha iyi basarim icin nasil ayarlayabilirim?
|
||||
3.6) Veritabani motorunu daha iyi basarim icin nas�l ayarlayabilirim?
|
||||
|
||||
Indexler sorgular� h�zland�rabilir. EXPLAIN komutu, PostgreSQL'in sorgunuzu nas�l
|
||||
yorumlad���n� ve hangi indexleri kullandigini g�rmenize izin verir.
|
||||
@ -577,17 +577,15 @@
|
||||
|
||||
DECLARE yard�m sayfasina bakiniz.
|
||||
|
||||
4.2) Sorgunun sadece ilk birka� sat�r�n� nasil SELECT edebilirim?
|
||||
4.2) Sorgunun sadece ilk birka� sat�r�n� nas�l SELECT edebilirim?
|
||||
|
||||
FETCH yard�m sayfasina bakiniz, aya da SELECT ... LIMIT.... kullan�n�z.
|
||||
|
||||
The entire query may have to be evaluated, even if you only want the
|
||||
first few rows. Consider a query that has an ORDER BY. �f there is an
|
||||
index that matches the ORDER BY, PostgreSQL may be able to evaluate
|
||||
only the first few records requested, or the entire query may have to
|
||||
be evaluated until the desired rows have been generated.
|
||||
�lk birka� sat�r� almak isteseniz bile, t�m sorgu de�erlendirilmek durumunda kal�nabilir. ORDER BY i�eren bir
|
||||
sorgu d���n�n. E�er ORDER BY i�e e�le�en bir index varsa, PostgreSQL istenen ilk birka� sat�r� i�leyebilir, ya da
|
||||
t�m sorgu istenen sat�rlar �retilene kadar i�lenebilir.
|
||||
|
||||
4.3) psql'in i�inde g�rd�g�m tablolarin ya da diger seylerin listesini nasil alabilirim?
|
||||
4.3) psql'in i�inde g�rd�g�m tablolarin ya da diger seylerin listesini nas�l alabilirim?
|
||||
|
||||
pgsql/src/bin/psql/describe.c i�indeki psql kaynak kodunu okuyabilirsiniz. Bu kod,
|
||||
psql'in \ ile baslayan komutlar�n�n ��kt�s�n� olusturan SQL komutlarini i�erir. Ayn�
|
||||
@ -612,8 +610,8 @@
|
||||
|
||||
S�n�rlar:
|
||||
|
||||
Veritabani icin en fazla b�y�kl�k nedir? S�n�rs�z (4 TB'l�k veritaban� bulunmaktad�r)
|
||||
Bir tablo icin en fazla b�y�kl�k nedir? 16 TB
|
||||
Veritabani icin en fazla b�y�kl�k nedir? S�n�rs�z (32 TB'l�k veritaban� bulunmaktad�r)
|
||||
Bir tablo icin en fazla b�y�kl�k nedir? 32 TB
|
||||
Bir sat�r i�in en fazla b�y�kl�k nedir? 1.6 TB
|
||||
Bir alan i�in en fazla b�y�kl�k nedir? 1 GB
|
||||
Tabloda en fazla sat�r say�s� ka�t�r? S�n�rs�z
|
||||
@ -664,7 +662,7 @@
|
||||
|
||||
NULL de�erler bitmapler i�inde tutulur; dolay�s�yla �ok az yer kaplarlar.
|
||||
|
||||
4.7) Veritaban�nda hangi tablo ya da indexlerin tan�mland�g�n� nasil g�rebilirim?
|
||||
4.7) Veritaban�nda hangi tablo ya da indexlerin tan�mland�g�n� nas�l g�rebilirim?
|
||||
|
||||
psql, bu t�r bilgileri g�stermek i�in, \ ile ba�layan bir �ok komut sunmaktad�r.
|
||||
\? komutu ile bu komutlar� g�rebilirsiniz. Ayr�ca, bunlar� a��klayan ve pg_ ile ba�layan
|
||||
@ -675,69 +673,67 @@
|
||||
sistem dosyalarindan bilgiyi almak i�in gereksinim duyulan bir �ok SELECTleri g�sterir.
|
||||
|
||||
4.8) Sorgular�m cok yava�, ya da indexlerimi kullanm�yorlar. Neden?
|
||||
Indexler her sorgu taraf�ndan otomatik olarak kullan�lmazlar. Indexler e�er bir tablonun b�y�kl��� minimum bir
|
||||
b�y�kl�kten fazla ise ve sorgu tablodaki sat�rlar�n sadece k���k bir y�zdesini se�iyorsa kullan�l�r. Bunun nedeni,
|
||||
index eri�iminin neden oldu�u raslansal disk eri�imi nin diskin ya da tablonun s�ral� okunmas�ndan daha yavas
|
||||
olabilmesidir.
|
||||
|
||||
Indexes are not automatically used by every query. Indexes are only used if the table is larger than a minimum size,
|
||||
and the query selects only a small percentage of the rows in the table. This is because the random disk access caused
|
||||
by an index scan can be slower than a straight read through the table, or sequential scan.
|
||||
Bir index'in kullan�l�p kullan�lmayaca��n� belirlemek i�in, PostgreSQL tablo hakk�ndaki istatistiklere gereksinmesi
|
||||
vard�r. Bu istatistikler, VACUUM ANALYZE kullan�larak toplan�rlar. Optimizer, istatistikleri kullanarak, tabloda ka�
|
||||
sat�r oldu�unu ve bilir ve indexin kullan�l�p kullan�lmayaca��na daha iyi karar verir. Istatistikler, ayn� zamanda en
|
||||
uygun join s�ras�n� ve y�ntemini belirlemekte �ok �nemlidir. �statistik toplanmas�, tablo i�erikleri de�i�tik�e
|
||||
periyodik olarak yap�lmal�d�r.
|
||||
|
||||
To determine if an index should be used, PostgreSQL must have statistics about the table. These statistics are
|
||||
collected using VACUUM ANALYZE, or simply ANALYZE. Using statistics, the optimizer knows how many rows are in the
|
||||
table, and can better determine if indexes should be used. Statistics are also valuable in determining optimal join
|
||||
order and join methods. Statistics collection should be performed periodically as the contents of the table change.
|
||||
|
||||
Indexes are normally not used for ORDER BY or to perform joins. A sequential scan followed by an explicit sort is
|
||||
usually faster than an index scan of a large table.
|
||||
However, LIMIT combined with ORDER BY often will use an index because only a small portion of the table is returned.
|
||||
In fact, though MAX() and MIN() don't use indexes, it is possible to retrieve such values using an index with ORDER
|
||||
BY and LIMIT:
|
||||
Indexler normalde ORDER BY sorgular� ya da join i�lemlerini ger�ekle�tirmek i�in kullan�lmazlar. A��k bir s�ralamay�
|
||||
takip eden s�ral� bir arama (sequential scan), b�y�k bir tabloda index aramas� yapmaktan genelde daha h�zl�d�r.
|
||||
Ancak, ORDER BY ile birle�mi� LIMIT genellikle bir index kullanacakt�r; ��nk� tablonun sadece belirli bir miktar�
|
||||
d�nd�r�lecektir. Asl�nda, MAX() ve MIN() fonksiyonlar�n�n index kullanmamalar�ndan dolay�, bu gibi de�erleri ORDER BY
|
||||
ve LIMIT kullanarak da almak olas�d�r:
|
||||
|
||||
SELECT col
|
||||
FROM tab
|
||||
ORDER BY col [ DESC ]
|
||||
LIMIT 1;
|
||||
|
||||
E�er optimizer'in sequential scan i�leminde hata yapt���n� d���n�yorsan�z, SET enable_seqscan TO 'off' 'u kullan�n�z
|
||||
ve index scan'in hala h�zl� olup olmad���n� g�rmek i�in testler yap�n�z.
|
||||
E�er optimizer'�n s�ral� arama yapmas�n�n yanl�� oldu�una inan�yorsan�z, SET enable_seqscan TO 'off' kullan�n ve
|
||||
index kullanan aramalar�n hala daha h�zl� olup olmad���n� g�r�n.
|
||||
|
||||
LIKE ya da ~ gibi operatorler kullaniyorsan�z, indeksler sadece a�a��daki ko�ullarda kullan�labilir:
|
||||
LIKE ya da ~ gibi operat�rler kullan�yorsan�z, index'ler sadece a�a��daki ko�ullarda kullan�labilir:
|
||||
|
||||
* Arama dizininin ba��, dizinin ba�� ile ba�lanmal�d�r. Yani,
|
||||
o LIKE sorgular� % ile ba�lamamal�d�r.
|
||||
o D�zenli ifade sorgular� ^ i�e ba�lamamal�d�r.
|
||||
* Arama dizininin ba��, dizinin ba�� ile ba�lanmal�d�r. Yani,
|
||||
o LIKE sorgular� % ile ba�lamamal�d�r.
|
||||
o D�zenli ifade sorgular� ^ i�e ba�lamamal�d�r.
|
||||
* Arama metni bir karakter s�n�f� ile ba�layamaz. �rnek: [a-e]
|
||||
* ILIKE ve ~* gibi b�y�k/k���k harfe duyars�z aramalar indekslerden yararlanmazlar. Onun yerine, b�l�m 4.12'de
|
||||
anlat�lan fonksiyonel indeksleri kullanabilirsiniz.
|
||||
* initdb s�ras�nda �ntan�ml� C localei kullan�lmal�d�r.
|
||||
* ILIKE ve ~* gibi b�y�k/k���k harfe duyars�z aramalar index'lerden yararlanmazlar. Onun yerine, b�l�m 4.12'de
|
||||
anlat�lan fonksiyonel index'leri kullanabilirsiniz.
|
||||
* initdb s�ras�nda �ntan�ml� C locale'i kullan�lmal�d�r.
|
||||
|
||||
4.9) query-optimizer in sorgular�m� nas�l de�erlendirdi�ini, i�leme soktu�unu nas�l g�rebilirim?
|
||||
|
||||
EXPLAIN yard�m sayfas�na bak�n�z.
|
||||
|
||||
4.10) R-tree index nedir?
|
||||
R-tree index, uzaysal (spatial) verileri indexlemek i�in kullan�l�r. Bir hash index, dizi aramalar�nda (range search)
|
||||
kullan�lamaz. B-tree index dizi aramalar�nda sadece tek boyutlu �al��maktad�r. R-tree, �ok boyutlu veriyi destekler.
|
||||
�rne�in, e�er bir R-tree index point veri tipi �zerinde in�a edililebilirse, sistem "select all points within a
|
||||
bounding rectangle" gibi sorgulara daha verimli yan�tlar verecektir.
|
||||
|
||||
An R-tree index is used for indexing spatial data. A hash index can't handle range searches. A B-tree index only
|
||||
handles range searches in a single dimension. R-trees can handle multi-dimensional data. For example, if an R-tree
|
||||
index can be built on an attribute of type point, the system can more efficiently answer queries such as "select all
|
||||
points within a bounding rectangle."
|
||||
Orijinal R-tree tasar�m�n� a��klayan belge:
|
||||
|
||||
The canonical paper that describes the original R-tree design is:
|
||||
|
||||
Guttman, A. "R-trees: A Dynamic Index Structure for Spatial Searching." Proceedings of the 1984 ACM SIGMOD Int'l Conf
|
||||
Guttman, A. "R-trees: A Dynamic Index Structure for Spatial Searching." Proceedings of the 1984 ACM SIGMOD Int'l Conf
|
||||
on Mgmt of Data, 45-57.
|
||||
|
||||
Bu paperi, Stonebraker'�n "Readings in Database Systems" kitab�nda bulabilirsiniz.
|
||||
Bu belgeyi, Stonebraker'�n "Readings in Database Systems" kitab�nda bulabilirsiniz.
|
||||
|
||||
G�m�l� R-tree indexleri poligon ve boxlar� kullanabilir. Teorik olarak, R-tree indexlerin �zelliklerini
|
||||
geni�letmek bir miktar �aba gerektirir ve bunun nas�l yap�laca��na dair bir belgemiz hen�z bulunmamaktad�r.
|
||||
|
||||
Built-in R-trees can handle polygons and boxes. In theory, R-trees can be extended to handle higher number of
|
||||
dimensions. In practice, extending R-trees requires a bit of work and we don't currently have any documentation on
|
||||
how to do it.
|
||||
|
||||
4.11) Genetic Query Optimizer nedir?
|
||||
|
||||
GEQO mod�l�, Genetic Algorith(GA) kullan�larak tablolar birle�tirildi�inde sorgu optimizasyonunu h�zland�r�r.
|
||||
It allows the handling of large join queries through nonexhaustive search.
|
||||
|
||||
4.12) D�zenli ifade (Regular Expression) aramalar�n� ve b�y�k/k���k harfe duyars�z aramalar� nasil yapabilirim?
|
||||
Bu b�y�k(k���k harfe duyarl� aramalar i�in indeksi nasil kullanabilirim?
|
||||
|
||||
4.12) D�zenli ifade (Regular Expression) aramalar�n� ve b�y�k/k���k harfe duyars�z aramalar� nas�l yapabilirim?
|
||||
Bu b�y�k(k���k harfe duyarl� aramalar i�in indeksi nas�l kullanabilirim?
|
||||
|
||||
~ operat�r� d�zenli ifade e�le�mesi ve ~* b�y�k/k���k harfe duyars�z d�zenli ifade e�le�mesi yapar.
|
||||
B�y�k/k���k harfe duyarl� olan LIKE'in b�y�k/k���k harfe duyars�z olan bi�ini ILIKE't�r ve PostgreSQL
|
||||
@ -753,7 +749,7 @@ how to do it.
|
||||
|
||||
CREATE INDEX tabindex on tab (lower(col));
|
||||
|
||||
4.13) Bir sorguda, bir alanin "NULL" oldugunu nasil ortaya ��karabilirim?
|
||||
4.13) Bir sorguda, bir alanin "NULL" oldugunu nas�l ortaya ��karabilirim?
|
||||
|
||||
Kolonu, IS NULL ve IS NOT NULL ile test edebilirsiniz.
|
||||
|
||||
@ -779,14 +775,14 @@ BYTEA bytea variable-length byte array (null-byte safe)
|
||||
doldurur; ancak VARCHAR(n) sadece verilen karakterleri saklar.BYTEA binary veri saklamak i�indir; ayr�ca "NULL" bayt
|
||||
i�eren de�erleri de saklar. Burada anlat�lan �� veri tipi de benzer ba�ar�m karakteristiklere sahiptir.
|
||||
|
||||
4.15.1) Nasil serial/otomatik artan(auto-incrementing) bir alan yaratabilirim?
|
||||
4.15.1) nas�l serial/otomatik artan(auto-incrementing) bir alan yaratabilirim?
|
||||
|
||||
PostgreSQL'de SERIAL veri tipi vard�r. Bu veri tipi bir sequence ve kolon �zerinde bir indeks yarat�r.
|
||||
|
||||
�rnek, a�a��daki sorgu:
|
||||
|
||||
CREATE TABLE person (
|
||||
id SER�AL,
|
||||
id SERIAL,
|
||||
name TEXT
|
||||
);
|
||||
|
||||
@ -803,19 +799,16 @@ BYTEA bytea variable-length byte array (null-byte safe)
|
||||
tekil bir say� olarak alabilirsiniz. Ancak, veritaban�n�z�n dump'�n� al�p yeniden y�klerseniz, OID de�erlerini
|
||||
koruyabilmek i�in pg_dump'�n -o parametresini ya da "COPY WITH OIDS" se�ene�ini kullanman�z gerekecektir.
|
||||
|
||||
4.15.2) SERIAL giri�inin degerini nasil alabilirim?
|
||||
|
||||
One approach is to retrieve the next SERIAL value from the sequence object with the nextval() function before
|
||||
inserting and then insert it explicitly. Using the example table in 4.15.1, an example in a pseudo-language would
|
||||
look like this:
|
||||
4.15.2) SERIAL giri�inin degerini nas�l alabilirim?
|
||||
|
||||
Bir yakla��m, sequence nesnesindeki SERIAL de�erini, veriyi girmeden �nce nextval() ile al�p, ald���n�z de�eri
|
||||
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')");
|
||||
|
||||
You would then also have the new value stored in new_id for use in other queries (e.g., as a foreign key to the
|
||||
person table). Note that the name of the automatically created SEQUENCE object will be named
|
||||
<table>_<serialcolumn>_seq, where table and serialcolumn are the names of your table and your SERIAL column,
|
||||
respectively.
|
||||
Di�er sorgular i�in new_id'de yeni de�erin saklanmas� gerekir. Otomatik olarak yarat�lan SEQUENE nesnesinin ad�,
|
||||
<tablo ad�>_<serial kolonu ad�>_seq �eklinde olacakt�r (< > i�aretleri olmadan).
|
||||
|
||||
Alternatif olarak, atanm�� SERIAL de�erini, de�er girildikten sonra currval() fonksiyonu ile alabilirsiniz:
|
||||
|
||||
@ -823,8 +816,8 @@ respectively.
|
||||
new_id = execute("SELECT currval('person_id_seq')");
|
||||
|
||||
Son olarak, �n tan�ml� de�eri bulmak i�in INSERT ifadesinden d�nen OID de�erini kullanabilirsiniz; ancak bu
|
||||
en az ta��nabilir ��z�m olacakt�r. Perl'de, Edmund Mergl'in DBD:Pg m�d�l� ile birlikte DBI kullanarak, oid de�eri
|
||||
$sth->execute() �al��t�r�ld�ktan sonra $sth->(pg_oid_status) ile al�nabilir.
|
||||
en az ta��nabilir ��z�m olacakt�r. Perl'de, Edmund Mergl'in DBD:Pg m�d�l� ile birlikte DBI kullanarak, OID de�eri
|
||||
$sth->execute() �al��t�r�ld�ktan sonra $sth->(pg_OID_status) ile al�nabilir.
|
||||
|
||||
4.15.3) currval() ve nextval() diger kullanicilara sorun yaratmaz m�?
|
||||
|
||||
@ -838,41 +831,34 @@ respectively.
|
||||
bitene kadar o de�er kilitlenmez. Bu, iptal edilen transaction i�lemleri nedeniyle bo�luklara neden olur.
|
||||
|
||||
4.16) OID nedir? TID nedir?
|
||||
|
||||
O�Ds are PostgreSQL's answer to unique row ids. Every row that is
|
||||
created in PostgreSQL gets a unique O�D. All O�Ds generated during
|
||||
initdb are less than 16384 (from backend/access/transam.h). All
|
||||
user-created O�Ds are equal to or greater than this. By default, all
|
||||
these O�Ds are unique not only within a table or database, but unique
|
||||
within the entire PostgreSQL installation.
|
||||
|
||||
PostgreSQL uses O�Ds in its internal system tables to link rows
|
||||
between tables. These O�Ds can be used to identify specific user rows
|
||||
and used in joins. �t is recommended you use column type O�D to store
|
||||
O�D values. You can create an index on the O�D field for faster
|
||||
access.
|
||||
|
||||
O�Ds are assigned to all new rows from a central area that is used by
|
||||
all databases. �f you want to change the O�D to something else, or if
|
||||
you want to make a copy of the table, with the original O�Ds, there is
|
||||
no reason you can't do it:
|
||||
CREATE TABLE new_table(old_oid oid, mycol int);
|
||||
SELECT old_oid, mycol �NTO new FROM old;
|
||||
|
||||
OIDler, tekil sat�r numaralar�na PostgreSQL'in yan�t�d�r. PostgreSQL'de yarat�lan her say�, tekil bir OID al�r.
|
||||
initdb i�lemi s�ras�nda yarat�lan t�m OID'ler 16384'ten k���kt�r (backend/access/transam.h). Kullan�c�lar taraf�ndan
|
||||
yarat�lan t�m OID'ler bu say�ya e�it ya da bu say�dan b�y�kt�r. Varsay�lan durumda, t�m bu OIDler sadece bir tablo ya
|
||||
da veritaban�nda de�il, t�m PostgreSQL kurulumunda tekildir.
|
||||
|
||||
PostgreSQL OIDleri, tablolar aras�nda sat�rlar� ili�kilendirmek i�in kendi i� tablolar�nda kullan�r. Bu OIDler
|
||||
belirli kullan�c� sat�rlar�n� belirtmek i�in kullanabilir ve join i�lemlerinde kullan�l�r. OID de�erlerini saklamak
|
||||
i�in OID kolon tipini kullanman�z �nerinir. Daha h�zl� bir eri�im i�in, OID alan�nda bir index yaratabilirsiniz.
|
||||
|
||||
OID'ler yeni sat�rlara, t�m veritabanlar� taraf�nda kullan�lan ortak bir alandan atan�rlar. E�er OID'i ba�ka bir
|
||||
de�ere e�itlemek isterseniz ya da tablonun bir kopyas�n� orijinal OIDler ile ��karmak isterseniz, bu m�mk�nd�r:
|
||||
|
||||
CREATE TABLE new_table(old_OID OID, mycol int);
|
||||
SELECT old_OID, mycol �NTO new FROM old;
|
||||
COPY new TO '/tmp/pgtable';
|
||||
DELETE FROM new;
|
||||
COPY new W�TH O�DS FROM '/tmp/pgtable';
|
||||
COPY new WITH OIDS FROM '/tmp/pgtable';
|
||||
|
||||
O�Ds are stored as 4-byte integers, and will overflow at 4 billion. No
|
||||
one has reported this ever happening, and we plan to have the limit
|
||||
removed before anyone does.
|
||||
|
||||
TIDs are used to identify specific physical rows with block and offset
|
||||
values. T�Ds change after rows are modified or reloaded. They are used
|
||||
by index entries to point to physical rows.
|
||||
OIDler 4-bit tamsay� olarak saklan�rlar ve 4 milyarda overflow olacakt�r. Kimse bu say�ya ula�t���na dair bir bilgi
|
||||
iletmedi ve bu s�n�r� kimse bu s�n�ra ula�madan kald�raca��z.
|
||||
|
||||
TIDler, belirli fiziksel sat�rlar block ve offset de�erleri ile belirtmekte kullan�l�r. TIDler, sat�rlar de�i�ti�inde
|
||||
ya da yeniden y�klendi�inde de�i�irler. Index girdileri taraf�ndan fiziksel sat�rlar� g�stermek i�in kullan�l�rlar.
|
||||
|
||||
4.17) PostgreSQL'de kullan�lan baz� terimlerin anlamlar� nelerdir?
|
||||
|
||||
Kaynak kodun bir k�sm� ve eski belgeler, daha genis kullan�m alan� olan terimleri
|
||||
Kaynak kodun bir k�sm� ve eski belgeler, daha geni� kullan�m alan� olan terimleri
|
||||
kullan�rlar. Bunlar�n baz�lar�:
|
||||
|
||||
* table, relation, class
|
||||
@ -892,31 +878,31 @@ respectively.
|
||||
|
||||
4.18) Neden "ERROR: Memory exhausted in AllocSetAlloc()"? hatas�n� al�yorum?
|
||||
|
||||
Sisteminizde sanal belleginizi t�ketmis olabilirsiniz, ya da �ekirdeginiz
|
||||
belli kaynaklar icin d���k bir s�n�ra sahip olabilir. postmasteri baslatmadan �nce
|
||||
asagidakileri deneyebilirsiniz:
|
||||
Sisteminizde sanal belle�inizi t�ketmis olabilirsiniz, ya da �ekirde�iniz
|
||||
belli kaynaklar icin d���k bir s�n�ra sahip olabilir. Postmaster'i ba�latmadan �nce
|
||||
a�a��dakileri deneyebilirsiniz:
|
||||
|
||||
ulimit -d 262144
|
||||
limit datasize 256m
|
||||
|
||||
Kabu�unuza ba�l� olarak, bunlardan sadece biri olumlu sonu� verecektir, ama
|
||||
bu i�lem veri segment s�n�r�n�z� artt�racak, ve belki de sorgunuzun tamamlanmas�n�
|
||||
saglayacakt�r. Bu komut, varolan isleme (current process) ve komut �al�st�r�ld�ktan
|
||||
sonraki t�m alt islemlere uygulanir. Eger SQL istemcinizle, backendin �ok fazla veri
|
||||
d�nd�rmesi nedeniyle bir sorun yas�yorsan�z, bunu istemciyi baslatmadan �nce deneyiniz.
|
||||
saglayacakt�r. Bu komut, varolan s�rece (current process) ve komut �al�st�r�ld�ktan
|
||||
sonraki t�m alt islemlere uygulan�r. E�er SQL istemcinizle, backendin �ok fazla veri
|
||||
d�nd�rmesi nedeniyle bir sorun ya��yorsan�z, bunu istemciyi ba�latmadan �nce deneyiniz.
|
||||
|
||||
4.19) Hangi PostgreSQL s�r�m�n� �al�st�rd�g�m� nasil g�rebilirim?
|
||||
4.19) Hangi PostgreSQL s�r�m�n� �al�st�rd�g�m� nas�l g�rebilirim?
|
||||
|
||||
psql arabiriminde, select version(); yaz�n�z.
|
||||
psql arabiriminde, SELECT version(); yaz�n�z.
|
||||
|
||||
4.20) Neden large-object islemlerim, "invalid large obj descriptor"? hatas�n� veriyor?
|
||||
|
||||
Large object islemlerinizin uclarina, yani lo_open ... lo_close komutlar�n�n �evresine,
|
||||
BEGIN WORK ve COMMIT koyman�z gerekmektedir;
|
||||
Large object i�lemlerinizin u�lar�na, yani lo_open ... lo_close komutlar�n�n �evresine,
|
||||
BEGIN WORK ve COMMIT koyman�z gerekmektedir.
|
||||
|
||||
Eger ODBC gibi bir istemci arabirimi kullan�yorsan�z, auto-commit'i kapatman�z gerekebilir.
|
||||
|
||||
4.21) Su andaki zaman� �ntan�ml� deger olarak kabul eden How do � create a column that will default to the current time?
|
||||
4.21) �u andaki zaman� �ntan�ml� de�er olarak kabul eden kolonu nas�l yaratabilirim?
|
||||
|
||||
Alttakini kullanabilirsiniz:
|
||||
|
||||
@ -924,25 +910,29 @@ respectively.
|
||||
CREATE TABLE test (x int, modtime timestamp DEFAULT CURRENT_TIMESTAMP );
|
||||
|
||||
4.22) Neden IN kullanan subquerylerim �ok yavas?
|
||||
|
||||
Currently, we join subqueries to outer queries by sequentially scanning the result of the subquery for
|
||||
each row of the outer query. IN' i EXISTS ile de�i�tirerek bir ��z�me ula��labilir.
|
||||
|
||||
SELECT *
|
||||
7.4 s�r�m�nden �nce, subqueryler. E�er subquery sadece birka� sat�r ve outer query bol say�da sat�r d�nd�r�yorsa, IN
|
||||
en h�zl�s�d�r. Sorgular� h�zland�rmak i�in IN yerine EXISTS kullan�n:
|
||||
|
||||
SELECT *
|
||||
FROM tab
|
||||
WHERE col1 �N (SELECT col2 FROM TAB2)
|
||||
WHERE col IN (SELECT subcol FROM subtab);
|
||||
|
||||
to:
|
||||
SELECT *
|
||||
sorgusunu, a�a��daki ile de�i�tirin:
|
||||
|
||||
SELECT *
|
||||
FROM tab
|
||||
WHERE EX�STS (SELECT col2 FROM TAB2 WHERE col1 = col2)
|
||||
WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
|
||||
|
||||
Bu s�n�rlamay� ilerdeki s�r�mlerimizde d�zeltmeyi planlamaktay�z.
|
||||
Bunun h�zl� olabilmesi i�in, subcol'un indekslenmi� bir kolon olmas� gerekmektedir.
|
||||
|
||||
7.4 s�r�m� ve sonras�nda, IN asl�nda normal sorgularla ayn� karma��k join tekniklerini kullan�r ve EXISTS'e tercih
|
||||
edilir.
|
||||
|
||||
4.23) Outer join islemini nasil yapabilirim?
|
||||
4.23) Outer join islemini nas�l yapabilirim?
|
||||
|
||||
PostgreSQL outer joins islemlerini SQL standartlar�n� kullanarak ger�eklestirmektedir.
|
||||
Asagida 2 �rnek bulunmaktad�r:
|
||||
PostgreSQL outer join i�lemlerini SQL standartlar�n� kullanarak ger�ekle�tirmektedir.
|
||||
A�a��da 2 �rnek bulunmaktad�r:
|
||||
|
||||
SELECT *
|
||||
FROM t1 LEFT OUTER JO�N t2 ON (t1.col = t2.col);
|
||||
@ -952,9 +942,9 @@ SELECT *
|
||||
SELECT *
|
||||
FROM t1 LEFT OUTER JO�N t2 US�NG (col);
|
||||
|
||||
Bu �zdes sorgular t1.col ' i t2.col'ye join ederler ve ayn� zamanda t1'deki unjoined sat�rlar�
|
||||
(t2'de eslenmenis olanlarla) d�nd�r�rler. R�GHT JO�N t2'nin unjoined sat�rlar�n� ekleyecektir.
|
||||
Bir FULL join, e�le�mi� bt�n sat�rlar� ve t1 ile t2'den t�m ba�lanmam�� (unjoined) sat�rlar� al�r.
|
||||
Bu �zde� sorgular t1.col ' i t2.col'ye join ederler ve ayn� zamanda t1'deki unjoined sat�rlar�
|
||||
(t2'de e�lenmenis olanlarla) d�nd�r�rler. RIGHT JO�N t2'nin unjoined sat�rlar�n� ekleyecektir.
|
||||
Bir FULL join, e�le�mi� b�t�n sat�rlar� ve t1 ile t2'den t�m ba�lanmam�� (unjoined) sat�rlar� al�r.
|
||||
OUTER s�zc��� se�imseldir ve LEFT, RIGHT ve FULL join i�lemlerinde oldu�u kabul edilir. S�radan
|
||||
join i�lemleri INNER join olarak adland�r�l�r.
|
||||
|
||||
@ -970,28 +960,28 @@ SELECT *
|
||||
WHERE tab1.col1 NOT �N (SELECT tab2.col1 FROM tab2)
|
||||
ORDER BY col1
|
||||
|
||||
4.24) Ayni andan birden fazla veritabaninda nasil islem yapabilirim?
|
||||
|
||||
4.24) Ayn� anda birden fazla veritaban�nda nas�l i�lem yapabilirim?
|
||||
|
||||
Mevcut veritaban�n�z d�s�ndaki baska bir veritaban�n�z� sorgulaman�z�n bir yolu bulunmamaktad�r.
|
||||
bunun nedeni, PostgreSQL'in veritaban�na �zel sistem kataloglar� y�klemesidir. Bu nedenle,
|
||||
cross-database bir sorgunun nasil davranacag�n� kestirmek zordur.
|
||||
cross-database bir sorgunun nas�l davranacag�n� kestirmek zordur.
|
||||
|
||||
contrib/dblink fonksiyon �a�r�lar�n� kullanarak cross-database sorgulara izin verid. Tabii ki,
|
||||
bir istemci degisik veritabanlar�na ayn� anda erisim saglayabilir ve bilgiyi bu sekilde
|
||||
birlestirebilir.
|
||||
contrib/dblink fonksiyon �a�r�lar�n� kullanarak cross-database sorgulara izin vermektedir. Tabii ki,
|
||||
bir istemci de�i�ik veritabanlar�na ayn� anda eri�im sa�layabilir ve bilgiyi bu sekilde
|
||||
birle�tirebilir.
|
||||
|
||||
4.25) Bir fonksiyondan nas�l �oklu sat�r ya da kolon d�nd�rebilirim?
|
||||
|
||||
7.3 s�r�m�nde, bir fonksiyondan kolayl�kla �oklu sat�r ya da s�tun d�nd�rebilirsiniz.
|
||||
|
||||
http://techdocs.postgresql.org/guides/SetReturningFunctions.
|
||||
http://techdocs.postgresql.org/guides/SetReturningFunctions .
|
||||
|
||||
4.26) Neden Pl/PgSQL fonksiyonlar� i�inden g�venli bir �ekilde tablo yaratma/kald�rma i�lemlerini yapam�yoruz?
|
||||
4.26) Neden PL/pgSQL fonksiyonlar� i�inden g�venli bir �ekilde tablo yaratma/kald�rma i�lemlerini yapam�yoruz?
|
||||
|
||||
PL/PgSQL fonksiyon i�erikleri cacheler. Bunun istenmeyen bir taraf�, e�er bir PL/PgSQL fonksiyonu ge�ici bir
|
||||
PL/pgSQL fonksiyon i�erikleri cacheler. Bunun istenmeyen bir taraf�, e�er bir PL/pgSQL fonksiyonu ge�ici bir
|
||||
tabloya eri�iyorsa ve bu tablo ileride kald�r�l�p yeniden olu�turulduktan sonra fonksiyon yeniden �a�r�l�rsa,
|
||||
fonksiyon �al��mayacakt�r; ��nk� cachelenmi� fonksiyon hala eski ge�ici tabloyu g�steriyor olacakt�r. ��z�m,
|
||||
ge�ici tablo eri�imleri i�in PL/PgSQL'de EXECUTE kullanmakt�r. Bu, sorgunun her seferinde yeniden i�lenmesini
|
||||
ge�ici tablo eri�imleri i�in PL/pgSQL'de EXECUTE kullanmakt�r. Bu, sorgunun her seferinde yeniden i�lenmesini
|
||||
sa�layacakt�r.
|
||||
|
||||
4.27) Hangi replikasyon se�enekleri bulunmaktad�r?
|
||||
@ -1005,33 +995,36 @@ SELECT *
|
||||
4.28) Hangi �ifreleme se�enekleri bulunmaktad�r?
|
||||
|
||||
* contrib/pgcrypto SQL sorgular�nda kullan�labilmesi i�in �ifreleme fonksiyonlar� i�ermektedir.
|
||||
* �stemciden sunucuya ileti�imi �ifrelemenin tek yolu, pg_hba.conf i�inde hostssl kullanmakt�r.
|
||||
* �stemciden sunucuya ileti�imi �ifrelemek i�in, sunucuda ssl se�ene�i postgresql.conf i�inde a��k olmal�d�r.
|
||||
Ayr�ca,pg_hba.conf dosyas� i�inde host ya da hostssl kayd� mutlaka olmal�d�r ve istemci sslmode
|
||||
kapat�lmamal�d�r. (Ayn� zamanda,PostgreSQL'in do�al SSL ba�lant�lar� d���nda ssh ya da ssl gibi 3.parti
|
||||
�ifrelenmi� veri iletimi de m�mk�nd�r.)
|
||||
* Veritaban� kullan�c� ad� ve �ifreleri 7.3 s�r�m� ile birlikte otomatik olarak �ifrelenirler. �nceki
|
||||
s�r�mlerde, postgresql.conf i�indeki PASSWORD_ENCRYPTION se�ene�ini aktif hale getirmeniz gerekmektedir.
|
||||
s�r�mlerde, postgresql.conf i�indeki PASSWORD_ENCRYPTION se�ene�ini aktif hale getirmeniz gerekmektedir.
|
||||
* Sunucunun kendisini �ifreli dosya sistemi �zerinde �al��t�rabilirsiniz.
|
||||
|
||||
_________________________________________________________________
|
||||
|
||||
PostgreSQL �zelliklerini Geni�letmek
|
||||
|
||||
5.1) Kullanici-tanimli bir fonksiyon yazdim. psql'de �alistirdigim zaman neden core dump ediyor?
|
||||
5.1) Kullan�c�-tan�ml� bir fonksiyon yazd�m. psql'de �al��t�rd���m zaman neden core dump ediyor?
|
||||
|
||||
Sorunun nedeni birden fazla sey olabilir. Kullanici-tanimli fonksiyonunuzu stand-alone bir programda
|
||||
calistirmayi deneyiniz.
|
||||
|
||||
5.2) PostgreSQL'e nasil yeni tipler/fonksiyonlar ekleyeiblirim?
|
||||
5.2) PostgreSQL'e nas�l yeni veri tipleri/fonksiyonlar ekleyebilirim?
|
||||
|
||||
�al�smalar�n�z� pgsql-hackers e-posta listesine g�nderiniz. Kodunuz incelendikten sonra
|
||||
�al��malar�n�z� pgsql-hackers e-posta listesine g�nderiniz. Kodunuz incelendikten sonra
|
||||
/contrib dizinine konacakt�r.
|
||||
|
||||
5.3) Bir tuple dond�rmek icin bir C fonksiyonunu nasil yazar�m?
|
||||
5.3) Bir tuple d�nd�rmek icin bir C fonksiyonunu nas�l yazar�m?
|
||||
|
||||
PostgreSQL 7.3 s�r�m� ile birlikte, C, PL/PgSQL ve SQL kullan�larak tablo-d�nd�ren
|
||||
PostgreSQL 7.3 s�r�m� ile birlikte, C, PL/pgSQL ve SQL kullan�larak tablo-d�nd�ren
|
||||
fonksiyonlar tamamen desteklenmektedir. Ayr�nt�l� bilgi i�in "Programmer's Guide" a
|
||||
bakabilrisiniz. Bir �rne�i contrib/tablefunc i�inde bulabilirsiniz.
|
||||
bakabilirsiniz. Bir �rne�i contrib/tablefunc i�inde bulabilirsiniz.
|
||||
|
||||
5.4) Bir kaynak dosyas�nda de�i�iklik yapt�m. Yeniden derlememe ra�men de�i�iklik
|
||||
ge�erli olmuyor. Neden?
|
||||
ge�erli olmuyor. Neden?
|
||||
|
||||
Makefile'lar include dosyalar� i�in tam bir ba��ml�l�k i�ermezler.
|
||||
�ncelikle make clean, ard�ndan da baska bir make i�lemi yapman�z gerekir.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user