インライン LOB によってパフォーマンスを改善する

一部のアプリケーションでは、ラージ・オブジェクト (LOB) を広範囲に使用します。 多くの場合、こうした LOB のサイズはそれほど大きくなく、ほとんどの場合 2、3 K バイトです。 LOB データ・アクセスのパフォーマンスは、そうした LOB データを LOB ストレージ・オブジェクト内ではなく、データ・ページ上のフォーマット済み行内に配置することによって改善できるようになりました。

そうした LOB は、インライン LOB と呼ばれます。 これまでは、そうした LOB の処理によってアプリケーションのボトルネックが作成される可能性がありました。 インライン LOB では、LOB データのフェッチ、挿入、または更新のために追加の入出力は不要なので、LOB データにアクセスする照会のパフォーマンスが改善されます。 また、インライン LOB データは行圧縮にも適しています。

このフィーチャーは、CREATE TABLE ステートメントまたは ALTER TABLE ステートメントの INLINE LENGTH オプションを使用して有効にします。 INLINE LENGTH オプションは、構造化タイプ、XML タイプ、または LOB 列に適用されます。 LOB 列の場合、インライン長は基本表行に格納できる LOB 値の最大バイト・サイズ (オーバーヘッド用の 4 バイトを含む) を示します。

このフィーチャーは、新規表または既存の表 (LOB 列が追加されるとき) のすべての LOB 列、およびデータベースのアップグレードにおけるすべての既存の LOB 列でも暗黙的に使用可能です。 すべての LOB 列は、定義された最大サイズに基づいた行スペースを予約しています。 LOB 列ごとの暗黙的な INLINE LENGTH 値は、自動的に定義され、明示的に指定されたかのように保管されます。

インラインに保管できない LOB 値は、LOB ストレージ・オブジェクトに別個に保管されます。

表にインライン LOB を持つ列がある場合は 1 ページに収まる行数が減り、非 LOB データのみを戻す照会のパフォーマンスが好ましくない影響を受けることに注意してください。 LOB のインライン化は、ほとんどのステートメントに 1 つ以上の LOB 列が含まれているワークロードに役立ちます。

LOB データは必ずしもログに記録されるわけではありませんが、インライン LOB は常にログに記録されます。従って、ロギングのオーバーヘッドが大きくなる可能性があります。