gpt4 book ai didi

php postgres 从理论上讲从查询到获取行

转载 作者:行者123 更新时间:2023-11-29 13:06:06 24 4
gpt4 key购买 nike

我想知道从 php 脚本运行查询到数据库返回数据并且 php 脚本开始获取它们的那一刻到底发生了什么。

从理论上讲,我有一个带有巨大表的 Postgre 数据库,谈论 10/20 百万条记录和 20 多个列,我有一个 php 脚本,它请求数据库中的所有行都放在,比方说,一些文件.

我的知识是:

  • php 脚本运行带 sql 查询的 pg_query 命令
  • 通过postgres php驱动/扩展查询传递给数据库
  • 数据库完成工作并将结果返回给驱动程序
  • php postgres 驱动程序将结果存储在服务器 RAM 内存中,并将资源 ID 返回给引用结果的 php 脚本
  • pg_fetch_row 从 RAM 内存中读取记录

我正在尝试对执行上述工作的 php 代码进行最佳优化。

问题是:

  • 我的知识正确吗?如果有什么遗漏或我对某些步骤不正确,请纠正我。
  • 我怎么知道有多少 RAM 内存分配给数据库结果?如果我的服务器没有足够的内存,这可能很重要。
  • 我知道我可以获取单行,然后将其存储到文件中,只要有行就重复这两个步骤,这样我可以最大限度地减少 php 脚本所需的内存,但我如何影响资源使用的内存?<

提前致谢。

最佳答案

PostgreSQL 确实(默认情况下)一次返回所有行。这样做的好处是可以释放服务器端的资源,但代价是客户端可能会出现大量结果集。

另一种方法是使用一次可以返回一行的游标。一些驱动程序直接支持它(可能是 PDO ?)或者你可以使用 DECLAREFETCH

另一件需要注意的事情是 PostgreSQL 的 COPY可以直接将表或查询转储到文件的命令(假设您不需要太多处理/格式化)。检查您的数据库库是否提供直接访问。

关于php postgres 从理论上讲从查询到获取行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11348693/

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