5.6.1 データ用DBエリアを設計する際の考慮点
データ用DBエリアを設計する際の考慮点について説明します。
なお,データ用DBエリアにマルチチャンク表を格納する場合は,「5.6.2 データ用DBエリアにマルチチャンク表を格納する場合の考慮点」の説明もお読みください。
- 〈この項の構成〉
(1) 表とインデクスを格納するデータ用DBエリアの考慮点
表とインデクスをデータ用DBエリアに格納する際の考慮点を次に示します。
-
データ量が多い表は,データ用DBエリアにその表だけを格納することを推奨します。
-
データ量が多いインデクスは,データ用DBエリアにそのインデクスだけを格納することを推奨します。
-
データ量が少ない(数メガバイト)表やインデクスの場合は,複数の表や複数のインデクスを1つのデータ用DBエリアにまとめて格納しても問題ありません。
-
カラムストア表を定義する場合,そのカラムストア表だけを格納する専用のデータ用DBエリアを用意してください。
データ量が多い表やインデクスを1つのデータ用DBエリアにまとめて格納した場合,次に示すような検索を実行すると,同一のDBエリアに対してI/Oが集中し性能が低下するおそれがあります。
-
1つのデータ用DBエリアに複数の表を格納して,結合を行うSQLを使用した検索を実行した場合
-
1つのデータ用DBエリアに複数のインデクスを格納して,インデクスを利用する検索を実行した場合
また,次のような問題も発生するおそれがあります。
-
データ用DBエリアに掛かる排他によって,ある表に対する操作(SQL文またはコマンド)が実行されている間は,同じデータ用DBエリアに格納されている別の表に対する操作が実行できなくなる
-
グローバルバッファを共有している場合,ある表へのSQL文の実行によって,同じデータ用DBエリアに格納されている別の表に対する検索性能に影響を及ぼす
特に,カラムストア表を格納するデータ用DBエリアと,ローストア表やインデクスを格納するデータ用DBエリアを同じグローバルバッファに割り当てると,ローストア表の検索性能や,インデクスを使用した検索性能が低下するおそれがあります。
(2) レンジインデクスを格納するデータ用DBエリアの考慮点
レンジインデクス固有の考慮点を次に示します。
レンジインデクスを定義した表を格納するデータ用DBエリアには,ほかの表またはインデクスを格納しないことを推奨します。ほかの表またはインデクスを格納すると,レンジインデクスの容量が増加することがあります。
(3) データ用DBエリアを構成するデータ用DBエリアファイルの考慮点
1つのデータ用DBエリアを,複数のデータ用DBエリアファイルで構成すると,データ用DBエリアファイルへのアクセスが並列化されるため,負荷を分散させることができます。そのため,アクセス頻度が高い表やインデクスを格納するデータ用DBエリアは,複数のデータ用DBエリアファイルで構成することを検討してください。1つのデータ用DBエリアを構成するデータ用DBエリアファイル数の目安は,HADBサーバをインストールしたマシンのコア数の20%〜40%になります。
1つのデータ用DBエリアを,複数のデータ用DBエリアファイルで構成した場合のメリットを次に示します。
-
adbimportコマンドによるデータインポートを実行する場合
データ用DBエリアファイルごとに処理リアルスレッドを割り当てて,データの格納処理およびインデクスの作成処理を並列に行います。
-
割り当てられたセグメントが解放される場合
データ用DBエリアファイルごとに処理リアルスレッドを割り当てて,セグメントの解放処理を並列に行います。
-
SQLパラレル実行機能を使用する場合
データ用DBエリアファイルごとに検索系SQLの処理を並列に実行します。そのため,データ用DBエリアファイル数が多い方が処理の並列度が上がります(ただし,マルチノード構成の全ノード数が上限となります)。SQLパラレル実行機能については,「2.19.8 SQLパラレル実行機能」を参照してください。