国产超碰人人做人人爽av动图,99久久免费只有精品国产,青青视频精品观看视频,亚洲成a人片在线观看无码下载 ,天天做av天天爱天天爽,国产亚洲精品一区二三区,国产高清视频色拍,亚洲乱理伦片在线观看中字
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ǔ)句的話, 函數(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ù)滿意度,該怎么辦?

預(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

主站蜘蛛池模板: 精品亚洲aⅴ在线无码播放 粉嫩小泬视频无码视频软件 欧美亚洲色aⅴ大片 18禁黄污吃奶免费看网站 亚洲精品一区二区三区麻豆 午夜成人爽爽爽视频在线观看 日韩高清在线观看不卡一区二区 国产在线精品一区二区不卡麻豆 国产精品无码久久四虎 老男人久久青草av高清 亚洲国产精品无码中文字 精品高潮呻吟99av无码视频 激情欧美成人久久综合 亚洲日韩在线a视频在线观看 中年国产丰满熟女乱子正在播放 五月丁香六月狠狠爱综合 天天碰天天狠天天透澡 亚洲浮力影院久久久久久 无码人妻人妻经典 韩国三级在线 中文字幕 无码 狠狠躁夜夜人人爽天96 欧美尺码专线欧洲b1b1 亚洲婷婷五月综合狠狠app 精品国产美女福到在线不卡 国产在线看片无码人精品 精品人妻无码视频中文字幕一区二区三区 亚洲欧美中文日韩v在线97 四虎亚洲精品成人a在线观看 国产女主播白浆在线看 日韩精品一区二区三区在线观看l 久久精品中文字幕大胸| 亚洲大成色www永久网站注册| 少妇人妻大乳在线视频不卡| 国产午夜精品一区二区三区老| 久久九九51精品国产免费看| 亚洲欧洲日产国码在线| 国产精品99久久精品| 在线无码中文字幕一区| 国产成人18黄网站| 国产精品调教视频一区| 亚洲综合色区中文字幕|