Dr.SumにおけるDATファイルとCRXファイルについて解説をします。データベースを作成する際にこれらにファイルに割り当てるメモリサイズに適切な値を指定することでより高速に集計することができる可能性があります。
なお、下記の記事でデータベースの作り方と、DATファイルとCRXファイルについてご紹介しました。今回はデータベースの設定にあるDATメモリサイズとCRXメモリサイズの適切な設定値の考え方についてご紹介します。
[復習] DATファイルとCRXファイル
まずは復習になりますが、Dr.Sumにデータを投入すると「DAT」と「CRX」という拡張子のファイルに分けて格納されます。
CRXは辞書のようなイメージで値の実態が格納されます。同じデータは一度しか格納されず、重複したデータはDATから複数回参照されます。DATファイルは各データの位置情報がテーブルのように格納されます。値は直接保持せず、表示や集計する時はCRXファイルの値を参照します。メモリの設定はこの「DATファイル」と「CRXファイル」に対してそれぞれ行ないます。
「DAT」ファイル、「CRX」ファイルのサイズを元にメモリの値を設定する
最も処理速度が早いのはメモリにファイルサイズの合計分を全てロードしてしまうことなので以下の設定値になります。サーバのメモリ容量に余裕があったり、データ量が少ない場合はこの設定でOKです。
DAT メモリサイズ = DAT ファイル合計サイズ
CRX メモリサイズ = CRX ファイル合計サイズ
ファイルのサイズは、エクスプローラーでデータベースのフォルダーを開き、拡張子の種類でソートすると簡単に合計サイズを確認できますね。
ただメモリに全てロードできることは稀なケースで、実際にはデータの一部をロードするのが現実的ですね。例えば5年分の売上のデータがあり、よく見るのは直近1年分なのでここだけメモリにロードしておこうといった使い方になると思います。この場合は以下の設定値になります。
DAT メモリサイズ = DAT ファイル合計サイズ * 1/5
CRX メモリサイズ = CRX ファイル合計サイズ * 1/5
共有メモリヒット率を元に調整する方法
こちらは運用を開始してから調整する方法です。
データベースを右クリック[データファイル情報]から[共有メモリヒット率]を確認することができます。
利用回数と要求回数が概ね等しい場合、Dr.Sumが管理する共有メモリ領域からほぼすべて読み込みできています。これがもし利用回数よりも要求回数の方が著しく大きい場合、共有メモリのサイズが小さい可能性がありますので、メモリ割当の増加を検討してください。データベースを作成する際、動作が遅いかもと感じたら思い出してくださいね!