2.4.4 DBエリアのファイル構成
表やインデクスといったDBエリアに格納されるデータは,物理的にはファイルに格納されます。DBエリアを構成するファイルをDBエリアファイルといいます。
- 〈この項の構成〉
(1) DBエリアファイルとして使用できるファイル
HADBでは,次に示すファイルをDBエリアファイルとして使用できます。
(a) レギュラーファイル(ファイルシステム上のファイル)
OSが標準でサポートしているレギュラーファイルを,DBエリアファイルとして使用できます。
レギュラーファイルを更新および参照する際は,ファイルシステムの管理部に対する更新処理および参照処理が行われます。そのため,特にファイルの拡張処理が行われた場合に,ブロックスペシャルファイルよりアクセス性能が低くなります。
(b) ブロックスペシャルファイル
ブロックスペシャルファイルを,DBエリアファイルとして使用できます。ブロックスペシャルファイルとは,ブロックデバイスの1つです。ディスク全体,またはパーティションで区切られたディスク上の領域を1ファイルと見なしてアクセスします。
ブロックスペシャルファイルは,ブロック単位にデータを操作します。そのため,ブロックスペシャルファイルは,レギュラーファイルよりも高速にアクセスできます。
ブロックスペシャルファイルは,ユーザがデータベースを作成する前に使用するデータベース領域の大きさを考慮し,割り当てておく必要があります。
なお,ブロックスペシャルファイルには,HADBサーバが読み書きできる権限を付与する必要があります。ブロックスペシャルファイルの設定を変更する場合は,必ずudevルールを使用してください。udevルールについては,OSのマニュアルを参照してください。
- 重要
-
ブロックスペシャルファイルをwriteモードでオープンすると,クローズ時にudevにイベントが通知され,udevルールに設定した状態に戻ります。そのため,chmodコマンド,chownコマンドなどでブロックスペシャルファイルの設定を変更した場合は,データベースの初期設定が完了したときやHADBサーバが終了したときに,所有者や権限がudevルールに設定した状態に戻ります。
(2) DBエリアファイルの種類
DBエリアファイルは,DBエリアの種類に合わせて次に示す5種類があります。
(a) データ用DBエリアファイル
データ用DBエリアファイルは,データ用DBエリアを構成するファイルです。
1つのデータ用DBエリアは,1つ以上のデータ用DBエリアファイルから構成されます。1つのデータ用DBエリアは,最大1,024個のデータ用DBエリアファイルで構成できます。
データ用DBエリアとデータ用DBエリアファイルの関係を次の図に示します。
データ用DBエリアファイルは,DBディレクトリ下のレギュラーファイル,またはDBディレクトリ下以外のブロックスペシャルファイルに作成されます。
データ用DBエリアファイルの格納場所は,データベースの初期設定時に指定します。また,データベースの初期設定後,データ用DBエリアを追加するときにも指定します。
(b) 作業表用DBエリアファイル
作業表用DBエリアファイルは,作業表用DBエリアを構成するファイルです。
作業表用DBエリアファイルは,DBディレクトリ下のレギュラーファイル,またはDBディレクトリ下以外のブロックスペシャルファイルに,1つだけ作成されます。
作業表用DBエリアファイルの格納場所は,データベースの初期設定時に指定します。
作業表用DBエリアファイルは,ブロックスペシャルファイルに作成することを推奨します。レギュラーファイルに作成すると,作業表を複数作成するSQL文が実行された場合に,レギュラーファイルを格納しているファイルシステムに対してI/Oが集中してしまい,SQL文の実行時間が長くなるおそれがあります。
(c) マスタディレクトリ用DBエリアファイル
マスタディレクトリ用DBエリアファイルは,マスタディレクトリ用DBエリアを構成するファイルです。
マスタディレクトリ用DBエリアファイルは,DBディレクトリ下のレギュラーファイル,またはDBディレクトリ下以外のブロックスペシャルファイルに,1つだけ作成されます。
マスタディレクトリ用DBエリアファイルの格納場所は,データベースの初期設定時に指定します。
(d) ディクショナリ用DBエリアファイル
ディクショナリ用DBエリアファイルは,ディクショナリ用DBエリアを構成するファイルです。
ディクショナリ用DBエリアファイルは,DBディレクトリ下のレギュラーファイル,またはDBディレクトリ下以外のブロックスペシャルファイルに,1つだけ作成されます。
ディクショナリ用DBエリアファイルの格納場所は,データベースの初期設定時に指定します。
(e) システム表用DBエリアファイル
システム表用DBエリアファイルは,システム表用DBエリアを構成するファイルです。
システム表用DBエリアファイルは,DBディレクトリ下のレギュラーファイル,またはDBディレクトリ下以外のブロックスペシャルファイルに,1つだけ作成されます。
システム表用DBエリアファイルの格納場所は,データベースの初期設定時に指定します。
システム表用DBエリアファイルは,ブロックスペシャルファイルに作成することを推奨します。ブロックスペシャルファイルに作成すると,システム表用DBエリアの空き容量が不足してシステム表の再編成が必要になった場合に,HADBサーバから警告メッセージが出力されるようになります。
なお,システム表用DBエリアファイルをレギュラーファイルに作成した場合は,システム表用DBエリアの空き容量が不足しても,HADBサーバから警告メッセージは出力されません。システム表用DBエリアファイルをレギュラーファイルに作成する場合は,運用を開始する前に,システム表の再編成を行うタイミングを検討してください。そして,検討結果を基に,定期的にシステム表を再編成するようにしてください。システム表の再編成については,「11.17 システム表の再編成」を参照してください。
(3) DBディレクトリ
データ用DBエリアファイルなど,各DBエリアファイルが格納されるディレクトリをDBディレクトリといいます。DBディレクトリは,データベースの初期設定時に作成されます。
DBディレクトリには,次のファイルも格納されます。
-
データベースの更新履歴情報(システムログファイル)
-
HADBサーバが異常終了した場合,再開始するための情報(ステータスファイル)
DBディレクトリの構成については,「付録A.3 DBディレクトリの構成」を参照してください。
(4) DBエリアファイルの構成例
DBエリアファイルを,DBディレクトリ下以外のブロックスペシャルファイルに作成した場合,DBディレクトリ下にはファイルの実体へのシンボリックリンクファイルが作成されます。
DBエリアファイルの構成例を次の図に示します。
(5) ファイルシステムに関する注意事項
-
ext3,ext4またはXFSのファイルシステム上に,データベースを構成するファイル(DBエリアファイルおよびDBディレクトリ内のファイル)を作成してください。
-
NFSなどのネットワークを経由するファイルシステム上に,データベースを構成するファイル(DBエリアファイルおよびDBディレクトリ内のファイル)を作成しないでください。
(6) DBエリアファイルとマルチノード機能の関係
マルチノード機能を使用する場合,次のDBエリアファイルには,ブロックスペシャルファイルを割り当てる必要があります。
-
データ用DBエリアファイル
-
マスタディレクトリ用DBエリアファイル
-
ディクショナリ用DBエリアファイル
-
システム表用DBエリアファイル
また,割り当てるブロックスペシャルファイルに対応するディスクは,マルチノード構成の全ノードから参照できる必要があります。