如何在Postgres中计算查询结果内存大小?

问题描述 投票:0回答:1

我正在创建一个统计报告工具,并且由于查询结果较高而面临与内存相关的问题(由于 RAM 已满,应用程序服务器没有响应)。 由于动态场景,我无法通过

limit
where
子句限制查询结果。 所以我打算在查询执行之前计算查询结果内存;如果内存超过RAM大小,那么我可以通知用户,“查询结果非常巨大,无法处理。”

Postgres 中是否有任何选项可以获取查询结果的内存大小?

示例: SQL查询:

select date,ledger,credit,debit,company,.... from blah;

期待类似的查询

select sum(pg_size(result)) from (select date,ledger,credit,debit,company,.... from blah)result;
sql postgresql postgresql-9.5
1个回答
0
投票

不,不可能获得结果的大小。它存储在客户端,从服务器角度来看它并不有趣。如果您对结果的大小有疑问,您可以

  • 允许在客户端使用更多内存
  • 使用光标 - 然后通信被分成由命令
    OPEN
    FETCH
    控制的较小批次。某些客户端(环境)透明地支持光标。

https://www.cybertec-postgresql.com/en/declare-cursor-in-postgresql-or-how-to-reduce-内存消耗/

© www.soinside.com 2019 - 2024. All rights reserved.