带有大数据的Oracle DB删除过时记录的后果/副作用是什么?



这听起来像是一个愚蠢的问题。但是,保持我的数据一致的最简单解决方案之一是从我的DB表中删除 stale 记录。我的桌子有数百万的行。

任何人都可以告诉我删除数据的后果/副作用。

此DB将是沉重的阅读和中等写作的。

在我在生产网站上学习困难的方法之前,这里有任何预测或2美分吗?因此,是否会由插入物引起的不必要的副作用&删除?

[update]

  1. 我想到的合理解决方案之一是:我总是有添加另一列以确定数据是否过时的选项。但是,使用此解决方案,我需要跟踪另一个变量。

  2. 触发了一个事件,该事件表明表中的一行是陈旧的。我们计划在射击事件时删除该行。

所以您有手写的chache?该缓存可能会暴露两种不一致之处:

  • 缓存中有不应该在那里的行
  • 缓存中缺少排行的行

后者似乎不是您担心的问题。

从缓存中删除行以解决第一个问题并不是一个问题。但是,当删除它们时,您怎么知道。您需要跟踪缓存是否脏。为整台做这件事并不容易。为单个行做这件事更加困难。

我在这种缓存的经验是:除非您绝对需要,否则不要这样做。数百万行不能证明额外的缓存本身是合理的,这仍然是"小表"。

困难通常被低估了,并且经常被高估的性能优势。通常,您会发现自己通过编写其他代码来修复错误,最终会损害您所有的性能好处。

不止一次,我最终丢掉了这样的缓存,因为它变得难以管理。令人惊讶的是,我们最终提出的更简单的代码仍然足够快。

如果您确实必须使用使用一个缓存,我会选择一个物质的视图,其中Oracle跟踪无效。但是首先要确保它确实需要,并且不要为过早的优化而跌落。

最新更新