GaussDB(DWS)琐碎小知识整理
1、GaussDB
- 多:超大集群:Shared-Nothing架构+独创的大规模集群通讯技术,最大支持1024节点,支持在线扩容。
- 快: 并行计算架构:充分利用集群中所有资源,提供极致分析性能,且随着集群规模扩展性能线性增长。 行列混存,极速查询分析:行列混存+向量化执行, 并行Bulk Load,数据快速入库。
- 好: 全组件HA:无单节点故障,支持跨DC容灾。 租户隔离:租户资源隔离,适合运营商多部门多业务场景。
- 省: 开放架构:X86、ARM服务器部署,降低TCO。 标准SQL, 平滑应用迁移: 兼容标准ANSI SQL92、SQL2003应用改造小, 提供Oracle、Teradata语法迁移工具。
- OM:运维管理模块:提供日常运维、配置管理的管理接口、工具。
- CM:集群管理模块:管理和监控分布式系统中各个功能单元和物理资源的运行情况,确保系统稳定运行全局事务控制器。
- CN:协调节点 负责接收来自应用的访问请求,并向客户端返回执行结果。 CN负责分解任务,并调度任务分片在个Data Node上并执行。
- GTM:全局事务控制器:负责生成和维护全局事务ID、事务快照、时间戳等需要全局唯一的信息。
- WLM:工作负载管理器:控制系统资源的分配,防止过量业务负载对系统的冲击而导致业务拥塞和系统崩溃。
- DN:数据节点:负责存储业务数据、执行数据查询任务以及向CN返回执行结果。
- Storage:服务器的本地存储资源:持久化存储数据。
2、集群管理模块 - CM
CM:由CM Agent、OM Monitor和主备CM Server组成。
- CM Agent:负责监控所在主机上所有实例的运行状态并将状态上报给CM Server。同时只负责执行CM Server下发的仲裁指令。集群的每台主机上均有CM Agent进程。
- OM Monitor:看护CM Agent的定时任务,其唯一的任务是在CM Agent停止的情况下将CM Agent重启。如果CM Agent重启不了,则整个主机不可用,需要人工干预。
- CM Server:根据CM Agent上报的实例状态判定当前状态是否正常,是否需要修复,并下发指令给CM Agent执行。
3、全局事务管理 - GTM
GTM:全局事务管理,负责生成和维护全局事务ID、事务快照、时间戳等全局唯一的信息。
GTM高可靠采用Active-Standby模式。主故障时,备自动升主继续提供服务,并有相关告警上报进行提示。
4、协调节点 - CN
CN:负责接收来自应用的访问请求,并向客户端返回执行结果。负责分解任务,并调度任务分片在各DN上并行执行。
多CN Active-Active模式HA。
- CN间角色对等,用户连接到任何一个CN上都可以得到一致的结果。 某CN故障时,负载均衡自动将连接负载到其他CN。故障CN上未完成的事务会全部回滚,只需重新执行失败作业。
- 由于DDL需要更新所有DN上的元数据,所以有CN故障时,整个集群将无法执行DDL,直至CN被修复。为不影响DDL的执行,GaussDB 200支持故障CN自动剔除。
5、数据节点 - DN
DN:负责存储数据,执行数据查询任务以及向CN返回执行结果。
DN提供了主、备、从备的高可用方案。主、备、从备部署在不同的集群节点上。
- 主、备间保持实时同步,主故障时,备自动升主,继续提供服务,并有相关告警上报进行提示。
- 从备DN不存储数据,只存放备DN故障时主DN同步到从备的Xlog数据。
- 从备DN为数据的可靠性再加一道保险——备DN故障后,如果在恢复备DN期间,主也故障了,则在备修复后,备升主,并根据从备上的日志进行数据恢复,快速支撑业务运行。
6、双AZ集群
存在主集群和灾备集群:
- 主集群提供正常服务,灾备集群只同步数据;
- 灾备集群不同步数据时,可以提供只读服务;
- 主集群不可用时,灾备集群提供正常服务。
7、数据存储
- 存储步骤:
1) 解析器从客户端应用获取输入的数据;
2) 解析器对数据进行解析后,将数据分发给各个处理单元进行处理;
3) 各个处理单元把接受的记录存储到它自己的逻辑磁盘中;
4) 每一个处理单元的逻辑磁盘可以是一个磁盘阵列中的多块物理磁盘。
- Hash分布和Replication复制
GaussDB 数据库中一般根据分布键的哈希值来确定记录分布在哪个节点上,分布键一般在建表时指定,如果没有指定,系统根据一定规则选择默认字段作为分布键,复制(Replication)方式 将元组复制到所有节点上。 适用于表数据量较小、需要提升并发分析性能的场景。
8、数据查询
步骤:
1) 解析器将获取到的查询命令分发给各个处理单元;
2) 各个处理单元并行定位到查询的记录并返回给解析器;
3) 解析器将查询结果进行合并,将最终查询结果展示到客户端。
9、数据分区管理
在一个节点内部对数据按照用户指定的策略对数据做进一步的水平分表,将表按照指定范围划分为多个数据互不重叠的部分(Partition)。用户在CREATE TABLE时增加PARTITION参数,即表示针对此表应用数据分区功能。
- 水平分表:将表的数据均分
- 垂直分表:表的记录不多,字段很长,表占用空间大,检索表的时候需要执行大量的IO,严重降低了性能。这时需要把大的字段拆分到另一个表,并且该表与原表是一对一的关系。
改善可管理性
- 利用分区,可以将表和索引划分为一些更小、更易管理的单元。这样,数据库管理员在进行数据管理时就能采取“分而治之”的方法。
- 有了分区,维护操作可以专门针对表的特定部分执行。
- 可提升删除操作的性能 删除数据时可以删除整个分区,与分别删除每行相比,这种操作非常高效和快速。 删除分区表与删除普通表的语法一致,都是通过DROP TABLE语法进行删除。
- 改善查询性能:通过限制要检查或操作的数据数量,分区可带来许多性能优势。
- 点赞
- 收藏
- 关注作者
评论(0)