Heute werden wir weiter über die erweiterten Funktionen des Abfragecaches von MySQL sprechen, d. h. Abfrage-Caching und Abfrage-Entcaching!
Ursache: (Speicherüberlaufwarnung)
PHP Fatal error: Allowed memory size of 268 435 456 bytes exhausted
1. Offiziell
Ich sage hauptsächlich, dass die Cache-Abfrage ist wie folgt: Wenn Sie den gesamten Inhalt auschecken und in den Speicher legen, sammelt er sich immer mehr an, während die nicht zwischengespeicherte Abfrage direkt einzeln vom MySQL-Server zurückgegeben wird, was bedeutet, dass sie auf den PHP-Prozess wartet um die nächsten Daten zu erhalten. (Es reicht aus, hauptsächlich die Bedeutung zu verstehen. Wenn Sie es vollständig verstehen möchten, übersetzen Sie bitte auf Weibo oder Baidu)
2.Buffer- und UnBuffer-Abfrage
a) Cache-Abfragen werden im Allgemeinen zum gleichzeitigen Abrufen von Abfragedaten verwendet und im Speicher gespeichert.
b) Nicht-Cache-Abfragen werden einzeln direkt von MySQL zurückgegeben und nicht gespeichert Speicher;
3.mysqli, Nicht-Cache-Abfragebeispiel für pdo
<?php##mysqli $mysqli = new mysqli("localhost", "my_user", "my_password", "world"); $uresult = $mysqli->query("SELECT Name FROM City", MYSQLI_USE_RESULT); if ($uresult) { while ($row = $uresult->fetch_assoc()) { echo $row['Name'] . PHP_EOL; } } $uresult->close(); ##pdo $pdo = new PDO("mysql:host=localhost;dbname=world", 'my_user', 'my_pass'); $pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false); $uresult = $pdo->query("SELECT Name FROM City"); if ($uresult) { while ($row = $uresult->fetch(PDO::FETCH_ASSOC)) { echo $row['Name'] . PHP_EOL; } } ##mysql 会被抛弃的,了解下即可 $conn = mysql_connect("localhost", "my_user", "my_pass"); $db = mysql_select_db("world"); $uresult = mysql_unbuffered_query("SELECT Name FROM City"); if ($uresult) { while ($row = mysql_fetch_assoc($uresult)) { echo $row['Name'] . PHP_EOL; } }
Zusammenfassung:
hier Zwischengespeicherte Abfragen und nicht zwischengespeicherte Abfragen führen tatsächlich zu einem Speicherüberlauf, wenn eine große Datenmenge verarbeitet wird. Derzeit können nicht zwischengespeicherte Abfragen verwendet werden, um das Auftreten dieser Situation zu verhindern, aber Sie müssen darauf achten Da MySQL darauf wartet, dass das PHP-Programm die Daten abruft, verbraucht es die Leistung von MySQL. Wie müssen wir sie also richtig nutzen? MySQL-Leistungsverbrauch. Wenn Sie 2 gut verstehen, wissen Sie, in welcher Szene Sie es verwenden sollen. Wenn Sie immer noch nicht wissen, wie man es verwendet, können Sie mir eine Nachricht hinterlassen oder twittern!
Verwandte Artikel:
Wie MySQL-Abfragen und -Fragen gemessen werden
Wie man Fehlverhalten erkennt und beseitigt MySQL-Abfragen
Ähnliche Videos:
Han Shunpings neuestes MySQL-Basis-Video-Tutorial 2016
Das obige ist der detaillierte Inhalt vonBeispiele für gepufferte und ungepufferte Abfragen und nicht zwischengespeicherte Abfragen von PDO in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!