GaussDB数据库的逻辑架构
分析GaussDB性能问题前,先简单介绍一下逻辑架构。GaussDB分布式数据库包括下面的一些组件:
- OM运维管理组件,负责日常的运维和管理操作,例如安装、升级、节点替换等;
- CM集群管理组件,负责集群、节点和实例级别启停,集群状态查询、选主、主备切换等;
- GTM全局事物管理器,负责生产和维护全局事务ID、快照、sequence等全局唯一信息,确保全局事务一致性;
- CN协调节点,负责接收应用的访问请求,并将结果返回给客户端,在CN中完成SQL解析和优化后,将计划下发到各DN执行;
- DN数据节点,负责存储业务数据,执行数据查询业务,并返回执行结果;
- ETCD一致性组件,存储集群的拓扑状态和信息,主备状态信息,全局事务ID和sequence依赖ETCD,CMS自身仲裁和CMS对数据库组件的仲裁依赖ETCD。后续ETCD将改为自研组件DCC分布式配置中心来存储集群配置信息。这里面影响业务查询的核心组件是GTM、CN和DN组件。
GaussDB的查询处理流程
了解GaussDB架构后,我们简单梳理一下查询处理流程,拆解到每个模块,我们展开一下每个模块的功能和性能关注点。
- 查询解析模块,将SQL文本翻译为解析树,这里面的性能主要因素是词法、语法、语义分析效率,用到技术包括模板查询免解析,PBE模式绑定变量方式执行。
- 查询优化将进行逻辑优化和物理优化,最终生成物理计划,性能核心点是高效计划生成,包括计划缓存、重写规则、基数估计、代价估计准确率等。
- 在查询执行阶段,执行查询计划,并将结果返回;这里面性能核心点包括SMP并行执行、分布式执行、基于编译技术的算子执行、表达式计算等。
- 在查询时进行数据读取,性能涉及存储引擎的多个模块,包括高效的存储数据、并发控制、事务能力等。最终所有各阶段的执行消耗综合,决定了查询端到端性能。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。