麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > MySQL > 正文

php中mysql操作的buffer知識

2020-03-22 20:17:25
字體:
來源:轉載
供稿:網友
  • php與mysql的連接有三種方式,mysql,mysqli,pdo。不管使用哪種方式進行連接,都有使用buffer和不使用buffer的區別。

    什么叫使用buffer和不使用buffer呢?

    客戶端與mysql服務端進行查詢操作,查詢操作的時候如果獲取的數據量比較大,那個這個查詢結果放在哪里呢?

    有兩個地方可以放:客戶端的緩沖區和服務端的緩沖區。

    我們這里說的buffer指的是客戶端的緩沖區,如果查詢結果已經從服務端獲取回來了,放置在了客戶端的緩沖區,我們就稱之為使用buffer。如果還是存放在服務端的緩沖區的話,我們就說沒有使用buffer(unbuffer)。

    使用buffer和不使用buffer有什么區別?

    主要在內存方面,使用buffer會增加客戶端的內存壓力,當返回的數據結果特別大的時候可能會占用調用客戶端(實際就是一個php進程)比較大的進程。不使用buffer自然對服務端(這里說的是提供mysql服務的服務器)壓力更大。


    php中三種模式是如何設置是否使用buffer的?

    mysql默認的query是使用buffer的,而不使用buffer就需要使用mysql_unbuffer_query

    mysqli默認的query是不使用buffer的,要使用buffer就需要設置MYSQLI_STORE_RESULT

    pdo默認的quey是不使用buffer的,要使用buffer就需要設置MYSQL_ATTR_USE_BUFFERED_QUERY

    大致相關代碼如下:


    <?php$dbConfig = array(    'host' => '10.128.11.101',    'port' => '3306',    'user' => 'test',    'pass' => 'test',    'db' => 'test',); $sql = 'select * from so_topic_app'; //---------mysql----------//$db = mysql_connect($dbConfig['host'], $dbConfig['user'], $dbConfig['pass']);mysql_select_db($dbConfig['db'], $db);mysql_set_charset('utf8', $db);  // mysql使用buffer$res = mysql_query($sql, $db); $data = array();while($row = mysql_fetch_row($res)) {    $data[] = $row;}  // mysql不使用buffer$res = mysql_unbuffered_query($sql, $db); $data = array();while($row = mysql_fetch_row($res)) {    $data[] = $row;}  mysql_close($db);  //---------mysqli----------//$db = mysqli_connect($dbConfig['host'], $dbConfig['user'], $dbConfig['pass'], $dbConfig['db']); // mysqli不使用buffer$result = mysqli_query($db, $sql); $data = array();while($row = $result->fetch_array()) {    $data[] = $row;} // mysqli使用buffer$result = mysqli_query($db, $sql, MYSQLI_STORE_RESULT); $data = array();while($row = $result->fetch_array()) {    $data[] = $row;} mysqli_free_result($result);mysqli_close($db);  //---------pdo----------//$dsn = "mysql:dbname={$dbConfig['db']};host={$dbConfig['host']}";$pdo = new PDO($dsn, $dbConfig['user'], $dbConfig['pass']); // pdo不使用buffer$stmt = $pdo->prepare($sql);$stmt->execute();$data = array();$data = $stmt->fetchAll(); // pdo使用buffer$pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);$stmt = $pdo->prepare($sql);$stmt->execute();$data = array();$data = $stmt->fetchAll();

    后續

    當然如果數據量非常大的話,大部分人還是會考慮使用分批次來提取和處理數據。所以實際上需要我們關注和使用mysql是使用buffer還是不使用buffer的場景非常少。

    PHP編程

    鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 欧美精品欧美 | 亚洲精品一区二区三区大胸 | 欧美日韩亚洲另类 | 久草在线视频精品 | 龙的两根好大拔不出去h | 欧美成人福利 | 欧美日韩高清不卡 | 成人黄色短视频在线观看 | 国产视频软件在线 | 成人性视频欧美一区二区三区 | 国产黄色网页 | 亚州综合图片 | 国产毛片视频 | 免费中文视频 | 一级黄色影片在线观看 | 中国女人内谢69xxxx天美 | 一级黄色在线免费观看 | 欧美精品久久久久久久久久 | 国产精品久久久久久久娇妻 | 91精品国产日韩91久久久久久360 | 国产资源在线免费观看 | 黄色免费小视频网站 | 国产在线一区二区三区 | 免费a级作爱片免费观看欧洲 | 欧美日韩爱爱视频 | 久久久噜噜噜久久熟有声小说 | 国产在线免 | 日本在线视频免费 | 久久久www成人免费毛片 | 国产毛片毛片 | 精品一区二区在线播放 | va免费视频 | 色玖玖综合| 国产日韩欧美 | 久久人人爽人人爽人人片av高清 | 极品美女一级毛片 | 久久精品视频2 | 九九热精彩视频 | 亚洲va久久久噜噜噜久牛牛影视 | 综合精品久久 | 毛片视频大全 |