【发布时间】:2020-07-05 18:49:36
【问题描述】:
我们注意到,对我们的 API 端点的调用通常有多个重复的 MySQL 查询 SELECT 语句(有时是数百个)。所以我们决定创建一个hashmap来存储
mysqli_result 并检查给定的查询是否已经完成并返回保存在我们地图中的结果。
我的问题是:mysqli_result 是否维护对我们连接的引用?这真的会帮助我们避免不必要地请求的查询使我们的数据库过载吗?如果mysqli_result 太大,会不会溢出我们的fpm 进程的内存?
我想知道的基本上是哪种方法更好:
- 对于查询 A,每次需要时重用
mysqli_result对象; - 每次需要时重做查询 A。
【问题讨论】:
-
为什么需要缓冲
mysqli_result?只是缓冲数据。只有数据,没有别的。您询问mysqli_result的事实表明您的数据库抽象类存在问题,因为mysqli_result应该只是一个中间对象,不应该暴露给您的应用程序逻辑。 -
@Dharman 它没有暴露给我们的应用程序逻辑
-
你能告诉我们你正在谈论的代码吗?你到底想做什么?
-
我只是想知道在我们的 DB 抽象上缓存
mysqli_result对象是否可以。 -
您不能在没有连接的情况下重用 mysqli 结果..如果您想多次重用数据结果..您必须存储在某个地方..(如果您不想要连接,则不在数据库中)