当SQL查询内存不足时会发生什么?

msu*_*uda 6 sql postgresql amazon-web-services

我想在AWS上设置一个Postgres服务器,最大的表将是10GB - 我必须为这个实例选择10GB的内存吗?

当我的查询结果大于10GB时会发生什么?

Aar*_*etz 4

什么都不会发生,整个结果集不会加载到内存中。在准备结果时,将根据需要使用和重新使用最大可用内存,并将根据需要溢出到磁盘。

有关详细信息,请参阅 PostgreSQL资源文档。

具体来说,看看work_mem

work_mem(整数)指定在写入临时磁盘文件之前内部排序操作和哈希表要使用的内存量。

只要您在单个操作或一组并行操作上没有耗尽工作内存就可以了。

编辑:以上是对问题的回答What happens when you query a 10GB table without 10GB of memory on the server/instance?

这是更新问题的更新答案:

  • 仅使用服务器端资源来生成结果集
  • 假设使用 JDBC 驱动程序,默认情况下,整个结果集将发送到本地计算机,这可能会导致内存不足错误

可以通过使用游标改变提取大小来更改此行为。

在此参考此行为

根据光标获取结果