-1

MySQL中是否有任何方法可以记录访问表中某个列的任何查询?

目的: 出于重构目的,我需要这样做 - 我必须更改数据库的结构,但因为当时我不够聪明,无法使用唯一的可搜索列名,所以现在我很难找到我的所有地方我处理该列的 PHP 代码。因此,如果我可以开始记录所有随着时间的推移访问该列的查询,我就可以全面了解哪些查询使用该列,从而能够修改我的 PHP 代码(假设所有可能的查询在那段时间都运行了一段时间) )。

4

1 回答 1

0

当我在下面写下我的疑虑时,这个问题与“审计”和“记录”有关。

使用通用查询日志可以实现基本语句日志记录,企业审计插件可以执行更高级的审计。触发器不适用于记录查询,但已知可以实现更新/插入更改日志跟踪。


我认为试图以编程方式查找用法是错误的。重构不是一个“持续的”过程——它只完成一次(每个重构目标),然后生活继续。测试(例如单元/集成)和代码覆盖率可以说明重构的结果,但通常使用形式化的DAL /API 效果最好。

相反,这是坐下来研究代码库并仔细分析所有数据库访问调用的好时机。即使是一个糟糕的列名id,如果只是试图找到某些事件,也相对容易通过文件进行 grep。很有可能只需要一两个小时就可以对手动更改“感到舒服”。现在,如果只有这样的变化可以被测试..

将所有访问重构为具有明确定义的合约的命名方法也是谨慎的做法,即使它们当前留在调用站点,也可以稍后将其推送到适当的 DAL 中。这种关注点分离是支持可测试性和未来重构的基础。

于 2013-05-21T08:26:59.183 回答