4.1.1 SQLプール機能とは

SQLを実行する前に,XDBはSQLの解析処理を行います。この解析処理のことをSQLの前処理といい,SQLの前処理によって作成される情報をSQLの前処理結果といいます。前処理結果にはアクセスパスなどの情報が含まれています。

XDBは,一度作成した前処理結果をメモリ上に保存しておき,同じSQLが実行されたときに,保存していた前処理結果を再利用します。前処理結果を保存しておく領域をSQLプールといい,前処理結果を再利用する機能をSQLプール機能といいます。SQLプール機能を使用すると,SQLの前処理に掛かるオーバヘッドが削減され,SQLの処理性能が向上します。

SQLプールがいっぱいになった場合,SQLプールに保存されている前処理結果が掃き出されます。前処理結果はLRU方式で管理されているため,最も長い時間使われていない前処理結果が掃き出されます。

ただし,使用中の前処理結果はSQLプールから掃き出されません。このため,掃き出すことができる前処理結果がなかったり,掃き出しても必要な大きさのSQLプールが確保できなかったりした場合は,前処理結果を保存するためのメモリを動的に確保します。

SQLプール機能を使用する場合は,XDBサービス定義のxdb_sqlpool_sizeオペランドを指定してください。

なお,SQLプール機能では,スレッドごとにメモリを割り当てているため,スレッドごとに独立して動作します。

■SQLプール機能の対象となるSQL
SQLプール機能の対象となるSQLを次に示します。ほかのSQLはSQLプール機能の対象外となります。
  • SELECT文
  • INSERT文
  • UPDATE文
  • DELETE文
    参考
    SQLの種類に関係なく,前処理結果はいったんSQLプールに保存されます。前記のSQLの場合は,SQLプールに前処理結果が保存されたままとなりますが,前記以外のSQLの場合は,SQLの実行が完了するとSQLプールから前処理結果が削除されます。