【问题标题】:What is space allocated for NULL values of an Oracle column (especially CLOB)为 Oracle 列(尤其是 CLOB)的 NULL 值分配的空间是多少
【发布时间】:2012-05-17 01:50:21
【问题描述】:

我们有一份报告(简单文本)要存储在 Oracle 中,平均案例将小于 4K,但有些案例超过了。所以一个选择是使用 CLOB。 它仅用于记录目的,不用于查询或更新。只插入一次,退出几次。

空间和整体架构(其他表)性能是主要关注点。

我读到了 CLOB 存储分配格式。

我们正在考虑使用 2 列,msgV varchar2(4000) 和 msgC CLOB。当文本超过 4k 时,我们将存储到 CLOB 中,否则通常为 varchar2 并且 CLOB 保持为 NULL。

所以我的问题是,

  1. 这个方案是比上述性能考虑更好还是简单地使用 CLOB ? (除了它需要更多的编码工作来维持这种情况)

  2. 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


【解决方案1】:

使用 clob。如果 clob 中的数据小于 4000 字节,它实际上将被内联存储。有关 LOB 与 LONG 的比较,请参阅下面链接中的部分。

Oracle Lob

【讨论】:

    猜你喜欢
    • 2021-12-09
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 2018-02-20
    • 2015-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多