我知道Postgres可以自动扩展到多个核心和多个连接,但是当我在单个连接上运行大量查询时怎么办?令人沮丧的是,在我的4核系统上,CPU使用率最高只能达到25%。我正在从SQL Server切换,这是目前唯一真正困扰我的问题。SQL Server可以为单个连接/查询使用高达100%的CPU。 我的操作系统是Windows 7 Enterprise 64位,处理器是Xeon 9.2。如果无法解决此问题,是否有人可以解释为什么不认为这是一个问题?这是因为Postgres专注于多用户方案吗?
目前,PostgreSQL不支持在多个CPU核心上执行单个查询(除了后台写入和wal写入之类的后台工作,如果您正在执行写查询,但这并不真正计算)。这是一项正在进行中的工作,但它是一个长期项目,并且不在PostgreSQL的任何当前版本中。
在所有平台和架构上都是如此。
这绝对是一个问题,但由于PostgreSQL专注于多用户场景,直到最近才成为优先级队列顶部的问题。但是,肯定有人意识到这是一个问题,并努力解决未来版本的问题,只是尚未完成。
有一个名为pg_strom的外部数据包装器,旨在通过GPU添加并行性。我从未使用过它,它看起来非常专业化,但也许你(或这里的某个人)有用例。
http://gpuscience.com/software/postgresql-gpu-pgstrom/
并不是说这不是一个问题,而是需要进行基本的架构更改。它的使用案例非常专业化。它只能在数据仓库类型的环境中帮助你一次执行长时间查询 - 并且查询是 CPU 绑定的,而不是通常会受到磁盘 I/O 绑定的影响。