数据库管理-第116期 Oracle Exadata 06-ESS-下(202301114)

数据库管理-第116期 Oracle Exadata 06-ESS-下(202301114)

距离上一次正儿八经的技术分享又过了整整一周了,距离上一期Exadata专题文章也过了11天了,今天一鼓作气把ESS写完,毕竟明天又要飞北京了。

1 Smart Scan

其实之前在数据库管理-第六十一期 Exadata是否需要索引(20230314)中简单介绍过smart scan,数据的查询和检索处理可以卸载(offload)到Exadata存储节点:

  1. 负载下沉到存储服务器,充分发挥存储的计算能力
  2. 存储转变为智能存储,仅返回需要的数据 – 行过滤,列过滤
  3. 减少数据返回量,减少IO通道需求
  4. 减少数据库服务器CPU, 内存要求
    在这里插入图片描述
    Smart Scan自动优化使用直接路径读的full table scans, fast full index scans和fast full bitmap index scans,即并行操作和大规模顺序扫描。其实最简单的触发offload的方式就是SQL使用并行。
    在这里插入图片描述
    在Exadata上数据库的SQL Monitor中,可以看到语句的存储offload效率,具体执行计划中也能看到TABLE ACCESS STORAGE FULL的操作内容。

2 Storage Index

存储索引是一个透明且自动维护,无需任何额外开销即可消除减少IO的特性:

  • 存储索引不像Oracle的传统B-tree或位图索引那样存储在数据库中。它们无法识别在给定列中具有特定值的一组记录。是存储服务器软件的一个功能。
  • 存储索引的工作原理是为磁盘存储单元存储最小和最大列值,默认情况下为1 MB,称为区域索引。
  • 执行Smart Scan时SQL谓词会传递到存储节点,因此存储软件可以在执行请求的I/O之前,根据存储索引元数据(最大值和最小值)检查谓词。将跳过任何不可能具有匹配行的存储区域。
    在这里插入图片描述

3 EHCC

EHCC,混合列压缩兼顾性能和压缩比

  • 占用磁盘空间更小
  • 压缩下获得更好的性能
    – 基于压缩数据进行扫表
    – 可在内存、Flash中保留更多数据
    – 从磁盘到内存、Flash数据传递时使用更少IO
  • 在查询更快的前提下平均节省10倍空间
    – QUERY:5-10X, ARCHIVE MODE:10-15X
    在这里插入图片描述
    在这里插入图片描述
    EHCC语法:
Warehouse Compression Syntax:
CREATE TABLE emp () COMPRESS FOR QUERY [LOW | HIGH];
Online Archival Compression Syntax:
CREATE TABLE emp () COMPRESS FOR ARCHIVE [LOW | HIGH];

不同的压缩方式采用的算法不同:query low使用LZO算法,query high和archive low采用ZLIB算法,archive high采用BZIP2算法。

Exadata特有的压缩:compress for query|archive low|high –只有直接路径插入的数据才会被压缩,普通的DML操作会降低压缩等级。
在混合列压缩中,多个数据块组成一个压缩单元CU(Compression Unit) ,压缩单元中数据是按列的形式存储的,而不是将整个表的数据按列的形式来存储,所以是混合列压缩,而压缩单元中包含的数据块的个数也不是固定的,由压缩模式,被加载数据的压缩率等因素来决定;使用了混合列压缩的表,普通的insert数据插入,新增的行记录会降级成OLTP压缩模式(此时对表进行一个move操作重组一下表就会变成混合列压缩,如果又进行DML操作则可能又会被退化为OLTP压缩,因此HCC的表应该尽可能少的进行DML操作),数据只有在以下几种方式加载时才会触发混合列压缩:

  • 直接路径insert语句(/*+ append */);
  • 并行的DML语句;
  • 直接路径sqlloader;
  • CTAS(Create Table As Select)方式。

HCC可以在表级别,分区级别及表空间级别来指定。
可以在创建表时指定HCC,也可以把现有的表修改为HCC的表,此时表中的原数据没有进行压缩,需要对表执行一下move重组才会使已有的数据进行混合列压缩。

4 智能存储处理流程

综合前面提到的Smart Scan, Storage Index和EHCC,在Exadata中将一般存储智能化之后,数据的处理流程变为下图所示:
在这里插入图片描述
在充分利用硬件特性与资源,基于Oracle对自己数据库存储充分的了解,使用ESS极大加快了Exadata上的数据查询效率。

5 Smart Flash Cache

智能闪存缓存与回写:
在这里插入图片描述
将热数据缓存在PMEM/XRMEM或Flash Card中,即可以加速数据查询效率,也可以加速数据库写的效率。
监控数据是否被cache:

SQL> SELECT data_object_id FROM DBA_OBJECTS object_name='EMP'; DATA_OBJECT_ID---------57435
CellCLI> LIST FLASHCACHECONTENT WHERE objectNumber=57435 DETAIL cachedKeepSize: 0cachedSize: 495438874dbID: 70052hitCount: 415483missCount: 2059objectNumber: 57435tableSpaceNumber:

保证热数据被cache:

SQL> ALTER TABLE xxx STORAGE (CELL_FLASH_CACHE KEEP);

注意:cell_flash_cache有三个值:none(永不放到闪存),default(按策略来放),keep(尽可能的放到闪存); 为了防止keep属性的对象占满整个flashcache,系统限制有keep属性的对象占用的总空间不得超过flashcache的80%,为了防止一些极少访问却拥有keep属性的对象无限制的占用flashcache,系统会定期的使用淘汰策
略来剔除这些对象。一般无需人为干预,默认即可。
从 Oracle Exadata 系统软件 23.1.0 版开始,XRMEM (PMEM) 缓存只能以 Write-through 模式运行。

6 Smart Flash Logging

智能闪存日志:
在这里插入图片描述
即日志哪先写好,即返回事务成功,无需人为配置与干预,加速写操作。

7 IORM

IO资源管理:
存储资源池:数据动态重分布,消除I/O分布热点块,数据库平台可不断线性扩展,数据自动分布,提供最高性能和高可用性

  • 当新硬件添加时均衡仍然得以保持
  • 当旧硬件移除时均衡仍然得以保持
  • 当硬件出故障时均衡仍然得以保持
  • 单块磁盘损坏/单个storage cell损坏都能忍受
    在这里插入图片描述
    IORM可以根据承载业务数据库的重要程度、IO要求细粒度控制每个数据库的存储IO性能,当然Exadata本身强大的IO性能,在绝大多数环境是无需对IORM进行配置的。可以通过CELLCLI或EMCC对IORM进行配置:
    在这里插入图片描述

8 In_memory扩展

非Exadata运行Oracle数据库一张表只能在行格式和列格式选择一种方式:
在这里插入图片描述
Exadata可以突破格式限制,实现双格式存储:
在这里插入图片描述
Exadata还实现了存储层In-memory列式分析:

  • Exadata 自动智能转换、加载列格式数据到 Flash cache
    – 存储服务器实现快速的向量查询处理
  • 独特的双格式数据闪存缓存
    – 混合负载支持,同时支持基于行式的OLTP数据库,和基于列式的分析型数据库
  • 完全自动化和透明
    在这里插入图片描述

9 高性能协议

Exadata使用了以下高性能传输协议来提升机架内数据传输效率:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

ESS基本完成,老规矩,知道写了些啥。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/144818.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp大概是怎么个开发法(前端)

写在前面,博主是个在北京打拼的码农,从事前端工作5年了,做过十多个大大小小不同类型的项目,最近心血来潮在这儿写点东西,欢迎大家多多指教。 对于文章中出现的任何错误请大家批评指出,一定及时修改。有任何…

如何实时提取微信群收到的二维码图片?

10-4 在有些工作中,需要实时提取在微信中收到的二维码图片,比如微信里有一百个群,怎么才能知道这些群里发了二维码出来,要实现这样的功能,微信本身并不提供,但是可以通过一些其它技巧完成。 大概的原理是…

鸿蒙原生应用开发-DevEco Studio中HarmonyOS与OpenHarmony项目的切换

一、找到该目录 二、修改操作系统类型 三、分别进行开发,一些常规的应用功能实现后,相互切换后都可以正常运行的。前期OpenHarmony项目如果连接开发板比较困难的化,开发完成后,切换成为HarmonyOS后就可以比较详细地看看效果了。

企业微信H5开发遇到的坑

企业微信官方推荐wx.agentConfig引用<script src"https://open.work.weixin.qq.com/wwopen/js/jwxwork-1.0.0.js"></script>是没有效果的 必须引用以下代码才有效果&#xff0c;这也是我看了社区的回答才有所收获&#xff0c;是一个坑 且VUE引用在线的…

狂神说笔记 快速入门Nginx

公司产品出现瓶颈&#xff1f; 我们公司项目刚刚上线的时候&#xff0c;并发量小&#xff0c;用户使用的少&#xff0c;所以在低并发的情况下&#xff0c;一个jar包启动应用就够了&#xff0c;然后内部tomcat返回内容给用户。 但是慢慢的&#xff0c;使用我们平台的用户越来…

【考研复习】二叉树的特殊存储|三叉链表存储二叉树、一维数组存储二叉树、线索二叉树

文章目录 三叉链表存储二叉树三叉链表的前序遍历&#xff08;不使用栈&#xff09;法一三叉链表的前序遍历&#xff08;不使用栈&#xff09;法二 一维数组存储二叉树一维数组存储二叉树的先序遍历 线索二叉树的建立真题演练 三叉链表存储二叉树 三叉链表结构体表示如下图所示…

飞书开发学习笔记(六)-网页应用免登

飞书开发学习笔记(六)-网页应用免登 一.上一例的问题修正 在上一例中&#xff0c;飞书登录查看网页的界面显示是有误的&#xff0c;看了代码&#xff0c;理论上登录成功之后&#xff0c;应该显示用户名等信息。 最后的res.nickName是用户名&#xff0c;res.i18nName.en_us是英…

IntelliJ IDEA 安装 GitHub Copilot插件 (最新)

注意&#xff1a; GitHub Copilot 插件对IDEA最低版本要求是2021.2&#xff0c;建议直接用2023.3&#xff0c;一次到位反正后续要升级的。 各个版本的依赖关系&#xff0c;请参照&#xff1a; ##在线安装&#xff1a; 打开 IntelliJ IDEA扩展商店&#xff0c;输入 "Git…

数据结构-二叉树力扣题

目录 1.相同的树 2.二叉树中查找值为x的节点 3.单值二叉树 4.对称二叉树 5.二叉树的前序遍历 6.另一颗树的子树 层序遍历&#xff1a; 7.二叉树遍历 8.判断二叉树是否是完全二叉树 一个特殊的性质&#xff1a; 1.相同的树 题目链接&#xff1a;力扣&#xff08;LeetC…

新版软考高项试题分析精选(四)

请点击↑关注、收藏&#xff0c;本博客免费为你获取精彩知识分享&#xff01;有惊喜哟&#xff01;&#xff01; 1、一般而言&#xff0c;大型软件系统中实现数据压缩功能&#xff0c;工作在OSI参考模型的&#xff08; &#xff09;。 A.应用层 B.表示层 C.会话层 D.网络层…

【验证码逆向专栏】百某网数字九宫格验证码逆向分析

声明 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;不提供完整代码&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 本文章未…

vue中ref的用法

vue中ref的用法 在项目中使用ref时有时候直接取值,有时候返回的却是一个数组,不知其中缘由,后查了一下ref用法,所以总结一下. 1.绑定在dom元素上时&#xff0c;用起来与id差不多&#xff0c;通过this.$refs来调用: <div id"passCarEchart" ref"passCarEch…

[PyTorch][chapter 63][强化学习-QLearning]

前言&#xff1a; 这里结合走迷宫的例子,重点学习一下QLearning迭代更新算法 0,1,2,3,4 是房间&#xff0c;之间绿色的是代表可以走过去。 5为出口 可以用下图表示 目录&#xff1a; 策略评估 策略改进 迭代算法 走迷宫实现Python 一 策略评估 强化学习最终是为了…

构建Docker基础镜像(ubuntu20.04+python3.9.10+pytorch-gpu-cuda11.8)

文章目录 一、前置条件1.创建 ubuntu 镜像源文件【sources.list】2.下载 python 安装包【Python-3.9.10.tgz】 二、构建方法1.构建目录2.创建DockerFile3.打包镜像 一、前置条件 1.创建 ubuntu 镜像源文件【sources.list】 内容如下 deb http://mirrors.aliyun.com/ubuntu/ …

SQL编写规范【干货】

编写本文档的目的是保证在开发过程中产出高效、格式统一、易阅读、易维护的SQL代码。 1 编写目 2 SQL书写规范 3 SQL编写原则 获取所有软件开发资料&#xff1a;点我获取

【Java 进阶篇】JQuery 遍历:发现元素的魔法之旅

欢迎来到 JQuery 的奇妙世界&#xff0c;一个充满活力和灵感的地方。在这个世界里&#xff0c;我们将一起探讨 JQuery 的遍历功能&#xff0c;这是一个让你轻松发现和操作网页元素的神奇工具。无需太多前端经验&#xff0c;只要有一颗探险的心&#xff0c;你就能在 JQuery 遍历…

智能家居小程序

1、设备 系统板&#xff1a;STM32F103C8T6 温湿度传感器&#xff1a;DHT11 光照度传感器&#xff1a; BH1750 WIFI模块&#xff1a;ESP8266-015 蜂鸣器&#xff1a; 立创EDC画板子&#xff0c;然后微立创下单

【数据结构】希尔排序(最小增量排序)

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前正在学习c和算法 ✈️专栏&#xff1a;数据结构 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章有啥瑕疵 希望大佬指点一二 如果文章对你有帮助…

java springboot在当前测试类中添加临时属性 不影响application和其他范围

目前 我们的属性基本都写在 application.yml 里面了 但是 如果 我们只是想做一下临时变量的测试 有没有办法实现呢&#xff1f; 显然是有的 这里 我们还是先在application.yml中去写一个 test属性 下面加个prop 然后 我们尝试在测试类中 获取一下这个属性 直接用 Value 读取…

C语言——求1/1-1/2+1/3-......+1/99-1/100的值

#include<stdio.h> int main() {int i 1;double sum 0;int flage 1;for(i 1;i < 100; i){sumflage*1.0/i;flage -flage; //正负号}printf("%lf\n",sum);return 0; }