从大型DB清除SQL表?

时间:2009-10-29 20:01:08

标签: sql optimization performance database

我作为学生工作的网站将在不久的将来重新设计和发布,并且我被分配了手动搜索网站用于查找我们可以考虑删除的表格中的每个表格的任务。我正在搜索Dreamweaver中的每个HTML文件源代码,但我希望有一种自动检查我的工作方式。有没有人对如何在商业世界中做到这一点有任何建议?

5 个答案:

答案 0 :(得分:2)

如果您搜索代码,您可能会发现从未使用过的SQL,因为用户从不在应用程序中选择这些选项。

相反,我建议您打开数据库审核并记录实际使用的SQL。例如in Oracle you would do it like this。其他主要数据库服务器具有类似的功能。

从日志数据中,您不仅可以识别正在使用的表,还可以识别它们的使用频率。如果架构中的任何表在一周的审核期间没有显示,或者很少显示,那么您可以使用文本搜索工具在代码中对此进行调查。

一旦你有候选表从数据库中删除,并得到你的经理的批准,那么不要只是删除表,再次创建它们作为一个空表,或者在表中放一个虚拟记录,主要是空值(在字段中,除了名称和描述性字段,您可以在其中添加“DELETED”“报告错误DELE到支持中心”等等,除此之外,应用程序不会因硬错误而失败,并且你有机会在他们最终得到这些未使用的表时找出用户在做什么。

答案 1 :(得分:1)

逆向工程DB(Visio,Toad等......),记录结构并向新网站的设计者询问他们需要什么 - 然后重构。

答案 2 :(得分:1)

我首先要梳理关键字的HTML源代码:

  • 选择
  • INSERT
  • 更新
  • DELETE

...使用grep / etc。这些都不是HTML实体,并且您无法可靠地使用表名,因为您可能正在处理视图(假设系统中存在任何视图)。然后你必须自己倒出语句以确定使用的是什么。

如果在系统中使用[希望]函数和/或存储过程,大多数DB都有一个参考功能来检查依赖性。

这是在屏幕基础上创建设计文档的好时机,在屏幕和列表上列出属性。其中值来自table.column级别的数据库。

编译您使用的表列表,并与数据库中的实际内容进行比较。

答案 3 :(得分:0)

如果在HTML源代码中指定了表名(如果这是他们指定的唯一位置!),则可以在“文件”中搜索数据库中每个表的名称。如果有很多表,请考虑使用像grep这样的工具,并为每个表名创建一个脚本,该脚本针对源代码库运行grep(HTML文件以及可以通过名称引用表的任何其他文件)。

话虽如此,我仍然会遵循Damir的建议,并将删除候选列表提供给数据设计人员进行验证。

答案 4 :(得分:0)

我猜你没有围绕数据访问或用户界面进行任何测试,所以没有办法验证什么是和不用。如果数据访问是一致的,脚本将是您最好的选择。让它搜索正在调用的表/视图/存储过程,并将其转储到文件中以进一步分析。这将至少为您提供一个从某个地方实际调用的所有内容的列表。至于那些页面是否实际用于任何地方,那就是另一个故事。

获得正在调用的数据库元素列表后,将其与数据库中用户定义元素的列表进行比较。这将为您提供可能被删除的内容。

所有这一切,如果网站正在重新设计,那么新的数据库架构实际上可能是更好的方法。开始新鲜和导入旧数据通常不如找到死表和字段那么密集。