Otomatik SQL kısıtlama, veritabanı aşırı yüklenme durumlarında anormal SQL deyimlerini algılar ve eşzamanlılıklarını sınırlar; böylece sorunlu sorguların küçük bir grubu kontrol altına alınırken çoğu hizmet çalışmaya devam eder.
Bu özellik; anomaliyi algılama, sorumlu SQL deyimlerini belirleme, hassas özellik çıkarımıyla kısıtlama uygulama ve iş yükünün beklendiği gibi toparlanmaması durumunda işlemi geri alma adımlarından oluşan tüm yanıt döngüsünü otomatikleştirir.
Nasıl çalışır
Tüm süreç:
İzleme ölçümlerinin toplanması
DAS, varsayılan olarak Alibaba Cloud üzerinde dağıtılan ApsaraDB RDS örnekleri için aşağıdakiler dahil ana bilgisayar ve veritabanı altyapısı performans ölçümlerini toplar:
CPU kullanımı
Saniye başına giriş/çıkış işlemi (IOPS)
Saniye başına sorgu sayısı (QPS)
Etkin oturumlar
Bu gerçek zamanlı veriler, anomali algılama ve kök neden analizi aşamalarına veri kaynağı olur.
Anomali algılama
DAS, makine öğrenimi algoritmalarını kullanarak geçmiş performans verileriyle çevrim dışı bir model eğitir. Model, gerçek zamanlı ölçümleri değerlendirerek istisnaları gerçekleştiği anda algılar ve sabit eşikler yerine gerçek sistem davranışına dayalı uyarılar tetikler.
Kök neden analizi
DAS bir istisna algıladığında olaya abone olur, mevcut oturum verilerini toplar ve sorumlu SQL deyimlerini belirlemek için SQL denetimi tam istek analizi özelliğini performance_schema istatistikleriyle birlikte kullanır.
DAS, anormal SQL deyimlerini dört türe ayırır:
| Tür | Açıklama | DAS yanıtı |
|---|---|---|
| Engelleyici SQL | DDL değişikliklerine, kilit beklemelerine veya büyük işlemlere neden olan deyimler | Çok sayıda oturum etkileniyorsa veya yürütme süresi çok uzunsa oturumları kapatır; kısıtlama uygulamaz |
| Kaynak yoğunluklu SQL | Düşük eşzamanlılıkta bile sürekli gönderilen ve yüksek miktarda CPU, G/Ç veya ağ kaynağı tüketen deyimler | Otomatik olarak kısıtlanır |
| Trafik yoğunluklu SQL | Eşzamanlılıkları ani artış gösterdiğinde performans darboğazlarına neden olan normal deyimler (örneğin, basit anahtar-değer sorgularının yük altında yavaşlaması) | Otomatik olarak kısıtlanır |
| Diğer SQL | Veritabanı istisnalarına neden olan ancak yukarıdaki kategorilere uymayan deyimler | — |
Özellik çıkarımı
DAS, kaynak yoğunluklu ve trafik yoğunluklu SQL deyimleri için hassas kısıtlama uygulamak üzere tanımlayıcı özellikleri çıkarır. İki kısıtlama stratejisi desteklenir:
| Strateji | Ne zaman kullanılır | Nasıl çalışır |
|---|---|---|
| SQL şablonu tabanlı kısıtlama | Belirli bir SQL deseni, parametre değerlerinden bağımsız olarak istisnalara neden olur | DAS, SQL şablonunu (parametreler ? ile değiştirilerek) çıkarır ve bu şablonla eşleşen tüm deyimleri kısıtlar |
| SQL deyimi tabanlı kısıtlama | Veri çarpıklığı istisnalara neden olur; paylaşılan bir şablondaki belirli parametre değerleri orantısız kaynak tüketir | DAS, hem SQL şablonundan hem de belirli parametre değerlerinden özellikler çıkarır |
SQL şablonu tabanlı kısıtlama örneği
DAS, değişmez değerleri ? ile değiştirerek SQL şablonları oluşturur:
/* SQL Statement 1 */
select id,name,age from students where name='Bob';
/* SQL Template 1 */
select id,name,age from students where name=?
/* SQL Statement 2 */
select id,name,age from students where name='Bob' and sid='Unique ID';
/* SQL Template 2 */
select id,name,age from students where name=? and sid=?
DAS, SQL Şablonu 1'e göre kısıtlama uygularsa özellikleri select id, name, age from students where name ile eşleşen deyimleri hedef alır. SQL Şablonu 2, SQL Şablonu 1'in tüm özelliklerini içerdiğinden SQL Deyimi 2 de kısıtlanır; bu da istenen davranış olmayabilir.
Bir şablon kimliği mevcutsa (veritabanı ara katmanı tarafından oluşturulan bir SQL kimliği veya geliştiriciler tarafından eklenen bir SQL ipucu), DAS kısıtlamayı hassas bir şekilde kapsamlandırmak için bunu kullanır. Şablon kimliği olmayan deyimler (örneğin, doğrudan komut satırından gönderilenler) etkilenmez ve çalışmaya devam eder.
Otomatik optimizasyon
DAS, kök neden analizi sırasında optimize edilebilecek anormal bir SQL deyimi algıladığında acil durum yanıtı olarak kısıtlama uygular ve aynı zamanda otomatik optimizasyonu tetikler. DAS, kök nedeni gidermek için etkilenen tablolar üzerinde otomatik olarak dizinler oluşturur.
İzleme ve geri alma
DAS, kısıtlamayı uyguladıktan sonra veritabanı performansını izlemeye devam eder. İş yükü azalmazsa veya trafik beklendiği gibi düşmezse DAS kısıtlama işlemini geri alır ve kök neden analizini yeniden başlatır.
Aşırı yüklenme olaylarını ne tetikler
Veritabanı aşırı yüklenme olayları genellikle üç kategoriye ayrılır:
Trafik artışları: Önbellek delinmesi, anormal çağrı desenleri veya promosyon etkinlikleri SQL eşzamanlılığında keskin bir artışa neden olur.
Veri çarpıklığı: Tek bir büyük siparişli kullanıcıya yönelik sorgular gibi az sayıdaki istek, veritabanı kaynaklarının orantısız bir bölümünü tüketerek tüm kullanıcılar için yanıtları yavaşlatır.
Kaynak yoğunluklu sorgular: Dizinsiz tablolar üzerindeki sorgular veya diğer kaynak ağır desenler, tüm sistemi bozacak kadar CPU, G/Ç veya bellek tüketir.
Ön koşullar
Otomatik SQL kısıtlamanın sizin adınıza kısıtlama uygulayabilmesi için DAS'a gerekli izinleri verin.
Sonraki adımlar
DAS'ta anomali algılama hakkında bilgi edinme
DAS'ta otomatik SQL optimizasyonu hakkında bilgi edinme