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理论基础和工作原理
写在前面的话,本文是因为工作中需要编写摄像头程序,因为之前没有做过这类产品,所以网上搜索的资料,先整理如下,主要参考文章如下,如果有侵权,请联系我:另外,转载请注明出处.本文不一定全部正确,如果发现错 ...
随机推荐
- 1018 Public Bike Management (30)(30 分)
时间限制400 ms 内存限制65536 kB 代码长度限制16000 B There is a public bike service in Hangzhou City which provides ...
- LOJ2719 「NOI2018」冒泡排序
「NOI2018」冒泡排序 题目描述 最近,小S 对冒泡排序产生了浓厚的兴趣.为了问题简单,小 S 只研究对 1 到n 的排列的冒泡排序. 下面是对冒泡排序的算法描述. 输入:一个长度为n 的排列p[ ...
- 2017.10.5北京清北综合强化班DAY5
拼不出的数lost.in/.out/.cpp[问题描述]3 个元素的集合{5, 1,2} 的所有子集的和分别是0,1, 2, 3, 5, 6, 7, 8.发现最小的不能由该集合子集拼出的数字是4.现在 ...
- 第k小和(搜索)
Description [问题描述] 从n个数中选若干(至少1)个数求和,求所有方案中第k小的和(和相同但取法不同的视为不同方案).[输入格式] 第一行输入2个正整数n,k. 第二行输入这 ...
- 洛谷【P1104】生日(插入排序版)
题目传送门:https://www.luogu.org/problemnew/show/P1104 题目很简单,我主要是来讲插入排序的. 所谓插入排序,就是从待排序数组不断将数据插入答案数组里. 假设 ...
- 简单的RBAC用户角色权限控制
Java web项目中,无论项目是大是小,或多或少都会涉及到用户访问权限的控制,权限管理总体的设计思路就是,不该看的不看,不该做的不做!据我目前的了解,我所知道的几种实现访问权限控制的方式有: JQu ...
- JS---改变图片大小
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- SpringMvc之参数绑定注解详解之二
2 consumes.produces 示例 cousumes的样例: 1 @Controller 2 @RequestMapping(value = "/pets", met ...
- (cdh)hive 基础知识 名词详解及架构
过程 启动 hive 之后出现的 CLI 是查询任务的入口,CLI 提交任务给 Driver Driver 接收到任务后调用 Compiler,Executor,Optimizer 将 SQL 语句转 ...
- servlet课堂笔记
1.servlet生命周期: 1> 加载和实例化 2> 初始化 init() 3> 处理请求 service()->doGet()/doPost() 4> 销毁 dest ...