是否可以将PDO准备好的语句存储在PHP/Mysql/APC/Memcache中以供重用?

是否可以将PDO准备好的语句存储在PHP/Mysql/APC/Memcache中以供重用?,php,mysql,rest,caching,pdo,Php,Mysql,Rest,Caching,Pdo,。。。如果是这样,会更快吗? 我的用例是一个典型的LAMP堆栈,它承载一个restapi。这个API的结构使我有10个(将增长到大约50个)不同的查询,它们将使用不同的输入运行,我希望频率会非常快。我并没有特别询问查询的结果缓存,因为我对这一点了解得足够多,所以可以单独讨论。我特别关心的是,95%的应用程序逻辑将是客户端JS,大量微小的REST请求(主要用于执行小查询并将其返回到浏览器进行处理)最终将为每个请求执行大量冗余工作。如果我可以使用持久性连接,并检查APC或memcache中的PDO

。。。如果是这样,会更快吗? 我的用例是一个典型的LAMP堆栈,它承载一个restapi。这个API的结构使我有10个(将增长到大约50个)不同的查询,它们将使用不同的输入运行,我希望频率会非常快。我并没有特别询问查询的结果缓存,因为我对这一点了解得足够多,所以可以单独讨论。我特别关心的是,95%的应用程序逻辑将是客户端JS,大量微小的REST请求(主要用于执行小查询并将其返回到浏览器进行处理)最终将为每个请求执行大量冗余工作。如果我可以使用持久性连接,并检查APC或memcache中的PDO prepared语句,然后重新使用它,我希望能够大幅减少apache服务器到mysql服务器的开销。
我看到在我的用例中也可能会出现这种情况,但它仍然会为每个请求发送prepare语句。

否。
这是一个有趣的问题,我花了很长时间研究它。
无法在调用之间传递准备好的语句

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

如果您关心性能,请转到查询,而不仅仅是司机。
影响性能的是查询,而不是它们的调用方式

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

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

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

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

而这个不是。
看起来您将准备好的语句取错了,并将它们与查询缓存混淆。

即使您设法让准备好的语句在请求之间持久化,它也不会影响apache到mysql的任何交换——您需要执行对准备好的语句的每个后续调用,这意味着将请求发送到mysql服务器。因此,您唯一节省的就是查询解析,现在它的速度非常快。我的意思是看不见的快

解决方案是不使用PHP。使用在请求之间持续存在的东西。PHP不太适合这个任务。如果你阅读我提供的链接,它确实提到了使用查询缓存的准备语句:“在MySQL 5.1.17之前,准备语句不使用查询缓存。从5.1.17开始,准备语句在特定条件下使用查询缓存,这取决于准备方法:”这让我不清楚新的PDO是否准备使用相同的查询,但不同的值将命中缓存,即使缓存仍然存在。你能解释/支持你的陈述吗?那是不可能的?你是否真的尝试过将手柄插入内存缓存(我可能会这样做以供学习)