我正在创建一个统计报告工具,并且由于查询结果较高而面临与内存相关的问题(由于 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;
不,不可能获得结果的大小。它存储在客户端,从服务器角度来看它并不有趣。如果您对结果的大小有疑问,您可以
OPEN
和 FETCH
控制的较小批次。某些客户端(环境)透明地支持光标。https://www.cybertec-postgresql.com/en/declare-cursor-in-postgresql-or-how-to-reduce-内存消耗/