ITPub博客

首页 > 数据库 > Oracle > Exadata Smart Flash Cache 简介(一)

Exadata Smart Flash Cache 简介(一)

Oracle 作者:wl365365 时间:2017-05-04 17:40:02 0 删除 编辑
转:https://blogs.oracle.com/ExadataCN/entry/exadata_smart_flash_cache_%E7%AE%80%E4%BB%8B

Exadata 作为能够提供高性能和高可用性的数据库一体机,既可以满足OLAP类型的应用,可也以满足OLTP类型的应用。对于后一种类型的应用,Smart Flash Cache(以下简称智能闪存)无疑为提高OLTP应用的性能提供了重要的保证。

首先,从硬件层面的角度,Exadata一体机的每一台存储服务器都包含了4块基于PCI的闪存卡用于保存数据。而从软件层面,Exadata 特有的存储服务器软件(cellsrv)会管理被cache在闪存卡上的数据。从信息的种类上来讲,智能闪存可以通过以下的三种方式被使用:

1. 用于保存经常被访问(或者修改)的数据库对象的数据,也就是我们经常提到的Write Back Flash Cache(以下简称WBFC)特性。

2. 用于保存数据库的redo log I/O,这部分被称为Flash Logging。

3. 在智能闪存上直接创建grid disk 和磁盘组,保存数据库或者其他的数据,这部分被称为flash-based  grid disk。

下面就开始逐一介绍这三种flash cache 功能。


对于WBFC,它是智能闪存最常见的使用方式。默认情况下,每一个flash cache card 会选择存储节点中的3块物理磁盘(每个存储节点包含4块闪存卡,12块磁盘)做为自己的partner,之后将对应磁盘中经常被访问的数据缓存到flash cache 中。而这部分被称为WBFC 的主要原因是,当有写操作要在对应的磁盘上执行时,这个操作只需要在flash cache上完成之后就会直接被返回给上层的数据库,而不需要在物理磁盘上也完成。Exadata 存储节点上的管理软件(cellsrv)会异步的将这些I/O同步到对应的磁盘上。下面的这些图形说明了WBFC 处理I/O的过程。


读操作,数据未缓存。


 


步骤1:数据库发出了读请求。


步骤2:存储节点上的cellsrv 软件从磁盘中找到相应的数据。


步骤3:cellsrv将数据返回给上层的数据库。


步骤4:cellsrv将同样的数据复制到WBFC当中。确保下一次读取操作可以直接从闪存中完成。



读操作,数据已缓存。 


 




步骤1:数据库发出了读请求。




步骤2:存储节点上的cellsrv 软件从闪存中找到相应的数据。


步骤3:cellsrv将数据返回给上层的数据库。


写操作,数据未缓存。




步骤1:数据库发出了写请求。




步骤2:存储节点上的cellsrv 软件从闪存中没有找到需要的数据,之后在磁盘中找到了对应的数据。


步骤3:cellsrv通知上层的数据库写操作完成。


步骤4:cellsrv将同样的数据复制到WBFC当中。确保下一次写操作可以直接从闪存中完成。



写操作,数据已缓存。 







步骤1:数据库发出了写请求。


步骤2:存储节点上的cellsrv 软件从闪存中找到相应的数据。


步骤3:cellsrv在闪存上修改数据。


步骤4:cellsrv通知上层的数据库写操作完成。


通过上面的说明可以看到,在数据被缓存到WBFC之后,读写操作对物理磁盘的访问都可以避免,从而提高了数据库的I/O性能。


对于运行OLTP类型应用的数据库,通常会产生大量的数据改变,也就是意味着会有大量的重做日志文件记录产生,对于重做日志所在的存储就有着很高的性能要求,很多时候对于重要的OLTP系统,哪怕是重做日志文件所在磁盘的短暂的性能问题都可能会对数据库性能造成很大的伤害。Flash Logging的功能可以很好地改善重做日志文件的I/O性能问题,它会在闪存卡中分配512M空间(默认配置)保存重做日志信息。当数据库产生一个重做日志记录时,它会同时被写入到磁盘上的重做日志文件和Flash Logging中,而最先返回的写入操作会直接通知数据库写入操作执行完成,而不需要等待两个介质都被写入完成才返回,从而提高了重做日志文件写操作的性能,而且能够避免任何一种介质出现短暂性能问题可能带来的性能下降问题。


智能闪存的最后一种使用方式就是在flash cache上直接创建grid disk,并将它们创建成磁盘组,之后用于保存数据库或者其他文件。这种配置并不是默认情况下就存在的,而且也不是推荐的用法,如果用户需要的话可以手动进行创建。


最后,介绍一些简单的命令来查看智能闪存的信息。


命令1:查看flash cache的详细信息。


CellCLI> list flashcache detail; 


 name:                dmorlcel05_FLASHCACHE


cellDisk:           FD_01_dmorlcel05,FD_07_dmorlcel05,FD_15_dmorlcel05,FD_00_dmorlcel05,FD_11_dmorlcel05,FD_14_dmorlcel05,FD_02_dmorlcel05,FD_04_dmorlcel05,FD_12_dmorlcel05,FD_03_dmorlcel05,FD_09_dmorlcel05,FD_13_dmorlcel05,FD_08_dmorlcel05,FD_06_dmorlcel05,FD_05_dmorlcel05,FD_10_dmorlcel05


 creationTime:        2016-04-14T16:57:09-04:00


 degradedCelldisks: 


 effectiveCacheSize:  2978.75G


 id:                  11a7984b-dc9f-4d8c-9cde-ca07d59b61cd


 size:                2978.75G


 status:              normal


命令2:查看flash logging的详细信息。


CellCLI> list flashlog detail;


 name:                dmorlcel07_FLASHLOG


cellDisk:           FD_11_dmorlcel07,FD_08_dmorlcel07,FD_12_dmorlcel07,FD_04_dmorlcel07,FD_07_dmorlcel07,FD_10_dmorlcel07,FD_06_dmorlcel07,FD_15_dmorlcel07,FD_02_dmorlcel07,FD_00_dmorlcel07,FD_09_dmorlcel07,FD_03_dmorlcel07,FD_01_dmorlcel07,FD_05_dmorlcel07,FD_13_dmorlcel07,FD_14_dmorlcel07


 creationTime:        2013-07-14T03:19:10-04:00


 degradedCelldisks: 


 effectiveSize:       512M


 efficiency:          100.0


 id:                  607633ac-3ce0-4d5c-9501-6382f611028f


 size:                512M


 status:              normal


命令3:查看磁盘和智能闪存的对应关系。


CellCLI> list griddisk attributes name, cachedby


DATA_DMORL_CD_00_dmorlcel07  "FD_02_dmorlcel07, FD_03_dmorlcel07, FD_01_dmorlcel07, FD_00_dmorlcel07"


DATA_DMORL_CD_01_dmorlcel07  "FD_11_dmorlcel07, FD_09_dmorlcel07, FD_10_dmorlcel07, FD_08_dmorlcel07"


DATA_DMORL_CD_02_dmorlcel07  "FD_11_dmorlcel07, FD_09_dmorlcel07, FD_10_dmorlcel07, FD_08_dmorlcel07"


DATA_DMORL_CD_03_dmorlcel07  "FD_11_dmorlcel07, FD_09_dmorlcel07, FD_10_dmorlcel07, FD_08_dmorlcel07"


DATA_DMORL_CD_04_dmorlcel07  "FD_14_dmorlcel07, FD_12_dmorlcel07, FD_15_dmorlcel07, FD_13_dmorlcel07"


DATA_DMORL_CD_05_dmorlcel07  "FD_14_dmorlcel07, FD_12_dmorlcel07, FD_15_dmorlcel07, FD_13_dmorlcel07"


DATA_DMORL_CD_06_dmorlcel07  "FD_02_dmorlcel07, FD_03_dmorlcel07, FD_01_dmorlcel07, FD_00_dmorlcel07"


DATA_DMORL_CD_07_dmorlcel07  "FD_02_dmorlcel07, FD_03_dmorlcel07, FD_01_dmorlcel07, FD_00_dmorlcel07"


DATA_DMORL_CD_08_dmorlcel07  "FD_05_dmorlcel07, FD_06_dmorlcel07, FD_07_dmorlcel07, FD_04_dmorlcel07"


DATA_DMORL_CD_09_dmorlcel07  "FD_05_dmorlcel07, FD_06_dmorlcel07, FD_07_dmorlcel07, FD_04_dmorlcel07"


DATA_DMORL_CD_10_dmorlcel07  "FD_05_dmorlcel07, FD_06_dmorlcel07, FD_07_dmorlcel07, FD_04_dmorlcel07"


DATA_DMORL_CD_11_dmorlcel07  "FD_14_dmorlcel07, FD_12_dmorlcel07, FD_15_dmorlcel07, FD_13_dmorlcel07"


可以看到每块闪存卡对应三块物理硬盘。


命令4:查看闪存卡的模式


CellCLI> list cell attributes flashcachemode


WriteBack

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22039464/viewspace-2138498/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-07-04

  • 博文量
    29
  • 访问量
    74066