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