Ale*_*kin 7 mysql sql triggers
根据MySQL Performance Blog,昨天(5月6日)宣布的新Percona服务器都包括MySQL Audit Plugin的开源版本.
我想要完成的任务是:在一次单个更新查询运行期间记录受级联触发器执行影响的表.E. g.当UPDATE MY_TABLE …执行时,触发器{BEFORE,AFTER}_UPDATE可以更新其他表,可能有自己的触发器等.
目前我使用国内解决方案; 在所有触发器里面我把smth像:
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 ;
Run Code Online (Sandbox Code Playgroud)
在生产中我没有my_own_log定义过程,因为information_schema表格已经过优化,我不会产生任何性能损失.
问题是我是否可以切换到企业解决方案(上述audit插件)来获取有关哪些表受级联触发器执行影响的信息.JFYI:我在这里找到的唯一类似问题没有提供适用的答案.
谢谢你的任何建议.
插件审核旨在注册与服务器的外部交互,用于跟踪入侵和其他相关活动,而不是服务器与其自身的交互(如触发器和过程)。
这些内部活动不会根据设计对任何审计插件生成操作。来自开发博客:
http://dev.mysql.com/doc/refman/5.6/en/audit-log-plugin-logging-control.html
每当发生可审核事件时,例如当它完成从客户端接收到的 SQL 语句的执行时,MySQL 服务器都会调用审核日志插件来写入元素。通常,服务器启动后写入的第一个元素包含服务器描述和启动选项。该元素后面的元素表示客户端连接和断开连接事件、执行的 SQL 语句等事件。仅记录顶级语句,而不记录存储程序(例如触发器或存储过程)中的语句。不会记录 LOAD DATA INFILE 等语句引用的文件内容。
目前,您可以更好地使用自己开发的解决方案。您可以尝试提高其性能,以便可以在生产环境中打开它。