Ani trafik artışları, kaynak yoğun sorgular veya dizinsiz yüksek sayıda sorgu veritabanı performansınızı tehdit ettiğinde bu etkileri kontrol altına almanız gerekir. Database Autonomy Service (DAS), kararlılığı korumak için otomatik SQL kısıtlama özelliğini kullanır. Bu özellik, sorunlu SQL kalıplarını tespit eder ve çekirdek hizmetlerinizin kullanılabilir kalmasını sağlamak üzere anahtar kelimelere dayalı olarak eşzamanlılıklarını sınırlar.
Önkoşullar
Bu özellik aşağıdaki veritabanı örnekleri için kullanılabilir:
|
Veritabanı |
Bölge |
|
Otomatik SQL kısıtlama özelliği, yalnızca anormal durum algılamayı destekleyen bölgelerde kullanılabilir çünkü özellik bu yeteneğe dayanır. Desteklenen bölgeler şunlardır: China (Hangzhou), China (Shanghai), China (Shenzhen), China (Heyuan), China (Guangzhou), China (Qingdao), China (Beijing), China (Zhangjiakou), China (Hohhot), China (Ulanqab), China (Nanjing - Local Region) (Being Decommissioned), China (Fuzhou - Local Region) (Being Decommissioned), China (Chengdu), China (Zhengzhou), China (Hong Kong), Japan (Tokyo), South Korea (Seoul), Singapore, Malaysia (Kuala Lumpur), Indonesia (Jakarta), Philippines (Manila), Thailand (Bangkok), UAE (Dubai), Saudi Arabia (Riyadh), Germany (Frankfurt), US (Silicon Valley), US (Virginia) ve UK (London) |
Kullanım senaryoları
Otomatik SQL kısıtlama, aşağıdaki senaryolar için idealdir:
İş yükü artışları: Genellikle önbellek delinmesi veya olağandışı uygulama davranışları gibi olaylardan kaynaklanan belirli SQL sorgularının eşzamanlılığında ani artış.
Kaynak çekişmesi: Büyük miktarda sipariş verisi içeren hesaplarla ilgili sorgular gibi belirli hesaplara ait sorguların aşırı veritabanı kaynağı tüketmesi.
Verimsiz sorgular: Uygun bir dizin olmadan yüksek sayıda sorgunun çalıştırılması ve bunun genel iş performansını düşürmesi.
Sınırlamalar
Otomatik SQL kısıtlama Anahtar Kelimelere Göre Kısıtla modunu kullanır ve aşağıdaki sınırlamalara sahiptir:
Aşağıdaki SQL deyim türleri desteklenir: SELECT, UPDATE, DELETE ve INSERT.
INSERT...SELECT... türündeki SQL deyimleri kısıtlanamaz.
Yalnızca ApsaraDB RDS for MySQL 8,0 örnekleri ve PolarDB for MySQL 5,7 veya 8,0 kümeleri INSERT deyimleri için kısıtlamayı destekler.
Çalışma mekanizması
Bir otomatik kısıtlama kuralı oluşturduktan sonra, bir uygulama kısıtlama kuralıyla eşleşen bir SQL deyimi yürüttüğünde veritabanı şu şekilde yanıt verir:
ApsaraDB RDS for MySQL 5,6, ApsaraDB RDS for MySQL 5,7 örnekleri ve PolarDB for MySQL 5,6 kümeleri 1317 hatası (sorgu yürütme kesildi) döndürür.
-
ApsaraDB RDS for MySQL 8,0 örnekleri ve PolarDB for MySQL 5,7 veya PolarDB for MySQL 8,0 kümeleri için kısıtlanan SQL deyimleri
Concurrency control waitingdurumuna girer. Bekleyen deyim sayısı ccl_max_waiting_count parametresinin değerini (örnek sürümü tarafından destekleniyorsa) aşarsa sistem "Concurrency control waiting count exceed max waiting count" hatası ve aşağıdaki hata kodlarından birini döndürür:ApsaraDB RDS for MySQL 8,0:
ERROR 7534 (HY000).PolarDB for MySQL 5,7:
ERROR 3277 (HY000).PolarDB for MySQL 8,0:
ERROR 7533 (HY000).
ccl_max_waiting_countvarsayılan değeri olan 0 olarak ayarlanmışsa, kısıtlanan tüm SQL deyimleriConcurrency control waitingdurumunda kalır ve hata döndürülmez. DAS üzerinden kısıtlama yapılandırdığınızda bu parametre 0 ise DAS onu otomatik olarak 10 varsayılan değerine ayarlar. Parametreyi 0'dan farklı bir değere ayarladıysanız DAS özel ayarınızı kullanır.
DAS bir kısıtlama kuralı oluşturduğunda, sorunlu SQL deyiminin özelliklerinden otomatik olarak anahtar kelimeler çıkarır. Uygulamanızın gerçekten yürüttüğü SQL deyimlerinin özelliklerine karşılık geldikleri için bu otomatik olarak oluşturulan anahtar kelimeleri kısıtlama kuralında doğrudan kullanabilirsiniz. Manuel ayarlama gerekmez.
Anahtar kelime çıkarma sırasında bir değişmezin saklanıp saklanmaması, SQL deyimi içindeki semantik bağlamına bağlıdır:
Değişmez bir sütun değeri karşılaştırma koşulu olarak kullanılıyorsa, örneğin
where id > 3, değişmez parametrelendirilir ve atılır. Anahtar kelime belirli değeri tutmaz.Değişmez herhangi bir sütunla ilişkilendirilmemiş bağımsız bir sabit ifade olarak kullanılıyorsa, örneğin
where 2 > 3, değişmez bir anahtar ifade olarak kabul edilir ve saklanır.
Otomatik SQL kısıtlamanın ayrıntılı teknik açıklaması için bkz. Otomatik SQL kısıtlama.
Yordam
DAS konsoluna giriş yapın.
Sol gezinme bölmesinde öğesini tıklayın.
Hedef örneği bulun ve örnek ayrıntıları sayfasını açmak için örnek kimliğini tıklayın.
Sol gezinme bölmesinde Autonomy Center öğesini tıklayın.
Autonomy Center sayfasında sağ üst köşede bulunan Autonomy Service Settings öğesini tıklayın.
-
Autonomous Function Management panelinde Autonomous Function Settings sekmesini tıklayın. Otonomi hizmeti için ana anahtarı açın, Optimization and Throttling sekmesine gidin, Automatic Throttling seçeneğini belirleyin ve ardından aşağıdaki tetikleyici koşulları yapılandırın.
Parametre
Açıklama
CPU Utilization >
CPU kullanım eşiğini belirtir. Değer %70 veya daha yüksek olmalıdır.
Number of Active Sessions >
Etkin oturum sayısı eşiğini belirtir.
-
OR operatörünü kullanırsanız değer 16 veya daha büyük olmalıdır.
-
AND operatörünü kullanırsanız değer 2 veya daha büyük olmalıdır.
Available Time Range
Otomatik SQL kısıtlamanın gerçekleştirilebileceği zaman aralığı.
Maximum Throttling Duration
Tek bir SQL kısıtlama görevi için maksimum süre.
Maximum Throttling Duration 0 olarak ayarlanırsa koşullar karşılandığında kısıtlama tetiklenir ancak hemen devre dışı kalır.
Duration >
Otomatik SQL kısıtlamanın tetiklenmesi için CPU kullanımının ve etkin oturum sayısının eşiklerini aşması gereken süre.
NotÖrneğin, kullanılabilir zaman aralığında aşağıdaki tetikleyici koşulunu yapılandırabilirsiniz: CPU kullanımı %80'i VE etkin oturum sayısı 64'ü 2 dakikadan uzun süreyle aşarsa DAS otomatik kısıtlamayı tetikler.
Kısıtlamadan sonra sorun çözülmezse işlem otomatik olarak geri alınır.
Kısıtlama süresi Maximum Throttling Duration için belirtilen değeri aşmaz.
-
-
OK öğesini tıklayın.
Otomatik SQL kısıtlama geçmişini Instance Sessions sayfasında görüntüleyebilirsiniz. Daha fazla bilgi için bkz. Otomatik SQL kısıtlama geçmişini görüntüleme.
-
(İsteğe bağlı) Otomatik SQL kısıtlama olayları için bildirimleri yapılandırmak üzere Event Subscription Settings sekmesini tıklayın.
DAS otomatik SQL kısıtlamayı tetiklediğinde Warning düzeyinde bir olay oluşturur. Bildirim almak için Enable Subscription Service anahtarını açın ve bildirim parametrelerini yapılandırın. Daha fazla bilgi için bkz. Olay aboneliğini etkinleştirme.
-
Bildirimlere abone olmak için bir Alert Template yapılandırın. Bu sayede veritabanı örneğinizdeki otomatik SQL kısıtlama olayları hakkında bilgilendirilirsiniz.
Sistem bir şablon önerir ve otonomi olayları için ilgili uyarı kurallarını ekler. Yapılandırmayı tamamlamak için istemleri takip edebilirsiniz.
NotÖrnek için zaten bir uyarı şablonu yapılandırdıysanız istemleri takip ederek gerekli uyarı kurallarını mevcut şablonunuza ekleyin.
Uyarı şablonlarını ve kurallarını manuel olarak yapılandırmak için bkz. Uyarı şablonlarını yapılandırma ve Uyarı kurallarını yapılandırma.
-
Bildirimleri almak için bir Alert Contact Group seçin.
Yeni bir uyarı kişisi eklemek için Add Contact öğesini tıklayın.
Yeni bir uyarı kişi grubu eklemek için Add Contact Group öğesini tıklayın.
Mevcut bir kişiyi değiştirmek veya silmek için kişiyi bulun ve İşlemler sütununda Modify veya Remove öğesini tıklayın.
Daha fazla bilgi için bkz. Uyarı kişilerini yönetme.
Submit Configuration öğesini tıklayın ve görünen iletişim kutusunda ayarları onaylayın.
Kısıtlama geçmişini görüntüleme
DAS konsoluna giriş yapın.
Sol gezinme bölmesinde öğesini tıklayın.
Hedef örneği bulun ve örnek ayrıntıları sayfasını açmak için örnek kimliğini tıklayın.
Sol gezinme bölmesinde Instance Sessions öğesini tıklayın.
-
Instance Sessions sayfasında aşağıdaki adımları uygulayın:
-
SQL Throttling öğesini tıklayın.
Şu anda etkin olan kısıtlama kurallarını görüntülemek için Running sekmesini kullanın.
Tamamlanan kısıtlama görevlerinin geçmişini görüntülemek için bir zaman aralığı seçin ve Complete sekmesini kullanın.
Geçmişte Throttling Mode, Max Concurrency, Start Time, End Time, Throttling Rule ve Actions sütunları yer alır. Tamamlanmış bir kuralı yeniden etkinleştirmek için Actions sütununda Enable öğesini tıklayabilirsiniz.
Ayarlarda Kill Abnormal SQL Statements in Execution seçeneğini belirttiyseniz sonlandırılan oturumların kaydını görüntülemek için End Session History öğesini tıklayabilirsiniz.
-
İlgili bilgiler
-
Veritabanı performansını iyileştirmek ve kaynak tüketimini azaltmak için SQL sorgularını optimize edebilirsiniz.
Otomatik SQL optimizasyonu hakkında bilgi için bkz. Otomatik SQL optimizasyonu.
Manuel SQL optimizasyonu hakkında bilgi için bkz. SQL optimizasyonu.
CPU utilization veya number of active sessions belirtilen eşiğe ulaşmazsa DAS otomatik kısıtlamayı tetiklemez. Bu durumda SQL deyimlerini kısıtlamak için manuel olarak bir kural yapılandırabilirsiniz. Daha fazla bilgi için bkz. SQL kısıtlama.
API referansı
|
|
|
|
|
|
|
|
|
|
|