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

Ste*_*man 5 postgresql

TL; DR:是否有办法查询 postgres 实例有多少个内核可用于处理?

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

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

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

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

Gai*_*ius 4

create table cores(num_cores integer);\ncopy cores(num_cores) from program \xe2\x80\x98grep processor /proc/cpuinfo|wc -l\xe2\x80\x99;\nselect * from cores;\n
Run Code Online (Sandbox Code Playgroud)\n\n

psqlas中postgres(未在 AWS 中测试)

\n

  • 如果您不想永远保留此表:“创建临时表 cores(num_cores 整数);”,当连接断开时,该表将被删除。 (2认同)