Merkezi Sistemlerde Sorgu Optimizasyonu
Bir ilişkisel cebir ifadesinin hesaplanması için alternatif erişim yolları türetildiğinde, optimum erişim yolu belirlenir. Bu bölümde, merkezi sistemde sorgu optimizasyonunu inceleyeceğiz, sonraki bölümde ise dağıtılmış bir sistemde sorgu optimizasyonunu inceleyeceğiz.
Merkezi bir sistemde, sorgu işleme şu amaçla yapılır -
Sorgunun yanıt süresinin en aza indirilmesi (sonuçları kullanıcının sorgusuna üretmek için geçen süre).
Sistem verimini en üst düzeye çıkarın (belirli bir süre içinde işlenen istek sayısı).
İşleme için gereken bellek ve depolama miktarını azaltın.
Paralelliği artırın.
Sorgu Ayrıştırma ve Çeviri
Başlangıçta SQL sorgusu taranır. Daha sonra sözdizimsel hataları ve veri türlerinin doğruluğunu aramak için ayrıştırılır. Sorgu bu adımı geçerse, sorgu daha küçük sorgu bloklarına ayrılır. Her blok daha sonra eşdeğer ilişkisel cebir ifadesine çevrilir.
Sorgu Optimizasyonu için Adımlar
Sorgu optimizasyonu, sorgu ağacı oluşturma, plan oluşturma ve sorgu planı kodu oluşturma olmak üzere üç adımı içerir.
Step 1 − Query Tree Generation
Bir sorgu ağacı, ilişkisel bir cebir ifadesini temsil eden bir ağaç veri yapısıdır. Sorgu tabloları yaprak düğümler olarak temsil edilir. İlişkisel cebir işlemleri, iç düğümler olarak temsil edilir. Kök, sorguyu bir bütün olarak temsil eder.
Yürütme sırasında, işlenen tabloları mevcut olduğunda bir dahili düğüm çalıştırılır. Düğüm daha sonra sonuç tablosu ile değiştirilir. Bu işlem, kök düğüm yürütülene ve sonuç tablosu ile değiştirilene kadar tüm dahili düğümler için devam eder.
Örneğin, aşağıdaki şemaları ele alalım -
ÇALIŞAN
EmpID | Ad | Maaş | DeptNo | Katılım tarihi |
BÖLÜM
DNo | İsim | yer |
örnek 1
Sorguyu şu şekilde ele alalım.
$$ \ pi_ {EmpID} (\ sigma_ {EName = \ small "ArunKumar"} {(EMPLOYEE)}) $$
Karşılık gelen sorgu ağacı -
Örnek 2
Birleştirme içeren başka bir sorguyu ele alalım.
$ \ pi_ {EName, Salary} (\ sigma_ {DName = \ small "Pazarlama"} {(DEPARTMENT)}) \ bowtie_ {DNo = DeptNo} {(EMPLOYEE)} $
Yukarıdaki sorgu için sorgu ağacı aşağıda verilmiştir.
Step 2 − Query Plan Generation
Sorgu ağacı oluşturulduktan sonra bir sorgu planı yapılır. Sorgu planı, sorgu ağacındaki tüm işlemler için erişim yollarını içeren genişletilmiş bir sorgu ağacıdır. Erişim yolları, ağaçtaki ilişkisel işlemlerin nasıl gerçekleştirilmesi gerektiğini belirtir. Örneğin, bir seçim işlemi, seçim için B + ağaç indeksinin kullanımı hakkında ayrıntılar veren bir erişim yoluna sahip olabilir.
Ayrıca, bir sorgu planı, ara tabloların bir operatörden diğerine nasıl geçirilmesi gerektiğini, geçici tabloların nasıl kullanılması gerektiğini ve işlemlerin nasıl boru hattıyla / birleştirilmesi gerektiğini de belirtir.
Step 3− Code Generation
Kod oluşturma, sorgu optimizasyonundaki son adımdır. Sorgunun yürütülebilir biçimidir ve formu temeldeki işletim sisteminin türüne bağlıdır. Sorgu kodu oluşturulduktan sonra, Yürütme Yöneticisi onu çalıştırır ve sonuçları üretir.
Sorgu Optimizasyonuna Yaklaşımlar
Sorgu optimizasyonu yaklaşımları arasında, kapsamlı arama ve sezgisel tabanlı algoritmalar çoğunlukla kullanılmaktadır.
Kapsamlı Arama Optimizasyonu
Bu tekniklerde, bir sorgu için, önce tüm olası sorgu planları oluşturulur ve ardından en iyi plan seçilir. Bu teknikler en iyi çözümü sağlasa da, geniş çözüm alanı nedeniyle üstel bir zaman ve mekan karmaşıklığına sahiptir. Örneğin, dinamik programlama tekniği.
Sezgisel Tabanlı Optimizasyon
Sezgisel tabanlı optimizasyon, sorgu optimizasyonu için kural tabanlı optimizasyon yaklaşımlarını kullanır. Bu algoritmalar, kapsamlı arama tabanlı algoritmaların üstel karmaşıklığından daha düşük olan polinom zaman ve uzay karmaşıklığına sahiptir. Ancak, bu algoritmaların en iyi sorgu planını üretmesi gerekmez.
Yaygın sezgisel kurallardan bazıları şunlardır:
Birleştirme işlemlerinden önce seçme ve proje işlemlerini gerçekleştirin. Bu, seçme ve proje işlemlerini sorgu ağacının aşağısına taşıyarak yapılır. Bu, katılma için uygun olan tuple sayısını azaltır.
Diğer işlemlerden önce en kısıtlayıcı seçme / proje işlemlerini gerçekleştirin.
Çok büyük boyutlu ara tablolarla sonuçlandıkları için ürünler arası işlemden kaçının.