データベース・エンジン
mSQLデーモン、msqldは、スタンドアロン型のアプリケーションで、TCPソケットによる通信を制御します。これは、シングル・プロセス・エンジンであり、複数の通信を同時に受け入れ、受けつけたクエリーを交通整理しています。データの入出力にメモリー・マッピングを行い、データベースに保存したデータを迅速にアクセスするために、キャッシュを利用しています。また、スタック・ベースのメカニズムを使っているため、アクセスしているテーブルの大きさに関わらず、安定した処理速度でINSERTを実行することが可能です。mSQLの一般的なユーザーが実行したテストでは、単純なクエリーの場合、他のフリーなデータベース・パッケージよりも、mSQLの方が処理速度が早いことが分かっています。たとえば、Linuxを稼働させているインテル486クラスのマシーンで、単純な挿入、更新、選択などを実行する場合、mSQLは大学版のIngresの約4倍、Postgresの20倍も早く処理を実行できます。
TCPソケットからでも、ファイル・システムのあるUnixドメイン・ソケット(/dev/msqld)からでも、サーバーをアクセスすることができます。TCPソケットを使った場合、クライアント・ソフトウェアは、ネットワークを通じて別のマシーンにあるデータをアクセスすることが可能になります。TCPソケットの使用は、リモート・マシーンのクライアント・ソフトウェアに制限すべきです。Unixソケットではなく、TCPソケットを使用してサーバーをアクセスした場合、処理速度が急激に落ちることがあるからです。APIのプログラミング、標準プログラムのコマンド行オプション、サーバー・マシーンの選択などの解説を参照してください。
このエンジンにはデバッキング・コードがあるので、処理の進行状況をモニターできます。現在のところ、8種類のデバッキング・モジュールがあります。これらのモジュールは、実行時にMINERVA_DEBUG環境変数を設定すれば使うことができます。環境変数に指定する場合は、各デバッグ・モジュールの名前を、コロンで区切って指定してください。指定できるデバッグ・モジュールには、次のようなものがあります。
- テーブル・キャシュの処理を表示します。
- 実行前のクエリーを表示します。
- エラー・メッセージを表示します。(このメッセージは、クライアントにも送信されます。)
- キーによるデータ検索の詳細を表示します。
- メモリー割当の詳細を表示します。
- プログラムを実行した時の機能の呼び出し状況を表示します。
- メモリーのマップ領域の詳細を表示します。
- 上記の分類に当てはまらなかった一般的な情報を表示します。
たとえば、クエリーを実行する前にその指定を表示して、その実行中に行われるメモリー割当の詳細も表示するには、次のように指定してください。
setenv MINERVA_DEBUG query:malloc
特別に指定しない限り、このソフトウェアは/usr/local/Minervaにインストールされます。また、データベースのデータ、結合やソートなどの処理中に作成される一時的なテーブルなどは、このディレクトリに保存されます。