从Approx_Count_Distinct到M7的CPU集成

昨天和朋友交流,联想起Oracle的两个特性,approx_count_distinct 和 SQL in Silicon,从软件到硬件,从典型SQL入手的优化,Oracle一步一步走向细节和性能的极致

在Oracle 12c中,有一个新的函数被引入进来 - approx_count_distinct 。这个函数的作用是,当我们进行Count Distinct计算时,给出一个近似值。

TOM说,这个函数会带来5x ~ 50x的性能提升,精度可以达到97%以上。在不需要绝对精确的返回值时,这个函数可以发挥其显著的功效。

这个估算值不绝对精确,但是在很多情况下足够,又可以极大的节省资源。在很多系统中,COUNT DISTINCT是个常见的操作,如果使用这个函数,则可能带来很好的性能改善。

以下是我非常简单的一个测试,可以看到基本的效果:

在简单的小数据量测试中,很可能看不到几十倍的改变。approx_count_distinct在大数据量下的表现会非常好,资源使用非常低,极其稳定

以下几张图引自数据库专家 Christian Antognini的测试,网页链接如下:

https://antognini.ch/2014/10/the-approx_count_distinct-function-a-test-case/

以下两图可以看到近似计算在大数据量下的响应时间稳定,内存消耗很少,这在大数据量的计算环境下,改进是显著的:

而且,这个估算值的偏差很小,如同TOM所有,通常97%的准确性,并且有信心达到95%,下图也很好的验证了这个偏离范围:

这让我联想到Oracle的M7处理器,其中的Software / SQL IN Silicon,Oracle进一步将那些常见的COUNT取值SQL固化进了CPU,进一步为用户带来10几倍的性能提升

count(*) 和 count distinct 都是非常常见的操作,也很消耗资源。从常见、常用的SQL入手,Oracle的一点点改进都会给用户带来帮助,在细节上的优化Oracle做到极致了。

原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2015-12-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏应兆康的专栏

我用爬虫爬取了“腾讯云技术社区“所有的文章,看看我得到了什么

这次我通过利用 Python 爬虫加上一个"不完美"的分词系统,构建了腾讯云技术社区所有文章的词云,嘻嘻嘻:)

3843
来自专栏CSDN技术头条

程序员等电梯时竟然想这事儿

今天就为大家科普一下电梯调度算法,为在等电梯之余,打发时间做出一点贡献。(电梯调度算法可以参考各种硬盘换道算法,下面内容整理自网络)

1244
来自专栏瓜大三哥

FPGA内部资源介绍

2612
来自专栏月色的自留地

大恒工业相机多实例使用

1845
来自专栏软件

Lumion4.0安装图解

链接:https://pan.baidu.com/s/1ge7PaYv 密码:ast4 lumion4.0.2是一款辅助Quest3D的工具,主要作用是实现3d...

1825
来自专栏机器人网

基于嵌入式Linux的移动机器人控制系统

随着科学技术的发展和社会的需要,移动机器人技术得到了迅速发展,正在渗透到各行各业中,使人们的生活更加便利。现今以单片机为核心的移动机器人存在处理数据量有限、控制...

4095

SQL数据发现与分类

新版本的SQL Server Management Studio(v17.5)增加了一项新功能:SQL数据发现和分类。你可能还记得,在SSMS 17.4中,添加...

3014
来自专栏Data Analysis & Viz

图表太丑怎么破,ECharts神器带你飞!

在本专栏或文集中,我曾多次使用ECharts绘制图表、进行可视化,也渐渐积累了30多个实例,本文对此前用过的所有图表和代码进行整理并分享,以给想绘制精美图表的人...

3072
来自专栏SAP最佳业务实践

SAP最佳业务实践:MM–批次管理的库存物料采购(901)-1业务概览

用途 我们的目的是描述与批次管理的库存物料采购相关的业务流程。目标组是仓库人员和财务。 处理流程中涉及的公司角色: 采购员 仓库管理员 应付会计 包含的关...

3364
来自专栏大数据挖掘DT机器学习

机器学习数据采集入门经验分享

在新的一年里,很多人都在思考如何利用机器学习(ML)算法来提高产品或服务的质量。 PredictionIO公司与许多公司合作,部署他们的第一个ML系统和大数据基...

3958

扫码关注云+社区