PHP MySQL Cursor 实现以及它们如何管理内存
Posted
技术标签:
【中文标题】PHP MySQL Cursor 实现以及它们如何管理内存【英文标题】:PHP's MySQL Cursor implementations and how they manage memory 【发布时间】:2011-08-19 11:23:36 【问题描述】:php 中不同的 mysql 游标如何管理内存?我的意思是,当我进行一个检索大型结果集的 MySQL 查询并取回 MySQL 资源时,查询检索到的数据有多少存储在本地内存中,以及如何检索到更多结果?游标会自动获取所有结果,并在我使用 fetch_array
遍历资源时将它们提供给我,还是缓冲系统?
最后,mysql 中不同驱动程序的游标是否实现不同?有几个 PHP 的 MySQL 驱动程序可用,mysql
、mysqli
、pdo
等。它们都遵循相同的做法吗?
【问题讨论】:
【参考方案1】:这取决于您要求 php 做什么,例如 mysql_query() 获取所有结果集(如果是 500 兆字节,再见);如果你不想这样,你可以使用:
http://php.net/manual/en/function.mysql-unbuffered-query.php
PDO、MySQL 我似乎有其他方法可以做同样的事情。
根据您的查询,结果集可能会在数据库端实现(如果您需要排序,则必须在获得第一行之前完全完成排序)。
对于不太大的结果集,通常最好一次获取所有结果,这样服务器可以尽快释放使用的资源。
【讨论】:
以上是关于PHP MySQL Cursor 实现以及它们如何管理内存的主要内容,如果未能解决你的问题,请参考以下文章
使用 Python 和 mySQL(以及作为操作系统的 windows), cursor.execute() 不返回任何结果,但它正在连接