İ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