3

...如果是这样,它会更快吗?我的用例是托管 REST API 的典型 LAMP 堆栈。这个 API 的结构方式使我有 10 个(将增长到大约 50 个)不同的查询,这些查询将使用不同的输入运行,并且我希望频率非常快。我并没有特别询问查询的结果缓存,因为我对此了解得足够多,可以单独进行。我特别担心 95% 的应用程序逻辑将是客户端 JS,而大量微小的 REST 请求将主要执行小查询并将它们返回给浏览器进行处理,最终会做很多事情每个请求的冗余工作。如果我可以使用持久连接,并检查 APC 或 memcache 中的 PDO 准备语句,然后重新使用它,
我看到http://dev.mysql.com/doc/refman/5.1/en/query-cache-operation.html也可能出现在我的用例中,但它仍然会为每个请求发送准备语句.

4

1 回答 1

4

没有。
这是一个有趣的问题,我花了一些时间调查它。
没有办法在调用之间传递准备好的语句。

而且,老实说,速度增益并不是那么好谈论的。

如果您关心性能 - 转向查询,而不仅仅是驱动程序。
影响性能的是查询,而不是它们的调用方式。

errr ..
在更彻底地阅读了你的问题之后,我没有改变主意,但有一些事情需要注意

大量微小的 REST 请求,主要是执行小查询并将它们返回给浏览器进行处理,最终会为每个请求做大量的冗余工作。

这是正确的。
因此,请考虑通过批量发送请求并一次性请求更多信息来减少该数量。不是因为准备好的语句的差异可以忽略不计,而是因为相当大的网络延迟

我希望大大减少 apache 服务器到 mysql 服务器的开销。

而这个不是。
看起来您将准备好的语句弄错了,并将它们与查询缓存混淆了。
即使您设法使准备好的语句在请求之间持续存在,它也不会影响任何 apache 到 mysql 的交换 - 您需要执行对准备好的语句的每个后续调用,这意味着将请求发送到 mysql 服务器。因此,您唯一节省的就是查询解析,这在当今非常快。我的意思是不明显的快。

于 2013-02-02T19:55:40.250 回答