web-dev-qa-db-ja.com

PHP- MySQLとMySQLiのどちらが速いですか?

この二分法を直接体験したことがある人がいるかどうかを知りたい。いくつかのブログでは、mysql拡張機能はmysqliよりも高速であると述べています。これは本当ですか?

そして、私はスピードについてだけ尋ねています。 mysqliには、古い拡張機能にはない機能があります。

56
David

私が報告したほとんどのベンチマークでは、MySQL拡張はMySQLiよりもわずかに高速です。ただし、この違いはごくわずかであるため、この2つを決定するための基準とはならないはずです。

他の要因は、mysqlとmysqliのパフォーマンスの差を小さくします。 mod_phpまたはFastCGI、APCなどのバイトコードキャッシュ、またはデータベースヒットを減らすためのデータキャッシュの使用は、MySQL拡張機能の選択よりも、PHPスクリプトの全体的なパフォーマンスにとってはるかに有益です。

賢明で愚かなことをしないでください! :-)

88
Bill Karwin

"場合によります。"

たとえば、 PHP MySQL vs MySQLi Database Access Metrics であり、その後のコメントは両方の方法で引数を示しています。

成熟したデータベースとコードベースがある場合は、テストを行い、システムで何が機能するかを確認してください。そうでない場合は、時期尚早な最適化の心配をやめます。

10
Alkini

http://php.net/manual/en/mysqlinfo.api.choosing.php を参照してください

3つの拡張機能すべての全体的なパフォーマンスは、ほぼ同じであると見なされます。拡張機能のパフォーマンスは、PHP Webリクエストの合計実行時間のほんの一部にしか寄与しません。多くの場合、影響は0.1%ほどです。

6
Gordon

PHPプログラミング言語に関して、MySQLは古いデータベースドライバーであり、MySQLiは改良されたドライバーです。MySQLiはMySQL 5の新しい機能を利用します。

Php.netサイトから取得したMySQLiの機能:

  • オブジェクト指向インターフェース
  • 準備済みステートメントのサポート
  • 複数のステートメントのサポート
  • トランザクションのサポート
  • 強化されたデバッグ機能
  • 組み込みサーバーのサポート
4
Pank

たぶん、これが正しい選択をする理由かもしれません:: Plot to Kill PHP MySQL Extension

「はい、正しく読みました。最近、Phillip OlsonはPHP internalsメーリングリストに、将来のPHPバージョンで元のPHP MySQL拡張を削除する提案を送信しました」

4
AgelessEssence

ceejayoz でリンクされたベンチマークのGoogleのすべての結果によると、MySQLはすべてのベンチマークテストで少なくともMySQLiよりわずかに速いようです。詳細については結果を読むことをお勧めしますが、質問に直接回答し、ceejayozの回答を増やすものを投稿すると思いました。

3
Jay

PHPのドキュメントには、優れた mysql、mysqli、およびPDOの比較 があります。オプション間の機能の違い。

3
Don Kirkby

ミリ秒が問題でない限り、心配する必要はありません。確かに、mysqliが提供する追加の機能が必要ない場合は、テスト済みのmysqlをそのまま使用してください。

2
Taylor
<?php
$start = microtime();
$c = new mysqli('localhost', 'username', 'userpass', 'username_dbname');
$c -> select_db('username_dbname');


$q = $c -> query("SELECT * FROM example");

while ($r = $q -> fetch_array(MYSQLI_ASSOC))
  {
  echo $r['col1'] . "<br/>\n";
  }

$me = $c -> query("SELECT col1 FROM example WHERE id='11'") -> fetch_array(MYSQLI_ASSOC);

echo $me['col1'];
echo (microtime() - $start);
?>

Mysqli oopを使用しているときに、このスクリプトをmysqlまたはmysqliの手続きスタイルで使用することで速度がわずかに向上するのはなぜですか?上記のスクリプトをテストすると、他の2を使用する場合よりも一貫して.0009秒長くなります。mysqlまたはmysqli手続き型を使用する場合、異なるスタイルで20xスクリプトをロードし、2つは常に.001を超えました。上記のスクリプトを20倍ロードすると、.001 5倍未満になります。

0
Josh