Tüm Ürünler
Search
Belge Merkezi

Database Autonomy Service:SQL iyileştirme

Son Güncelleme:Oct 06, 2026

Database Autonomy Service (DAS), otomatik olarak tanılama sonuçları, iyileştirme önerileri ve tahmini performans kazançları üreten bir SQL iyileştirme özelliği sunar. Bu sonuçları inceleyerek önerileri uygulayıp uygulamayacağınıza karar verebilirsiniz. Bu konuda SQL iyileştirme özelliğinin nasıl kullanılacağı açıklanmaktadır.

Ön koşullar

  • Veritabanı altyapısı aşağıdakilerden biri olmalıdır:

    • RDS for MySQL

      Not

      RDS for MySQL Basic ve Cluster sürümleri desteklenmez.

    • MyBase MySQL

    • PolarDB for MySQL

      Not

      PolarDB for MySQL tek düğümlü kümeler (eski adıyla bağımsız örnekler) desteklenmez.

    • PolarDB-X 2.0

      Not

      Ana sürümü 5.4.13 olan ve alt sürümü [16415631,16504348] aralığında bulunan PolarDB-X 2.0 örnekleri desteklenmez. PolarDB-X 2.0 örneğinizin sürümünü görüntülemek için bkz. Örnek sürümünü görüntüleme ve yükseltme.

    • MongoDB

  • Hedef örnek DAS'a bağlıdır. Daha fazla bilgi için bkz. Örneği DAS'a bağlama.

  • Hedef örneğin erişim durumu Normal Access şeklindedir.

Sınırlamalar

  • X-Engine kullanan tablolar için SQL deyimlerini tanılayamaz veya iyileştiremezsiniz.

  • PolarDB-X içinde prepared statement kullanarak bir SQL deyimi çalıştırdığınızda, yavaş sorgu günlüğü deyimi şablonunu (örneğin, select * from test where a = ? and b = ?) ve bağlı parametreleri (örneğin, params: [1, 2]) ayrı ayrı kaydeder. Bu biçim doğrudan geçerli bir SQL deyimi olarak çalıştırılamayacağından, analizi veya iyileştirmeyi özgün deyime dayandıran özelliklerin işlevselliği sınırlı olabilir.

Yavaş günlüklerden görsel SQL analizi oluşturma

Bu özellik, karmaşık SQL yürütme akışlarını sezgisel ve görsel bir biçimde sunar. Grafiksel arayüzü, sorgunun yürütme yolunu, düğüm verimliliğini ve olası darboğazları net bir şekilde göstererek SQL iyileştirme, kod incelemeleri ve sağlık kontrolleri sırasında sorunları hızlıca belirlemenize ve çözmenize yardımcı olur.

Önemli

Yavaş Günlük Analizi sayfasındaki SQL iyileştirme yalnızca RDS for MySQL 5.6, 5.7 ve 8.0 ile PolarDB for MySQL 5.6, 5.7 ve 8.0 örnekleri için desteklenir.

  1. DAS konsolu üzerinden oturum açın.

  2. Sol gezinme bölmesinde Intelligent O&M Center > Instance Monitoring öğelerini tıklayın.

  3. Hedef örneği bulun ve örnek ayrıntıları sayfasını açmak için örnek kimliğine tıklayın.

  4. Sol gezinme bölmesinde Request Analysis > Slow Logs seçeneğine tıklayın.

  5. Slow Log Analysis sayfasında:

    • Slow Log Statistics sekmesinde hedef SQL şablonunu bulun ve Actions sütunundaki Optimize seçeneğine tıklayın.

    • Slow Log Details sekmesinde hedef SQL ifadesini bulun ve Actions sütunundaki Optimize seçeneğine tıklayın.

  6. Görüntülenen iletişim kutusunda Create Plan seçeneğine tıklayın.

  7. Bir yürütme düğümü türü seçin.

    • Standby node (Varsayılan): Geçerli örneğin beklemedeki düğümü. Bu düğüm genellikle rutin sorgu analizi için kullanılır.

    • Event node: SQL ifadesinin gerçekten çalıştırıldığı iş düğümü. Bu düğüm sorun giderme ve iyileştirme için uygundur.

  8. Bir Visual Execution Plan oluşturmak için Confirm Creation seçeneğine tıklayın.

Görsel yürütme planı

Önemli
  • Görsel yürütme planı geçmiş bir kaydı değil, mevcut yürütme durumunu yansıtır.

  • Görsel matris, SQL ifadesinin karmaşıklığına göre uyarlanır. Grafik çok fazla içerik barındırıyorsa görüntüleme ölçeğini ayarlamak için yakınlaştırma aracını kullanın veya başlangıç görünümüne dönmek için sıfırla düğmesine tıklayın.

Görsel bir yürütme planında yürütme akışları aşağıdan yukarıya ve soldan sağa doğru ilerler. En alttaki düğüm sorgunun başlangıç noktasıdır. Veriler katman katman yukarı doğru akar ve nihai sonuç döndürülür. Örnek:

Düğüm renkleri

  • Verimli düğüm (yeşil): system, const, eq_ref, ref, ref_or_null ve index_merge dahil olmak üzere verimli bir erişim yöntemini belirtir.

  • Orta düzeyde verimli düğüm (sarı): fulltext, unique_subquery, index_subquery ve range dahil olmak üzere en iyi olmayan erişim yöntemini belirtir.

  • Verimsiz düğüm (kırmızı): all ve index dahil olmak üzere iyileştirme önceliği verilmesi gereken verimsiz bir erişim yöntemini belirtir.

Düğüm ayrıntıları

  • Üst: TABLE_SCAN veya INDEX_SCAN gibi düğüm türünü görüntüler.

  • Sol: CPU, bellek ve disk G/Ç gibi faktörlere dayalı olarak iyileştirici tarafından tahmin edilen göreceli bir ölçüm olan maliyet.

  • Sağ: Veri işleme hacmini gösteren tahmini satır sayısı.

İyileştirme önerisi

Sorgu performansını önemli ölçüde artırmak için kırmızı işaretli verimsiz düğümlerin iyileştirilmesine öncelik verin.

Sözlük


Terim


Yaygın ad


Açıklama


QUERY_BLOCK


sorgu bloğu


Bir SQL ifadesinin anlamsal birimidir. Her bağımsız sorgu veya alt sorgu bir sorgu bloğu oluşturur ve EXPLAIN çıktısında select_id ile tanımlanır.


ATTACHED_SUBQUERIES


ilişkili alt sorgu


WHERE, HAVING veya ON yan tümcesine EXISTS, IN veya ANY gibi yüklemeler kullanılarak eklenen bir alt sorgudur. Bu alt sorgu türü ana sorguya mantıksal olarak bağımlıdır.


CORRELATED_SUBQUERY


bağlantılı alt sorgu


Dış sorgudaki sütunlara başvuran iç içe geçmiş bir sorgudur. Çalıştırma sırasında dış bağlam değerlerine bağlanmayı gerektirir ve O(n²) karmaşıklığına yol açabilir.


NON_CORRELATED_SUBQUERY


bağlantısız alt sorgu


Dış sorgudan bağımsız olarak çalıştırılabilen kendi kendine yeterli bir alt sorgudur. İyileştirici genellikle bunu önceden hesaplar ve sabit bir değer olarak somutlaştırır.


MATERIALIZED_FROM_SUBQUERY


somutlaştırılmış alt sorgu


MySQL 5.6+ sürümlerinde tanıtılan bir iyileştirme stratejisidir. Alt sorgu sonucunu bellek içi geçici bir tabloya kalıcı hale getirir ve genellikle subqueryN biçimindeki türetilmiş bir tabloyla ilişkilendirilir.


OPTIMIZED_AWAY_SUBQUERIES


iyileştirmeyle kaldırılan alt sorgu


Sorgu yeniden yazma iyileştirmesinden sonra tamamen kaldırılan bir alt sorgudur (örneğin, sabit alt sorgu itme). Nihai yürütme planında görünmez.


QUERY_SPECIFICATIONS


sorgu belirtimi yapısı


SELECT listesi, FROM yan tümcesi ve filtre koşulları dahil olmak üzere bir sorgunun sözdizimsel öğelerini açıklayan eksiksiz bir anlamsal birimdir.


SELECT_LIST_SUBQUERIES


seçim listesi alt sorgusu


Projeksiyon sütunlarında (SELECT alan listesi) görünen skaler bir alt sorgudur. Her yineleme için tek bir skaler değer döndürmelidir.


INDEX_SCAN


dizin taraması


B+ ağacı dizini kullanan bir veri erişim desenidir. Taramalar ileri veya geri yönde olabilir ve tablo aramalarını içerebilir.


TABLE_SCAN


tam tablo taraması


İyileştiricinin kümeleme dizininin tüm sayfalarını taradığı bir erişim yöntemidir. Uygun bir dizin olmadığında veya erişilecek veri oranı bir eşiği aştığında gerçekleşir. Veri hacmi arttıkça performans düşer.


ORDERING_OPERATION


sonuç kümesi sıralama


Filesort gibi açık bir sıralama algoritması kullanarak sonuç kümesini sıralayan bir ORDER BY işlemidir. Bu işlem bellek veya geçici disk dosyalarını kullanabilir.


NESTED_LOOP


iç içe döngü birleşimi


Tablo birleştirme algoritmasının en temel uygulamasıdır. Dış tablodaki her satır için iç tablodaki eşleşen satırlar arasında yineleme yapılır. Birleştirme yüklemi etkili filtreleme sağladığında verimlidir.


DUPLICATES_REMOVAL


sonuç yinelenenlerini kaldırma


DISTINCT semantiğini uygulayan bir işlemdir. Altta yatan uygulama geçici bir tabloda benzersiz bir dizin kullanabilir veya sonuçları sıralayıp filtreleyebilir. Maliyet veri dağıtımı özelliklerine bağlıdır.


WINDOWING_OPERATION


pencere işlevi hesaplama


OVER() yan tümcesiyle tanımlanan bir veri penceresinde gerçekleştirilen analitik işlev hesaplamasıdır (örneğin, ROW_NUMBER veya RANK). Bu işlem veri kümesinin tamamının sıralanmasını gerektirebilir.


TABLE


temel tablo referansı


Yürütme planında doğrudan erişilen fiziksel bir depolama nesnesidir. Tablo adı, takma ad ve erişim yöntemi (örneğin, const, system veya range) gibi bilgileri içerir.

Örnek Oturumları sayfasından SQL iyileştirme

Önemli

Kendi yönetiminizdeki MySQL, MongoDB ve RDS for PostgreSQL örnekleri Instance Sessions sayfasında SQL iyileştirmeyi desteklemez.

  1. DAS konsolu üzerinden oturum açın.

  2. Sol gezinme bölmesinde Intelligent O&M Center > Instance Monitoring öğelerini tıklayın.

  3. Hedef örneği bulun ve örnek ayrıntıları sayfasını açmak için örnek kimliğine tıklayın.

  4. Sol gezinme bölmesinde Instance Sessions seçeneğine tıklayın.

  5. Instance Sessions alanında iyileştirmek istediğiniz oturumu seçin ve Optimize seçeneğine tıklayın.

  6. Görüntülenen SQL Diagnostic Optimization iletişim kutusunda SQL tanılama sonuçlarını görüntüleyin.

    Öneriyi kabul ederseniz sağ üst köşedeki Copy seçeneğine tıklayın ve iyileştirilmiş SQL'i veritabanı istemcinize veya DMS'ye yapıştırarak çalıştırın. Öneriyi kabul etmezseniz iletişim kutusunu kapatmak için Cancel seçeneğine tıklayın.

    Not

    DAS, SQL ifadelerini karmaşıklıklarına, tablo veri hacmine ve veritabanı yüküne göre tanılar. Bir tanılama 20 saniyeden fazla sürebilir. Ardından motor, gözden geçirip uygulamanız için tanılama sonuçları, iyileştirme önerileri ve tahmini performans kazançları sağlar.

    Tanılama tamamlandıktan sonra sayfa orijinal SQL ifadesini, yürütme planını (select_type, type ve rows gibi sütunlar dahil), tanılama sonuçlarını (satır deposu dizin önerileri için DDL ifadeleri ve dizin ayrıntıları dahil), iyileştirme faydalarını (örneğin, "Beklenen performans iyileştirmesi: %0,55x" ve "Düşük iyileştirme kazancı") ve ifade iyileştirme önerilerini görüntüler.

SQL tanılama geçmişini görüntüleme

  1. DAS konsolu üzerinden oturum açın.

  2. Sol gezinme bölmesinde Intelligent O&M Center > Instance Monitoring öğelerini tıklayın.

  3. Hedef örneği bulun ve örnek ayrıntıları sayfasını açmak için örnek kimliğine tıklayın.

  4. Sol gezinme bölmesinde Request Diagnostic History seçeneğine tıklayın. Burada SQL içeriği, tanılama durumu, zaman ve sonuçlar gibi ayrıntıları içeren örneğin SQL tanılama geçmişini görüntüleyebilirsiniz.