PHP中不同的MySQL游标如何管理内存?我的意思是,当我创建一个MySQL查询来检索一个大的结果集,然后获取MySQL资源时,查询检索的数据有多少存储在本地内存中,以及如何检索更多结果?光标是否自动获取所有结果,并在我使用fetch_array
迭代资源时将它们提供给我,还是作为缓冲系统?
最后,mysql中不同驱动程序的游标是否实现不同?有几个可用于PHP的MySQL驱动程序,mysql
,mysqli
,pdo
等。它们都遵循相同的做法吗?
答案 0 :(得分:4)
这取决于你要求php做什么,例如mysql_query()抓取所有结果集(如果那是500兆字节,再见);如果你不想要,你可以使用:
http://php.net/manual/en/function.mysql-unbuffered-query.php
PDO,MySQLI似乎还有其他方法可以做同样的事情。根据您的查询,结果集可能在数据库端实现(如果您需要排序,则必须在您获得第一行之前完全排序)。
对于不太大的结果集,通常最好一次获取所有结果,因此服务器可以尽快释放使用的资源。