56

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

そして、私は速度についてだけ尋ねています。mysqliには古い拡張機能にはない機能があることを私は知っています。

4

10 に答える 10

88

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

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

ペニー賢くてポンドバカにならないでください!:-)

于 2008-10-05T03:47:53.593 に答える
10

"場合によります。"

たとえば、PHP MySQL vs MySQLi Database Access Metricsとそれに続くコメントは、両方の方法で引数を指摘しています。

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

于 2009-12-29T15:28:33.917 に答える
6

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

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

于 2012-01-17T08:33:32.787 に答える
3

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

于 2008-10-05T03:08:27.137 に答える
3

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

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

  • オブジェクト指向インターフェース
  • プリペアド ステートメントのサポート
  • 複数のステートメントのサポート
  • トランザクションのサポート
  • 強化されたデバッグ機能
  • 組み込みサーバーのサポート
于 2011-12-28T07:24:29.487 に答える
3

たぶん、これは正しい選択をする理由になるかもしれません:: PHP MySQL 拡張機能を殺すための陰謀

" はい、正しくお読みください。最近、Phillip Olson が PHP 内部メーリング リストに、将来の PHP バージョンで元の PHP MySQL 拡張機能を削除する提案を送信しました。"

于 2011-07-15T18:04:25.643 に答える
1

ミリ秒が問題にならない限り、心配する必要はありません。確かに、mysqli によって提供される追加機能が必要ない場合は、十分に試行された mysql をそのまま使用してください。

于 2010-02-25T16:08:22.047 に答える
0
<?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 秒長くなりました。上記のスクリプトを 20 倍ロードすると、.001 5 倍以下になります。

于 2013-12-24T20:11:56.753 に答える