ホームページ  >  記事  >  データベース  >  MySQL の PDO のバッファリングされたクエリとバッファリングされていないクエリ、およびキャッシュされていないクエリの例

MySQL の PDO のバッファリングされたクエリとバッファリングされていないクエリ、およびキャッシュされていないクエリの例

php是最好的语言
php是最好的语言オリジナル
2018-08-02 14:01:062677ブラウズ

MySQL のバッファリングされたクエリとバッファリングされていないクエリ

今日は、MySQL のクエリ キャッシュの高度な機能、つまりクエリ キャッシュとクエリ アンキャッシュについてさらに説明します。

原因:(メモリオーバーフロー警告)

PHP Fatal error: Allowed memory size of 268 435 456 bytes exhausted

1.公式

MySQL の PDO のバッファリングされたクエリとバッファリングされていないクエリ、およびキャッシュされていないクエリの例主に、キャッシュクエリはすべてのコンテンツを一度に見つけてメモリに置くことであり、それはどんどん蓄積されます。キャッシュクエリの代わりに、MySQL サーバーから 1 つずつ直接返されます。つまり、php プロセスが次のデータを取得するのを待ちます。 (これが何を意味するのかを理解するだけで十分です。さらに詳しく知りたい場合は、WeChat または Baidu で翻訳してください)

2.Buffer および unBuffer クエリ

a) キャッシュ クエリは通常、取得するために使用されます。データを一度にクエリし、メモリ内に保存されます。

b) キャッシュされていないクエリは MySQL から 1 つずつ直接返され、メモリには保存されません

3.mysqli、キャッシュされていないクエリの例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;
           }
    }

概要:
ここでのキャッシュされたクエリとキャッシュされていないクエリは、実際には、キャッシュされたクエリが大量のデータを操作するときにメモリオーバーフローを引き起こす可能性があることを意味します。この状況が起こらないようにするために使用されますが、この時点では、mysql はすべてのデータが取得されるまで php プログラムがデータを取得するのを待機するため、MySQL のパフォーマンスを消費することになるので注意してください。 ? コア、メモリ オーバーフロー、MySQL のパフォーマンス消費を具体的に把握する必要があります。この 2 つをよく把握できれば、どのようなシナリオで使用するかがわかります。まだ使用方法がわからない場合は、メッセージを残してください。またはツイートしてください!


関連記事: MySQL の「クエリ」と「質問」の測定方法

不正な動作をする MySQL クエリを見つけて強制終了する方法

関連ビデオ:


Han Shuping の 2016 年の最新の MYSQL 基本ビデオ チュートリアル

以上がMySQL の PDO のバッファリングされたクエリとバッファリングされていないクエリ、およびキャッシュされていないクエリの例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。