Heim  >  Artikel  >  Datenbank  >  Beispiele für gepufferte und ungepufferte Abfragen und nicht zwischengespeicherte Abfragen von PDO in MySQL

Beispiele für gepufferte und ungepufferte Abfragen und nicht zwischengespeicherte Abfragen von PDO in MySQL

php是最好的语言
php是最好的语言Original
2018-08-02 14:01:062778Durchsuche

Gepufferte und ungepufferte Abfragen von MySQL

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

Beispiele für gepufferte und ungepufferte Abfragen und nicht zwischengespeicherte Abfragen von PDO in MySQLIch 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[&#39;Name&#39;] . PHP_EOL;
       }
    }
    $uresult->close();
    
##pdo
    $pdo = new PDO("mysql:host=localhost;dbname=world", &#39;my_user&#39;, &#39;my_pass&#39;);
    $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[&#39;Name&#39;] . 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[&#39;Name&#39;] . 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn