it-swarm.com.de

Welches ist das schnellste in PHP-MySQL oder MySQLi?

Ich würde gerne wissen, ob jemand Erfahrungen aus erster Hand mit dieser Zweiteilung hat. Einige Blogs sagen, dass die mysql-Erweiterung schneller ist als mysqli. Ist das wahr?

Und ich frage nur nach Geschwindigkeit. Ich weiß, dass mysqli Funktionen hat, die in der älteren Erweiterung nicht vorhanden sind.

56
David

Die MySQL-Erweiterung ist in den meisten Benchmarks, die ich je gesehen habe, etwas schneller als MySQLi. Der Unterschied ist jedoch so gering, dass dies wahrscheinlich nicht Ihr Kriterium für die Entscheidung zwischen den beiden sein sollte.

Andere Faktoren beeinflussen den Leistungsunterschied zwischen mysql und mysqli. Die Verwendung von mod_php oder FastCGI, eines Bytecode-Caches wie APC oder die Verwendung von Daten-Caching zur Verringerung der Datenbankzugriffe sind für die Gesamtleistung von PHP -Scripts weitaus vorteilhafter als die Wahl der MySQL-Erweiterung.

Sei nicht weise und pummelig! :-)

88
Bill Karwin

"Es hängt davon ab, ob."

Zum Beispiel: PHP MySQL vs. MySQLi Database Access Metrics und die nachfolgenden Kommentare zeigen Argumente in beide Richtungen.

Wenn Sie über eine ausgereifte Datenbank und Codebase verfügen, testen Sie, was in Ihrem System funktioniert. Wenn nicht, machen Sie sich keine Sorgen über vorzeitige Optimierung.

10
Alkini

Siehe http://php.net/manual/de/mysqlinfo.api.choosing.php

Die Gesamtleistung aller drei Erweiterungen wird als ungefähr gleich angesehen. Obwohl die Leistung der Erweiterung nur einen Bruchteil der Gesamtlaufzeit einer Webanforderung PHP ausmacht. Die Auswirkung beträgt oft nur 0,1%. 

6
Gordon

In Bezug auf die Programmiersprache PHP ist MySQL der alte Datenbanktreiber und MySQLi der Verbesserte Treiber. MySQLi nutzt die neueren Funktionen von MySQL 5.

Funktionen von MySQLi von der Website php.net:

  • Objektorientierte Schnittstelle
  • Unterstützung für vorbereitete Anweisungen
  • Unterstützung für mehrere Anweisungen
  • Unterstützung für Transaktionen
  • Verbesserte Debugging-Funktionen
  • Unterstützung für eingebettete Server
4
Pank

Vielleicht kann dies ein Grund sein, um die richtige Wahl zu treffen :: The Plot to Töte PHP MySQL-Erweiterung

"Ja, Sie haben es richtig gelesen. Vor kurzem hat Phillip Olson an die PHP -Internals-Mailingliste einen Vorschlag gesendet, die ursprüngliche PHP MySQL-Erweiterung in zukünftigen PHP -Versionen zu beenden."

4
AgelessEssence

Laut allen Google-Ergebnissen für Benchmarks, die mit ceejayoz verknüpft sind scheint MySQL in allen Benchmark-Tests mindestens etwas schneller als MySQLi zu sein. Ich empfehle, die Ergebnisse für Details zu lesen, aber ich dachte, ich würde etwas posten, das die Frage direkt beantwortet und die Antwort von ceejayoz stößt.

3
Jay

Die Dokumentation zu PHP enthält einen guten Vergleich von mysql, mysqli und PDO . Ich weiß, dass Sie nur nach Geschwindigkeit gefragt haben, aber andere finden dies möglicherweise nützlich. Es spricht über die Funktionsunterschiede zwischen den Optionen.

3
Don Kirkby

Wenn Millisekunden keine Rolle spielen, machen Sie sich keine Sorgen. Wenn Sie die zusätzliche Funktionalität von mysqli nicht benötigen, bleiben Sie bei dem bewährten 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);
?>

Warum wird bei Verwendung von mysqli oop eine geringfügige Geschwindigkeitssteigerung erzielt, wenn dieses Skript mit dem prozeduralen Stil mysql oder mysqli verwendet wird? Wenn ich das obige Skript teste, erhalte ich .0009 Sekunden konstant mehr als bei der Verwendung der anderen 2. Bei der Verwendung von mysql oder mysqli prozedural lud ich die Skripts 20x in den verschiedenen Stilen und die beiden lagen immer über .001. Ich lade das obige Skript 20x und bekomme unter .001 5x. 

0
Josh