Exadata Smart Flash Logging工作原理
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工作原理的更多相关文章
- Nand Flash 控制器工作原理
对 Nand Flash 存储芯片进行操作, 必须通过 Nand Flash 控制器的专用寄存器才能完成.所以,不能对 Nand Flash 进行总线操作.而 Nand Flash 的写操作也必须块方 ...
- Nand flash 芯片工作原理
Nand flash 芯片型号为 Samsung K9F1208U0B,数据存储容量为 64MB,采用块页式存储管理.8 个 I/O 引脚充当数据.地址.命令的复用端口. 芯片内部存储布局及存储操作特 ...
- PHP底层工作原理
最近搭建服务器,突然感觉lamp之间到底是怎么工作的,或者是怎么联系起来?平时只是写程序,重来没有思考过他们之间的工作原理: PHP底层工作原理 图1 php结构 从图上可以看出,php从下到上是一个 ...
- SPI协议及工作原理分析
说明.文章摘自:SPI协议及其工作原理分析 http://blog.csdn.net/skyflying2012/article/details/11710801 一.概述. SPI, Serial ...
- PHP工作原理
文章一 :http://blog.csdn.net/21aspnet/article/details/6973405 简介 先看看下面这个过程: 我们从未手动开启过PHP的相关进程,它是随着Apach ...
- Orchard工作原理
概述 本文翻译仅供学习之用,了解Orchard工作原理设计思想.技术点及关键词,如有缺漏请不吝指正.鉴于能力有限定有诸多曲解或不完整的地方,请海涵.不定时完善整理. CMS不像常规的web程序,它更像 ...
- Android系统Recovery工作原理之使用update.zip升级过程分析(一)
通过分析update.zip包在具体Android系统升级的过程,来理解Android系统中Recovery模式服务的工作原理.我们先从update.zip包的制作开始,然后是Android系统的启动 ...
- Java Web程序工作原理
Web开发的最重要的基本功能是HTTP:Java Web开发的最重要的基本功是Servlet Specification.HTTP和Servlet Specitication对于Web Server和 ...
- camera理论基础和工作原理
写在前面的话,本文是因为工作中需要编写摄像头程序,因为之前没有做过这类产品,所以网上搜索的资料,先整理如下,主要参考文章如下,如果有侵权,请联系我:另外,转载请注明出处.本文不一定全部正确,如果发现错 ...
随机推荐
- leetcode 24. Swap Nodes in Pairs(链表)
Given a linked list, swap every two adjacent nodes and return its head. For example,Given 1->2-&g ...
- Echarts 关系图 添加点击事件
/*实现的效果是:在关系图上加点击事件,点击某个点,得到改点代表的内容,并且实现一个跳转效果. 关键代码已用红色标出*/ <!DOCTYPE html> <html lang=&qu ...
- Python 爬虫 —— 文件及文件夹操作
0. 文件名.路径信息.拓展名等 #取文件后缀 >>> os.path.splitext("/root/a.py") ('/root/a', '.py') #取目 ...
- ffmpeg混音(将多个声音合成一个)命令
ffmpeg命令中可以使用filter amix实现这个功能. 官方文档 http://ffmpeg.org/ffmpeg-filters.html 6.8 amix Mixes multiple a ...
- 优秀开源项目之一:视频监控系统iSpy
iSpy是一个开源的视频监控软件,目前已经支持中文.自己用了一下,感觉还是很好用的.翻译了一下它的介绍. iSpy将PC变成一个完整的安全和监控系统 iSpy使用您的摄像头和麦克风来检测和记录声音或运 ...
- 在YUV图像上根据背景色实现OSD反色
所谓的OSD其实就是在视频图像上叠加一些字符信息,比如时间,地点,通道号等, 在图像上叠加OSD通常有两种方式: 一种是在前端嵌入式设备上,在图像数据上叠加OSD, 这样客户端这边只需解码显示数据即可 ...
- 使用Excel制作万年历(日历可A4纸打印)
先来看看A4纸打印效果,其他功能后续继续完善中. 年份数据字典(农历节日) 农历节日表 年度 春节 元宵节 龙抬头 端午节 六月六 七月七 七月十五 仲秋节 除夕 2010年02月14日 2010年0 ...
- 用Azure CLI批量上传文件
在Windows环境下,我们可以使用AzCopy批量上传文件.其效率和传输速率都是非常快的. 在Linux或MacOS环境下,可以使用Azure的CLI实现批量文件的上传. 下面的脚本可以实现此功能. ...
- js---数组习题---
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- SpringMvc之参数绑定注解详解之一
引言: 前段时间项目中用到了REST风格来开发程序,但是当用POST.PUT模式提交数据时,发现服务器端接受不到提交的数据(服务器端参数绑定没有加 任何注解),查看了提交方式为application/ ...