Java 一种能够检测冗余数据库表的工具

Java 一种能够检测冗余数据库表的工具,java,database,sybase,Java,Database,Sybase,我想找到一个可以检测sybase数据库中冗余/未使用的表和存储过程的工具 数据库是从Java应用程序访问的,该应用程序使用JDBC访问表和存储的进程 通常有400个表和类似数量的存储过程 有什么建议吗?假设表名都是在应用程序中硬编码的,而不是动态构造的,您可以搜索java代码和存储过程来查找表名。在未显示的表中,您需要先验证是否存在来自已用表的FK引用,然后再将其视为要删除的候选表。大多数数据库客户机工具(例如DBVisualizer)都允许您逐表查找这些工具。甚至可能有一种方法可以将其作为查询

我想找到一个可以检测sybase数据库中冗余/未使用的表和存储过程的工具

数据库是从Java应用程序访问的,该应用程序使用JDBC访问表和存储的进程

通常有400个表和类似数量的存储过程


有什么建议吗?

假设表名都是在应用程序中硬编码的,而不是动态构造的,您可以搜索java代码和存储过程来查找表名。在未显示的表中,您需要先验证是否存在来自已用表的FK引用,然后再将其视为要删除的候选表。大多数数据库客户机工具(例如DBVisualizer)都允许您逐表查找这些工具。甚至可能有一种方法可以将其作为查询发出,但我对Sybase还不太熟悉,因此不能肯定。

查看应用程序未使用的内容的唯一可靠方法是设置日志记录并运行应用程序的完整练习。这可以从客户端和/或服务器完成

您可以使用log4jdbc记录JDBC活动,也可以让DBA在该spid上设置跟踪

一个好的DBA可能需要在生产中安排一个作业来收集周期性快照以查看发生了什么,这可能会帮助您了解监视的内容


在确定要删除的候选对象之后,可以创建一个ObjectLog表,并在表上编写触发器脚本,然后调用每个过程以插入到该表中。在生产环境中运行一段时间会让您失去信心。

另一种方法是使用MDA表,假设您使用的是ASE 12.5+。我认为其中一个表MonoEnObjectActivity跟踪所有对象的使用情况。您可以对此表运行查询,以了解索引、表和存储过程的使用频率。如果你能找到解决办法,那就非常有用了


第一步是安装表,因为默认情况下它们不在那里。最好的指南在这里:。该页面上还有一些示例查询,我认为标题为“在当前数据库中查找看似未使用的索引”的查询适合您。此查询可以轻松地进行调整,以报告所有对象的所有使用情况。

感谢您的支持。我已经在这里和DBA讨论过了,我们已经确定了一个变体。我们正计划对表进行审计,以便稍后进行分析。感谢您的帮助。我已经在这里和DBA讨论过了,我们已经确定了一个变体。我们计划对表进行审计,以便稍后进行分析。