mysql - MySQL 客户端和 PDO 如何使用 fetch 方法接收大结果

标签 mysql memory pdo client fetch

如果我有一个大表(100 万行)

我发送一个 SELECT * FROM 表(没有任何限制,其中...)

  • 我使用 PDO 准备好的查询
  • 仅使用一个 PDO::fetch 方法(而不是 fetchAll)获取结果

mysql通信层发生了什么?

1) mysql 服务器是否将所有行发送到 mysql 客户端,而 mysql 客户端将第一行发送到 PHP? (所以大量的内存用在了PHP服务器和MySQL服务器上)

2) mysql 客户端是否只从 mysql 服务器获取网络上的一行? (所以大量内存仅用在MySQL服务器上)

(php 5.3.3 和 libmysqlclient1.6)

最佳答案

这取决于您选择的缓冲模式和mysql客户端版本。在您的情况下,数据将在 mysql 服务器端使用。

Buffered and Unbuffered queries

关于mysql - MySQL 客户端和 PDO 如何使用 fetch 方法接收大结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17453951/

相关文章:

php - 使整行可点击

javascript - 如何通过onmouseover显示其他数据库信息?

php - 如何将 id 数组插入数据库 MySQL?

使用\PDO::ATTR_EMULATE_PREPARES => true 时 Laravel 数据不匹配错误

php - 将查询数量从 2 减少到 1

mysql - 第一次体验外键,我做错了什么?

Python内存模型

r - 测量R中的峰值内存使用率

php - PHP脚本长时间运行可能出现哪些问题

即使我设置了错误处理,PHP 也不会显示 PDO 错误