はじめに

mysqlnd memcache plugin (mysqlnd_memcache) は PHP の拡張モジュールで、SQL を MySQL InnoDB Memcached Daemon Plugin (サーバープラグイン) 用のリクエストへと透過的に変換します。 実験的に、MySQL Cluster Memcached Daemon にも対応しています。 サーバープラグインは、MySQL InnoDB (と、実験的に MySQL Cluster NDB) のテーブルに格納されたデータに Memcache プロトコルでアクセスする機能を提供します。 この PHP 拡張モジュールは、mysqlnd を使うすべての MySQL 拡張モジュールに対応しています。 この方式で公開されたテーブルを識別し、特定の SELECT クエリーを Memcache のリクエストに変換します。

mysqlnd_memcache のデータの流れ

注意:

このプラグインは、MySQL InnoDB Memcached Daemon Plugin に依存します。 スタンドアロンの Memcached と組み合わせて使うことはできません。 Memcached を使った汎用的なクエリーキャッシュについては mysqlnd クエリキャッシュプラグイン を参照ください。直接 Memcache にアクセスするには、 memcachememcached といった拡張モジュールを参照ください。

MySQL Native Driver は C のライブラリで、PHP 5.3.0 以降で PHP に同梱されるようになりました。MySQL Client Library (libmysqlclient) の代替として機能します。mysqlnd を使う利点はいろいろあります。 PHP に同梱されているので追加のダウンロードが不要であること、 PHP ライセンスで公開されていること、メモリの消費量が抑えられること、 そして非同期クエリなどの新たな機能が含まれていることなどです。

mysqlnd_mmemcache の機能の大部分は、 ユーザーの視点からはプラグインの存在を意識せずに使えます。このプラグインはすべての PHP アプリケーションをサポートし、そしてすべての MySQL 用 PHP 拡張モジュールに対応します。既存の API には何も手を加えません。 そのため、既存の PHP アプリケーションにも容易に組み込めます。

MySQL Memcache プラグインは、InnoDB や NDB (MySQL Cluster) の SQL テーブルに格納されたデータに対する キー/値 形式でのアクセス機能を追加します。 アクセスには Memcache プロトコルを使います。 このアクセス方法を使うと、たいていは SQL を使うよりも高速になります。

主要な機能

PECL/mysqlnd_memcache の主要な機能をまとめます。

  • パフォーマンスの向上が見込める

    • クライアント側: 軽量なプロトコル。

    • サーバー側: SQL のパースをせずに、ストレージに直接アクセスする。

    • 自分でベンチマークをして確認しましょう! 実際のパフォーマンスは、セットアップ方法やハードウェアによって大きく異なります。

制限

現在の初期バージョンは、バイナリセーフではありません。 MySQL Memcache プラグインの挙動のせいで、セパレータに関する制約があります。

プリペアドステートメントと非同期クエリーには対応していません。 結果セットのメタデータにも、部分的にしか対応していません。

Memcache 経由でアクセス可能なテーブルに関するマッピング情報は、 リクエスト間でキャッシュされません。MySQL の接続と Memache の接続を関連づけるたびに、MySQL サーバーから取得します。詳細は mysqlnd_memcache_set() を参照ください。

名前の由来

mysqlnd_memcachemysqlnd memcache plugin の略です。 ここで言う Memcache とは、MySQL Memcache plugins for InnoDB and NDB (MySQL Cluster) をサポートしていることを指します。 このプラグインは Memcached キャッシュサーバーとは関係ありません。