0

我的老板担心,如果我们不对表进行分区并随着时间的推移删除分区(而不是仅仅删除记录),那么在我们的数据库表中创建 LOB 列可能会导致有效的永久存储开销。他认为LOB的数据会在创建记录时单独存储,这似乎是正确的,但Oracle可能不会在删除行时删除LOB列的数据。

这是正确的,甚至可能吗?我很难相信 DBMS 会如此糟糕地处理对象存储。如果有任何改变,我们将使用 Oracle 11g。

4

1 回答 1

0

我最终发现这个问题涵盖了相同的主题。

当数据库创建一个范围来存储 LOB 时,它直接与表相关联。当删除包含这些 LOB 的行时,这些 LOB 将从保持相同大小的范围中删除(它不会因为 LOB 被删除而缩小)。但是,该表能够像预期的那样重用已删除 LOB 中的空间。

因此,虽然整个数据库无法重用为表的 LOB 存储创建的扩展区中的可用空间,但该空间可供表使用。在删除或截断表或显式解除分配该范围之前,该范围将一直存在(因此会占用数据库完全可用的空间)。

最后,除非剩余分配给表的范围是一个问题(或者还有其他可以通过分区解决的问题),否则没有必要仅为此目的创建分区。

于 2014-09-19T17:40:22.977 回答