0

这是在文档中:

MySQL Native Driver 管理与 MySQL Client Library 不同的内存。这些库的不同之处在于内存的分配和释放方式、从 MySQL 读取结果时如何以块的形式分配内存、存在哪些调试和开发选项,以及从 MySQL 读取的结果如何链接到 PHP 用户变量。

所有内存分配和释放都是使用 PHP 内存管理函数完成的。因此,可以使用 PHP API 调用来跟踪 mysqlnd 的内存消耗,例如 memory_get_usage()。

我使用的是 PHP 5.4,所以 MySQL 扩展是使用 mysqlnd 驱动程序编译的。即使该文档说mysqlnd的所有内存管理都是通过PHP完成的,我在查询返回cca 1MB BLOB结果集的表后看不到任何内存使用情况。该查询用于缓冲 (mysql_store_result()) 模式:

$result = $conn->query('SELECT * FROM test');
echo memory_get_usage()/1024;

为什么 memory_get_usage() 在查询后没有显示内存使用量增加?

我认为当使用缓冲模式时,query() 会将整个结果集从 MySQL 服务器返回到 mysqlnd。

4

0 回答 0