支持票务系统 - 何时/如何移动旧票?

use*_*003 2 oracle database-design oracle-11g archive

我无法访问分区功能,但考虑一个支持工单系统,每天打开数万张工单,解决问题需要大约一周到几个月的时间。显然,如果我从一开始就试图将它们全部放在一张桌子上,那么这张桌子就会变得很大。

我的问题是:

  1. 一旦票得到解决,我是否应该将其移出原始表?或者
  2. 我是否应该在 90 个月后将已解决的票从原始表中移出?或者
  3. 我是否应该在 90 个月后将所有已解决或未解决的内容移动到另一个表中,并在UNION 每次寻求未解决的查询执行某种操作?

Jus*_*ave 5

桌子变大有什么问题?通常,任何类型的 OLTP 查询都将使用适当的索引访问表,在这种情况下,表的大小或多或少无关。使用索引的成本会以一定的速度增长O(log(n))——实际上,对于任何实际大小的表,ab*-tree 索引只会增加一个或两个级别。您可以通过使用基于函数的索引来进一步限制索引的大小,方法是仅对活动行进行索引。

唯一应该关心表大小的查询是您想要对表进行完整扫描的查询,以便执行诸如生成有关自时间开始以来已打开的票数(或至少,在历史的很大一部分)。如果您担心这些类型的报告查询,您可以执行诸如使用物化视图来预聚合数据之类的操作。

通常,我建议保留一个表并确保存在适当的索引和/或物化视图,以支持有关您关心的性能的查询。