导读:Zone Maps 是一个独立的访问结构,可以为表独立建立。在表和索引扫描期间,区块图可以根据表列上的谓词来修剪表的磁盘块和分区表的潜在完整分区。区块映射可以使用 Attribute Clustering,也可以不使用属性聚类。

Zone map 特性最早是在 Exadata 上的特性功能,后来下放到企业版本中。

如下图所示:

  1. 为分区表创建分区图。对于五个分区中的每一个区域,区域图将存储跟踪列的最小值和最大值。

  2. 如果某个区段的存储列的最小值和最大值在查询谓词之外,那么这个区段不需要读取。

  • 例如,如果区块Z4跟踪的列prod_id的最小值为10,最大值为100;

  • 那么在这个区块中,predicate 谓词 prod_id = 200永远不会有任何匹配的记录,因此区块Z4将不会被读取。

  • 对于分区表,修剪可以在 分区 或 Zone 层面上进行。

  • 在 Oracle 20c 中增加的特性是,自动化的 Zone Map:

    1. Automatic Zone Maps - 可以在没有任何客户干预的情况下为任何用户表创建和维护。

    2. 区域图允许根据查询中的谓词对块和分区进行修剪,无需任何用户干预。

    3. Automatic Zone Maps 对直接加载有效,并在后台对任何其他DML操作进行增量和周期性的维护和刷新。

    4. 自动区块图在不需要任何用户操作的情况下,透明地自动提高了查询的性能。

    5. 不可用场景:join zone maps, IOTs (Oracle Index-organized Tables ), external tables,temporary tables.

    6. Automatic zone map 缺省是关闭的(仅对 Oracle 一体机有效)

    最后一条是遗憾,如果没有 Exadata 一体机,很多特性等同于乌有。

    以下展示一个基本区域图创建和使用的示例。

    假设销售的查询经常指定客户ID或客户ID和产品ID的组合。您可以创建一个属性分类表,这样查询就可以从使用区域图的修剪中受益。你可以创建一个表,方法如下。

    CREATE TABLE sales (   prod_id NUMBER NOT NULL,   cust_id NUMBER NOT NULL,   time_id        DATE NOT NULL,   channel_id     NUMBER NOT NULL,   promo_id       NUMBER NOT NULL,   quantity_sold  NUMBER(10,2),   amount_sold NUMBER(10,2))CLUSTERINGBY LINEAR ORDER (cust_id, prod_id)YES ON LOAD YES ON DATA MOVEMENTWITH MATERIALIZED ZONEMAP;

    列(cust_id、prod_id)上的分区地图 ZMAP_SALES 被创建。这里,ZMAP_SALES是Oracle数据库自动生成的分区地图的名称。可以通过在 WITH MATERIALIZED ZONEMAP 后面的括号中为区块图指定一个名称。

    对于同时限定了cust_id和prod_id或前缀cust_id的查询,会进行自然修剪。下面的例子显示了数据库在表扫描过程中如何进行修剪。

    一个应用程序发出下面的查询。

    SELECT * FROM sales WHERE cust_id = 100;
    由于该表是BY LINEAR ORDER集群,所以数据库必须只读取包含cust_id值为100的区域。
    

    一个应用程序发出下面的查询。

    SELECT * FROM sales WHERE cust_id = 100 AND prod_id = 2300;
    

    因为该表是BY LINEAR ORDER集群,所以数据库必须只读取包含cust_id值为100和prod_id为2300的区域。

    参考链接:https://docs.oracle.com/en/database/oracle/oracle-database/20/dwhsg/using-zone-maps.html#GUID-BEA5ACA1-6718-4948-AB38-1F2C0335FDE4

    墨天轮原文链接:https://www.modb.pro/db/24415(复制到浏览器中打开或者点击“阅读原文”)

    推荐阅读:144页!分享珍藏已久的数据库技术年刊

    数据和云

    ID:OraNews

    如有收获,请划至底部,点击“在看”,谢谢!

    点击下图查看更多 ↓

    云和恩墨大讲堂 | 一个分享交流的地方

    长按,识别二维码,加入万人交流社群

    请备注:云和恩墨大讲堂

      点个“在看”

    你的喜欢会被看到❤

Oracle 20c 新特性:自动的区域图 - Automatic Zone Maps相关推荐

  1. 资源放送丨《 先睹为快!Oracle 20c新特性解析》PPT视频

    前段时间,墨天轮邀请到了云和恩墨CTO.ACDU核心专家."Oracle百科全书" 杨廷琨 老师分享<先睹为快!Oracle 20c新特性解析>,在这里我们共享一下PP ...

  2. 11g新特性-自动sql调优(Automatic SQL Tuning)

    11g新特性-自动sql调优(Automatic SQL Tuning) 在Oracle 10g中,引进了自动sql调优特性.此外,ADDM也会监控捕获高负载的sql语句. 在Oracle 11g中, ...

  3. Oracle 20c 新特性:表空间缺省加密算法 TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM

    导读:在 Oracle 20c中,新增加的初始化化参数,让我们可以获得设置表空间缺省加密算法的能力,这个新的参数是:TABLESPACE_ENCRYPTION_DEFAULT_ALGORITHM . ...

  4. oracle12c 新增维护时间窗口,ORACLE 12C新特性-自动维护全局索引 | 信春哥,系统稳,闭眼上线不回滚!...

    今天在网上看了一篇关于12C新特性-自动维护全局索引的帖子,经测试,貌似根本不是那么回事呀.如果对分区表进行分区DDL操作,如果不加update index字句,全局索引就会失效,下面先看一下是11. ...

  5. Oracle 20c 新特性:持久化内存数据库 - Persistent Memory Database

    导读:随着硬件技术的不断进步,PMEM (Persistent Memory)已经足够成熟,开始进入到数据库加速领域,在 DRAM 和 Flash 之间提供能更强的 IO 层支撑.自 Oracle 2 ...

  6. Oracle 20c 新特性详解:SQL Macro 宏 SCALAR / TABLE 模式带来的敏捷和便利

    导读:在 Oracle 20c 中,SQL的宏支持 - SQL Macro 为 SQL 开发带来了进一步的敏捷和便利,在这篇文章中,我们来详细了解一下 SQL Macro 的特性用法. 以下是概要介绍 ...

  7. Oracle 19c 新特性 —— 自动索引 Automatic indexing

    自动索引功能可自动执行Oracle数据库中的索引管理任务.根据应用程序工作负载的变化自动创建.重建和删除数据库中的索引,从而提高数据库性能. Automatic indexing特性对于on-prem ...

  8. Oracle 20c 新特性:缺省的只读 Oracle HOME 支持

    墨墨导读:在 20c 之前,缺省的 ORACLE_HOME 布局将 ORACLE_HOME.ORACLE_BASE_HOME 和 ORACLE_BASE_CONFIG 合并到一个位置.从 20c 开始 ...

  9. Oracle 20c 新特性:XGBoost 机器学习算法和 AutoML 的支持

    墨墨导读:XGBoost是一个高效.可扩展的机器学习算法,用于回归和分类(regression and classification),使得XGBoost Gradient Boosting开源包可用 ...

最新文章

  1. SpringBoot------异步任务的使用
  2. asp(javascript)中request.form(a).count 在ie6中总是为0
  3. kafka数据文件.log
  4. equals方法的重写
  5. mvnrepository总是出现烦人的one more step验证
  6. 失业日志:2009年10月12日星期一
  7. 《Git版本控制管理(第2版)》——4.3 Git在工作时的概念
  8. Java中逗号运算符的使用
  9. leetcode刷题:最大子序积
  10. 克罗谈投资策略05_涨势买入,跌势卖出
  11. 彻底搞懂单例模式如何安全的实现
  12. 鳗鱼刺多怎么处理图像_图像二值化处理
  13. Netty in action—Netty中的ByteBuf
  14. Java面试之Java集合5——HashMap的底层实现
  15. 微信公众号开发(个人订阅号)
  16. unity拖拽drag_UGUI事件之Drag拖拽事件
  17. 驭电之道-用示波器测量二极管伏安特性曲线 模电实验 示波器 波形
  18. Kotlin知识积累——let,with,run,apply,alse的用法
  19. 标准之争:影响 IPv6 部署的经济学因素
  20. Esri中国虾神卢拜年贴

热门文章

  1. 使用ExchangeRate-API查询免费可用的汇率数据
  2. elk处理基础数据_使用ELK堆栈和Ruby构建数据处理管道
  3. 僵尸肖恩黑胶唱片_建立一个非常适合黑胶唱片的DIY放大器套件
  4. 当OpenOrg和OpenGov发生冲突时
  5. Vue组件间常用的通信方式总结
  6. Kali Linux系统设置中文语言环境-1
  7. Git笔记(13) 分支管理
  8. s8 android10,旧机不是部部有 三星 Galaxy S8 将不会获得 Android 10 更新
  9. 光驱怎么挂载第二个光驱_电脑光驱经常自己打开自己关闭,怎么回事
  10. Linux. C语言中else,2. if/else语句