根據MySQL Performance Blog,昨天(5月6日)宣佈的新Percona服務器都包含MySQL Audit Plugin的開源版本。在觸發級聯運行的單個查詢期間,哪些表受到影響
我想要完成的任務是:在單個更新查詢運行期間記錄受級聯觸發器執行影響的表。例如,當執行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
插件)以收穫約哪些表受到影響通過級聯觸發器執行的信息。 JFYI:我發現的唯一類似問題here沒有提供適用答案。
感謝您的任何建議。
也許這些輪子還沒有發明。您的要求非常不尋常。 你看,因爲觸發器,FKS已經在那裏,你應該能夠在執行前告訴任何查詢的動作,只是靜態分析,除非你使用某種行動的概率途徑來定義你的成果。 所以這是非常不尋常的事先不知道你的DML語句將採取行動。 – kurast