首页 > 解决方案 > 在 postgres 中为 10 个或更多连接组织快速读取整个表的最佳方法

问题描述

我有一张表,里面有大约 200k-400k 条记录,6 列。转储到 python 的 json 数组时的大小不超过 16MB。有 20 个连接,在特定时间段将读取整个表。我怎样才能优化这个过程?有没有办法“准备”这些数据(可能直接缓存在 RAM 中)?您能为此类表格提出最佳解决方案吗?

标签: postgresql

解决方案


PostgreSQL 将在第一次读取该表时将其缓存在 RAM 中。

一个例外是如果表大于 : 的四分之一,shared_buffers那么 PostgreSQL 将使用一个小的环形缓冲区进行顺序扫描,以避免耗尽整个缓存。但对于这样的小桌子,这似乎不太可能。

如果您也想加快表的第一次扫描,您可以将其显式加载到 RAM 中:

CREATE EXTENSION pg_prewarm;

SELECT pg_prewarm('table_name');

推荐阅读