PHP指令碼中Array和MySQL結果集佔用記憶體的簡單測試

來源:互聯網
上載者:User

php指令碼運行時,資料都放在記憶體中,array 和mysql結果集是常用的資料類型,對這兩種資料的記憶體佔用情況作了簡單的測試。 

一下調研,使用memory_get_usage(true) 查看記憶體佔用

對於array類型,key和value都為整數時,大小為1M的數組,佔用記憶體約 136M,平均每條記錄136位元組。

對於array類型,key為整數,value為長度為128的字串時,大小為1M的數組,佔用記憶體約 288M,平均每條記錄288位元組。 

key類型

value類型

數組大小

佔用記憶體

平均

int

int

1M

136M

136

int

string(4)

1M

168M

168

int

string(128)

1M

288M

288

string(16)

int

1M

152M

152

 

 

 

 

 

 

從上面的測試來看,數組中增加一條記錄,除了正常所需的資料存放區外,需要額外的約100位元組來維護hash表資訊。(zval儲存整數約9位元組?) 

值得注意的是,mysql的結果集儲存不能通過memory_get_usage函數看出來,也不計入php指令碼的記憶體限制。在編寫讀取大資料的指令碼時需要注意這個特性。

資料量方面,myIsam中.MYD檔案大小為1.2G時,結果集全部加在會超過4G。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.