gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 08:06:25 24 4
gpt4 key购买 nike

...如果是这样,它会更快吗?我的用例是托管 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com