どのライブラリを選ぶか

mysqli、PDO_MySQL といった PHP 拡張モジュールは、 どれも C クライアントライブラリの軽量なラッパーです。これらの拡張モジュールは、 mysqlnd ライブラリあるいは libmysqlclient ライブラリのいずれかを使えます。どちらを使うのかを決めるのは、コンパイル時です。

mysqlnd ライブラリは、PHP の一部として配布されています。 遅延接続やクエリのキャッシュなど、libmysqlclient にはない機能も搭載されているので、 この mysqlnd ライブラリを使うことを強くおすすめします。 mysqlnd のドキュメント には、さらなる詳細情報や機能一覧があります。

例1 mysqlnd あるいは libmysqlclient を使う場合の configure コマンド

// おすすめの方法。mysqlnd を使ってコンパイルします。
$ ./configure --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd

// もうひとつのおすすめの方法。mysqlnd を使ってコンパイルします。
$ ./configure --with-mysqli --with-pdo-mysql

// おすすめしない方法。libmysqlclient を使ってコンパイルします。
$ ./configure --with-mysqli=/path/to/mysql_config --with-pdo-mysql=/path/to/mysql_config

ライブラリの機能比較

mysqlnd を使うほうが、 MySQL Client Server library (libmysqlclient) よりもおすすめです。 どちらのライブラリも、開発が続いています。

  MySQL Native Driver (mysqlnd) MySQL クライアントサーバーライブラリ (libmysqlclient)
PHP の配布物に同梱 Yes No
どのバージョンの PHP から使えるか 5.3.0 N/A
ライセンス PHP License 3.01 デュアルライセンス
開発状況 進行中 進行中
ライフサイクル 終了予定なし 終了予定なし
コンパイルのデフォルト (すべての MySQL 拡張モジュール) Yes No
圧縮プロトコルへの対応 Yes Yes
SSL への対応 Yes Yes
名前付きパイプへの対応 Yes Yes
ノンブロッキングの非同期クエリ Yes No
パフォーマンス統計 Yes No
LOAD LOCAL INFILE での open_basedir の反映 Yes No
PHP ネイティブのメモリ管理システムを使う (PHP のメモリ制限などに従う) Yes No
数値型のカラムを double 型で返す (COM_QUERY) Yes No
数値型のカラムを string 型で返す (COM_QUERY) Yes Yes
プラグイン API Yes Limited
自動再接続 No オプション
add a note add a note

User Contributed Notes 1 note

up
-4
siguza at siguza dot net dot IGNORETHIS
9 years ago
If you're using named pipes under Windows, you should NOT use mysqlnd.
Tested with PHP 5.6.4, libmysqlclient gave me results of about 20ms on a page with 50 queries while mysqlnd was over 3000ms!
To Top