11.19.1 更新行のカラム化機能とは
カラムストア表に対してINSERT文またはUPDATE文を実行すると,追加または更新されたデータはローストア形式でカラムストア表に格納されます。カラムストア表にローストア形式のデータが格納された場合,カラムストア表の特性を生かした検索(特定の列データの検索や,特定の列データに対する値の集計など)の性能が低下するおそれがあります。また,データの圧縮率も低下するおそれがあります。更新行のカラム化機能を使用すると,HADBが,カラムストア表に格納されたローストア形式のデータをカラムストア形式に自動的に変換します。これによって,カラムストア表の検索性能の低下,およびデータの圧縮率の低下を防ぐことができます。カラムストア表に対してINSERT文またはUPDATE文を実行することがある場合は,更新行のカラム化機能を使用してください。
更新行のカラム化機能の概要を次の図に示します。
- メモ
-
更新行のカラム化機能を使用するには,adbcolumnizeコマンドを実行して更新行のカラム化機能を有効にする必要があります。デフォルトの設定では,更新行のカラム化機能は動作しません。詳細については,「11.19.2 準備作業」を参照してください。
- ■メンテナンス処理
-
カラムストア表に格納されたローストア形式のデータをカラムストア形式に変換する処理をメンテナンス処理といいます。メンテナンス処理は,解析処理,再配置処理,および再利用処理の3つの処理から構成されています。メンテナンス処理の詳細については,「11.19.7 メンテナンス処理の詳細」を参照してください。
- 重要
-
-
トランザクションおよびコマンドの処理性能に影響を及ぼさないように,トランザクションまたはコマンドが実行されている間は,メンテナンス処理は実行されません。また,メンテナンス処理の実行中にトランザクションまたはコマンドが開始された場合は,メンテナンス処理を中断し,トランザクションまたはコマンドの処理が完了したあとにメンテナンス処理を再開します。
なお,ここでいうコマンドとは,HADBサーバに接続するコマンドのことです。HADBサーバに接続するコマンドについては,マニュアルHADB コマンドリファレンスのコマンドの一覧と共通規則のコマンドの一覧を参照してください。
-
トランザクションまたはコマンドが常に実行中であるようなシステムの場合は,メンテナンス処理を実行する時間を確保できないため,更新行のカラム化機能の使用を見合わせてください。
-
- ■表またはチャンクの再編成との関係
-
更新行のカラム化機能を使用すると,ローストア形式のデータがカラムストア形式に変換されますが,次に示す無効となった行データは削除されません。
-
UPDATE文によって更新された更新前の行データ
-
DELETE文によって削除された行データ
無効となった行データを削除するには,表またはチャンクの再編成を実行する必要があります。表またはチャンクの再編成を実行すると,無効となった行データが格納されていたページを再利用できます。
また,一度に大量のデータをINSERT文またはUPDATE文で追加・更新した場合,大量のローデータ用セグメントが作成されます。そのため,更新行のカラム化機能を使用しても,検索性能の低下やデータベース容量の増加を防止できません。したがって,一度に大量のデータをINSERT文またはUPDATE文で追加・更新した場合は,そのあとに表またはチャンクの再編成の実行を検討してください。
- メモ
-
更新行のカラム化機能と,表またはチャンクの再編成を組み合わせた運用を推奨します。運用例については,「11.4.23 バックグラウンドインポートとチャンクを意識した運用例1(定期的にデータの追加と削除を繰り返す運用)」を参照してください。
-
- ■制限事項
-
B-treeインデクスが定義されているカラムストア表は,更新行のカラム化機能の適用対象外となります。