首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CTE是多线程的吗?

问CTE是多线程的吗?
EN

Database Administration用户
提问于 2014-12-20 23:39:55
回答 1查看 1.4K关注 0票数 3

这里和这里似乎暗示了这一点,但我也被告知(源不可定位),多行单语句插入将只使用一个线程进行所有写入,对于多线程,查询应该被分解并发送到有内核的连接中。

文档声明CTE是“并发地”执行的,但是没有一个链接可以显式地表示“CTE将使用所有可用的核来处理任何并行子语句和/或主查询”。

CTE总是使用所有可用的核心来执行任何并行任务吗?如果是这样的话,除了可以合理地假定与RETURNING链接的内容之外,还有什么警告吗?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2014-12-29 09:16:28

Postgres当前在执行单个查询时不使用并行性。对于每个查询,整个执行引擎都是单线程的(当然,您仍然可以并行执行多个查询)。缺乏“内部查询并行性”是运行Postgres或MySQL的最大缺点之一。基本上,这使得这些引擎不适合在大型数据集上使用。

要执行多线程Postgres,您需要自己将查询拆分为多个查询,或者运行Postgres兼容的变体,如Amazon或Greenplum (前者在代码库中添加了内部查询并行性,后者为您执行拆分)。

每当您觉得需要运行并行查询时,首先问自己:我可以添加没有并行性的索引吗?如果答案是“是”,那就先选择这个选项。不过,你经常需要暴力。当谈到蛮力,香草Postgres不幸不是一个特别好的数据库引擎。

票数 5
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/86685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档