Exadata在V2时代,ORACLE为了进一步拓宽客户人群,除了宣称Exadata适用OLAP系统,同时也适用于OLTP系统,那怎么才能满足OLTP系统的高IOPS要求呢?于是Exadata引入了闪存卡,但当时的闪存卡一是价格昂贵,二是存储空间较小,才几十G的大小,如何充分利用这些闪存卡就成了一项艺术,最开始是将这些闪存卡创建成flashcache,但发现flashcache对数据文件的读取有非常大的帮助,此时日志文件写性能问题开始成为Exadata做为OLTP架构的障碍。

于是,从存储软件版本11.2.2.4开始,Exadata引入了Exadata Smart Flash Logging的新特性,该特性的主要优化思想是从存储节点的闪存卡中开辟出一小块区域作为redo log的辅助重做日志目的地,当接收到写redo log的请求时,Exadata允许LGWR进程将redo同时并行写入flash log 和 disk controller 中的在线日志文件, 只要在flash log 和 disk controller中的在线日志文件 有任意一个率先写完成就会通知RDBMS数据库继续工作, 该特性着眼于改善了Exadata对Redo写入的响应时间和吞吐量。

需要注意的是,flashlog并不是永久的redo日志存放目的地,它仅仅是一个临时的redo日志存放地,目的是为了提供快速的重做日志写的响应时间,以改善整个数据库的性能。Flashlog会一直存放着这些redo日志,直到这些redo日志被安全地写回到了在线日志文件中。

Smart Flash Logging处理所有的实例崩溃和恢复场景,而不需要数据库管理员进行任何额外或特殊干预,像传统数据库从redo log进行实例恢复一样,从最终用户的角度来看,临时在flashlog中的redo缓存如果帮助实例恢复,是一个完全透明的过程。

如下图所示,Smart Flash Logging特性的工作原理:

 

第1步:

数据库向Exadata单元发出重做日志写入请求

第2步:

CELLSRV同时向Flashlog和磁盘发出写入请求

第3步:

一旦磁盘写入或闪存写入的完成更快,CELLSRV就会确认重做日志写入数据库完成,继续后续工作。

 

注意:

重做日志永久存储在磁盘上,并且只能临时存储在闪存中。

 

从Smart Flash Logging的工作原理可以看出,Smart Flash Logging特性可以防止偶尔缓慢的硬盘,或者偶尔缓慢的闪存盘给数据库带来的性能问题,但二者不能出现同时缓慢,但同时出现缓慢也是一个极其罕见的事件。如下图所示,为Smart Flash Logging特性关闭和开启的日志文件写性能响应对比。

 

Flashlog空间,有如下特点:

(1)、在一组闪存磁盘中均匀分配(默认为512MB。在X2-2环境中,flashlog分布为16个闪存磁盘上的32MB块;而后期的X5-2,则flashlog是分布在4块闪存磁盘上)。

(2)、像一个巨大的循环缓冲区(每个闪存盘一个)。

(3)、在将相应的重做数据写入磁盘后重新使用。

(4)、flashlog空间不是日志文件的镜像(mirror),它并不是日志文件的完全拷贝,它只是临时地存放最新的redo log 条目,这种方式需要的flashlog空间会比较小,可以剩余更多的闪存空间给flashcache使用。

在默认情况下,会从flash闪存卡中分配512 MB的空间来做为Smart Flash Logging。相对于在每个Exadata存储节点 384 gb(注意:X2-2的每个存储节点闪存空间为384GB,而后面几代Exadata的闪存空间将会成倍或几十倍地增长)的闪存空间来说,这是一个微不足道的投入,但会对数据库带来巨大的性能提升。

对于大多数情况下,每个存储节点默认分配的512M闪存空间就已经足够了,但对于一些极少数的系统,例如:数据库的redo产生率非常高,或者许多数据库实例整合到同一台Exadata上 等等情况,此时512MB的闪存空间可能就不足以支撑redo write,这种情况下,需要手动修改flashlog的大小。

除此之外,对于一台整合后的Exadata,Exadata的IO资源器(IORM)有所增强,它足够控制不同数据库的Smart Flash Logging特性是否关闭或开启,将flashlog的宝贵空间留给那些非常非常重要的核心生产库使用,例如:

CellCLI> ALTER IORMPLAN -

dbPlan=( -

(name=prod, flashcache=on, flashLog=on), -

(name=dw, flashcache=on, flashLog=on), -

(name=prod_test, flashcache=off, flashLog=off), -

(name=prod_dev, flashcache=off, flashLog=off) -

(name=other, flashcache=on, flashLog=on))

 

--列出各个cell节点中的flashlog:

[root@sddxdb01 onecommand]# dcli -g ./cell_group -l root cellcli -e list flashlog attributes name,size,status

sddxcel01: sddxcel01_FLASHLOG 512M normal

sddxcel02: sddxcel02_FLASHLOG 512M normal

sddxcel03: sddxcel03_FLASHLOG 512M normal

[root@sddxdb01 onecommand]#

 

--删除cell节点1的flashlog:

[root@sddxcel01 ~]# cellcli -e drop flashlog all

Flash log sddxcel01_FLASHLOG successfully dropped

[root@sddxcel01 ~]#

[root@sddxdb01 onecommand]# dcli -g ./cell_group -l root cellcli -e list flashlog attributes name,size,status

sddxcel02: sddxcel02_FLASHLOG 512M normal

sddxcel03: sddxcel03_FLASHLOG 512M normal

[root@sddxdb01 onecommand]#

 

--如果打算创建flashcache和flashlog,则必须先创建flashlog,然后再创建flashcache。如果先创建flashcache,则会将全部空间使用光。

[root@sddxcel01 ~]# cellcli -e create flashlog all

Flash log sddxcel01_FLASHLOG successfully created

[root@sddxcel01 ~]#

[root@sddxcel01 ~]# cellcli -e create flashcache all

Flash cache sddxcel01_FLASHCACHE successfully created

 

--查看flashlog详情:

[root@dm02celadm01 ~]# cellcli -e list flashlog detail

name: dm02celadm01_FLASHLOG

cellDisk: FD_00_dm02celadm01,FD_01_dm02celadm01,FD_02_dm02celadm01,FD_03_dm02celadm01

creationTime: 2016-10-19T18:28:02+08:00

degradedCelldisks:

effectiveSize: 512M

efficiency: 99.99785580691346

id: ea422489-a82e-4fa7-877a-16b1c57ee63c

size: 512M

status: normal

[root@dm02celadm01 ~]#

 

--创建大小为1GB的flashlog:

[root@dm02celadm01 ~]# cellcli -e CREATE FLASHLOG ALL SIZE=1G

 

关闭Smart Flash Logging特性:

Smart Flash Logging特性可以从存储软件层面,或从数据库层面进行关闭:

(1)、数据库层面:

数据库版本从11.2.0.2BP9之后,就默认自动地开启了Smart Flash Logging特性,但可以通过修改数据库隐含参数的方式来手动关闭Smart Flash Logging特性:

11.2.0.2版本:

Alter system set "_third_spare_parameter"=0 scope=spfile sid='*';

 

11.2.0.3及之后版本:

Alter system set "_enable_flash_logging"=false scope=spfile sid='*';

 

(2)、存储软件层面:

1、直接删除flashlog,但这种方式将导致整个Exadata上的所有数据库都无法使用Smart Flash Logging特性。

2、使用IORM来控制Smart Flash Logging特性的开启或关闭。

 

说明:

对于绝大部分的系统而言,强烈建议开启Smart Flash Logging特性,只有那种只读的数据库或测试数据库,才可以尝试关闭Smart Flash Logging特性。

Exadata Smart Flash Logging工作原理的更多相关文章

  1. Nand Flash 控制器工作原理

    对 Nand Flash 存储芯片进行操作, 必须通过 Nand Flash 控制器的专用寄存器才能完成.所以,不能对 Nand Flash 进行总线操作.而 Nand Flash 的写操作也必须块方 ...

  2. Nand flash 芯片工作原理

    Nand flash 芯片型号为 Samsung K9F1208U0B,数据存储容量为 64MB,采用块页式存储管理.8 个 I/O 引脚充当数据.地址.命令的复用端口. 芯片内部存储布局及存储操作特 ...

  3. PHP底层工作原理

    最近搭建服务器,突然感觉lamp之间到底是怎么工作的,或者是怎么联系起来?平时只是写程序,重来没有思考过他们之间的工作原理: PHP底层工作原理 图1 php结构 从图上可以看出,php从下到上是一个 ...

  4. SPI协议及工作原理分析

    说明.文章摘自:SPI协议及其工作原理分析 http://blog.csdn.net/skyflying2012/article/details/11710801 一.概述. SPI, Serial ...

  5. PHP工作原理

    文章一 :http://blog.csdn.net/21aspnet/article/details/6973405 简介 先看看下面这个过程: 我们从未手动开启过PHP的相关进程,它是随着Apach ...

  6. Orchard工作原理

    概述 本文翻译仅供学习之用,了解Orchard工作原理设计思想.技术点及关键词,如有缺漏请不吝指正.鉴于能力有限定有诸多曲解或不完整的地方,请海涵.不定时完善整理. CMS不像常规的web程序,它更像 ...

  7. Android系统Recovery工作原理之使用update.zip升级过程分析(一)

    通过分析update.zip包在具体Android系统升级的过程,来理解Android系统中Recovery模式服务的工作原理.我们先从update.zip包的制作开始,然后是Android系统的启动 ...

  8. Java Web程序工作原理

    Web开发的最重要的基本功能是HTTP:Java Web开发的最重要的基本功是Servlet Specification.HTTP和Servlet Specitication对于Web Server和 ...

  9. camera理论基础和工作原理

    写在前面的话,本文是因为工作中需要编写摄像头程序,因为之前没有做过这类产品,所以网上搜索的资料,先整理如下,主要参考文章如下,如果有侵权,请联系我:另外,转载请注明出处.本文不一定全部正确,如果发现错 ...

随机推荐

  1. linux命令学习笔记(0):man命令

    Linux提供了丰富的帮助手册,当你需要查看某个命令的参数时不必到处上网查找,只要man一下即可. Linux的man手册共有以下几个章节: 代號 代表內容 使用者在shell中可以操作的指令或可执行 ...

  2. Xposed模块开发学习记录

    Xposed模块相关API可以参考在线文档: https://api.xposed.info/reference/packages.html     入门教程可以参考: https://github. ...

  3. ubuntu 上采用nginx做rtmp 直播 服务器

    首先安装必要的依赖库   sudo apt-get install autoconf automake sudo apt-get install libpcre3 libpcre3-dev   安装 ...

  4. CodeForces - 1017F. The Neutral Zone (数学+Bitset存素数+素数筛优化)

    Notice: unusual memory limit! After the war, destroyed cities in the neutral zone were restored. And ...

  5. ACM学习历程—UESTC 1215 Secrete Master Plan(矩阵旋转)(2015CCPC A)

    题目链接:http://acm.uestc.edu.cn/#/problem/show/1215 题目大意就是问一个2*2的矩阵能否通过旋转得到另一个. 代码: #include <iostre ...

  6. bzoj 2631: tree link-cut-tree

    题目: Description 一棵n个点的树,每个点的初始权值为1.对于这棵树有q个操作,每个操作为以下四种操作之一: + u v c:将u到v的路径上的点的权值都加上自然数c: - u1 v1 u ...

  7. bzoj 4816 数字表格 —— 反演

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4816 推导过程同:http://www.cnblogs.com/zhouzhendong/p ...

  8. jQuery做出手风琴效果

    今天学到JQuery中的遍历-siblings,便手痒做了个手风琴的动态效果,有一点收获,分享给大家.mouseout的时候一定要记得opacity必须设置,不然li的opacity会保持mousem ...

  9. java代码JFrame练习

    总结: package com.da; import java.awt.Button; import java.awt.Color; import java.awt.FlowLayout; impor ...

  10. 通过 命令提示符(cmd.exe)连接 Oracle 数据库

    通过IP 连接数据库: sqlplus userName/userPassword@//IP:port/SID 例:sqlplus testuser/123456@//192.168.0.1:1521 ...