2014-05-08 29 views
7

MySQL Performance Blog'a göre, dün (6 Mayıs) açıklanan yeni Percona Sunucuları, MySQL Denetim Eklentisinin açık kaynak sürümünü içerir.Tetikleyiciler kaskadı tarafından yapılan tekli sorgulama sırasında hangi tablolar etkilendi

Yapmak istediğim görev: tek bir güncelleştirme sorgusu çalıştırması sırasında kademeli tetikleme yürütme tarafından etkilenen tabloları günlüğe kaydetme. Örneğin. UPDATE MY_TABLE … yürütüldüğünde, {BEFORE,AFTER}_UPDATE tetikleyicileri, kendi tetikleyicileri vb. olabilecek diğer tabloları güncelleştirebilir.

Şu anda iç çözümü kullanıyorum; Ben tanımlanan my_own_log prosedür yok üretiminde

IF (
     SELECT count(*) 
     FROM `information_schema`.`ROUTINES` 
     WHERE specific_name = 'my_own_log' 
      AND routine_schema = 'my_schema' 
) > 0 THEN 
    CALL my_own_log ('FOO_TRIGGER', 'Hi, I’m to update MY_TABLE') ; 
END IF ; 

ve information_schema tablo iyi optimize edilir çünkü, herhangi bir performans yasal vermeyen: içindeki tüm Gibi ettirmek koymak tetikler. Tabloları kademeli tetikleyici yürütme etkilenen hakkında bilgi toplamak için işletme çözeltisi (yukarıda belirtilen audit eklenti) geçiş olabilir

sorudur. JFYI: here'u bulduğum tek benzer soru geçerli bir cevapla birlikte verilmiyor.

Önerileriniz için teşekkür ederiz.

cevap

1

Eklenti denetim, sunucu ile dış etkileşimleri kayıt için tasarlanmıştır işgalini ve diğer ilgili faaliyetler, (tetikleyiciler ve prosedürler gibi) kendisi ile sunucunun değil etkileşimleri izlemek için kullanıyorlarsa.

Bu dahili etkinlikler, tasarım gereği herhangi bir denetim eklentisinde eylem oluşturmaz. dev blogdan: Denetlenebilir olay böyle bir istemciden alınan bir SQL deyimi yürütülmesini tamamladığında gibi oluşunca


http://dev.mysql.com/doc/refman/5.6/en/audit-log-plugin-logging-control.html

MySQL sunucusu bir eleman yazmaya eklentisi denetim günlüğünü çağırır. Tipik olarak, sunucu başlangıcından sonra yazılan ilk öğe, sunucu açıklamasına ve başlatma seçeneklerine sahiptir. Bunu izleyen öğeler, istemci bağlantı ve olayları kes, SQL deyimleri yürüttü vb. Gibi olayları temsil eder. Yalnızca üst düzey ifadeler günlüğe kaydedilir; tetikleyiciler veya saklı yordamlar gibi depolanmış programların içindeki ifadeler değil. LOAD DATA INFILE gibi ifadeler tarafından başvurulan dosyaların içeriği günlüğe kaydedilmedi.


Şimdilik ev yapımı çözümünüzle daha iyisiniz. Performansını geliştirmeye çalışarak üretim ortamında açabilirsiniz.

+0

Belki bu jantlar henüz icat edilmemiştir. Gereksinim çok sıradışı. Sen size sonuçları belirlemektir eylem olasılık rota çeşit kullanmadıkça, sadece statik analizle, çalıştırmadan önce herhangi bir sorgu eylemlerini anlatmak mümkün olmalıdır, tetikleyiciler, FKs zaten orada verilen, bkz. DML ifadelerinizin nerede hareket edeceğini önceden bilmemek çok sıra dışıdır. – kurast

İlgili konular