PHP脚本中Array和MySQL结果集占用内存的简单测试


php脚本运行时,数据都放在内存中,array mysql结果集是常用的数据类型,对这两种数据的内存占用情况作了简单的测试。 

一下调研,使用memory_get_usage(true) 查看内存占用

对于array类型,keyvalue都为整数时,大小为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

相关内容