メモリマップドI/Oを利用したデータベースファイルアクセスが加わった「SQLite 3.7.17」

 SQLite開発チームは5月20日、データベースエンジン「SQLite 3.7.17」をリリースした。新たにメモリマップドI/0を利用したデータベースファイルアクセスオプションを導入、性能改善が見込めるとしている。

 SQLiteはCで書かれた軽量のデータベースシステム。データベースは単一のファイルに格納され、アプリケーションはクライアントライブラリを利用することでデータベースにアクセスできる。さまざまなアプリケーションで利用されており、PerlやPython、Rubyといった言語からの利用も可能。ライセンスはパブリックドメイン。

 SQL 3.7.17は、2010年7月にリリースされたバージョン3.7系の最新版。新機能として、メモリマップドI/Oを利用したディスクアクセスを行うオプションが加わっている。通常、ディスク上のファイルにアクセスする場合はカーネル空間内のメモリとユーザー空間内のメモリ間で内容のコピーが行われるが、メモリマップドI/0を利用することでこのメモリコピーを削減し、またメモリ利用量の削減も期待できる。あわせてxFetchおよびxUnfetchといった新メソッドも加わった。メモリマップドI/Oの利用により性能改善が見込める一方で、アプリケーションのバッファオーバーフローなどによってメモリにマップされた内容を変更される可能性や、OS側に統一されたバッファキャッシュが必要であるといった理由から、この機能はデフォルトでは無効になっている。

 また、データベースヘッダにApplication IDとして整数型を保存し、データベースが特定のアプリケーションに属しているかを認識できるようになった。これはPRAGMA application idコマンドを利用して設定できる。エラーログも強化され、ロールバックリカバリリポート、リンクされていないデータベースファイルの危険な利用に関する情報などが加わった。クエリプランナー、ランタイムでの拡張機能読み込みメカニズムが強化され、新しい拡張も加わった。このほか、多数のバグが修正されている。

 SQLiteはWindows、Mac OS X、Linuxなどに対応、プロジェクトのWebサイトよりダウンロードできる。

SQLite
http://sqlite.org/