我想找到一个可以在sybase数据库中检测冗余/未使用的表和存储过程的工具。
从Java应用程序访问数据库,该应用程序使用JDBC访问表和存储过程。
有大约400个表和相似数量的存储过程。
有什么建议吗?
答案 0 :(得分:1)
查看应用程序未使用的唯一确定方法是设置日志记录并运行应用程序的完整练习。这可以从客户端和/或服务器完成。
您可以使用log4jdbc记录JDBC活动,也可以让DBA在该spid上设置跟踪。
一个优秀的DBA可以安排在生产中安排工作以收集定期快照以查看正在发生的事情,这可能会对您的情况有所帮助。
在确定要删除的候选项之后,您可以创建一个ObjectLog表并在表上编写触发器,并在每个proc中调用以插入到该表中。在生产中运行一段时间会让你有信心放弃。
答案 1 :(得分:1)
假设您使用的是ASE 12.5+,另一种方法是使用MDA表。其中一个表,我认为monOpenObjectActivity跟踪所有对象的使用情况。您可以对此表运行查询,以查找索引,表和sprocs的使用频率。如果你能找到适合它的方法,它就非常有用。
第一步是安装表,因为它们默认不存在。最好的指南在这里:http://www.sypron.nl/mda.html。在该页面上还有一些示例查询,我认为标题为“在当前数据库中查找看似未使用的索引”的那个是您的。可以轻松调整此查询以报告所有对象的所有使用情况。
答案 2 :(得分:0)
假设表名都是在应用程序中进行硬编码而不是动态构造的,您可以搜索java代码和存储过程来查找名称400表。在未显示的那些中,在将它们视为丢弃的候选者之前,您需要验证已使用的表中没有FK引用。大多数数据库客户端工具(例如DBVisualizer)允许您逐个表地查找这些工具。甚至可能有一种方法可以将此问题作为查询发布,但我对Sybase的熟悉程度还不够。