openGauss 3.1.0 的新型选择率模型大解密
国产数据库openGauss 9.30日新出了3.1.0版本,有哪些新的特性呢?我们计划出个系列详细介绍一下,期望大家多多支持~ 选择率估算作为代价模型行数估算的基础,其准确性影响着优化器查询计划的选取,数据库优化器生成的不同查询计划之间可以达到数个数量级的区别。 文章目录 一、当前经典数据库优化器对于等值查询估计的缺点 二、openGauss的新型选择率模型 三、使用示例 一、当前经典数据库优化器对于等值查询估计的缺点 例如,目前形如a = 1的等值谓词选择率估算可以有以下几种方法:
- 利用统计信息估算:
对查询语句中的等值条件,可分为MCV值和非MCV值进行估算:
对MCV值,使用MCV对应的频率统计信息作为选择率;
对非MCV值,使用如下经验公式:
直接对所有值做均匀假设,不考虑MCV:
- 在线计算:
- 使用Count-Mean-Min Sketch等频率估算方法,在线计算每个常量值的选择率。
在上述方法中,方法1对全部或者部分数据做均匀分布假设,计算量小,优化器负担轻,但估算粗略,对大多数常量选择率估值不准确;方法2对每个常量值都进行单独的计算,计算结果较为准确,但是优化器的计算负担大,将对性能产生影响。
二、openGauss的新型选择率模型 基于上述经典优化器的缺点,在该版本的openGauss数据库中,我们通过调整等值谓词选择率的估算方法,构造出openGauss的新型选择率模型,可以在兼顾准确率与计算量的前提下,进行选择率的估计。该模型原理如下:
对MCV值,使用MCV对应的频率统计信息作为选择率; 对不落入MCV也不落入直方图的值,使用如下公式:
对落入直方图的值 桶左右边界相等,使用桶的数量估算常量选择率: 桶左右边界不等,使用插值方法,估算常量选择率:
新型选择率模型平衡计算量与准确性,充分考虑数据分布情况,通过轻量的计算,能够使得优化器生成更优的执行计划,该特性可通过GUC参数var_eq_const_selectivity控制。
三、使用示例 假设在数据库中表t1由2列组成,分别为列a和列b,其类型均为整型(INT)。向其插入数据,a值为101的数据共有300行,a值为1到100的数据各有100行,a值为150的数据150,000行,a值为200的数据有1行。则表t1由数据库得到的统计信息可如下:
当查询语句为SELECT * FROM t1 WHERE a = 101; 时,可知a落入直方图桶[101,101)中,且与当前桶左右边界相同的桶的总个数为2,则a的选择率为(1 – 0 – 0. 9369) / 100 * 2 = 3.9816e-7。
当查询为SELECT * FROM t1 WHERE a = 11;时,可知a落入直方图桶[11,12)中,该桶在均匀假设的前提下,分配到的distinct值数量为103 / (101 - 1) * (12 – 11) ,则a的选择率为(1 – 0 – 0. 9369) / 100 /(103 / (101 - 1) * (12 – 11) ) = 6.1262e-4。
当查询为SELECT * FROM t1 WHERE a = 200;时,常量值200没有落入MCV,也没有落入直方图的任何一个桶中,则利用t1的总行数160301来预估其选择率,则a的选择率为1 / 160301 = 6.2383e-6。
从上面的示例可以看出,使用新型选择率模型,充分考虑了不同常量值的选择率,其选择率估算能够更加贴近实际值。此外,openGauss还会在数据库的查询优化领域进一步努力,构造业内顶尖的数据库查询优化能力。
openGauss: 一款高性能、高安全、高可靠的企业级开源关系型数据库。
🍒如果您觉得博主的文章还不错或者有帮助的话,请关注一下博主,如果三连收藏支持就更好啦!谢谢各位大佬给予的鼓励!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
eBPF技术实践:加速容器网络转发,耗时降低60%+
背景 Linux 具有功能丰富的网络协议栈,并且兼顾了非常优秀的性能。但是,这是相对的。单纯从网络协议栈各个子系统的角度来说,确实做到了功能与性能的平衡。不过,当把多个子系统组合起来,去满足实际的业务需求,功能与性能的天平就会倾斜。 容器网络就是非常典型的例子,早期的容器网络,利用 bridge、netfilter + iptables (或lvs)、veth等子系统的组合,实现了基本的网络转发;然而,性能却不尽如人意。原因也比较明确:受限于当时的技术发展情况,为了满足数据包在不同网络 namespace 之间的转发,当时可以选择的方案只有 bridge + veth 组合;为了实现 POD 提供服务、访问 NODE 之外的网络等需求,可以选择的方案只有 netfilter + iptables(或 lvs)。这些组合的技术方案增加了更多的网络转发耗时,故而在性能上有了更多的损耗。 然而,eBPF 技术的出现,彻底改变了这一切。eBPF 技术带来的内核可编程能力,可以在原有漫长转发路径上,制造一些“虫洞”,让报文快速到达目的地。针对容器网络的场景,我们可以利用 eBPF,略过 brid...
- 下一篇
BeikeShop 跨境电商独立站系统更新 V1.1,引入插件市场
点击“作者”关注我们 前言:我们历经2年时间打造的BeikeShop独立站 最近升级到了v1.1.0 BeikeShop是一款符合国人使用习惯的好用、开源、免费的电商独立站系统!跨境建站卖家的必备工具!系统完全开源免费可商用! 为什么要做开源BeikeShop独立站? 近些年,做跨境外贸电商的卖家越来越多。我们发现大多数跨境卖家,都在使用国外开发者制作的开源独立站、SaaS独立站 同时我们注意到,很多国外独立站系统或多或少都会存在价格昂贵、没有售后服务、使用起来不顺手等诸多问题 为了能让中国跨境电商卖家,有一个更好用的开源独立站商城系统 作为在开源独立站领域摸爬滚打8年的团队,我们有使命为跨境出海中国卖家们,打造新一代更好用开源跨境电商系统! BeikeShop是一款开源好用的跨境电商系统! 独立站是什么? 是指不依托于第三方技术平台,自行购买服务器、域名,自主安装软件系统程序的网站。简单来说独立站是商家自己安装搭建的网站 与SaaS独立站(例shopify)不同,真正的独立站内容、数据、权益完全私有,存放在自己购买的服务器中,不可被第三方查看。具备独立经营主权和主体责任 ✦✦ 0...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8安装Docker,最新的服务器搭配容器使用
- Linux系统CentOS6、CentOS7手动修改IP地址
- 2048小游戏-低调大师作品
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7,8上快速安装Gitea,搭建Git服务器