このプラグインは、簡単に使えるクライアント側でのクエリキャッシュ機能を追加します。 mysqlnd を使うすべての MySQL 用 PHP 拡張モジュールで使えます。
PHP 5.3.3 以降で、PHP の MySQL Native Driver (mysqlnd) は C の内部プラグイン API を提供するようになりました。 クエリキャッシュプラグインのように C でプラグインを書いて、 mysqlnd の機能を拡張できるようになったのです。
クエリキャッシュプラグインのような mysqlnd 用プラグインの機能の大部分は、 ユーザーの視点からはプラグインの存在を意識せずに使えます。このプラグインはすべての PHP アプリケーションをサポートし、そしてすべての MySQL 用 PHP 拡張モジュール (mysqli、 mysql、 PDO_MYSQL) に対応します。既存の API には何も手を加えません。
クエリをキャッシュするためのアプリケーション側での変更は、ほとんど必要ありません。 キャッシュの動作モードは二種類あります。すべてのクエリをキャッシュする (非推奨) か、あるいは特定の SQL ヒントを付加したクエリだけをキャッシュする (推奨) かのいずれかです。
透過的に組み込め、簡単に使える
すべての MySQL 用 PHP 拡張モジュールに対応
API を変更しない
アプリケーション側での変更はほんの少しだけ
柔軟な無効化戦略
有効期限 (TTL)
ユーザー定義
さまざまなスコープと生存期間をもつストレージ
デフォルト (ハッシュ、プロセスのメモリ)
MEMCACHE
sqlite
ユーザー定義
組み込みの slam defense による cache stampeding の回避。
現在のリリース版であるバージョン 1.0.1 では、PECL mysqlnd_qc は PHP 5.4 に対応していません。バージョン 1.1.0-alpha で対応します。
プリペアドステートメントや非バッファクエリには完全に対応しています。 したがって、このプラグインは mysqli や PDO_MySQL が発行するすべてのステートメントをキャッシュできます。 PHP の MySQL API でプリペアドステートメントに対応しているのはこの二つだけです。
mysqlnd_qc は mysqlnd query cache plugin の略です。 概念実証のためのコードをざっと書きあげるときに、この名前を選びました。 当時は、まさかそのコードを使い続けることになるとは思わなかったのです。 PECL/mysqlnd_qc は client-side query result set cache と呼ばれることもあります。