最近一直在处理新系统的性能优化问题,这两天特地测试了下oracle 11gR2开始引入的smart flash cache。

其介绍参考MOS文档,How To Size the Database Smart Flash Cache (文档 ID 1317950.1)

The Database Smart Flash Cache is a new feature in Oracle Database 11g Release 2 (11.2).
The Database Smart Flash Cache is a transparent extension of the database buffer cache using solid state device (SSD) technology.
The SSD acts as a Level 2 cache to the (Level 1) SGA.
 
Database Smart Flash Cache can greatly improve the performance of Oracle databases by reducing the amount of disk I/O at a much lower cost than adding an equivalent amount of RAM.
简单的说,他比较适合于系统中绝大部分存储使用机械硬盘,但是又配备了小部分SSD的场景,比如说我们的某个系统4.5T存储,600GB的SSD。
Your database is running on the Solaris or Oracle Linux operating systems.
The flash cache is supported on these operating systems only.
如果不是solaris或者OEL,则启动时报错,这很有可能会是个最大的限制,因为很多企业限定了必须使用RHEL/CENTOS/SUSE。如下:
SQL> startup;
ORA-00439: feature not enabled: Server Flash Cache

这明显就是Oracle设置的障碍。

可以通过DB_FLASH_CACHE_FILE和db_flash_cache_size设置智能闪存的位置以及大小。
下面来看实际效果:
[oracle@oel-12c ~]$ sqlplus "/as sysdba"

SQL*Plus: Release 12.2.0.1.0 Production on 星期五 9月 7 20:13:00 2018

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

连接到:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production SQL> create tablespace my_ts_2 datafile '/u01/app/oracle/oradata/nfs_to_14/my_ts02.dbf' size 1g autoextend on next 10m maxsize unlimited; 表空间已创建。 SQL> create table my_big_table as select * from dba_tables; 表已创建。 SQL> alter table my_big_table move tablespace my_ts_2; --移动到NFS存储上 表已更改。 SQL> insert into my_big_table select * from my_big_table; 已创建 2106 行。 SQL> / 已创建 4212 行。 SQL> / 已创建 8424 行。 SQL> / 已创建 16848 行。 SQL> / 已创建 33696 行。 SQL> / 已创建 67392 行。 SQL> commit; 提交完成。 SQL> / 提交完成。 SQL> insert into my_big_table select * from my_big_table; 已创建 134784 行。 SQL> / 已创建 269568 行。 SQL> commit; 提交完成。 SQL> insert into my_big_table select * from my_big_table; 已创建 539136 行。 SQL> commit;

使用智能闪存:

SQL> set autotrace on;
SQL> select count(1) from my_big_table; COUNT(1)
----------
1078272 已用时间: 00: 00: 33.06 执行计划
----------------------------------------------------------
Plan hash value: 1307946652 ---------------------------------------------------------------------------
| Id | Operation | Name | Rows | Cost (%CPU)| Time |
---------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 12973 (1)| 00:00:01 |
| 1 | SORT AGGREGATE | | 1 | | |
| 2 | TABLE ACCESS FULL| MY_BIG_TABLE | 969K| 12973 (1)| 00:00:01 |
--------------------------------------------------------------------------- Note
-----
- dynamic statistics used: dynamic sampling (level=2) 统计信息
----------------------------------------------------------
124 recursive calls
0 db block gets
47210 consistent gets
47193 physical reads
132 redo size
546 bytes sent via SQL*Net to client
607 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
3 sorts (memory)
0 sorts (disk)
1 rows processed SQL> / COUNT(1)
----------
1078272 已用时间: 00: 00: 03.00 执行计划
----------------------------------------------------------
Plan hash value: 1307946652 ---------------------------------------------------------------------------
| Id | Operation | Name | Rows | Cost (%CPU)| Time |
---------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 12973 (1)| 00:00:01 |
| 1 | SORT AGGREGATE | | 1 | | |
| 2 | TABLE ACCESS FULL| MY_BIG_TABLE | 969K| 12973 (1)| 00:00:01 |
--------------------------------------------------------------------------- Note
-----
- dynamic statistics used: dynamic sampling (level=2) 统计信息
----------------------------------------------------------
0 recursive calls
0 db block gets
47094 consistent gets
47006 physical reads
0 redo size
546 bytes sent via SQL*Net to client
607 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed SQL> / COUNT(1)
----------
1078272 已用时间: 00: 00: 04.54 执行计划
----------------------------------------------------------
Plan hash value: 1307946652 ---------------------------------------------------------------------------
| Id | Operation | Name | Rows | Cost (%CPU)| Time |
---------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 12973 (1)| 00:00:01 |
| 1 | SORT AGGREGATE | | 1 | | |
| 2 | TABLE ACCESS FULL| MY_BIG_TABLE | 969K| 12973 (1)| 00:00:01 |
--------------------------------------------------------------------------- Note
-----
- dynamic statistics used: dynamic sampling (level=2) 统计信息
----------------------------------------------------------
0 recursive calls
0 db block gets
47094 consistent gets
47020 physical reads
0 redo size
546 bytes sent via SQL*Net to client
607 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed SQL> / COUNT(1)
----------
1078272 已用时间: 00: 00: 02.24

不使用智能闪存:

SQL> alter system set db_flash_cache_size=0 ;

系统已更改。

已用时间:  00: 00: 01.01
SQL> select count(1) from my_big_table; COUNT(1)
----------
1078272 已用时间: 00: 00: 30.75 执行计划
----------------------------------------------------------
Plan hash value: 1307946652 ---------------------------------------------------------------------------
| Id | Operation | Name | Rows | Cost (%CPU)| Time |
---------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 12973 (1)| 00:00:01 |
| 1 | SORT AGGREGATE | | 1 | | |
| 2 | TABLE ACCESS FULL| MY_BIG_TABLE | 969K| 12973 (1)| 00:00:01 |
--------------------------------------------------------------------------- Note
-----
- dynamic statistics used: dynamic sampling (level=2) 统计信息
----------------------------------------------------------
0 recursive calls
0 db block gets
47094 consistent gets
47020 physical reads
0 redo size
546 bytes sent via SQL*Net to client
607 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed SQL> / COUNT(1)
----------
1078272 已用时间: 00: 00: 32.20 执行计划
----------------------------------------------------------
Plan hash value: 1307946652 ---------------------------------------------------------------------------
| Id | Operation | Name | Rows | Cost (%CPU)| Time |
---------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 12973 (1)| 00:00:01 |
| 1 | SORT AGGREGATE | | 1 | | |
| 2 | TABLE ACCESS FULL| MY_BIG_TABLE | 969K| 12973 (1)| 00:00:01 |
--------------------------------------------------------------------------- Note
-----
- dynamic statistics used: dynamic sampling (level=2) 统计信息
----------------------------------------------------------
0 recursive calls
0 db block gets
47094 consistent gets
47020 physical reads
0 redo size
546 bytes sent via SQL*Net to client
607 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed SQL> / COUNT(1)
----------
1078272 已用时间: 00: 00: 17.56 执行计划
----------------------------------------------------------
Plan hash value: 1307946652 ---------------------------------------------------------------------------
| Id | Operation | Name | Rows | Cost (%CPU)| Time |
---------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 12973 (1)| 00:00:01 |
| 1 | SORT AGGREGATE | | 1 | | |
| 2 | TABLE ACCESS FULL| MY_BIG_TABLE | 969K| 12973 (1)| 00:00:01 |
--------------------------------------------------------------------------- Note
-----
- dynamic statistics used: dynamic sampling (level=2) 统计信息
----------------------------------------------------------
0 recursive calls
0 db block gets
47094 consistent gets
47019 physical reads
0 redo size
546 bytes sent via SQL*Net to client
607 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed SQL> / COUNT(1)
----------
1078272 已用时间: 00: 00: 15.11 执行计划
----------------------------------------------------------
Plan hash value: 1307946652 ---------------------------------------------------------------------------
| Id | Operation | Name | Rows | Cost (%CPU)| Time |
---------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 12973 (1)| 00:00:01 |
| 1 | SORT AGGREGATE | | 1 | | |
| 2 | TABLE ACCESS FULL| MY_BIG_TABLE | 969K| 12973 (1)| 00:00:01 |
--------------------------------------------------------------------------- Note
-----
- dynamic statistics used: dynamic sampling (level=2) 统计信息
----------------------------------------------------------
0 recursive calls
0 db block gets
47094 consistent gets
47019 physical reads
0 redo size
546 bytes sent via SQL*Net to client
607 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed SQL> / COUNT(1)
----------
1078272 已用时间: 00: 00: 15.69

如上所述,性能相差了6-7倍。可见智能闪存效果还是不错的。

不过需要注意的是,如果95%+的常用数据都已经在iops足够高的磁盘上了比如SSD,这个时候又拿一部分SSD作为智能缓存,性能反而会下降比直接访问磁盘高达1倍。

在oracle 11g中,闪存文件只能配置1个,在12c中没有这个限制了。

oracle 12cR2 smart flash cache实测的更多相关文章

  1. Exadata Smart Flash Logging工作原理

    Exadata在V2时代,ORACLE为了进一步拓宽客户人群,除了宣称Exadata适用OLAP系统,同时也适用于OLTP系统,那怎么才能满足OLTP系统的高IOPS要求呢?于是Exadata引入了闪 ...

  2. [转帖]Oracle 12cR2使用经验

    大规模升级来临,谈谈Oracle 12cR2使用经验 随着2019年2月13日,Oracle 19c (Oracle 12.2.0.3) for Exadata 版本发布,Oracle 12cR2体系 ...

  3. oracle 11g 之 result cache

    oracle 11g 之 result cache 今天是2013-10-12,打算最近时间研究一下shared pool的相关原理以及awr报告分析.今天学习一下在oracle 11g shared ...

  4. Linux平台 Oracle 12cR2 RAC安装Part1:准备工作

    Linux平台 Oracle 12cR2 RAC安装Part1:准备工作 一.实施前期准备工作 1.1 服务器安装操作系统 1.2 Oracle安装介质 1.3 共享存储规划 1.4 网络规范分配 二 ...

  5. Linux平台 Oracle 12cR2 RAC安装Part2:GI配置

    Linux平台 Oracle 12cR2 RAC安装Part2:GI配置 三.GI(Grid Infrastructure)安装 3.1 解压GI的安装包 3.2 安装配置Xmanager软件 3.3 ...

  6. Linux平台 Oracle 12cR2 RAC安装Part3:DB安装

    Linux平台 Oracle 12cR2 RAC安装Part3:DB安装 四.DB(Database)安装 4.1 解压DB的安装包 4.2 DB软件安装 4.3 ASMCA创建磁盘组 4.4 DBC ...

  7. ORACLE性能优化- Buffer cache 的调整与优化

    Buffer Cache是SGA的重要组成部分,主要用于缓存数据块,其大小也直接影响系统的性能.当Buffer Cache过小的时候,将会造成更多的 free buffer waits事件. 下面将具 ...

  8. Oracle 12CR2 中alert.log出现大量的 WARNING: too many parse errors 告警

    Oracle 12CR2 中alert.log出现大量的 WARNING: too many parse errors 告警   日志如下: 2018-06-24T17:16:21.024586+08 ...

  9. Oracle数据库大量library cache: mutex X及latch: shared pool问题排查一例

    业务系统数据库夯住,数据库内大量的library cache: mutex X及latch: shared pool等待,alert日志信息如下 Tue Sep :: WARNING: inbound ...

随机推荐

  1. JS通过类名判断是否都必填

    //判断class='required' 是否都必填 function required() { var flag = true; $(".required").each(func ...

  2. Kotlin Linux下的环境搭建

    Kotlin是JVM世界里的未来主宰,不管你信不信,我反正相信了! 好吧,如果你不糊涂,就跟着我一起学学吧,哈哈 一下载https://github.com/JetBrains/kotlin/rele ...

  3. Cocos Creator EditBox(编辑框/输入框)添加事件的两种方法

    EditBox添加事件方法一这种方法添加的事件回调和使用编辑器添加的事件回调是一样的,通过代码添加, 你需要首先构造一个 cc.Component.EventHandler 对象,然后设置好对应的 t ...

  4. vue中使用echarts

    1.下载依赖 cnpm i echarts -S 2.模块中引入 <template> <div class="analyzeSystem"> <di ...

  5. 《linux就该这么学》找到一本不错的Linux电子书,《Linux就该这么学》。

    本帖不是广告贴,只是感觉有好的工具书而已 本书是由全国多名红帽架构师(RHCA)基于最新Linux系统共同编写的高质量Linux技术自学教程,极其适合用于Linux技术入门教程或讲课辅助教材,目前是国 ...

  6. Nginx加载ngx_pagespeed模块,加快网站打开的速度

    [页面加速]配置Nginx加载ngx_pagespeed模块,加快网站打开的速度   ngx_pagespeed 是一个 Nginx 的扩展模块,可以加速你的网站,减少页面加载时间,它会自动将一些提升 ...

  7. 关于plsqldev无法正常加载oracle instantclient中的oci.dll的其中一个原因

    事情的经过是这样的: 1. 新安装了windows10 系统,装了plsqldev 和 oracle instantclient,以及 instantclient sqlplus. 2.设置好了ORA ...

  8. QString和char*互转

    1. QString转为char * // QString转QByteArray QByteArray sr = strQ.toLocal8Bit(); int len = sr.length(); ...

  9. git分支流

    ## 新建一个iss1分支 $ git branch iss1 ## 切换到iss1分支 $ git checkout iss1 Switched to branch 'iss1' ## 查看分支,当 ...

  10. 20155228 获取技能的成功经验和关于C语言学习的调查

    内容提要 你有什么技能比大多人(超过90%以上)更好?针对这个技能的获取你有什么成功的经验?与老师博客中的学习经验有什么共通之处? 有关C语言学习的调查 你是怎么学习C语言的?(作业,实验,教材,其他 ...