Tüm Ürünler
Search
Belge Merkezi

Database Autonomy Service:Maliyet tabanlı SQL tanılama motoru

Son Güncelleme:Oct 06, 2026

Database Autonomy Service (DAS) içindeki maliyet tabanlı SQL tanılama motoru, SQL deyimlerini analiz eder, dizinler önerir ve sorgu yeniden yazmaları tavsiye eder; böylece herhangi bir değişiklik uygulanmadan önce performans kazançlarını tahmin eder. Önerilen iyileştirme adaylarını veritabanı iyileştiricisiyle aynı maliyet modelini kullanarak değerlendirir; bu sayede öneriler sezgisel yaklaşımlar yerine gerçek çalıştırma maliyetlerine dayanır.

SQL optimizasyonu neden zordur?

Veritabanı performans sorunlarının yaklaşık %80'i SQL kaynaklıdır. Ancak SQL optimizasyonu, veritabanı yönetiminin en zaman alıcı görevlerinden biridir: En uygun yürütme planı veri hacmi, istatistikler, dizin kombinasyonları ve sorgu yapısına bağlıdır ve bunların tümü sürekli değişir.

Geliştiriciler genellikle yavaş sorguları belirlemek, yürütme planlarını analiz etmek ve dizin değişikliklerini test etmek için saatler harcar. Maliyet tabanlı SQL tanılama motoru bu süreci otomatikleştirerek manuel ve uzmanlık gerektiren bir iş akışını sürekli ve ölçeklenebilir şekilde çalışan bir sürece dönüştürür.

Motorun çalışma şekli

Bu motor, veritabanı çekirdeğinden bağımsız olarak çalışan bir iyileştiricidir. İstatistikleri otomatik olarak toplar ve MySQL gibi açık kaynak veritabanlarında yaygın bir sınırlama olan veritabanının yerleşik What-If Tool (WIT) yeteneğine güvenmeden yürütme planı maliyetlerini hesaplar.

Core architecture of the SQL diagnostics and optimization engine

Motor, her SQL deyimi aşağıdaki dört adımdan geçirerek işler:

  1. SQL ayrıştırma ve doğrulama: SQL deyimini ayrıştırın, sözdizimini doğrulayın; yüklemeleri, sıralama alanlarını, toplama alanlarını ve sorgu alanlarını tanımlayarak bir sözdizim ağacı oluşturun. Başvurulan tüm tabloların ve alanların veritabanı şemasıyla eşleştiğini kontrol edin.

  2. Aday dizin oluşturma: Sözdizim ağacından birden fazla dizin kombinasyonu üretin.

  3. Maliyet tabanlı değerlendirme: Veritabanı çekirdeğinden bağımsız yerleşik bir iyileştirici kullanarak veritabanı istatistiklerini (tanılama motorunda önbelleğe alınmış) getirin ve her aday dizin ile her aday SQL yeniden yazmasının maliyetini hesaplayın. En düşük maliyete sahip seçeneği belirleyin.

  4. Dizin birleştirme ve en uygun dizin seçimi: Aynı örnek üzerinde birden fazla SQL deyimi tanılarken dizin önerilerini konsolide edin. Örtüşen dizinleri, ortak ön eke sahip dizinleri ve gereksiz adayları belirleyerek minimal ve etkili bir dizin kümesi oluşturun.

Maliyet tabanlı ve kural tabanlı önerilerin karşılaştırılması

SQL optimizasyonu önerileri için kural tabanlı ve maliyet tabanlı olmak üzere iki yaklaşım bulunur. DAS, maliyet tabanlı yöntemi kullanır.

Kural tabanlı yöntem

Kural tabanlı yöntem, maliyeti değerlendirmeden aday dizinler oluşturmak için sabit kalıplar uygular. Şu tarz bir sorgu için:

SELECT *
FROM t1
WHERE time_created >= '2017-11-25'
AND consuming_time > 1000
ORDER BY consuming_time DESC;

Kural tabanlı yöntem, bunları sıralamanın bir yolu olmadan birden fazla aday üretir:

IX1(time_created)
IX2(time_created, consuming_time)
IX3(consuming_time)
IX4(consuming_time, time_created)

Sorgu tablo birleştirmeleri veya alt sorgular içeriyorsa belirsizlik daha da artar. Kural tabanlı yöntem, hangi dizinin yürütme maliyetini gerçekten azalttığını belirleyemez.

Maliyet tabanlı yöntem

Maliyet tabanlı yöntem, her adayı veritabanı istatistiklerine göre değerlendirir ve veritabanı iyileştiricisinin çalışma biçimine benzer şekilde en düşük hesaplanan maliyete sahip olanı seçer. Kapsamlı değerlendirmenin mümkün olmadığı deterministik olmayan polinom (NP) problemleri için motor, neredeyse optimal bir çözüm bulmak adına mümkün olduğunca çok adayı değerlendirir.

Bu yaklaşım, MySQL gibi açık kaynak veritabanlarının varsayılan olarak sahip olmadığı iki yetenek gerektirir:

  • WIT yeteneği: Hipotetik bir dizinin maliyetini onu oluşturmadan simüle etmek için gereklidir. DAS bunu veritabanı çekirdeğinden bağımsız olarak uygular.

  • İstatistikler: Yürütme planı maliyetlerini doğru hesaplamak için gereklidir. DAS istatistikleri otomatik olarak toplar ve önbelleğe alır.

Yetenek doğrulaması

Motorun öneri kalitesi, imza tabanlı bir test senaryosu kitaplığına karşı sürekli olarak ölçülür. Her test senaryosu; ilgili SQL deseni, şema, istatistikler ve ortam parametrelerinin parmak izi olan imzasıyla tanımlanır.

Use case system

Test senaryoları, Alibaba Group'un dahili hizmetlerinde yürütülen SQL deyimlerinden alınır. İstatistiksel bilgiler dahil olmak üzere çıkarılan tüm veriler, otomatik bir süreç aracılığıyla şifrelenir ve maskelenir.

Kitaplık dört boyut üzerinden değerlendirilir:

  • İmza kapsamı: Kitaplıktaki hangi imzaların mevcut test senaryoları tarafından kapsandığı

  • Boşluk analizi: Henüz kapsanmamış olan veya SQL doğrulamasında başarısız olan imzalar

  • Gerileme takibi: Zaman içinde tekrarlayan hatalar gösteren imzalar

  • Yetenek seviyesine göre kapsam oranı

Bu geri bildirim döngüsü, motorun öneri doğruluğunu sürekli olarak iyileştirmeye yönelik çalışmaları yönlendirir.

Optimizasyon modları

Alibaba Cloud'da yayımlanmadan önce motor, Alibaba Group'un dahili hizmetlerinde yıllarca çalıştı ve günde ortalama yaklaşık 50.000 SQL deyimi tanıladı. DAS bu yeteneği iki modda sunar:

  • Özel optimizasyon: Tanılama için belirli SQL deyimlerini gönderin. Motor, tahmini performans iyileştirmesiyle birlikte dizin önerileri ve SQL yeniden yazma önerileri döndürür.

  • Otomatik optimizasyon: DAS, örnek iş yüklerini izler, yavaş sorguları belirler, bunları tanılar ve optimizasyon önerileri oluşturur. Her öneriyi doğruladıktan sonra DAS optimizasyonu zamanlar, çevrimiçi olarak uygular ve değişiklik sonrası performansı izler. Tüm süreç manuel müdahale olmadan çalışır.

Otomatik optimizasyondan kaynaklanan geri alma durumları, başarısız tanılama sonuçları ve kullanıcılar tarafından bildirilen sorunlar, gelecekteki önerileri iyileştirmek amacıyla otomatik olarak test senaryosu kitaplığına geri beslenir.

Desteklenen veritabanı motorları

Maliyet tabanlı SQL tanılama motoru aşağıdaki veritabanı motorlarını destekler:

  • ApsaraDB RDS for MySQL

  • PolarDB for MySQL

  • ApsaraDB RDS for PostgreSQL

  • PolarDB for PostgreSQL (Oracle ile uyumlu)

Not

PolarDB for MySQL için motor ayrıca en uygun Bellek İçi Sütun Dizinlerini (IMCI) önerebilir. Ayrıntılar için bkz.

Overview

.