9

XML を格納するテーブルを作成しています。XML を格納するために、CLOBデータ型を使用しています。XML の最大サイズは 5kb です。

テーブルの作成時に列のサイズCLOBを定義する必要がありますか?

4

1 に答える 1

13

clob を設定するときにサイズを正確に定義するわけではありません (varchar とは異なります)。それはただ単にclobです。

LOB の最大サイズは 4Gb です。

ストレージに関しては、次のようにスペースを使用します。

  1. LOB が in-row として定義されていて、LOB が ~ 4kb 未満の場合、ドキュメントのスペースを占めるだけです。(たとえば、行内に 512 バイトの xml を保存すると、512 バイトが使用されます。
  2. LOB が行外に定義されている (または 4kb を超えている) 場合、テーブルの作成時に定義した「チャンク」サイズの倍数が使用されます。

LOB列を作成するとき、そのストレージ句を指定して、次のように行内オプションと行外オプションを制御できます。

LOB (c) STORE AS lobseg (DISABLE STORAGE IN ROW CHUNK 16384)

つまり、LOB を通常のテーブル データとインラインで格納できないことを指定し、チャンクごとに 16kb の倍数でストレージを割り当てるため、ドキュメントが 1kb の場合でも、16kb のストレージが必要になります。

xml ドキュメントが 5kb しかない場合は、行内ストレージを検討し、小さなチャンク サイズを配置することをお勧めします (最小チャンク サイズは 1 ブロックであるため、4kb エクステントを持つテーブルスペースがある場合、最小チャンク サイズは 4kb になります)。 ; less を指定すると無視されます)。行内 LOB を許可することの欠点は、テーブルが大きくなるため、大規模な範囲のスキャンが少し影響を受ける可能性があることです (ただし、LOB の取得は高速です)。

また、11g では、LOB セグメントを圧縮するオプションがあります (ライセンスでカバーされている場合)。このような小さなドキュメントでは、大きなメリットはないかもしれません。

詳細はこちら: http://docs.oracle.com/cd/B28359_01/appdev.111/b28393/adlob_tables.htm

于 2013-04-05T22:37:14.733 に答える