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