İSİM¶
ANALYZE - bir veritabanı hakkında istatistik toplar
KULLANIM¶
ANALYZE [ VERBOSE ] [ tablo [ (sütun [, ...] ) ] ]
AÇIKLAMA¶
ANALYZE veritabanındaki tabloların içerikleri
hakkında istatistikleri toplar ve bunları pg_statistic
adlı sistem tablosuna kaydeder. Bundan sonra sorgu
planlamacısı sorguları en verimli
çalıştırma planlarını saptamak
için kullanır.
Parametresiz olarak
ANALYZE, çalışılan
veritabanındaki tüm tabloları inceleyecektir. Parametre
olarak bir tablonun sadece sütun isimlerini vermek
mümkündür, bu durumda sadece bu sütunlarla ilgili
istatistikler toplanır.
PARAMETRELER¶
- VERBOSE
- İşlemin gelişimi hakkında daha
ayrıntılı bilgi gösterir.
- tablo
- Analiz edilecek tablonun ismi (şema nitelemeli olabilir).
Belirtilmezse veritabanındaki tüm tablolar
öntanımlıdır.
- sütun
- Analiz edilecek sütunun ismi. Belirtilmezse, tüm
sütunlar öntanımlıdır.
ÇIKTILAR¶
VERBOSE belirtildiğinde,
ANALYZE işleme sokulan
tablolarla ilgili sürecin gelişimi ile ilgili iletiler basar. Bu
arada tablolar hakkında çeşitli istatistikleri de
gösterir.
EK BİLGݶ
ANALYZE deyimi düzenli aralıklarla ya da bir tablonun
içeriğinde büyükçe bir
değişiklik yaptıktan hemen sonra
çalıştırılırsa iyi olur. Toplanan
istatistikler planlamacıya en uygun sorgu planını
seçmekte yardımcı olarak, sorgu işleminin
hızını arttırmasını
sağlayacaktır. Genel bir strateji, işlemler
bakımından günün en sakin zamanında
VACUUM [
vacuum(7)] ve
ANALYZE
çalıştırmaktır.
VACUUM FULL deyiminin aksine,
ANALYZE hedef tabloda sadece bir
okuma kilidi gerektirir, böylece tablo üzerinde aynı anda
başka etkinlikler de yapabilir.
ANALYZE tarafından toplanan istatistikler genellikle, her
sütundaki en ortak değerler ile her sütundaki
yaklaşık veri dağılımını
gösteren bir çan çizgesi içerir. Bunlardan biri ya
da her ikisi de,
ANALYZE bunları ilginç bulmazsa
(örneğin, bir sütundaki değerlerin eşsiz
olması istenmişse, burada ortak bir değer
olmayacaktır) ya da sütun veri türü ilgili
işleçleri desteklemiyorsa atlanabilir. İstatistikler ile
ilgili daha ayrıntılı bilgiyi
http://www.postgresql.org/docs/8.0/static/maintenance.html adresinde
bulabilirsiniz.
Çok büyük tablolarda,
ANALYZE her
satırı tek tek incelemek yerine tablo içeriğinden
rasgele örnekler alır. Bu, çok büyük
tabloların analizinin çok kısa bir sürede
gerçekleştirilmesini mümkün kılar. Ancak bu
istatistikler yaklaşıktır ve
ANALYZE'ın her
çalıştırılışında,
tablo içeriği çok fazla değişmemiş
olsa bile, çok değişik sonuçlar elde edilebilir.
Bu,
EXPLAIN tarafından gösterilen
planlamacının tahmini maliyetlerinde küçük
değişiklikler şeklinde sonuçlanabilir.
Yaygın olarak, bu belirlenimci olmayan yaklaşım,
ANALYZE'ın her
çalıştırılışında sorgu
eniyilecinin farklı sorgu planları seçmesine sebep olur.
Bundan kaçınmak için,
ANALYZE tarafından
toplanan istatistik miktarını aşağıda
açıklandığı gibi
arttırmalısınız.
Analizin genişletilmesi, her sütun için istatistik hedefi
ALTER TABLE ... ALTER COLUMN ... SET STATISTICS ile belirtilerek
sütun sütun ya da default_statistics_target
yapılandırma değişkeninin değeriyle
denetlenebilir (
ALTER TABLE [
alter_table(7)] kılavuz
sayfasına bakınız). Hedef değer, en ortak
değer listesindeki girdilerin azami sayısı ve çan
çizgesindeki azami çubuk sayısı olarak belirtilir.
Ön tanımlı hedef değeri 10'dur. Bu değer,
ANALYZE işleminin aldığı zaman ve
pg_statistic tablosunun kapladığı alan ile
planlamacının tahminlerindeki doğruluk arasındaki
dengeyi sağlayacak bir değere ayarlanabilir. Ayrıca,
istatistik hedefini sıfır olarak belirtmek, o sütundan
istatistik toplanmamasını sağlayacaktır.
Sorguların
WHERE,
GROUP BY veya
ORDER BY
deyimlerinin hiçbir zaman bir parçası olmayacak
sütunlar için, planlamacı böyle
sütunların istatistiklerini kullanmayacağından
bunu yapmak faydalı olabilir.
Analizi yapılacak sütunlar arasında en geniş
istatistik hedefini, istatistikleri hazırlamakta kullanılan
örnek alınmış tablo
satırlarının sayısı belirler. Hedefin
arttırılması
ANALYZE
sonuçlarının kaydı için harcanan
alanın ve işlem için harcanan zamanın
orantılı olarak artmasına sebep olur.
UYUMLULUK¶
SQL standardında
ANALYZE diye bir deyim yoktur.
ÇEVİREN¶
Nilgün Belma Bugüner <nilgun (at)
belgeler·gen·tr>, Nisan 2005