Maison > base de données > tutoriel mysql > le corps du texte

Requêtes avec et sans tampon et exemples de requêtes non mises en cache de pdo dans MySQL

php是最好的语言
Libérer: 2018-08-02 14:01:06
original
2796 Les gens l'ont consulté

Requêtes avec et sans tampon de MySQL

Aujourd'hui, nous parlerons plus en détail des fonctions avancées du cache de requêtes de MySQL, c'est-à-dire la mise en cache et la mise en cache des requêtes !

Cause : (avertissement de débordement de mémoire)

PHP Fatal error: Allowed memory size of 268 435 456 bytes exhausted
Copier après la connexion

1. Officiel

Requêtes avec et sans tampon et exemples de requêtes non mises en cache de pdo dans MySQLParle principalement du cache. requêtes Si vous extrayez tout le contenu en même temps et le mettez en mémoire, il s'accumulera de plus en plus ; tandis que les requêtes non mises en cache reviendront directement une par une depuis le serveur MySQL, ce qui signifie qu'elles attendront que le processus PHP soit terminé. obtenir la prochaine donnée. (Il suffit de comprendre principalement le sens. Si vous voulez bien comprendre, veuillez traduire sur Weibo ou Baidu)

2. Requête Buffer et unBuffer

a ) Les requêtes hors cache sont généralement utilisées pour obtenir les données de requête une fois et seront stockées en mémoire

b) Les requêtes hors cache sont renvoyées directement depuis MySQL une par une et ne seront pas stockées en mémoire ;

3.mysqli, exemple de requête sans cache de 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;
           }
    }
Copier après la connexion

Résumé :
Les requêtes mises en cache et les requêtes non mises en cache signifient en fait que les requêtes mises en cache provoqueront un débordement de mémoire lors de l'exploitation d'une grande quantité de données. À l'heure actuelle, les requêtes non mises en cache peuvent être utilisées pour empêcher cette situation de se produire, mais. vous devez faire attention à ce moment-là. Parce que mysql attendra que le programme php obtienne les données jusqu'à ce que toutes les données soient obtenues, il consommera donc les performances de MySQL. Alors, comment les utiliser correctement ? noyau, débordement de mémoire et consommation de performances MySQL, si vous comprenez bien ces deux éléments, vous saurez dans quels scénarios les utiliser. Si vous ne savez toujours pas comment les utiliser, vous pouvez laisser un message ou me tweeter !

Articles connexes :

Comment les « requêtes » et les « questions » MySQL sont mesurées

Comment détecter et éliminer les comportements inappropriés Requêtes MySQL

Vidéos associées :

Le dernier didacticiel vidéo de base MySQL de Han Shunping 2016

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal