Sorgu İşleme ve Optimizasyonu
Sorgu işleme ve optimizasyonu, bir veritabanı sisteminin bildirimsel bir sorguyu verimli bir yürütme planına dönüştüren, büyük veri kümeleri üzerinde maliyeti en aza indirmek için fiziksel operatörleri ve erişim yollarını seçen kısmıdır.
Tanım
Sorgu işleme, bir veritabanı sisteminin bir sorguyu ayrıştırdığı, optimize ettiği ve yürüttüğü faaliyetler bütünüdür; sorgu optimizasyonu ise, sorguya mantıksal olarak eşdeğer olan birçok plan arasından tahmini maliyeti düşük bir yürütme planı arayışıdır.
Kapsam
Bu alan, ayrıştırılmış bir sorgudan sonuçlara kadar olan süreci kapsamaktadır: SQL'in ilişkisel-cebir ifadelerine çevrilmesi, her bir cebirsel işlemi uygulayan fiziksel operatörler (tarama, birleştirme, sıralama, toplama), verilere hızlı erişim yolları sağlayan indeksler ve erişim yöntemleri ile eşdeğer planlar arasından seçim yapmak için istatistikleri kullanan maliyet tabanlı optimize edici. İşlem ve eşzamanlılık kontrolünü ve şema tasarımını dışarıda bırakır; tek bir sorgunun nasıl verimli bir şekilde değerlendirildiğine odaklanmaktadır.
Alt konular
Temel sorular
- Bildirimsel bir sorgu, fiziksel operatörlerden oluşan bir ağaca nasıl çevrilmektedir?
- Seçim, birleştirme, sıralama ve toplama işlemlerini hangi fiziksel algoritmalar uygulamaktadır?
- İndeksler ve erişim yöntemleri veri alımını nasıl hızlandırmaktadır?
- Maliyet tabanlı bir optimize edici, plan maliyetini nasıl tahmin etmekte ve planlar arasından nasıl seçim yapmaktadır?
- Mantıksal olarak eşdeğer sorgular, yürütme maliyeti açısından neden büyük ölçüde farklılık gösterebilmektedir?
Anahtar kavramlar
- fiziksel sorgu planı
- ilişkisel-cebir eşdeğerlikleri
- birleştirme algoritmaları
- sıralama ve harici birleştirme sıralaması
- indeksler ve erişim yöntemleri
- seçicilik ve kardinalite tahmini
- maliyet modeli
- birleştirme sırası listeleme
- ardışık düzenleme (pipelining) ve materyalizasyon
Temel kuramlar
- Mantıksaldan fiziğe plan üretimi
- Bir sorgu öncelikle ilişkisel-cebir eşdeğerlikleri kullanılarak aday mantıksal planlara yeniden yazılmakta, ardından her bir cebirsel operatör fiziksel bir algoritmaya eşlenerek maliyetleri karşılaştırılabilecek yürütülebilir planlar elde edilmektedir.
- Maliyet tabanlı optimizasyon
- Optimize edici, tablo boyutları ve değer dağılımlarına ilişkin istatistikleri kullanarak alternatif planların — özellikle birleştirme sıralamaları ve erişim yollarının — maliyetini tahmin etmekte ve en ucuz olanı seçmektedir; bu yaklaşım System R'ın optimize edicisi tarafından öncülük edilmiştir.
- Erişim yolu seçimi
- Her işlem için bir tabloyu tarayıp taramayacağını, bir indeks kullanıp kullanmayacağını veya kümelemeyi kullanıp kullanmayacağını seçmek performans için merkezi bir öneme sahiptir; optimize edici, en iyi erişim yolunu seçmek için seçicilik tahminlerini ve G/Ç maliyetini değerlendirmektedir.
Klinik önem
Sorgu optimizasyonu, ilişkisel veritabanlarını büyük ölçekte kullanılabilir kılan unsurdur: aynı SQL sorgusu, seçilen plana bağlı olarak milisaniyeler veya saatler içinde çalışabilmektedir; bu nedenle optimize edicinin kalitesi, iş analitiği, işlem işleme ve veri yoğun uygulamaların performansını doğrudan belirlemektedir.
Tarihçe
IBM'in System R'ının maliyet tabanlı optimize edicisi (Selinger ve diğerleri, 1979), baskın yaklaşımı oluşturmuştur: planları listeleme, istatistiklerden maliyetleri tahmin etme ve birleştirme sıralaması için dinamik programlama kullanma. Onlarca yıllık iyileştirmeler, daha iyi kardinalite tahmini, yeni operatörler ve adaptif teknikler eklemiştir, ancak temel çerçeve modern sorgu optimize edicilerinin temeli olmaya devam etmektedir.
Tartışmalar
- Kardinalite tahmininin güvenilirliği
- Maliyet tabanlı optimize ediciler, ilişkili veya çarpık veriler için ciddi şekilde yanlış olabilen ara sonuç boyutlarının tahminlerine bağlıdır; araştırmacılar, daha iyi istatistiklere ve öğrenilmiş tahmin edicilere ne kadar yatırım yapılacağı ile adaptif, çalışma zamanı yeniden optimizasyonu arasında ne kadar denge kurulacağını tartışmaktadır.
Öne çıkan isimler
- Patricia Selinger
- Jeffrey D. Ullman
- Michael Stonebraker
İlgili konular
Temel eserler
- selinger1979
- garciamolina2008
- silberschatz2019
Sıkça sorulan sorular
- Aynı sorgu neden bir sistemde hızlı, diğerinde yavaş çalışmaktadır?
- Performans, optimize edicinin seçtiği yürütme planına bağlıdır; bu da mevcut indekslere, veriler hakkındaki istatistiklere ve maliyet modeline göre değişmektedir. Farklı sistemler veya eski istatistiklere sahip aynı sistem, çok farklı planlar seçebilmektedir — örneğin farklı bir birleştirme sırası veya tam tablo taramasına karşı bir indeks taraması gibi.
- Sorgu optimizasyonunun en zor kısmı nedir?
- Ara sonuçların boyutlarını doğru bir şekilde tahmin etmektir (kardinalite tahmini). Hatalar birleştirmeler boyunca birikmektedir, bu nedenle bir planın başlarında yapılan küçük bir yanlış tahmin, optimize edicinin önemli ölçüde daha kötü bir birleştirme sırası veya erişim yolu seçmesine yol açabilmektedir. Kardinalite tahmininin aktif bir araştırma problemi olmaya devam etmesinin nedeni budur.