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

标签 php mysql rest caching pdo

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

最佳答案

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

老实说,速度增益并不是什么好谈的。

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

错误..
在更透彻地阅读了您的问题之后,我并没有改变主意,但是有一些事情需要注意

high volume of tiny REST requests which will mostly be doing small queries and returning them to the browser to deal with will end up doing a lot of redundant work for each request.

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

I would expect to reduce the apache server to mysql server overhead substantially.

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

关于php - 是否可以将 PDO 准备好的语句存储在 PHP/Mysql/APC/Memcache 中以供重用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14665781/

相关文章:

php - 在 Woocommerce 3 中访问订单项目保护数据

php - laravel 具有多对多关系的本地范围

php - javascript 文件没有被缓存?

php - 来自 MySQL 表的 RecursiveArrayIterator

java - Tomcat RESTful Web 服务部署

Javascript 函数操作

java - 无法在 Java 中重新打开 MySQL 连接

python - 如何在用户更改文本时更新 QSyntaxHighlighter 颜色编码

node.js - 无法使用 mocha 和 supertest 测试 DELETE 方法

python - 通过 RESTful API 使用 python 与 MOXA ioLogik1214 进行连接,以将数据放入 DO 端口