大表加索引太慢?一文搞懂 KingbaseES 并行查询:原理、参数与实战
金仓社区精华banjin 的并行查询实战前两天同事问一个表很大要加索引很慢怎么办当时回复可以使用并行啊parallel ( degree 32启用32并行来创建创建完后关闭索引并行在信创国产化替代持续深化的当下金融、政务、能源等关键领域的业务数据量呈爆炸式增长百万级、千万级甚至亿级数据的查询、统计与分析场景日益频繁单线程处理模式已难以满足业务对响应速度的要求刚好也学习一下KingbaseES并行使用数据库并行并行执行是指将一个 SQL 查询任务分成多个子任务并允许这些子任务在多个处理器上同时运行以提高整个查询任务的执行效率。在现代计算机系统中多核处理器、多线程和高速网络连接广泛应用这使得并行执行成为了一种可行的高效率查询技术。并行执行能够极大降低计算密集型大查询的响应时间被广泛应用在离线数据仓库、实时报表、在线大数据分析等业务场景同时还应用在批量导数快速构建索引表等领域通过并行处理可以显著提高大规模数据处理的速度和效率尤其是在处理复杂查询、批量数据更新等场景时。适用与不适用场景适用场景需满足访问数据量大、SQL 并发低、要求低延迟、硬件资源充足多核、大内存、高 IO 带宽、系统负载低通常 30% 以下的条件典型场景包括大表扫描 / 连接 / 排序 / 聚合、大表 DDL、Create Table As Select、批量增删改。不适用场景数据量小、SQL 执行时间 100 毫秒、高并发 OLTP 的普通查询以及系统负载高、硬件资源紧张的环境这类场景下并行调度的开销会抵消性能收益甚至引发负面效果。并行查询原理在优化器评估某个特定查询时若判断并行执行为最优策略则会生成包含Gather或GatherMerge操作节点的查询执行计划在执行计划中Gather节点作为其中一个操作符节点标志着并行处理的开始。当查询执行到达该节点时会话进程将根据配置参数及成本估算申请一定数量的工作线程worker processes。其中一个特定的worker被指定为主工作线程leader worker负责协调和汇总其他worker线程的查询结果。主工作线程不仅承担协调任务还会根据实际数据量参与部分并行处理工作。在并行查询执行中Leader工作线程与其他工作线程通过动态共享内存实现通信机制。在并行查询过程中所有其他worker进程包括主工作线程将各自处理的数据结果写入到共享内存区域中。主工作线程负责从共享内存中读取各worker的处理成果并完成最终结果的汇总操作。关于并行的参数参数名称取值范围描述max_worker_processes0 ~ 218 – 1默认值30设置系统支持的最大后台进程数此参数调整后需要重启数据库生效。max_parallel_workers0 ~ 1024默认值8最大并行worker数。该数值不能大于max_worker_processes。max_parallel_workers_per_gather默认值2最大并行执行worker数。不能超过max_parrellel_workers。max_parallel_maintenance_workers默认值2最大并行维护操作 worker数。不能超过max_parrellel_workers。这4个参数之间的关系为max_parallel_workers_per_gather max_parallel_maintenance_workers max_parallel_workers max_worker_processes上述参数中max_parallel_workers_per_gather是最核心的参数直接控制单个SQL的并行进程数需根据CPU核心数合理调整——若设置过大会导致进程争用反而降低性能若设置过小无法充分利用多核资源。并行触发条件参数min_parallel_table_scan_size0~2G默认值8MB表的存储空间至少大于等于该值才有可能触发并行min_parallel_index_scan_size0~2G默认值512KB索引存储空间至少大于等于该数值才有可能触发并行索引并行查询实战postgresql.conf 配置文件设置参数参数配置完成后并行功能即可自动生效优化器会根据表大小、SQL复杂度、参数设置自动评估是否启用并行执行max_worker_processes 16 max_parallel_workers_per_gather 4 # taken from max_parallel_workers max_parallel_worders 8 parallel_tuple_cost 0.1 parallel_setupcost 1000.0 min_parallel_table_scan_size 8MB min_parallel_index_scan_size 612kb force_parallel_mode off怎么来确认是否启用了并行当执行计划里有parallel关键字和gather算子就说明当前的查询使用了并行查询并行顺序扫描create table test_parallel ( id bigint, name character varying(32), create_time timestamp without time zone default now() ); insert into test_parallel(id, name) select nub, nub || _parallel from generate_series(1, 5000000) nub; explain select * from test_parallel where name 1_parallel;位图索引并行扫描CREATE INDEX test_parallel_name ON test_parallel(name); explain select * from test_parallel where name 1_parallel;并行聚合explain select count(*) from test_parallel;这里简单放了几个例子更多可以参考官网。使用并行 | KingbaseES不走并行的问题排查检查并行参数max_parallel_workers_per_gathermax_parallel_workers_per_gather参数允许启用的并行进程的进程数默认值为 2 设置成 0 表示禁用并行查询这个参数会话级也可以修改查看是不是误改了show max_parallel_workers_per_gather;检查表和索引的大小是多少上面我们讲到过两个触发并行的条件参数min_parallel_table_scan_size、min_parallel_index_scan_size如果查询没有使用到并行需要检查表和索引SELECT sys_size_pretty(sys_relation_size(test_parallel)); SELECT sys_size_pretty(sys_rindex_size(test_parallel));体验总结从实操体验来看KingbaseES并行功能的简洁易配、高性能提升、强兼容性能够极大地降低数据库运维人员的工作负担尤其是对于Oracle迁移项目中的DBA而言可快速衔接原有运维习惯无需重新适应新的操作逻辑有效提升迁移后的运维效率。在多核CPU成为信创服务器标配、数据量持续增长的今天并行使用已成为国产数据库不可或缺的核心功能而KingbaseES的并行特性无疑展现了国产数据库在性能优化上的技术实力也打破了“国产数据库性能不如国外数据库”的偏见。当然KingbaseES的并行使用也存在一些可优化之处例如创建索引时候的并行这个oracle做的比较好还有使用hint来使用并行也不如oracle做的好。不过相信随着KingbaseES的不断发展并行功能将进一步优化智能调整能力、拓展复杂场景支持新增更多个性化、智能化的功能充分释放多核硬件的潜力。

相关新闻

AI怎么做表格才放心?联网写好脚本、断网跑真实数据

AI怎么做表格才放心?联网写好脚本、断网跑真实数据

先说结论:AI怎么做表格,关键不在"会不会算",而在三件事——数据能不能留在自己电脑上、重复活能不能不一次次重做、断网的时候还能不能把表跑完。 我前后试过不少在线表格AI,最后留下的是数以轻舟:它把"…

2026/10/3 20:38:39 阅读更多 →
【毕业设计】校园爱心捐赠管理系统的设计与实现

【毕业设计】校园爱心捐赠管理系统的设计与实现

❤小编介绍:小编所在团队为图灵学术中心,我们专注于Java领域,提供程序设计开发、源码分享、技术指导及定制服务。凭借丰富经验和专业团队,满足客户多样化需求。从精准选题到顺利毕业,我们致力于助力大家的技术成长&…

2026/10/3 20:37:37 阅读更多 →
测试负责人推用例自动化,难的不是技术

测试负责人推用例自动化,难的不是技术

【核心摘要】 接口用例自动化这件事,技术门槛在近两年已经大幅下降——多数团队卡住的地方不是"做不到",而是推不动:开发不配合提供上下文、产品经理觉得这是测试自己的事、管理者看不到投入产出。本文从测试负责人的视角&#xff…

2026/10/3 20:37:35 阅读更多 →

最新新闻

OPNET中DSR协议仿真源码编译与调试全指南

OPNET中DSR协议仿真源码编译与调试全指南

简介:本资源是面向无线网络协议研究者、高校通信/计算机专业学生及OPNET仿真初学者的DSR动态源路由协议实践套件,聚焦Ad Hoc网络中路由发现、维护与报文交互的核心机制。压缩包共63个文件,涵盖22个.m模型文件(定义节点行为与协议逻…

2026/10/5 2:56:48 阅读更多 →
基于Python的轻量级睡眠分期AI实现指南

基于Python的轻量级睡眠分期AI实现指南

简介:本资源是一项基于Python实现的深度神经网络睡眠分期检测研究项目,面向人工智能与生物医学信号处理领域的初学者及课程设计、毕设实践者,旨在解决多导睡眠图(PSG)数据自动分期这一典型时序分类问题。压缩包共2005个…

2026/10/5 2:56:48 阅读更多 →
从Token到接口权限:Java后端微信API对接的权限控制实战

从Token到接口权限:Java后端微信API对接的权限控制实战

微信API对接这件事,做Java后端的朋友应该都有体会:半数以上的联调事故,最后都出在Token上。不是微信返回的错误码看不懂,而是自己这套权限体系在并发、续期、多端登录面前先垮了。我前后接过公众号、小程序、企业微信第三方应用&a…

2026/10/5 2:56:48 阅读更多 →
Netty源码解析:Connect与Bind两大操作的核心差异与NIO事件链路

Netty源码解析:Connect与Bind两大操作的核心差异与NIO事件链路

做Netty源码分析,绕不开两个最基础也最容易被混为一谈的操作:客户端的Connect,服务端的Bind。我最初啃源码时也有个错觉:这两个操作不都是“把channel往某个地址上一挂”么?一个连远程,一个绑本地&#xff…

2026/10/5 2:56:48 阅读更多 →
VS Code启动报错Invalid file descriptor to ICU data:原理排查与修复

VS Code启动报错Invalid file descriptor to ICU data:原理排查与修复

多年前第一次见到这行报错时,我正蹲在工位上对着Ubuntu升级提示发呆。前一天还能正常写的项目,第二天双击VS Code桌面图标,窗口闪一下就没了;固执地打开终端敲一句code,屏幕上只剩一行红字:Invalid file de…

2026/10/5 2:56:48 阅读更多 →
图书馆座位预约管理系统实战:从选型到抢座防超卖

图书馆座位预约管理系统实战:从选型到抢座防超卖

简介:这份资源是面向Java初学者与课程设计学习者的图书馆座位预约管理系统完整源码包,基于Java技术实现,可用于毕业设计参考、Web开发练手或教学演示。系统围绕座位状态查看、预约、取消与超时自动释放等核心业务展开,采用表现层、…

2026/10/5 2:55:48 阅读更多 →

日新闻

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 0:00:22 阅读更多 →
AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

1. 从“plugins”这个词说起:它到底在解决什么问题如果你最近在折腾 AI 编程工具,尤其是 Cursor、Codex CLI、Claude Code 这类带 CLI 的编辑器或命令行助手,那你大概率绕不开一个词——plugins。这个词本身不新鲜,从浏览器到 IDE…

2026/10/5 0:00:23 阅读更多 →
第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 TaoToken 的排查清单

第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 TaoToken 的排查清单

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 0:00:23 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/5 1:10:22 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 11:40:45 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 9:43:54 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 20:14:29 阅读更多 →