9

我知道 Postgres 会自动扩展到具有多个连接的多核,但是当我在 SINGLE 连接上运行大量查询时呢?令人沮丧的是,我的 4 核系统上的 CPU 使用率最高为 25%。

我正在从 SQL Server 切换,这是迄今为止唯一真正困扰我的事情。SQL Server 将使用多达 100% 的 CPU 进行单个连接/查询。

如果重要的话,我正在使用 Xeon 处理器的 Windows 7 Enterprise 64 位上运行 9.2。

如果没有办法解决这个问题,有人可以解决为什么这不被视为一个问题吗?是因为 Postgres 专注于多用户场景吗?

4

3 回答 3

12

PostgreSQL 目前不支持跨多个 CPU 内核执行单个查询(如果您正在执行写入查询,则减去后台写入和 wal 写入等后台内容,但这并不算数)。这是一项正在进行的工作,但它是一个长期项目,并且不在任何当前版本的 PostgreSQL 中。

这在所有平台和架构上都是一样的。

这绝对是一个问题,但正如您所说,由于 PostgreSQL 专注于多用户场景,所以直到最近它才被排在优先级队列的顶部。但是肯定有人意识到这是一个问题,并且正在努力为未来的版本解决它,只是还没有完成。

于 2013-08-16T09:47:16.627 回答
4

有一个 Foreign Data Wrapper 旨在通过名为 pg_strom 的 GPU 添加并行性。我从未使用过它,它看起来很专业,但也许你(或这里的某人)有它的用例。

描述 pg_strom 的文章

http://gpuscience.com/software/postgresql-gpu-pgstrom/

编码:

https://github.com/kaigai/pg_strom

于 2013-08-16T13:11:05.460 回答
2

并不是说它不被视为一个问题。这是它需要基本的架构更改。它的用例非常专业。它只会在您一次执行一个长查询的数据仓库类型环境中有所帮助——并且查询受 CPU 限制,而不是通常的磁盘 i/o 限制。

于 2013-08-16T11:35:58.657 回答