Kir*_*gan 8 php mysql memory arrays pdo
我试图理解为什么单个PDO结果的内存使用率如此之高.以下是有关查询/结果的一些信息:
VARCHAR(6)从单个表中拉出一个列memory_get_usage)json_encode将结果转储到文件中,实际数据(文本形式)只有~1MB我的问题是,11MB的膨胀到底在哪里?如果文本形式的实际数据只有大约1MB,那么11MB似乎只是为了解析PHP中的数据而花费很多.是否有一个原因?我错过了什么吗?
编辑:
为了澄清,我正在寻找技术解释为什么存在膨胀,而不是问题的解决方法.
好的,感谢奥利·琼斯的回答,我意识到我一直在错误的地方寻找信息。这不是 PDO 内存使用问题,而是 PHP 存储数组的方式问题。(也许“问题”这个词不恰当,它就是这样)
经过一番挖掘后,我发现这篇非常有用的文章,它详细介绍了 PHP 如何为数组元素分配内存:
https://nikic.github.io/2011/12/12/How-big-are-PHP-arrays-really-Hint-BIG.html
剧透警告,它为每个元素使用大量内存。显然 PHP7 已经变得更好了。该文章指出,对于一个简单的整数数组(在 PHP5 中)元素,它将使用比整数本身大小大约 18 倍的内存。由于我看到关联字符串数据增加了 12*,因此我认为这确实比 PHP5 有了巨大的改进。
根据该文章,内存被分配用于以下目的:
zvalue_valueunion,与 PHP 允许的弱类型转换有关如果您也对此感兴趣,我强烈建议您阅读该文章,它读起来很快,并且包含很多有用的信息。
再次感谢奥利·琼斯为我指明了正确的方向。
| 归档时间: |
|
| 查看次数: |
1395 次 |
| 最近记录: |