近似查询处理是一组优化技术,可以通过在可接受的误差范围内计算结果来加快分析查询的速度。
商业智能(BI)查询很大程度上依赖于涉及聚合函数,例如排序COUNT DISTINCT,SUM,RANK,和MEDIAN。例如,一个应用程序生成的报告显示已登录多少不同客户,或者上周最受欢迎的产品。BI应用程序具有以下要求并不少见:
- 查询必须能够处理比传统数据仓库大几个数量级的数据集。
例如,一个流行网站的每日Web日志量每天可以达到数十或数百TB。
- 查询必须提供接近实时的响应。
例如,一家公司要求快速检测并应对信用卡欺诈。
- 大数据集的探索性查询必须快速。
例如,用户可能希望找出其销售额已大致达到特定阈值的部门列表。用户将在这些部门上形成有针对性的查询,以查找更详细的信息,例如确切的销售编号,这些部门的位置等等。
对于大型数据集,精确的聚合查询会占用大量内存,通常会溢出到临时空间,而且速度可能会令人无法接受。应用程序通常对通用模式比对精确结果更感兴趣,因此客户愿意为速度牺牲精确性。例如,如果目标是显示描述最受欢迎产品的条形图,那么从统计上讲,售出的产品是100万个单位还是99.000万个单位就无关紧要。
Oracle数据库通过近似查询处理来实现其解决方案。通常,近似聚合的准确性超过97%(置信度为95%),但是处理时间要快几个数量级。数据库使用较少的CPU,并避免了写入临时文件的I / O成本。
也可以看看:
4.5.1近似查询初始化参数
您可以通过使用初始化参数来实现近似查询处理,而无需更改现有代码。 APPROX_FOR_*
在数据库或会话级别设置这些参数。下表描述了与近似技术有关的初始化参数和SQL函数。
表4-2近似查询初始化参数
| 初始化参数 | 默认 | 描述 | 也可以看看 |
|---|---|---|---|
| FALSE | 启用( | |
| FALSE | 转换 | |
| none | 将符合条件的精确百分位数函数转换为其 |
也可以看看:
- “ 关于优化器初始化参数 ”
- 《 Oracle数据库数据仓库指南》以了解有关近似查询处理的更多信息
4.5.2近似查询SQL函数
近似查询处理使用SQL函数提供对近似可接受的探索性查询的实时响应。
下表描述了返回近似结果的SQL函数。
表4-3近似查询用户界面
| SQL函数 | 描述 | 也可以看看 |
|---|---|---|
| 与函数一起使用时,计算最常见的前n个近似值 返回表达式的近似计数。如果您提供 您必须将此功能与子句中的相应 以下查询返回每个部门中最常见的10个工作: | |
| 返回包含表达式的不同值的大约行数。 | |
| 将预先计算的近似计数不同的概要聚合到更高的级别。 | |
| 返回的摘要 数据库可以将返回的结果持久保存到磁盘以进行进一步聚合。 | |
| 接受数字或日期时间值,并返回近似中间值或近似插值值,当对这些值进行排序时,该中间值或中间值将为中间值。 此功能提供了该功能的替代 | |
| 接受一个百分位数值和一个排序规范,并返回一个相对于该排序规范落入该百分位数值的近似插值。 此功能提供了该功能的替代 | |
| 返回一组值中的近似值。 此函数带有一个可选 | |
| 与函数一起使用时,计算大约前n个累加值 如果提供 您必须将此功能与子句中的相应 以下查询返回每个部门中薪资总额最高的10种工作类型: 请注意, |
也可以看看:
《 Oracle数据库数据仓库指南》以了解有关近似查询处理的更多信息




