我们遇到了性能问题,我需要一些建议(我们在 Oracle 10g R2 上)情况是这样的
1)它是一个遗留系统。
2)在某些表中,它保存了过去 10 年的数据(意味着自第一个版本推出以来从未删除过数据)。现在,在大多数 OLTP 表中,它们大约有 30,000,000 - 40,000,000 行。
3) 对这些表的搜索操作需要 5-6 分钟的时间。(像 select count(0) from xxxxx where isActive='Y' 这样的简单查询需要大约 6 分钟的时间。)当我们看到解释计划时,我们发现索引扫描正在 isActive 列上进行。
4) 我们建议归档和清除不需要的旧数据,团队正在努力解决这个问题。即使我们删除了 5 年的数据,我们也会在表中留下大约 15,000,000 - 20,000,000 行,这本身就非常庞大,因此我们考虑在这些表上进行表分区,但我们发现用户可以执行大多数表的搜索这些表的列来自 UI,因此这将破坏表分区的目的。
那么需要采取哪些措施来改善这种情况。