99精品久久久久久久I国产精品都在这里I天天草avI天堂av网在线I国产亚洲久久I国产精品va最新国产精品视频I久久国产精品偷I国产成人99av超碰超爽

MENU 服務(wù) 案例
網(wǎng)站建設(shè)-網(wǎng)站設(shè)計(jì)-北京網(wǎng)站建設(shè)-高端網(wǎng)站制作公司-尚品中國(guó)
我們通過(guò)擁抱變化創(chuàng)造
360°的品牌價(jià)值__
簡(jiǎn)體
簡(jiǎn)體中文 English

尚品與山東真諾智能設(shè)備有限公司簽署網(wǎng)站改版合作協(xié)議

類(lèi)型:尚品動(dòng)態(tài) 了解更多

PHP查詢(xún)MySQL大量數(shù)據(jù)的內(nèi)存占用分析

來(lái)源:尚品中國(guó)| 類(lèi)型:網(wǎng)站百科 |時(shí)間:2011-10-22

PHP查詢(xún)MySQL大量數(shù)據(jù)的內(nèi)存占用分析

      這篇文章主要是從原理, 手冊(cè)和源碼分析在PHP中查詢(xún)MySQL返回大量結(jié)果時(shí), 內(nèi)存占用的問(wèn)題, 同時(shí)對(duì)使用MySQL C API也有涉及.

  昨天, 有同事在PHP討論群里提到, 他做的一個(gè)項(xiàng)目由于MySQL查詢(xún)返回的結(jié)果太多(達(dá)10萬(wàn)條), 從而導(dǎo)致PHP內(nèi)存不夠用. 所以, 他問(wèn), 在執(zhí)行下面的代碼遍歷返回的MySQL結(jié)果之前, 數(shù)據(jù)是否已經(jīng)在內(nèi)存中了? -

  1. while ($row = mysql_fetch_assoc($result)) { 
  2.     // ... 

  當(dāng)然, 這種問(wèn)題有許多優(yōu)化的方法. 不過(guò), 就這個(gè)問(wèn)題來(lái)講, 我首先想到, MySQL是經(jīng)典的C/S(Client/Server, 客戶(hù)端/服務(wù)器)模型, 在遍歷結(jié)果集之前, 底層的實(shí)現(xiàn)可能已經(jīng)把所有的數(shù)據(jù)通過(guò)網(wǎng)絡(luò)(假設(shè)使用TCP/IP)讀到了Client的緩沖區(qū), 也有另一種可能, 就是數(shù)據(jù)還在Server端的發(fā)送緩沖區(qū)里, 并沒(méi)有傳給Client.

  在查看PHP和MySQL的源碼之前, 我注意到PHP手冊(cè)里有兩個(gè)功能相近的函數(shù):

  1. mysql_query() 
  2.  
  3. mysql_unbuffered_query() 

  兩個(gè)函數(shù)的字面意思和說(shuō)明證實(shí)了我的想法, 前一個(gè)函數(shù)執(zhí)行時(shí), 會(huì)把所有的結(jié)果集從Server端讀到Client端的緩沖區(qū)中, 而后一個(gè)則沒(méi)有, 這就是”unbuffered(未緩沖)”的意思.

  那就是說(shuō), 如果用mysql_unbuffered_query()執(zhí)行了一條返回大量結(jié)果集的SQL語(yǔ)句, 在遍歷結(jié)果之前, PHP的內(nèi)存是沒(méi)有被結(jié)果集占用的. 而用mysql_query()來(lái)執(zhí)行同樣的語(yǔ)句的話(huà), 函數(shù)返回時(shí), PHP的內(nèi)存占用便會(huì)急劇增加, 立即耗光內(nèi)存.

  如果閱讀PHP的相關(guān)代碼, 可以看到這兩個(gè)函數(shù)的實(shí)現(xiàn)上的異同:

  1. /* {{{ proto resource mysql_query(string query [, int link_identifier]) 
  2.    Sends an SQL query to MySQL */ 
  3. PHP_FUNCTION(mysql_query) 
  4.     php_mysql_do_query(INTERNAL_FUNCTION_PARAM_PASSTHRU, MYSQL_STORE_RESULT); 
  5. /* }}} */ 
  6.  
  7. /* {{{ proto resource mysql_unbuffered_query(string query [, int link_identifier]) 
  8.    Sends an SQL query to MySQL, without fetching and buffering the result rows */ 
  9. PHP_FUNCTION(mysql_unbuffered_query) 
  10.     php_mysql_do_query(INTERNAL_FUNCTION_PARAM_PASSTHRU, MYSQL_USE_RESULT); 
  11. /* }}} */ 

  兩個(gè)函數(shù)都調(diào)用了php_mysql_do_query(), 只差了第2個(gè)參數(shù)的不同, MYSQL_STORE_RESULT和MYSQL_USE_RESULT. 再看php_mysql_do_query()的實(shí)現(xiàn):

  1. if(use_store == MYSQL_USE_RESULT) { 
  2.     mysql_result=mysql_use_result(&mysql->conn); 
  3. else { 
  4.     mysql_result=mysql_store_result(&mysql->conn); 

  mysql_use_result()和mysql_store_result()是MySQL的C API函數(shù), 這兩個(gè)C API函數(shù)的區(qū)別就是后者把結(jié)果集從MySQL Server端全部讀取到了Client端, 前者只是讀取了結(jié)果集的元信息.

  回到PHP, 使用mysql_unbuffered_query(), 可以避免內(nèi)存的立即占用. 如果在遍歷的過(guò)程不對(duì)結(jié)果進(jìn)行”PHP緩存”(如放到某數(shù)組中), 則整個(gè)執(zhí)行過(guò)程雖然操作了十萬(wàn)條或者百萬(wàn)條或者更多的數(shù)據(jù), 但PHP占用的內(nèi)存始終是非常小的.

標(biāo)簽:北京網(wǎng)站制作 高端網(wǎng)站建設(shè)

來(lái)源聲明:本文章系尚品中國(guó)編輯原創(chuàng)或采編整理,如需轉(zhuǎn)載請(qǐng)注明來(lái)自尚品中國(guó)。以上內(nèi)容部分(包含圖片、文字)來(lái)源于網(wǎng)絡(luò),如有侵權(quán),請(qǐng)及時(shí)與本站聯(lián)系(010-60259772)。
TAG標(biāo)簽:

如果您的網(wǎng)站可以增加轉(zhuǎn)化次數(shù)并提高客戶(hù)滿(mǎn)意度,該怎么辦?

預(yù)約專(zhuān)業(yè)咨詢(xún)顧問(wèn)溝通!

*尚品專(zhuān)業(yè)顧問(wèn)將盡快與您聯(lián)系

免責(zé)聲明

非常感謝您訪問(wèn)我們的網(wǎng)站。在您使用本網(wǎng)站之前,請(qǐng)您仔細(xì)閱讀本聲明的所有條款。

1、本站部分內(nèi)容來(lái)源自網(wǎng)絡(luò),涉及到的部分文章和圖片版權(quán)屬于原作者,本站轉(zhuǎn)載僅供大家學(xué)習(xí)和交流,切勿用于任何商業(yè)活動(dòng)。

2、本站不承擔(dān)用戶(hù)因使用這些資源對(duì)自己和他人造成任何形式的損失或傷害。

3、本聲明未涉及的問(wèn)題參見(jiàn)國(guó)家有關(guān)法律法規(guī),當(dāng)本聲明與國(guó)家法律法規(guī)沖突時(shí),以國(guó)家法律法規(guī)為準(zhǔn)。

4、如果侵害了您的合法權(quán)益,請(qǐng)您及時(shí)與我們,我們會(huì)在第一時(shí)間刪除相關(guān)內(nèi)容!

聯(lián)系方式:010-60259772
電子郵件:394588593@qq.com

免責(zé)聲明

非常感謝您訪問(wèn)我們的網(wǎng)站。在您使用本網(wǎng)站之前,請(qǐng)您仔細(xì)閱讀本聲明的所有條款。

1、本站部分內(nèi)容來(lái)源自網(wǎng)絡(luò),涉及到的部分文章和圖片版權(quán)屬于原作者,本站轉(zhuǎn)載僅供大家學(xué)習(xí)和交流,切勿用于任何商業(yè)活動(dòng)。

2、本站不承擔(dān)用戶(hù)因使用這些資源對(duì)自己和他人造成任何形式的損失或傷害。

3、本聲明未涉及的問(wèn)題參見(jiàn)國(guó)家有關(guān)法律法規(guī),當(dāng)本聲明與國(guó)家法律法規(guī)沖突時(shí),以國(guó)家法律法規(guī)為準(zhǔn)。

4、如果侵害了您的合法權(quán)益,請(qǐng)您及時(shí)與我們,我們會(huì)在第一時(shí)間刪除相關(guān)內(nèi)容!

聯(lián)系方式:010-60259772
電子郵件:394588593@qq.com

主站蜘蛛池模板: 精品欧美日韩 | 久热av在线 | 欧美精品一区二区三区四区在线 | 国产精品h在线观看 | 国产亚洲欧美精品久久久久久 | 狠狠色综合欧美激情 | 亚洲成a人片77777潘金莲 | 欧美一区视频 | 91av手机在线 | 91久久在线观看 | 国产日韩三级 | 久草com| 国产一级久久 | 亚洲精品国产品国语在线 | 91麻豆精品国产91久久久无需广告 | 欧美一区二区三区在线视频观看 | 婷婷丁香五 | 国产午夜精品一区 | 天天摸天天操天天爽 | 日韩高清不卡一区二区三区 | 精品亚洲成a人在线观看 | av在线免费播放网站 | 91香蕉嫩草| 国产精品视频999 | 欧美视频在线观看免费网址 | 激情视频一区二区三区 | 亚洲另类视频 | 久草免费电影 | 亚洲五月激情 | 久久视频免费观看 | 一区二区三区在线视频111 | 婷婷久久国产 | 天天爽夜夜操 | 在线观看视频免费大全 | 久久国产精品久久精品国产演员表 | 女人18精品一区二区三区 | 久久视频精品在线观看 | 在线看av的网址 | 午夜精品久久久久久99热明星 | 国产精品二区在线观看 | 成人影片在线免费观看 | 亚洲午夜久久久久久久久 | 亚洲国内精品在线 | 国产精品免费视频久久久 | 天天爱天天操 | 五月天综合 | 婷婷六月天在线 | 激情视频区 | 在线 视频 一区二区 | 97人人爽 | 欧美一级片免费在线观看 | 日日夜夜网 | 九九影视理伦片 | 2017狠狠干| 狠狠色噜噜狠狠狠狠 | 久久试看 | 西西444www大胆高清图片 | 国产一级免费观看 | 一区二区电影在线观看 | 91九色蝌蚪在线 | 亚洲精品高清在线 | 免费电影一区二区三区 | 日韩免费播放 | 国产成人精品一区二 | 人人澡超碰碰97碰碰碰软件 | 一区二区三区四区精品视频 | 国产一区二区视频在线 | 麻豆一区二区三区视频 | 国产黄色在线观看 | 成 人 黄 色 片 在线播放 | 婷婷网站天天婷婷网站 | 久视频在线 | 中文视频在线播放 | 国产视频一二三 | 亚洲国产免费 | 色综合久久久久 | 成人影视免费 | 欧美激情综合色 | 国产高清小视频 | 九九久久久久99精品 | 91久久国产综合精品女同国语 | 热99在线视频 | 亚州国产视频 | 美女黄久久 | 97超级碰碰碰碰久久久久 | 免费视频二区 | 国产精品99久久久久人中文网介绍 | 免费看污片 | 香蕉视频导航 | 国产精品久久99精品毛片三a | japanesexxxhd奶水 91在线精品一区二区 | 欧美激情va永久在线播放 | 成年人免费在线观看网站 | 日本精品中文字幕 | 国产乱码精品一区二区蜜臀 | 亚洲免费在线 | 日韩欧美网址 | 久久成人一区 | 国内精品久久久久久久影视麻豆 |