我的老板担心如果我们不对表进行分区并随着时间的推移丢弃分区(而不是删除记录),那么在我们的数据库表中创建LOB列可能会导致有效的永久存储开销。他认为LOB的数据将在创建记录时单独存储,这似乎是正确的,但是当删除行时,Oracle可能不会删除LOB列的数据。
这是正确的还是可能的?我发现很难相信DBMS会很难处理对象存储。如果改变了什么,我们正在使用Oracle 11g。
答案 0 :(得分:0)
我最终发现this ask tom question涵盖了同一主题。
当数据库创建存储LOB的范围时,它直接与表关联。当删除包含这些LOB的行时,LOB将从保持相同大小的范围中删除(它不会因为删除了LOB而缩小)。但是,该表能够像预期的那样重用已删除的LOB中的空间。
因此,虽然整个数据库无法在为表的LOB存储创建的范围内重用可用空间,但该空间可供表使用。范围将存在(因此占用数据库可以完全可用的空间),直到删除或截断表,或者显式释放范围。
最后,除非分配给表格的范围是一个问题(或者可以通过分区解决其他问题),否则不必为此目的创建分区。