インラインLOBカラムを使用してLOBデータのパフォーマンスを向上

LOB データ列のインライン部分が、他の非 LOB 列のデータとともに基本表スペースに保管されるように指定することで、LOB データにアクセスするアプリケーションのパフォーマンスを向上させることができます。

このタスクについて

プログラム固有のプログラミングインターフェース情報の開始。

インラインLOB を使用すると、LOBデータの一部分を、LOB以外のカラムのデータとともにベーステーブルスペースに配置することができます。 指定されたインライン長以下のサイズのLOBについては、 Db2 は完全なLOBデータをベーステーブルスペースに保存します。 Db2 LOBデータにアクセスするプロセスでは、LOBテーブルスペースや補助インデックスにアクセスする必要はありません。

指定されたインライン長よりも大きいサイズのLOBの場合、LOBのインライン部分は基本表スペースにあり、Db2は、LOBの残りの部分をLOB表スペースに保管します。 この場合、LOB データにアクセスするプロセスはすべて、基本表スペースと LOB 表スペースの両方にアクセスする必要があります。

Db2 が完全なインラインLOBをベーステーブルスペースに格納すると、 Db2 はCPU時間と経過時間という観点で、同等の非LOBデータタイプと同様のコストでデータにアクセスできます。 LOB データを基本表スペースにインラインで保管できる場合、LOB データに使用されるディスク・スペースの容量も削減されます。

インライン LOB の利益は、頻繁にアクセスされる LOB 列に対して最大となります。 ほとんどアクセスのない LOB 列の場合、基本表内にインライン LOB データが存在すると、ページあたりの行の数が減少し、それにより入出力コストが増大し、そのコストが LOB データをインラインで保持する利益を上回る場合があります。

プロシージャー

インライン LOB の長さを指定するには、以下の方法を使用します。

  • Db2 サブシステム上のユニバーサル・テーブル・スペース内の新しいLOB列のデフォルトのインライン長を指定するには、LOB_INLINE_LENGTHサブシステム・パラメータを使用します。
    LOB_INLINE_LENGTH サブシステム・パラメーターの有効な値は、0 から 32680 (両端の値を含む) バイトです。 デフォルト値は 0 で、これは LOB 列に対してインライン属性が使用されないことを意味します。 ゼロ以外の値は、サブシステム上で作成される新規LOB列にインライン属性があることを指定します。この値は、非LOB列からのデータを含む基本表スペース内のデータDb2ストアのバイト数を示します。
    例えば、LOB_INLINE_LENGTH パラメーターの値として 1001 を指定したとします。
    • LOBデータの長さが200バイトである場合、Db2は、基本表スペースにすべての200バイトを保管します。
    • LOBの長さが2000バイトの場合、Db2は、1001バイトを基本表スペースに保管し、999バイトをLOB表スペースに保管します。

    Db2は、LOB列のデータ・タイプまたはサブタイプにかかわらず、LOB_INLINE_LENGTHパラメーターに指定された値をバイト単位で解釈します。 このパラメーターに奇数が指定されている場合、Db2は、DBCLOB列の次の偶数までの値を切り上げます。

  • CREATE TYPE ステートメントの INLINE LENGTH 節を指定します。
    ユニバーサル表スペース内の LOB ベースの列は、DISTINCT 型からインライン属性を継承できます。 BLOBまたはCLOBをベースとする型には0~32680バイト(両端を含む)の範囲で、DBCLOBをベースとする型には0~16340文字(両端を含む)の範囲で値を指定できます。
  • ユニバーサル表スペース内の表に対して CREATE TABLE ステートメントまたは ALTER TABLE ADD ステートメントの INLINE LENGTH 節を指定します。
    BLOBおよびCLOBカラムでは0~32680の範囲で、DBCLOBカラムでは 0~16340の範囲で、インラインの長さの値を指定できます。
    例えば、以下のステートメントで作成される列を考えてみます。
    CREATE TABLE myLOBtable 
    (myLOBcolumn DBCLOB (500K) INLINE LENGTH 300);
    LOB の実際の長さが 200 バイト (100 文字) の場合、200 バイトすべてが基本表スペースに保管されます。 LOBの長さが2000バイト(1000文字)の場合は、600バイト(300文字) が基本表スペースに保管され、1400バイト(700文字)がLOB表スペースに保管されます。プログラム固有のプログラミングインターフェース情報を終了します。