一. 查询优化
1.统计信息:物理优化的依据,来源于表信息的统计。
物理优化技术点:
①统计信息模型
②行数估算
③代价估算
④路径搜索
2.行数估算:代价估算的基础,来源基表统计信息的推算
3.代价估算:根据关系的行数,推算出当前算子的执行代价
4.路径搜索Access Path Generation
将查询的执行路径转换
通过求解路径最优算法(e.g. 动态规划、遗传算法)处理计划生成PlanTre能够输出给连接路径搜索过程,以最小搜索空间找到最优连接路径.
二. 执行引擎
关系数据库本身是对关系集合Relation的运算操作,执行引擎作为运算的控制逻辑主要是围绕着关系运算来实现的,算子可以分成以下几类:
- 扫描算子(Scan Plan Node)
扫描节点负责从底层数据来源抽取数据,数据来源可能是来自文件系统,也可能来自网络。一般而言扫描节点都位于执行树的叶子 点,作为执行的数据输入来源,典型代表SeqScan、 IndexScan、SubQueryScan
关键特征:输入数据、叶子节点、表达式过滤 - 控制算子(Control Plan Node)
控制算子一般不映射代数运算符,是为了执行器完成一-些特殊的汤 程引入的算子,例如Limit、RecursiveUnion、 Union
关键特征:用于控制数据流程 - 物化算子(Materialize Plan Node)
物化算子一般指算法要求, 在做算子逻辑处理的时候,要求把下层的数据进行缓存处理,因为对于下层算子返回的数据量不可提前孙知,因此需要在算法上考虑数据无法全部放置到内存的情况,例Agg、Sort
关键特征:需要扫描所有数据之后才返回 - 连接算子(Join Plan Node)
这类算子是为了应对数据库中最常见的关联操作,根据处理算法利数据输入源的不同分成MergeJoin,SortJoin,HashJoin.
三.NUMA 内核数据结构
1、线程绑核,避免线程在核间偏移。
2、NUMA化数据结构改造,减少跨核访问。
3、数据分区,减少线程访问冲突。
4、算法调整,减少单点瓶颈。
5、借助ARM原子指令,减少计算开销。
四.大并发问题解决方案
1、 连接池一般在客户端设置, 连接池避免了连接的频繁创建和销毁。连接复用。
2、线程池在数据库服务器上配置,控制数据库服务器活动线程数目。线程复用。对系统的业务起到流控作用,防止出现雪崩。
3、在高并发场景下,可以将连接池和线程池结合起来使用。
五.线程实现原理
1、主线程监听连接请求,分配会话,把会话分配给-个线程组。
2、每个线程池组有一个监听线程负责监听epoll列表中所有的客户连接,避免"惊群”效应。
3、每个线程组可以和一个NUMA节点绑定。
六.MOT
优势1:性能高、CPU利用率高、延迟低
①高度优化的全内存免锁存储引擎
②基于全内存优化实现的免锁索引
③高度优化的并发访问控制
④针对NUMA优化的内存管理,预缓存对象池⑤针对NUMA高度优化的组提交
优势2:生态好、兼容好,功能完整
①有效利用openGauss现有的查询引擎,兼容PG生态
②兼容PG原生FDW和索引,SQL标准兼容度高,功能完整
③除PG原生FDW之外,还支持存储过程,用户自定义函数等




