是否可以在PHP / Mysql / APC / Memcache中存储PDO预处理语句以供重用?

时间:2013-02-02 19:47:36

标签: php mysql rest caching pdo

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

1 个答案:

答案 0 :(得分:4)

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

老实说,速度提升并不是那么好谈。

如果您对性能感到担忧 - 请转到查询,而不仅仅是驱动程序。
它是影响性能的查询,而不是它们调用的方式。

errr ..
在仔细阅读了你的问题之后,我没有改变主意,但有一些事情要注意

  

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

没错 因此,请考虑通过批量发送请求并在一个请求更多信息来减少该数量。不是因为准备好的陈述中的差异微不足道,而是因为相当大的网络延迟

  

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

这个不是。
看起来你正在准备错误的预备语句并将它们与查询缓存混淆 即使您设法在请求之间保留准备好的语句,也不会影响到mysql交换的任何apache - 您需要执行每次后续调用准备语句,意味着向mysql服务器发送请求。所以,你唯一能节省的就是查询解析,现在速度非常快。我的意思是快速无法察觉。