Database Autonomy Service (DAS), trafik yoğunluğu sırasında sorunlu SQL ifadelerini otomatik olarak algılar ve bunları anahtar kelime bazında kısıtlar; manuel müdahale gerektirmez. Bu sayede ApsaraDB RDS örneğiniz, ani eşzamanlılık artışları, dizinsiz sorgular veya kötü niyetli istek kalıplarından kaynaklanan performans düşüşlerinden korunur.
Desteklenen sürümler
Otomatik SQL kısıtlama özelliği, aşağıdaki MySQL sürümlerini ve edition'larını çalıştıran ApsaraDB RDS örnekleri için kullanılabilir:
| MySQL sürümü | Desteklenen edition'lar |
|---|---|
| MySQL 8,0 | RDS High-availability Edition, RDS Enterprise Edition |
| MySQL 5,7 | RDS High-availability Edition, RDS Enterprise Edition |
| MySQL 5,6 | RDS High-availability Edition |
Kullanım senaryoları
Otomatik SQL kısıtlama, aşağıdaki senaryolar için tasarlanmıştır:
Trafik artışları: Önbellek delinmesi veya şüpheli istekler, belirli bir türdeki eşzamanlı SQL sorgularında ani bir artışa neden olur.
Yoğun tek kullanıcı sorguları: Bir kullanıcı kısa sürede çok sayıda SQL sorgusu gönderir; örneğin, bir alışveriş yapan kişi aynı anda birçok sipariş vererek veritabanı kaynaklarının orantısız bir kısmını tüketir.
Eksik dizinler: Dizinsiz çok sayıda SQL ifadesi çalıştırılır ve bu durum diğer iş yüklerinin performansını düşürür.
Sınırlamalar
Kısıtlama modu Anahtar Kelimelere Göre Kısıtla şeklindedir.
Desteklenen SQL türleri: SELECT, UPDATE, DELETE ve INSERT
INSERT...SELECT... ifadeleri kısıtlanamaz
INSERT kısıtlaması yalnızca MySQL 8,0 çalıştıran ApsaraDB RDS örneklerinde ve MySQL 5,7 veya 8,0 çalıştıran PolarDB for MySQL kümelerinde desteklenir
Nasıl çalışır?
Otomatik SQL kısıtlama tetiklendiğinde davranış, ApsaraDB RDS örneğinizde çalışan MySQL sürümüne bağlıdır.
MySQL 5,6 veya MySQL 5,7
Kısıtlanan SQL ifadeleri kesintiye uğrar ve istemciye aşağıdaki hata döndürülür:
1317: "query execution was interrupted"
MySQL 8,0
Kısıtlanan SQL ifadeleri Concurrency control waiting durumuna girer. Bekleyen ifade sayısı ccl_max_waiting_count parametresinin değerini aşarsa aşağıdaki hata döndürülür:
ERROR 7534 (HY000): "Concurrency control waiting count exceed max waiting count"
ccl_max_waiting_count parametresi, hata döndürülmeden önce kaç tane kısıtlanmış ifadenin bekleyebileceğini kontrol eder:
**ccl_max_waiting_count değeri** |
Davranış |
|---|---|
0 (varsayılan) |
Tüm kısıtlanmış ifadeler süresiz olarak bekler; hata döndürülmez |
DAS kısıtlamayı etkinleştirdiğinde 0 |
DAS değeri otomatik olarak 10 olarak değiştirir |
Herhangi bir değer > 0 |
DAS belirtilen değeri kullanır |
Otomatik SQL kısıtlamayı etkinleştirme
Örnekler sayfasına gidin. Üst gezinme çubuğunda ApsaraDB RDS örneğinizin bulunduğu bölgeyi seçin. Örneği bulun ve ID'sine tıklayın.
-
Aşağıdaki yollardan birini kullanarak Autonomous Function Management panelini açın:
Sol gezinme bölmesinde Autonomy Services > Diagnostics seçeneklerini seçin. Autonomy Center sekmesine tıklayın, ardından Autonomy Service Settings seçeneğine tıklayın.
Sol gezinme bölmesinde Autonomy Services > Dashboard seçeneklerini seçin. Performance Trends sekmesinde Autonomy Service Settings seçeneğine tıklayın.
-
Autonomous Function Settings sekmesinde otonomi hizmetini etkinleştirin. Optimization and Throttling sekmesine tıklayın, Automatic Throttling seçeneğini belirleyin ve kısıtlama tetikleme koşullarını yapılandırın.
Yapılandırılan zaman aralığında koşullar karşılandığında DAS örneği izlemeye başlar. Kısıtlama başladıktan sonra sorun devam ederse DAS kısıtlama işlemini otomatik olarak geri alır. Kısıtlama süresi hiçbir zaman Maximum Throttling Duration değerini aşmaz.
Parametre Açıklama CPU Utilization > CPU kullanım eşiği. Değer ≥ 70 olacak şekilde ayarlayın. Örneğin, CPU kullanımı %80'i aştığında kısıtlamayı tetiklemek için 80girin.Number of Active Sessions > Aktif oturum sayısı eşiği. CPU Utilization ile VEYA ilişkisi kullanılıyorsa ≥ 16, VE ilişkisi kullanılıyorsa ≥ 2 olacak şekilde ayarlayın. Örneğin, aktif oturum sayısı 64'ü aştığında kısıtlamayı tetiklemek için 64girin.Available Time Range Otomatik SQL kısıtlamanın etkin olduğu zaman aralığı. Maximum Throttling Duration Tek bir kısıtlama olayının maksimum süresi. 0olarak ayarlanırsa kısıtlama hemen tetiklenir ancak anında geçersiz hale gelir.Duration > Kısıtlama tetiklenmeden önce CPU ve oturum koşullarının ne kadar süre devam etmesi gerektiği. Örneğin, koşullar 2 dakikadan fazla sürdüğünde kısıtlamanın devreye girmesi için 2dakika girin.
OK seçeneğine tıklayın.
-
(İsteğe bağlı) Alert Configuration bölümünde bir uyarı şablonu yapılandırın ve bildirimlere abone olun; böylece bir kısıtlama görevi başladığında veya durduğunda bilgilendirilirsiniz. Sistem bir uyarı şablonu önerir ve ilgili otonomi olayları için uyarı kurallarını önceden doldurur. Yapılandırmayı tamamlamak için ekrandaki talimatları izleyin.
-
Select Alert Contact Group adımında bir uyarı iletişim kişisi grubu seçin. Daha fazla bilgi için bkz. Uyarı iletişim kişilerini yönetme.
Yeni bir uyarı iletişim kişisi eklemek için Add Contact seçeneğine tıklayın.
Yeni bir uyarı iletişim kişisi grubu oluşturmak için Create Contact Group seçeneğine tıklayın.
Mevcut bir kişiyi güncellemek veya silmek için Edit veya Remove seçeneğine tıklayın.
Associate with Resources adımında ilişkili kaynakları onaylayın.
Submit Configuration seçeneğine tıklayın ve görünen iletişim kutusunda onaylayın.
ApsaraDB RDS örneğinizde zaten bir uyarı şablonu varsa istendiği gibi gerekli uyarı kurallarını buna ekleyin. Baştan oluşturmak için bkz. Uyarı şablonlarını yapılandırma ve Uyarı kurallarını yapılandırma .
-
Kısıtlama geçmişini görüntüleme
Örnekler sayfasına gidin. Üst gezinme çubuğunda ApsaraDB RDS örneğinizin bulunduğu bölgeyi seçin. Örneği bulun ve ID'sine tıklayın.
Sol gezinme bölmesinde Autonomy Services > Diagnostics seçeneklerini seçin.
Session Management sekmesine tıklayın.
-
Instance Sessions bölümünde SQL Throttling seçeneğine tıklayın. İletişim kutusunda kısıtlama görevlerini duruma göre görüntüleyin:
Sekme Açıklama Running Şu anda etkili olan kısıtlama kuralları. Görev, Maximum Throttling Duration süresi dolana veya DAS işlemi otomatik olarak geri alana kadar bu durumda kalır. Complete Sonlanmış kısıtlama görevleri. Geçmişi filtrelemek için bir zaman aralığı seçin. 

Kısıtlamayı yapılandırırken Kill Abnormal SQL Statements in Execution seçeneğini belirttiyseniz sonlandırılan oturumları görüntülemek için End Session History seçeneğine tıklayın.
Sonraki adımlar
Kısıtlama yerine SQL ifadelerini optimize etmek ve kaynak tüketimini azaltmak için bkz. Otomatik SQL optimizasyonu ve SQL optimizasyonu.
Örnek ölçümleri otomatik kısıtlamayı tetiklemek için gereken eşiğe ulaşmıyorsa bunun yerine manuel bir kısıtlama kuralı yapılandırın. Bkz. SQL kısıtlama.
API referansı
| İşlem | Açıklama |
|---|---|
| UpdateAutoThrottleRulesAsync | Birden fazla veritabanı örneği için otomatik SQL kısıtlama parametrelerini eşzamansız olarak yapılandırır |
| GetAutoThrottleRules | Veritabanı örneklerinin otomatik SQL kısıtlama kurallarını sorgular |
| DisableAutoThrottleRules | Birden fazla veritabanı örneği için otomatik SQL kısıtlama özelliğini devre dışı bırakır |