【发布时间】:2015-03-11 03:13:12
【问题描述】:
MySQL 无缓冲查询真的完全不使用 PHP 缓冲吗?在 PHP 访问数据之前,缓冲查询真的缓冲了整个结果集吗?
根据我阅读的有关 MySQL 缓冲查询的内容,这不是我想要的,因为我想立即开始处理结果,而不必在开始之前等待所有结果都被缓冲。但是从我所读到的关于无缓冲查询的内容来看,这也不是我想要的,因为我确实希望它缓冲客户端上的结果,这样 MySQL 就不会被搁置更长的时间,我只是不在我开始处理结果之前,不希望它等待结果完全缓冲。所以请帮助我理解。
在允许 PHP 开始使用结果之前,MySQL/PHP 中的缓冲查询真的会缓冲整个结果集吗?并且无缓冲查询真的完全不使用缓冲,以便 MySQL 服务器在将下一个结果发送到客户端之前不断等待 PHP 请求下一个结果吗?如果这是真的,为什么没有办法立即开始使用结果,但仍然缓冲结果以减轻 MySQL 的负载?
我的 MySQL 服务器是具有许多不同客户端节点的共享服务器。所以在客户端不使用缓冲是没有意义的。但是查询很大,因此它们不需要等待返回整个结果集即可开始使用结果。
那么我理解对了吗?没有办法在这里做我想做的事吗?没有办法以实际的方式处理这个问题?
【问题讨论】:
-
php.net/manual/en/mysqlinfo.concepts.buffering.php 99.9% 的人对缓冲默认值没有任何问题。你想多了。你必须做一些独特的事情才能不坚持默认
-
大多数人不会无限制地查询数千行。如果我只是期待一些结果,那么在能够继续之前等待整个结果集的默认设置就可以了。我确信我所做的并不是独一无二的,但这就是为什么我认为这是一个值得提出的问题。
-
如果您有具体的场景,请提供,S.O 是针对具体问题的。
-
为了它的价值,我查询了数千(可能是 100k)的缓冲行,当数据库服务器在同一个网络上时,返回几乎是即时的,也许你应该对其进行基准测试。
-
我很具体。 1 MySQL 服务器,以及许多负载平衡的虚拟 PHP 节点(在同一网络上),它们正在运行大型查询(数千行),并且应该能够立即开始对该数据进行操作,而无需等待整个数据缓冲。从您的回复看来,您建议使用缓冲查询,因为等待时间足够小,不值得担心。我将对其进行基准测试并查看。
标签: php mysql buffered unbuffered