FYF
» HerBert
Toggle navigation
FYF
主页
1、用户
2、各种方案
3、备份恢复
4、表空间相关
5、OGG
6、文件管理
7、常见故障分析
8、DG
9、集群相关
HCCDP
实验题
About Me
归档
标签
3、GaussDB 数据库内核原理
无
2025-10-04 22:43:03
4
0
0
admin
# GaussDB 学习与考试核心要点汇总 --- # 1. GaussDB 软件体系架构 ## 一、 核心优势与关键能力 * **高可用**: 支持同城双活/异地容灾,国内首家实现同城双集群RPO=0。 * **关键指标**: 同城RPO=0,RTO<60s;异地RPO<10s,RTO<10min。 * **高性能**: 拥有国内首个自研的In-place Update存储引擎UStore,可实现全天候稳定高性能低时延输出。 * **性能数据**: 单节点达到150万tpmC;分布式环境下32节点可达1500万tpmC。 * **高安全**: 国内唯一获得最高安全认证(源码级)CC EAL4+。具备动态脱敏、统一审计、全密态、防篡改等多维度安全能力。 * **高弹性**: 采用原生分布式架构,支持云化弹性伸缩和秒级在线扩容,能够支持1000+节点的大规模分布式集群。 * **高智能**: 国内首个AI-Native数据库,提供智能索引推荐、智能故障根因分析等功能。 * **易部署易迁移**: 高度兼容Oracle和MySQL,并提供DRS+UGO工具实现一站式“去O”迁移。 ## 二、 体系架构与核心组件 * **部署架构形态**: * **集中式**: 适用于小规模业务,结构简单,成本较低。 * **分布式**: 适用于大規模业务,可水平扩展。 * **集中式架构核心组件**: * **DN (Data Node)**: 数据节点,负责存储业务数据、执行数据查询。 * **CMS (Cluster Manager)**: 集群管理模块,负责管理和监控系统运行,进行主备切换。 * **OM (Operation Manager)**: 运维管理模块,提供日常运维和配置管理的接口与工具。 * **ETCD**: 一致性组件,用于副本一致性仲裁。 * **分布式架构核心组件**: * **CN (Coordinator Node)**: 协调节点,接收应用请求、分解任务并返回结果。 * **DN (Data Node)**: 数据节点,存储数据并执行来自CN的任务。 * **GTM (Global Transaction Manager)**: 全局事务管理器,确保全局事务一致性。 ## 三、 内核架构关键知识点 * **进程与线程模型**: GaussDB采用**单进程多线程**架构,具有启动开销小、通信方便、切换开销小的优势。 * **存储引擎对比 (AStore vs. UStore)**: * **AStore**: 基于**追加更新 (Append Update)**,新旧版本混合存储,适合**插入多、更新少**的场景。 * **UStore**: 基于**原地更新 (In-place Update)**,新旧版本分离存储(历史版本在Undo空间),适合**更新频繁**的场景,空间膨胀和性能抖动较小。 * **闪回功能**: **仅支持UStore存储引擎**。 * **内存管理**: 采用**内存上下文**机制进行内存池化管理,以树形结构组织,能有效防止内存泄漏和OOM。 ## 四、 高可用与分布式事务 * **高可用机制**: * **主备复制协议**: 支持**Quorum协议**(多数派提交)和**Paxos协议**(自选举、自仲裁)。 * **并行回放**: 通过无锁并行日志恢复技术,实现极致RTO**<10s**。 * **ALT (应用无损透明)**: 实现数据库HA切换时应用无感知,将连接切换时间从**分钟级提升至秒级**。 * **分布式事务**: * **写一致性**: 采用**两阶段提交**保证原子性。 * **读一致性**: 使用**GTM-lite**提供全局**CSN (Commit Sequence Number)**快照,替代传统的活跃事务列表,避免性能与事务规模的耦合。 --- # 2. GaussDB 容量规划 ## 一、 容量规划概述 * **定义**: 根据业务负载需求,合理规划GaussDB的**计算、存储、网络**资源。 * **步骤**: 需求收集 -> 分析评估 -> 验证调整 -> 持续运维。 ## 二、 计算资源容量评估 * **核心指标与换算**: * **tpmC**: 每分钟处理的新订单数。 * **tps**: 每秒处理的总事务数。 * **公式**: `1 tpmC = (1 / 0.45) / 60 tps`。 * **评估公式**: **最终业务需求tps = 初始tps × 扩展系数 ÷ 预留系数 × 复杂度系数** * **初始tps**: 对存量业务进行统计,或对新建业务进行估算。 * **扩展系数**: `(1 + 年平均增长百分比) ^ 年数`。 * **预留系数**: 资源利用率控制水位,通常为`0.7`(即预留30%)。 * **复杂度系数**: 用于折算业务与TPC-C模型的差异,通常为“行业经验系数”。 ## 三、 存储资源容量评估 * **数据容量评估**: **最终数据容量 = (初始数据量 × 扩展系数) ÷ 预留系数 + 扩容预留** * **预留系数**: GaussDB磁盘利用率**默认阈值为85%**。超过该阈值,数据库将变为**只读模式**。 * **分片评估**: 如果最终单库数据量 **> 24T**,建议拆分或采用分布式多分片。 * **存储类型与RAID规划**: * **存储形态**: 本地盘 (SAS SSD)、集中式存储 (Dorado)、分布式存储 (Pacific)。 * **RAID建议**: **推荐使用硬RAID**。本地盘部署时,系统盘用**RAID1**,数据盘用**RAID10**。 * **SSD盘RAID Cache策略**: **建议关闭**读写Cache。 * **备份容量评估**: **备份容量 = 自动全量 + 自动差量 + 日志归档 + 手动全量** * `C1 (自动全量)` = `总数据量S × (ceil(保留周期T1 / 备份周期T2) + 1) × 压缩比R`。 * `C2 (自动差量)` = `每日新增D × 保留周期T1 × 压缩比R`。 * `C3 (日志归档)` = `每日新增D × 保留周期T1`。 * `C4 (手动全量)` = `总数据量S × 手动备份个数N × 压缩比R`。 --- # 3. GaussDB 部署形态规划 ## 一、 解决方案形态选型 (HCS vs. 轻量化) * **HCS标准形态**: * **特点**: 全栈云方案,资源全自动化,多租户,初始成本高(至少17台管理节点),硬件兼容性要求严。 * **选型**: 适用于有**云化改造、云原生、资源管理自动化**诉求的场景。 * **轻量化部署形态**: * **特点**: 极致瘦身,只保留核心的数据库管理(TPOPS)和迁移(DRS)能力,初始成本低(3台管理节点),支持**设备利旧**。 * **选型**: 适用于**初始成本要求低**、规模较小、或有**设备利旧**诉求的场景。 ## 二、 分片形态选型 (集中式 vs. 分布式) * **集中式 (单分片)**: * **特点**: 架构简单,易于运维,适合复杂SQL。 * **选型**: 业务SQL改造困难;性能要求 **< 2w tps**;数据总量 **< 24TB**。 * **分布式 (多分片)**: * **特点**: 可线性扩展,支持高并发,但可能需应用改造。 * **选型**: 业务SQL相对简单;性能要求 **> 2w tps**;数据总量 **> 24TB**。 ## 三、 多地部署形态选型 (容灾规划) * **核心指标**: **RPO** (可容忍数据丢失量) 和 **RTO** (可容忍业务中断时长)。 * **容灾等级与架构**: * **5~6级 (RPO≈0, RTO分钟级)**: 采用**两地三中心**或**同城三中心**架构。同城双活依赖**ADR (存储复制)**或**单集群Quorum**机制。网络延迟要求苛刻(同城<2ms,异地<100ms)。 * **3~4级 (RPO/RTO小时级)**: 采用**主机房主集群 + 异地容灾集群**,通过**流式复制**实现。 * **1~2级 (RPO/RTO天级)**: 采用**单集群 + 异地备份**,成本最低。 --- # 4. GaussDB 网络规划 ## 一、 HCS标准形态网络 * **虚拟网络**: * **管理VPC**: 承载管理控制指令,系统内部使用。 * **业务VPC**: 承载业务SQL流量,用户规划创建。 * **物理组网**: * 推荐**增强型裸机网关**,性能好、可靠性高(切换<3s),成本低。 * **IP规划 (VIP)**: * **集中式(二层)**: 所有DN**共用一个VIP**。 * **集中式(三层)**: **每个DN一个VIP**。 * **分布式**: **每个CN一个VIP**。 * **网络平面**: * **集中式网关**: 管理平面(eth0)、业务平面(eth1)、高速平面(eth2)。 * **增强型网关**: 管理/数据平面(eth0)、业务平面(eth1)。 ## 二、 轻量化部署形态网络 * **组网模式**: 单平面、两平面、三平面(虚拟/物理隔离)。 * **IP规划 (重要)**: * **二层互通 (仅集中式)**: 所有DN**共用一个VIP**。 * **三层互通**: **不分配VIP**。应用端需配置所有DN(集中式)或CN(分布式)的**固定IP**。 * **延迟要求**: 机房内<0.25ms;同城<2ms;异地<100ms。 ## 三、 带宽与端口 * **带宽建议**: 管理/业务平面至少**10Gb**;数据平面至少**25Gb**。 * **主要端口**: * **集中式**: DN(8000), ETCD(2379)。 * **分布式**: GTM(6000), CN(8000), DN(4000+)。 --- # 5. GaussDB 安全规划 ## 一、 安全分层模型 遵循纵深防御,分为**应用层、接入层、网络传输层、OS层、数据库层、介质层**。 ## 二、 各层安全建议 * **应用层**: 使用SQL安全插件和审核工具(如UGO),防范SQL注入。 * **接入层**: * **启用SSL**加密连接。 * 应用配置文件中**密码需加密存储**。 * 使用**连接池**管理连接数。 * **网络传输层**: * 使用**防火墙**隔离应用区和数据库区。 * 在驱动端配置**keepalives**,防止长连接被防火墙断开。 * 使用**安全组**并遵循**最小暴露原则**。 * **禁止将EIP绑定到数据库端口**暴露于公网。 * **OS层**: * 使用`cgroup`进行**资源隔离**,`chroot`进行**进程沙箱隔离**。 * 使用不同OS用户运行不同应用,遵循最小权限。 * 定期更新OS补丁,开启OS审计和`iptables`防火墙。 * **数据库层**: * **账号安全**: 强制密码复杂度、有效期、重用规则。 * **访问控制**: 内核支持**RBAC**模型。推荐使用**三权分立**模式,将系统管理员、安全管理员、审计管理员的职责分离。 * **加密方案**: * **透明加密(TDE)**: 存储引擎层加密,性能高,易用。 * **全密态加密**: 驱动(客户端)层加密,安全性最高。 * **审计**: **默认开启,不建议关闭**。 * **介质层**: 多副本、多地域、多介质冗余(如备份到磁带)。 --- # 6. GaussDB 内核原理 - SQL引擎 ## 一、 SQL执行流程 **查询解析 -> 查询重写 -> 计划生成 -> 查询执行** ## 二、 解析器 (Parser) * **流程**: 词法分析 -> 语法分析 -> 语义分析。 * **功能**: 将SQL文本字符串转换为数据库内部可以理解的查询树(QueryTree)。 ## 三、 优化器 (Optimizer) * **查询重写 (逻辑优化)**: 基于关系代数等价变换规则(如谓词下推、子查询提升、外连接消除)对查询树进行优化。 * **路径生成**: * 为查询寻找所有可能的执行路径(Path)。 * **扫描方式**: 顺序扫描(SeqScan)、索引扫描(IndexScan)。 * **连接方式**: 嵌套循环(NestLoop)、哈希连接(HashJoin)、归并连接(MergeJoin)。 * **算法**: 小于12个表时用**动态规划**,大于12个表时用**遗传算法**。 * **计划生成**: * 基于统计信息进行代价估算,从所有路径中选择代价最低的一条,生成物理执行计划(PlanTree)。 * **分布式计划**: * **STREAM算子**: 用于DN间数据交换,分为**Gather (N:1)**、**Broadcast (1:N)**、**Redistribute (N:N)**。 * **统计信息**: * 描述数据分布特征,是代价估算的基础。包括表/列级别信息,如**高频值(MCV)**和**直方图**。 * **计划管理**: * **Plan Hint**: `/*+ ... */`语法,手动干预执行计划。 * **SQL Patch**: 将Hint固化到特定SQL语句上(通过Unique SQL ID)。 * **SPM (SQL Plan Manager)**: 自动捕获、选择和演进执行计划,防止性能劣化。 ## 四、 执行器 (Executor) * **执行模型**: 采用迭代器模型(火山模型),上层算子调用下层算子获取数据。 * **算子类型**: 扫描算子(Scan)、控制算子(Control)、物化算子(Materialize)、连接算子(Join)。 * **向量化执行**: 将一次处理一行数据(Tuple)的模式优化为一次处理一批数据(VectorBatch),大幅减少函数调用开销,提升CPU缓存效率。 * **PBE (Parse-Bind-Execute)**: 用于预编译语句(Prepared Statement),减少重复解析开销。 * **CPlan (Custom Plan)**: 每次执行都根据具体参数重新生成计划,计划最准但有开销。 * **GPlan (Generic Plan)**: 使用通用计划,可被复用,无生成开销但可能因参数变化导致计划非最优。 * **策略**: 默认前5次执行生成CPlan,第6次生成GPlan并与CPlan平均代价比较,决定后续策略。 --- # 7. GaussDB 内核原理 - 存储引擎 ## 一、 数据与文件管理 * **存储格式 (Astore vs Ustore)**: * **Astore (Append-update)**: 更新操作是在页面追加新版本元组,并将旧版本标记为删除。适合插入密集型场景。 * **Ustore (In-place update)**: 更新操作在原元组位置上直接修改,并将旧版本信息存入**Undo空间**。垃圾数据集中管理,性能更平稳,适合更新密集型场景。**Ustore是默认引擎**。 * **文件管理方式**: * **页式管理**: 一个数据库对象(如表、索引)对应一个数据文件。在对象数量巨大(如大量分区表)时,会产生过多物理文件,影响性能。 * **段页式管理**: 多个数据库对象(段)共享一个数据文件。通过Segment、Extent、Page等多级结构管理空间,有效解决了“文件数过多”的问题,**适用于分区表或HashBucket表等场景**。 ## 二、 索引 (Index) * **B-Tree索引**: GaussDB主要支持的索引类型。 * **索引扫描方式**: * **Index Scan**: 通过索引找到元组位置(TID),再回表查询数据。 * **Index Only Scan**: 查询所需数据全部在索引中,无需回表。 * **Bitmap Scan**: 适用于多个索引条件组合查询。先通过每个索引生成一个位图,然后对位图进行AND/OR运算,最后统一回表。 * **分区表索引**: * **LPI (Local Partition Index)**: 每个分区上独立建一个索引,维护成本低。 * **GPI (Global Partition Index)**: 在整个表上创建一个跨所有分区的全局索引,适合跨分区查询。 ## 三、 日志管理 (WAL) * **WAL (Write-Ahead Logging)**: 预写日志机制。任何数据修改前,必须先将描述该修改的日志记录写入持久化存储,以此保证事务的持久性(Durability)和原子性。 * **检查点 (Checkpoint)**: 定期将内存中的脏页刷盘,并记录一个恢复点。当数据库崩溃重启时,只需从此检查点开始重放WAL日志即可,大大缩短恢复时间(RTO)。 * **全量检查点**: 刷盘期间I/O压力大,易产生业务抖动。 * **增量检查点**: 通过后台线程平滑、持续地刷脏页,业务更平稳,RTO更短。**GaussDB默认使用增量检查点**。 * **极致RTO**: 通过建立多级日志回放流水线,将备机日志回放并发度提高到页面级,使主备切换后备机能在10秒内接管业务。 ## 四、 事务管理 * **ACID**: 原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。 * **并发控制**: * **MVCC (多版本并发控制)**: 解决**读-写冲突**。写操作会创建新版本的数据,读操作访问旧版本的数据,两者互不阻塞。 * **2PL (两阶段锁)**: 解决**写-写冲突**。并发的写事务在修改同一行记录时,必须通过锁机制进行排队等待。 * **快照与可见性**: * GaussDB使用**CSN (Commit Sequence Number)**时间戳法来确定事务的快照。每个读事务获取一个快照时间戳,只能看到在该时间戳之前已提交的事务所做的修改。 * **锁机制**: * **常规锁**: 表级锁(1-8级),用于控制DDL、DML等操作的并发。 * **轻量级锁 (LWLock)**: 用于保护共享内存等内部数据结构的短期访问,无死锁检测。 * **分布式事务**: * 当一个事务修改了不同DN上的数据时,会产生分布式事务。 * 通过**两阶段提交协议 (2PC)**保证其原子性。 * **GTM-Lite**: 高性能全局事务管理器,通过线程池、原子CSN分配等技术,避免GTM成为单点性能瓶瓶颈。 --- # 8. GaussDB 内核原理 - 数据库智能化领域 ## 一、 DBMind (自治运维平台) * **架构**: 由采集组件(exporters)、时序数据库(TSDB)、元数据库和DBMind Service组成。 * **自监控**: * **智能巡检**: 支持29项巡检,输出健康评分。 * **指标异常检测**: 基于10种统计学算法(如阈值、均值漂移、分位数检测)自动发现指标模式异常。 * **自诊断**: * **慢SQL诊断**: 使用**KNN算法**对慢SQL进行根因定位,准确率达99%以上。 * **集群异常诊断**: 基于海量现网日志数据预训练的**XGBoost决策树模型**,秒级定位集群异常根因。 * **自优化**: * **索引推荐**: 基于Workload,利用**虚拟索引**进行代价分析,推荐最优索引组合。 * **分布键推荐**: 针对分布式场景,基于图算法推荐最优分布键。 * **参数调优**: 结合**深度强化学习**和全局优化算法,自动推荐参数配置。 ## 二、 ABO (智能优化器) * **多列统计信息基数估计**: 传统优化器假设列独立,导致多列条件查询基数估算不准。ABO使用**Chou-Liu树算法(贝叶斯网络)**拟合数据分布,更准确地估计多列相关性。 * **基于实时反馈的自适应计划选择**: * **原理**: 收集SQL执行后的真实信息(如算子返回行数),与优化器的估算值进行对比。 * **计划演进**: 当发现基数/代价估算存在较大偏差时,后端线程会训练模型或校准代价参数,在后续查询中生成更优的计划。 * **智能缓存计划管理 (APlan)**: * **问题**: 通用缓存计划(GPlan)对数据倾斜场景不友好,一个计划可能不适用于所有参数。 * **解决方案**: **缓存多个计划版本 (APlan)**。执行时根据入参计算选择率特征,快速匹配到最合适的已缓存计划。 ## 三、 DB4AI (内置AI计算底座) * **目标**: 数据不出库即可完成数据分析和AI模型训练/预测,消除数据搬运环节。 * **核心语法**: * **`CREATE MODEL`**: 训练模型。 * **`PREDICT BY`**: 使用已训练的模型进行预测。 * **`gs_explain_model`**: 查看模型信息。 * **原理**: 用户通过SQL语法触发AI任务,执行器调用DB4AI算法库中的函数进行计算。训练好的模型保存在系统表`gs_model_warehouse`中。 * **分布式执行**: 对于迭代式算法,执行计划中会增加**物化算子**来缓存数据,加速迭代;通过**Broadcast**算子在各DN间同步梯度等模型信息,保证各节点模型最终一致。 --- # 9. GaussDB 内核原理 - 公共组件 ## 一、 集群管理 (CM) * **核心组件**: * **cm_server (CMS)**: 服务端,作为仲裁中心和全局配置中心,通过ETCD实现主备和自选主。 * **cm_agent (CMA)**: 部署在每个节点,负责管理本节点实例的状态检测、上报和命令执行。 * **om_monitor**: 保活进程,负责保障本节点CMA和ETCD进程的健康。 * **启停流程**: 通过在`$GAUSSHOME/bin`目录下创建或删除`cluster_manual_start`和`etcd_manual_start`文件来控制om_monitor和cm_agent的行为,从而实现对整个集群的启停控制。 * **监控**: CMA负责对实例(DN/CN/GTM)、网卡、磁盘、端口等进行状态检测和通用检测,并将信息上报给CMS。 ## 二、 集群仲裁 * **DN仲裁模式**: * **Quorum模式**: * 由**CMS作为中心化仲裁**。 * 原理: `W + R > N` (写入副本数 + 读取副本数 > 总副本数),保证多数派中一定包含最新数据。 * 缺点: RTO较大,依赖ETCD等第三方组件。 * **DCF模式 (Paxos协议)**: * **DN自仲裁**,DCF模块集成在每个DN中。 * 原理: 基于Paxos共识算法,节点间心跳超时后自动发起选举,获得多数派投票的节点成为新主。 * **优势**: 1. **RTO小**(默认3秒超时,6秒内可完成切换)。 2. **简化部署**,无需ETCD等第三方仲裁组件。 3. **避免不必要的build**,新主会自动修复旧主的日志分叉,保证强一致性。 * **CN/GTM仲裁**: * **CN故障**: 当CM检测到某个CN连续故障(默认25s),会将其从集群中**剔除**(更新pgxc_node),保证DDL等操作不受影响。故障恢复后可自动加回。 * **GTM故障**: CM检测到主GTM故障后,会将备GTM提升为主(failover/switchover),并通知所有CN更新连接。 ## 三、 高可用特性 * **Logger节点**: 一种轻量化数据库节点,只接收日志,不存储数据表,不做回放。用于在保证RPO=0的前提下,以更低的资源成本(相比标准备机)凑足Quorum或Paxos的多数派。 * **自动升降副本**: 当某个副本故障,CMS会自动将其从同步列表中移除(降副本);当它恢复后,会自动进行数据重建并加回到同步列表(升副本)。 * **AZ网络隔离仲裁**: 当发生AZ间的网络分区时(单边或双边隔离),集群能够通过仲裁机制判断哪个分区拥有多数派,并让该分区继续提供服务,隔离少数派分区以防脑裂。
上一篇:
2、表空间管理
下一篇:
3、GaussDB数据库高级SQL
0
赞
4 人读过
新浪微博
微信
腾讯微博
QQ空间
人人网