openGauss —— 智能优化器之基数估计

openGauss —— 智能优化器之基数估计

现代数据库优化器主要依赖于其内部的代价估计系统,而代价估计最重要的依据就是查询算子的基数,即数据通过算子内查询条件过滤之后剩余的结果行数。因此基数估计技术是影响优化器产生的执行计划性能最关键的技术。学术界和工业界针对基数估计技术研究和发展了几十年,但是由于基数估计需要兼顾准确性和效率,到目前为止其依然是数据库中最难解决的课题之一,被称为是优化器的“Achilles heel”。

当前数据库为了高效估计多列复合查询条件的基数,广泛采用了基于独立性假设的多列数据分布刻画的技术,比如假设X,Y,Z列的联合分布为P(X,Y,Z)=P(X)P(Y)P(Z)。这种方式可以估计出多列查询基数的下界,但是往往会严重偏离真实的基数,导致优化器无法选中正确的执行计划。针对这个问题,数据库领域提出过很多多维数据的分布刻画技术,比如多列直方图,神经网络建模等技术,但在实际落地中遇到很大的性能方面的挑战。

openGauss本次开源的智能基数估计特性采用了一种分布自适应的内核原生多列数据分布刻画方法,其首先利用数据列相关性进行数据分布感知,然后根据分布构建对应的概率图模型**。**

具体来说,图模型中的每个节点都是一列数据,节点之间的边表示节点之间的相关关系。对于相关性不强的数据列,在图模型中也是独立且不相关的,此时的基数估计等价于利用独立性假设进行估计;而如果识别出列之前有强相关性(即一列数据的取值分布依赖于另一列),那么图模型会综合考虑两列的联合分布;而对于更多列的联合分布,为了避免指数级别的空间复杂度增长,openGauss采用了条件独立性假设,比如三列数据X,Y,Z分布相关,但是一旦将Y取值固定,X和Y的分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值