可以在运行时检查 postgres 上的可用核心吗?

可以在运行时检查 postgres 上的可用核心吗?

TL; DR:有没有办法查询 postgres 实例有多少个核心可供处理?

Postgres 在跨可用核心高效并行执行多个查询方面享有盛誉。

我正在编写一个应用程序,该应用程序具有一个 CPU 密集型数据转换管道,由 postgres 在大量源数据集合上执行。每个管道都将是单个连接的工作,我希望通过建立多个连接并执行工作(发生在单个连接范围内的临时表中)来利用并行性。

我想调整数据库要维护的并发连接数。我倾向于使用可用核心的乘数,例如 1.5 倍,这样 DBMS 就不会因为等待连接而陷入困境,但仍能确保它始终有工作要做。

但是,DBMS 将是用户选择的 AWS RDS 实例。我事先不知道有多少个核心可用。有没有办法查询数据库来找出答案?

答案1

create table cores(num_cores integer);
copy cores(num_cores) from program ‘grep processor /proc/cpuinfo|wc -l’;
select * from cores;

psqlas中postgres(未在 AWS 中测试)

答案2

在 Windows 上(是的,我知道 Windows 上的 Postgresql 很讨厌 :-) )

你可以做

create temporary table cores(num_cores integer);
copy cores(num_cores) from program 'echo %NUMBER_OF_PROCESSORS%';
select * from cores;

相关内容