11.12.3 BLOB型とBINARY型の使い分け
バイナリデータの運用方法によってお勧めするデータ型を次の表に示します。
バイナリデータの運用方法 |
推奨するデータ型の 平均データサイズ |
説明 |
||
---|---|---|---|---|
32,000バイト以下の場合 |
32,000バイトより大きい場合 |
|||
射影列にバイナリデータ列を指定する頻度 |
高い |
BINARY |
BLOB |
|
低い |
BLOB※ |
BLOB |
BLOB型の方がBINARY型より基本行のデータサイズが小さいので,データ件数が多くなればBLOB型が性能的に優位です。ただし,BINARY型以外の列にインデクスを定義してインデクススキャンにすることでBINARY型とBLOB型の性能差はなくなります。また,インデクススキャンにすることを推奨しますが,セグメントサイズを大きくすることでも性能差を小さくできます。 |
|
SQL記述の柔軟性 |
BINARY |
同等 |
32,000バイト以下の場合,BINARY型のSQL記述はインデクス定義を除いて,ほぼVARCHARと同等の記述ができます。そのため,BLOB型よりSQL記述範囲が広がります。詳細は,マニュアル「HiRDB SQLリファレンス」を参照してください。 |
|
データ格納効率 |
BINARY |
格納効率はBINARY型が優位です。ただし,8キロバイトのバウンダリが無視できるような長大データサイズになると余り差はありません。 |
||
追加更新を頻繁にする場合 |
BLOB |
連結演算するデータサイズが大きいほどBLOB型が性能的に優位です。 |
||
部分抽出を頻繁にする場合 |
同等 |
BLOB |
BINARY型の格納済みデータサイズが大きいデータに対して部分抽出をすると非常に性能が悪くなります。さらに,部分抽出回数を多くすると,性能は劣化します。大きなデータに対して部分抽出を頻繁にする必要がある場合には,BLOB型をお勧めします。 |
|
運用性を重視する場合 |
BINARY |
BLOB型はユーザLOB用RDエリアをバックアップするなどの特別な運用が必要になります。 |
||
上記使用方法で判断できない場合,又は将来的に方針変更の可能性があり,判断できない場合 |
BINARY※ |
BLOB |
32,000バイトより大きいデータを扱う場合はBLOB型をお勧めします。比較的データサイズが小さい場合はBINARY型をお勧めします。 |
- 注※
-
データサイズがページサイズに近い大きさで分岐しない場合,BINARY型で大量のテーブルスキャンをすると,BLOB型に比べて非常に性能が悪くなります。これを防ぐため,テーブルスキャンからインデクススキャンへ変更してください。また,インデクススキャンにすることを推奨しますが,セグメントサイズを大きくすることでも性能差を小さくできます。