2014-05-08 9 views
7

MySQL Performance Blog के अनुसार एकल क्वेरी के दौरान कौन सी टेबल प्रभावित हुईं, कल (6 मई) की घोषणा की गई नई परकोना सर्वर, दोनों में MySQL ऑडिट प्लगइन का ओपन सोर्स संस्करण शामिल है।ट्रिगर्स कैस्केड

जो कार्य मैं पूरा करना चाहता हूं वह है: एक एकल अद्यतन क्वेरी चलाने के दौरान कैस्केड ट्रिगर निष्पादन से प्रभावित तालिकाओं को लॉग करें। ई जी जब UPDATE MY_TABLE … निष्पादित किया जाता है, तो ट्रिगर्स {BEFORE,AFTER}_UPDATE अन्य टेबल अपडेट कर सकते हैं, जिन पर उनके स्वयं के ट्रिगर हो सकते हैं, आदि

वर्तमान में मैं घरेलू समाधान का उपयोग करता हूं;

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 ; 

उत्पादन में मैं my_own_log प्रक्रिया परिभाषित नहीं है और के बाद से information_schema तालिका अच्छी तरह से अनुकूलित है, मैं किसी भी प्रदर्शन दंड उपज नहीं है: के अंदर सभी मैं की तरह ख़ाली कर दिया चलाता है।

सवाल अगर मैं उद्यम समाधान (ऊपर उल्लिखित audit प्लगइन) करने के लिए स्विच कर सकता है जो टेबल झरना ट्रिगर निष्पादन से प्रभावित थे के बारे में एक जानकारी फसल है। जेएफवाईआई: मुझे मिला एकमात्र समान प्रश्न here एक लागू उत्तर के साथ आपूर्ति नहीं है।

किसी भी सुझाव के लिए धन्यवाद।

उत्तर

1

प्लगइन ऑडिटिंग को सर्वर के साथ बाहरी इंटरैक्शन पंजीकृत करने के लिए डिज़ाइन किया गया है, जिसे आक्रमण और अन्य संबंधित गतिविधियों को ट्रैक करने के लिए उपयोग किया जा रहा है, सर्वर के साथ इंटरैक्शन नहीं (जैसे ट्रिगर और प्रक्रियाएं)।

ये आंतरिक गतिविधियां डिज़ाइन द्वारा किसी ऑडिट प्लगइन पर क्रियाएं उत्पन्न नहीं करतीं। देव ब्लॉग से:


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

MySQL सर्वर जब भी एक auditable घटना इस तरह जब यह एक ग्राहक से प्राप्त एक SQL बयान के निष्पादन को पूर्ण कर देती, तब होता है ऑडिट लॉग एक तत्व लिखने के लिए प्लगइन कहता है। आम तौर पर सर्वर स्टार्टअप के बाद लिखे गए पहले तत्व में सर्वर विवरण और स्टार्टअप विकल्प होते हैं। उसके बाद तत्व क्लाइंट कनेक्ट और घटनाओं को डिस्कनेक्ट करने, एसक्यूएल स्टेटमेंट निष्पादित करने, और इसी तरह की घटनाओं का प्रतिनिधित्व करते हैं। केवल शीर्ष-स्तरीय विवरण लॉग किए गए हैं, संग्रहित प्रोग्राम जैसे ट्रिगर्स या संग्रहीत प्रक्रियाओं के भीतर बयान नहीं। लोड डेटा INFILE जैसे बयान द्वारा संदर्भित फ़ाइलों की सामग्री लॉग नहीं है।


अभी के लिए, आप अपने घर के समाधान के साथ बेहतर हैं। आप इसके प्रदर्शन को बेहतर बनाने की कोशिश कर सकते हैं ताकि आप इसे उत्पादन वातावरण में बदल सकें।

+0

शायद इन पहियों का आविष्कार नहीं किया गया था। आपकी आवश्यकता बहुत असामान्य है। आप देखते हैं कि ट्रिगर्स दिए गए हैं, एफके पहले से ही वहां हैं, आप इसे स्थिर करने के पहले किसी भी क्वेरी के कार्यों को बताने में सक्षम होना चाहिए, केवल स्थैतिक विश्लेषण द्वारा, जब तक कि आप अपने परिणामों को परिभाषित करने के लिए कार्रवाई के किसी प्रकार का संभाव्य मार्ग का उपयोग न करें। तो यह जानना बेहद असामान्य है कि आपके डीएमएल कथन कहां कार्य करेंगे। – kurast

संबंधित मुद्दे