10月11日にMySQL 4.1の最終リリース予定が発表された。それによると,2週間後,すなわち10月中には最終リリースとなるようだ。MySQL 4.1にはいくつもの新機能が搭載されている。それらをすべて紹介するには,多くのスペースが必要となる。そこで,今回は,Windows版のインストーラと手軽に利用できる新機能プリペアド・ステートメントを紹介する。

Microsoftのオープンソース・ソフトウエアをインストーラに採用

写真1●Setup Wizard(Custom Setup)
写真2●Instance Configration Wizard
写真3●Instance Configration Wizard
デフォルト・キャラクタセットの選択
表1●言語環境別のプリペアド・ステートメント対応状況
環境 サポート内容
C・C++ サポート済み
PHP mysqli(PHP5)
Java MySQL Connector/J v3.1
Perl DBD::mysql v2.9
.NET MySQL Connector/
 プリペアド・ステートメントを解説する前に,MySQL 4.1のインストールを紹介しよう。紹介する画面は,MySQL Pro 4.1.5 gamma Windows版(mysql-pro-4.1.5-gamma-win.zip)である。

 MySQL 4.1のWindows版のインストールを実行すると高額な製品と見間違えるほどのインストール画面が展開される。インストーラは,暗に圧縮ファイルの展開だけでなくインストール内容カスタマイズを行う「Setup Wizard」(写真1[拡大表示])やサーバー・プロセスの環境設定を行う「Instance Configration Wizard」(写真2[拡大表示],写真3[拡大表示])を含んでいる。好みはあるだろうが,UNIX版と比べると大きな違いだ。

 Windows版に関してはこのように高度なインストーラにより手軽にインストールが行える。なお,以前紹介したMySQL Administrator(本稿執筆時は,バージョン1.0.3-alpha)が,製品プロダクトとして商用版の提供が始まる。Windows環境であれば,あわせて利用するといいだろう。

 ここでWindows版のインストーラを紹介したのにはわけがある。MySQL 4.1のWindows版には,Microsoftが今年4月にソースコードをオープンソース・ライセンスで公開したWiX(Windows Installer)ツールが採用されている。WiXツールは,Windows用インストール・パッケージを作成するための機能だ。Microsoftのオープンソースを採用したことについて,賛否の分かれるとことだ。もっともMySQLデータベース・エンジンそのもに採用されているわけではないので,心配はいらないようだ。

処理を高速化する新機能プリペアド・ステートメント

 プリペアド・ステートメント(prepared statement)とは,あらかじめSQLステートメントを登録しておく機能だ。WHERE句などの条件には,変数を利用できる。プリペアド・クエリと呼ぶこともある。あらかじめSQLステートメントをコンパイルして実行するため,同様のSQLステートメントをくり返し実行する処理を高速化できる。

 また,セキュリティ面でも効果を発揮する。パラメータとしてSQLステートメントを入力され実行されてしまう「SQLインジェクション」と呼ばれる不正アクセスへの対策としても有効である(関連記事)。

 現時点で,各言語環境のAPIは,表1のような対応状況になっている。

 現在サポートしていない環境も順次対応を予定している。なお,APIでは,プリペアド・ステートメントの処理をクライアント側で行うものと,サーバー側で行うものの2種類がある。もちろん,サーバー・サイドで処理を行う方が標準だ。クライアント・サイドの処理は,プリペアド・ステートメントのエミュレーションである。

 PHPのドライバmysqliによるプリペアド・ステートメントに関しては,「【PHPウォッチ】データベース抽象化レイヤー「PDO」誕生」で廣川類氏が解説しているので,そちらを参照してほしい。

 それでは,プリペアド・ステートメントの実際の動作を見てみよう。