在Oracle 11g中,已经添加APPROX_COUNT_DISTINCT函数,但相关文档中没有体现,用于提高使用DBMS_STATS包收集统计信息时计算不同值(NDV)数量的速度。 Oracle数据库12c(12.1.0.2)中,文档中已经包含了此函数,因此我们可以在应用程序中将其作为支持的SQL函数使用。
昨天和朋友交流,联想起Oracle的两个特性,approx_count_distinct 和 SQL in Silicon,从软件到硬件,从典型SQL入手的优化,Oracle一步一步走向细节和性能的极致。 在Oracle 12c中,有一个新的函数被引入进来 - approx_count_distinct 。这个函数的作用是,当我们进行Count Distinct计算时,给出一个近似值。 TOM说,这个函数会带来5x ~ 50x的性能提升,精度可以达到97%以上。在不需要绝对精确的返回值时,这个函数可以发挥其
我们知道,Calcite一般会有四个阶段:parse、validate、optimize和execute。其中,在parse和validate阶段,会生成一个parse tree,树中的节点都是SqlNode的类型。在optimize节点,Calcite会将parse tree转换为RelNode,同时进行一些优化,这属于logical plan。最终在execute阶段,将logical plan转换为物理执行计划来执行。Calcite目前提供了一些方言转换的功能,可以将SqlNode和RelNode转成指定计算引擎的SQL方言,例如Mysql、Presto等,相关的方言转换类如下所示:
通常在使用大型数据集时,你可能关注的只是近似值而不是准确值,这时可以使用 approx_count_distinct 函数,并可以使用第二个参数指定最大允许误差。
在 2017 Oracle OpenWorld大会上,关于 Oracle 18c 的一系列新特性已经被披露出来,借助分散在各个会场的公开分享主题和内容、OOW提供的PPT下载,我们和大家抢鲜分享一下 18c 中极具吸引力的新特性。 注意:标题里提到的10仅为约数,文章中提到的新特性不仅10个,分列也只是为了阅读便利,这些特性可能随着版本发布发生改变,仅供参考。 1.自治数据库 - Autonomous Database 首先,从最高级别上,Oracle 18c 将是一个『自治数据库 - Autonomou
今天上午在恩墨学院进行了一个简短的分享,引用了多年前我的一页PPT,其中记录了我对DBA日常工作的建议。 虽然这7点内容来自多年以前的总结,但是在今天仍然具有指导意义,我稍微做了一点补充和修订,在此分
预聚合是高性能分析中的常用技术,例如,每小时100亿条的网站访问数据可以通过对常用的查询纬度进行聚合,被降低到1000万条访问统计,这样就能降低1000倍的数据处理量,从而在查询时大幅减少计算量,提升响应速度。更高层的聚合可以带来进一步的性能提升,例如,在时间维按天聚合,或者通过站点而不是URL聚合。
初入数据库之门的朋友们,总是关心如何能够快速提高,不断进步,事实上任何一个技术方向,都没有太多的捷径可走,勤奋与坚持必不可少,但是有一些方法和他人的经验可做借鉴,砥砺自我。 在本周“云和恩墨大讲堂”的
杨廷琨,网名 yangtingkun 云和恩墨技术总监,Oracle ACE Director,ACOUG 核心专家 老杨带你用SQL解释经典的扑克牌魔术 ---- 一个偶然的机会在电视上看到一个有关扑克牌的魔术,觉得很有意思。这个魔术明显不是靠手快或者做假来实现的,奥妙在于魔术中包含了数学原理。 一个魔术 首先描述一下这个魔术,有兴趣的话,可以按照这个方法试一试。 从一副扑克牌中随意抽取21张牌。让观众从这些牌中随意选择一张,这张牌就是最后通过魔术需要找到的目标牌。让观众牢记后将其放回到其余20张
Oracle是否适合存储大量的非结构化数据?典型的成功案例是怎样的? 前一段就有朋友向我咨询这样的问题,就 Oracle存储大对象(LOB)的能力、性能和成功案例,我咨询了 Oracle ,提供了一个成功案例在此分享给大家。 英国桑格研究院(Wellcome Trust Sanger Institute)是世界上最重要的生物技术研发中心之一,同时也是将基因研究转化为商业用途的重要基地,目前人类基因研究项目正在该研究院进行。 桑格研究院使用 Oracle 数据库 LOB 形式存储生物基因信息,最新数据是存储
Oracle Database 12.2 已经让广大粉丝望眼欲穿,虽然文档已然发布,但是实验无从做起。 现在,可以通过 Oracle Live SQL 站点(文末原文链接指向该站点),在线体验Orac
有很多DBA朋友在入门时总觉得不得路径,长久的徘徊于门外,而过来人的经验又往往高屋建瓴难以落地,两者总觉得难以对接起来,如何才能解决这个问题呢? 我一直推荐的学习方法,之前在文章 DBA入门之路:学习与进阶之经验谈 中就有描述。如果能讲这些方法和实践一一对应起来,我想就可以更形象的帮助一些朋友。结合今天的一个小案例,和大家做一个分享。 回顾:由点及面由浅入深的学习方案 我一直主张"由点到线再及面"的学习方法。特别是对于初学者,如果没有经过专门的培训和系统学习,那么自己通过实践的学习和思考就应当深入,在知识
doris执行异常:[Err] 1064 - errCode = 2, detailMessage = cannot combine SELECT DISTINCT with aggregate functions or GROUP BY
1)合理设置分区 与Hive类似,Presto会根据元信息读取分区数据,合理的分区能减少Presto数据读取量,提升查询性能。 2)使用列式存储 Presto对ORC文件读取做了特定优化,因此在Hive中创建Presto使用的表时,建议采用ORC格式存储。相对于Parquet,Presto对ORC支持更好。 3)使用压缩 数据压缩可以减少节点间数据传输对IO带宽压力,对于即席查询需要快速解压,建议采用Snappy压缩。 4)预先排序 对于已经排序的数据,在查询的数据过滤阶段,ORC格式支持跳过读取不必要的数据。比如对于经常需要过滤的字段可以预先排序。
杨廷琨,网名 yangtingkun 云和恩墨技术总监,Oracle ACE Director,ACOUG 核心专家 用SQL为解析一道数学题 ---- Oracle的SQL语句功能强大,它可以实现一些你意想不到的功能。比如下面这个数学问题,如果使用常规的数学方法进行手工分析将会十分麻烦,而使用SQL来求解则要简单得多。且看杨廷琨用一个SQL解析一道数学难题。 问题提出 这是一个流传已久的故事: Gauss和Poincare在天堂相遇了,上帝说:你们都是人间最伟大的数学家,那我来出道题考考你们谁更聪明
由于存储的特性,选择需要的字段可加快字段的读取、减少数据量。避免采用*读取所有字段。
作者 | 邓刚、陈晨、周飞强、冯广远、严旭东、朱寒婷、史修磊、金一丹 数据服务是数据中台体系中的关键组成部分。作为数仓对接上层应用的统一出入口,数据服务将数仓当作一个统一的 DB 来访问,提供统一的 API 接口控制数据的流入及流出,能够满足用户对不同类型数据的访问需求。 电商平台唯品会的数据服务自 2019 年开始建设,在公司内经历了从无到有落地,再到为超过 30+ 业务方提供 toB、toC 的数据服务的过程。本文主要介绍唯品会自研数据服务 Hera 的相关背景、架构设计和核心功能。 背景 在统一数仓
数据服务是数据中台体系中的关键组成部分。作为数仓对接上层应用的统一出入口,数据服务将数仓当作一个统一的 DB 来访问,提供统一的 API 接口控制数据的流入及流出,能够满足用户对不同类型数据的访问需求。
Hive使用MapReduce作为底层计算框架,是专为批处理设计的。但随着数据越来越多,使用Hive进行一个简单的数据查询可能要花费几分到几小时,显然不能满足交互式查询的需求。
崔华,网名 dbsnake Oracle ACE Director,ACOUG 核心专家 编辑手记:感谢崔华授权我们独家转载其精品文章,也欢迎大家向“Oracle”社区投稿。 哈希连接(HASH JOIN)是一种两个表在做表连接时主要依靠哈希运算来得到连接结果集的表连接方法。 在 Oracle 7.3之前,Oracle 数据库中的常用表连接方法就只有排序合并连接和嵌套循环连接这两种,但这两种表连接方法都有其明显缺陷: 对于排序合并连接,如果两个表在施加了目标 SQL 中指定的谓词条件(如果有的话)后得到
1.3 优化思路:既然将要执行的查询是按照 dt, strategy, ab_group, source 这4个字段分组, 那么在建表的时候,就按这四个字段中的N个(1 或 2 或 3 或4)个字段组合分区,直接让 count(distinct xx) 之类的查询定位到“更少的数据子集”,其执行效率就应该更高了(不需要每个子任务均从 7.7亿+ 的数据中(去重)统计)。
Nginx 是一个高性能的HTTP和反向代理web服务器,透过Nginx日志可以挖掘非常大的价值,比如诊断调优网站,监控网站稳定性,运营数据统计等。今天我们一起通过日志服务CLS,看看如何对Nginx做全方位日志数据挖掘。
本篇文章介绍了统计计数的基本原理以及Presto的实现思路,精确统计和近似统计的细节及各种优缺点,并给出了统计计数在具体业务使用的建议。
互联网时代的公司业务种类繁多,在这些业务每日工作的背后,是各类日志系统承担日志记录和检索排障的工作。 在业务上云的大趋势之下,越来越多的团队开始选择使用腾讯云日志服务CLS来解决他们的日志采集与存储、排障检索、数据分析、告警监控、可视化展示的系列诉求。很多公司团队已经开始将日志服务从自建的ELK转移到CLS,通过LogListener采集日志并上传,使用CLS的检索分析功能。
使用group by column1,column2,..按columm1,column2进行分组,即column1,column2组合相同的值为一个组
墨天轮原文链接:https://www.modb.pro/db/22835?ywm 这是一个测试案例的说明文件,是引用参考 注意,这是一个测试案例的说明文件,是引用参考: Trace file /o
确定成功收集统计信息后,发现还是没有效果,在当时操作过程中认为收集统计信息后,oracle没有走上正确的索引就是成本优化器判断错误,于是决定手工绑定走错索引的sql,这也是一般的处理思路,如下示:
今天下午的源码课,主要是对上两次课程中留的作业的讲解,除了几个逻辑执行计划的优化器外, 重点是planAggregateWithOneDistinct(有一个count distinct情况下生成物理执行计划的原理)。
松哥原创的 Spring Boot 视频教程已经杀青,感兴趣的小伙伴戳这里-->Spring Boot+Vue+微人事视频教程
关于求解中位数,我们知道在Python中直接有中位数处理函数(mean),比如在Python中求解一个中位数,代码很简单。
我们要做到不但会写SQL,还要做到写出性能优良的SQL,以下为笔者学习、摘录、并汇总部分资料与大家分享! (1)选择最有效率的表名顺序(只在基于规则的优化器中有效) ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那
面对这些问题,我们能有哪些有效的优化手段呢?下面列出一些在工作有效可行的优化手段:
1.概述 在工作中总结Hive的常用优化手段和在工作中使用Hive出现的问题。下面开始本篇文章的优化介绍。
虽说近些年来,从国内数据库市场来看,Oracle是有些势衰;但从全球角度来说,其霸主地位依然不可撼动。其技术的演讲变化,仍然对行业数据库发展有着颇大的指导引领意义。下面是我对其近三年来发布的新特性加以盘点,进而洞察行业变化,挖掘技术趋势。材料部分内容引用自盖总的《Oracle新特性》系列文章,感谢!
Hive常用函数大全一览1 关系运算1.1 1、等值比较:=1.2 2、不等值比较:1.3 3、小于比较:<1.4 4、小于等于比较:<=1.5 5、大于比较:>
每逢假期,我们总会接收到很多数据库故障救急请求,因此我甚至经常发出以前的一个总结:警惕数据库假期综合症,呼吁大家提高警惕,防范疏忽下发生的故障和问题。 在这个元旦假期中,我们同样收到了很多的紧急援助请求,这其中大多是熟悉的问题,包括: 数据库回滚段问题导致的ORA-01555错误; SYSTEM表空间坏块导致的BootStrap失败,2662错误; 误删除导致的数据丢失; 空间不足导致的归档挂起; 阳光之下,并无新事,这些问题大都是我们以前曾经面对过的,很多专家已经写过了很多案例,如果大家对类似的问题感兴
PS:本博客收录自己工作中遇到学到的一些Oracle技能,有时间就更新整理一下
我们要做到不但会写SQL,还要做到写出性能优良的SQL,以下为笔者学习、摘录、并汇总部分资料与大家分享!
优化器是 Oracle 数据库最引人入胜的部件之一,因为它对每一个 SQL 语句的处理都必不可少。优化器为每个 SQL 语句确定最有效的执行计划,这是基于给定的查询的结构,可用的关于底层对象的统计信息,以及所有与优化器和执行相关的特性。因此 Oracle 在每一个版本中,优化器都引入了新特性,本文将详细讲解 12C 中标量子查询自动转换的新特性的原理,优势,适用场景和案例分享。
今天在读一篇关于数据库索引介绍的文章时,该文章提到了前缀索引,对于我这个搞数据库应用开发那么多年的人来说,这个词还真是一个新词,没用过。于是打算研究一番。
注意: 精度在 hive 中是个很大的问题,类似这样的操作最好通过round 指定精度
优化器是 Oracle 数据库最引人入胜的部件之一,因为它对每一个 SQL 语句的处理都必不可少。优化器为每个 SQL 语句确定最有效的执行计划,这是基于给定的查询的结构,可用的关于底层对象的统计信息,以及所有与优化器和执行相关的特性。因此 Oracle 在每一个版本中,优化器都引入了新特性,本文将详细讲解 12C 中标量子查询自动转换的新特性的原理,优势,适用场景和案例分享。 1 12C 标量子查询自动转换说明 首先我们来看官方文档的说明: 标量子查询是出现在 SQL 语句的 SELECT 子句的子查询。
Hive性能优化 1.概述 继续《那些年使用Hive踩过的坑》一文中的剩余部分,本篇博客赘述了在工作中总结Hive的常用优化手段和在工作中使用Hive出现的问题。下面开始本篇文章的优化介绍。 2.介绍 首先,我们来看看Hadoop的计算框架特性,在此特性下会衍生哪些问题? 数据量大不是问题,数据倾斜是个问题。 jobs数比较多的作业运行效率相对比较低,比如即使有几百行的表,如果多次关联多次汇总,产生十几个jobs,耗时很长。原因是map reduce作业初始化的时间是比较长的。 sum,
许春植(Luocs) (阿里巴巴高级数据库管理员,7年以上数据库运维管理经验,擅长MySQL、Oracle及MongoDB数据库,目前主要研究并建设MongoDB一套完整的运维体系) 编辑手记:感谢许春植授权独家转载其精华文章,也欢迎读者朋友向我们投稿,本文是对Oracle SCAN特性的一些介绍和总结,编辑时略有节略。 Oracle 从11g 开始推出的 SCAN 特性在 Oracle RAC 高可用连接里占据着非常重要的地位,也是以后的重点推进方向。 说在前头:文章中核心内容来自官方,当然也参考了
为什么SQL存在性能问题?我们通过10053,可以看到经过Oracle转换的SQL如下所示,
所有的数据相关工作人员,包括数据开发、数据分析师、数据科学家等,多多少少会使用数据库,我们很多的业务数据也是存放在业务表中。但即使是同一个需求,不同人写出的 SQL 效率上也会有很大差别,而我们在数据岗位面试的时候,也会考察相关的技能和思考,在本篇文章中,ShowMeAI将给大家梳理 SQL 中可以用于优化效率和提速的核心要求。
随着2月的春风吹拂,Oracle 19c 的第一个 Exadata 版本发布将马上发布出来,等待可测试版本的朋友们马上即可如愿了。
语法:A=B 操作类型:所有基本类型 描述:如果表达式A与表达式B相等,则为TRUE;否则为FALSE 举例: hive>select 1 from lxw_dual where 1=1; 1
java面试(3)SQL优化
领取专属 10元无门槛券
手把手带您无忧上云