本文中涉及到的GaussDB SQL调优计谋仅实用于集中式部署环境,不实用于分布式部署环境。
SQL调优基础
SQL实行算子
GaussDB数据库实行SQL流程分解如下:
Query => 语法和词法解析 => 语义解析 => 查询重写 => 查询优化 => 查询实行 => 结束
实行引擎由一些实行算子、表达式等构成,主要是对关系集合举行运算,最终输出结果集。算子可以分为以下几类:
- 扫描算子(Scan Plan Node):扫描节点负责从底层数据泉源抽取数据,数据泉源大概是本地文件系统,也大概来自网络。扫描节点一样寻常都位于实行树的叶子节点,作为实行的数据输入泉源。典型代表包括 SeqScan、IndexScan、SubQueryScan。
扫描算子の关键特征:数据输入、叶子节点、表达式过滤
- 控制算子(Control Plan Node):一样寻常不映射代数运算符,是为了实行器完成一些特别的流程而引入的算子。例如 Limit、RecursiveUnion、Union。
控制算子の关键特征:用于控制数据流程
- 物化算子(Materialize Plan Node):一样寻常是算法要求,在做算子逻辑处置惩罚时,要求把下层的数据举行缓存处置惩罚。由于对下层算子返回的数据量不可提前预知,因此需要在算法上考虑数据无法全部放到内存中的环境。例如 Agg、Sort。
物化算子の关键特征:需要扫描全部数据之后才返回
- 毗连算子(Join Plan Node):是为了应对数据库中最常见的关联操作,根据处置惩罚算法和数据输入源的差别分成 MergeJoin、NestLoop Join、HashJoin。
毗连算子の关键特征:关联查询
SQL统计信息
数据库统计信息即表、索引和列等对象的元数据信息,例如物理页数、行数、唯一值、数据特征(直方图、MCV)等。统计信息提供了数据分布和选择性的有关信息,是优化器选择实行筹划的紧张依据。
GaussDB目前网络统计信息的方式:定期分析和长期化到数据字典中。因此统计信息一样寻常不是实时的,但是可以通过实行ANALYZE相关语句来强制更新。
|