假设我们有一个由 MySQL 数据库组成的“系统 A”,其中包含多个表。一段时间后,您想通过删除任何未使用的表和/或列来优化系统 A,系统 A 非常大且难以忽视。是否有一种工具或方法可以让您运行系统一段时间,然后进行分析,打印出表、列等的一般用途——这将使找到未使用的表和列成为可能。
我正在考虑可能会挂接到系统,记录所有发送到服务器的 SQL 命令,但在这种情况下,我宁愿在数据库端而不是应用程序端这样做。
通用查询日志可能就是您要查找的内容。
根据 MySQL,使用 General Query Log 时:
当客户端连接或断开连接时,服务器将信息写入此日志,并记录从客户端接收到的每个 SQL 语句。
您需要使用--log[=file_name]
or-l [file_name]
选项启动 MySQL 才能使用它。
假设您已经将数据库与某种应用程序链接起来,那么在未使用的列上找到正在使用的列应该不难。
此外,诸如分析器之类的程序(不确定是否与 MySQL 等价)可用于显示所有 SQL 调用。从中您将了解所有正在使用的列。