【发布时间】:2012-05-17 01:50:21
【问题描述】:
我们有一份报告(简单文本)要存储在 Oracle 中,平均案例将小于 4K,但有些案例超过了。所以一个选择是使用 CLOB。 它仅用于记录目的,不用于查询或更新。只插入一次,退出几次。
空间和整体架构(其他表)性能是主要关注点。
我读到了 CLOB 存储分配格式。
我们正在考虑使用 2 列,msgV varchar2(4000) 和 msgC CLOB。当文本超过 4k 时,我们将存储到 CLOB 中,否则通常为 varchar2 并且 CLOB 保持为 NULL。
所以我的问题是,
这个方案是比上述性能考虑更好还是简单地使用 CLOB ? (除了它需要更多的编码工作来维持这种情况)
NULL 和 Empty CLOB(或任何数据类型)占用的空间是多少?
【问题讨论】:
-
使用单个
CLOB列。 NULL 值不需要空格。 -
那么单个 CLOB 列的性能(在空间和速度方面)是否类似于使用 2。(防御方式,仅在需要时使用更大,否则安全且正常)??
-
CLOBs 在被检索时稍微变慢并且无法被索引。但我总是更喜欢更简洁的设计,而不是试图优化(还)不存在的问题的东西。如果确实有问题,您可以稍后再拆分数据。 -
您可能还想查看压缩选项。如果您使用 VARCHAR2 并且有很多重复项,则常规表压缩会有所帮助。如果您使用 CLOB,您可能需要查看 SecureFiles 压缩:docs.oracle.com/cd/E11882_01/server.112/e26088/…
-
@a_horse_with_no_name 。您实际上可以索引 clob。它不使用 BTree 索引,但是您可以索引它以进行全文搜索。 docs.oracle.com/cd/E11882_01/server.112/e25789/…
标签: oracle database-design schema