Oracle Smart Flash 新特性性能测试说明

本文详述了Oracle Smart Flash Cache的测试过程,包括测试环境、准备工作、关键点和标准点。通过对比开启和关闭Smart Cache时Sql语句的执行时间、效率和系统资源状况,结果显示Smart Cache能显著提高数据访问性能,尤其是在降低等待事件和提升执行效率方面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.1测试之前的工作

1.1.1 Oracle Smart Cache简介

在Oracle11gR2及以后版本,Oracle提供了设置FLASH CACHE的功能,提升数据访问性能,该特性尤其适用于db file <sequential/ scattered/ paralle> read 等相关event比较严重的系统中。目前FLASH CACHE功能只能兼容Oracle enterprise linux、oracle solaris版本系统。

1.1.2 Oacle Smart Cache测试方向

Smart Cache允许缓存的设备可以是ASM裸设备或者闪存卡SSD做成文件系统。本文中主要采用单机实例和裸设备缓存位置的测试方法,规定一定的测试参数制造压力,比较其在启用/未启用特性下的性能表现。

1.1.3 Oacle Smart Cache 测试环境

在这里插入图片描述
在这里插入图片描述

1.1.4 Oracle Smart Cache测试实现办法

1.1.4.1 准备工作

  • 由于Oracle的Smart flash cache功能 在Oracle enterprise linux 平台上对oracle database软件打了闪存补丁后可以使用,本次采用的系统版本为Oracle enterprise linux 6.9。在Oracle 11G中Smart flash cache初次被引入,它所支持的FLASH_CACHE_FILE闪存设备仅为一个,12C中最大支持16个。
  • 为模拟实验中硬盘性能差异性,我们将采用NFS存储作为一般数据文件存放位置。准备俩台虚拟机如下。

在这里插入图片描述

  • 主机1使用本地IDE+SSD+固态驱动器盘作为缓存设备,实验中表单数据存放在NFS存储中,俩块硬盘经过简单的DD测试性能表现如下。
[root@ole69 ~]# dd if=/dev/zero of=/dev/raw/raw1 bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 3.40023 s, 316 MB/s 
[oracle@ole69 ~]$ dd if=/dev/zero of=/oradata_nfs/1 bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 18.3629 s, 58.5 MB/s
[oracle@ole69 ~]$ dd if=/dev/zero of=/dev/sdc bs=1M count=1024

1.4.1.2 设置数据库相关参数

db_flash_cache_file=/dev/raw/raw1’ scope=spfile;
db_flash_cache_size=2g scope=spfile;

设置Smart Cache设备并指定大小。

create tablespace nfs_test datafile'/oradata_nfs/nfs_test.dbf' size 1g ;
alter user ckpt_lu default tablespace nfs_test;
create table ckpt_lu.test_table as select * from dba_objects;

创建测试表存放在NFS_TEST表空间上,创建表单数据量为1600M。

alter system set event='10949 trace name context forever, level 1' scope=spfile;
alter system set "_very_large_object_threshold"=1600 scope=spfile;

关闭直接路径读,设置_very_large_object_threshold参数为表单大小。

alter system set sga_max_target=800m scope=spfile;
alter system set sga_target=800m scope=spfile;

设置SGA大小为表单的一半,制造系统压力。

1.1.5 Oracle Smart Cache 测试关键点

  • 缓存设备使用SSD+IDE高速盘,数据盘采用NFS存储,经简单测试写入性能相差6倍。
  • 表单数据存放入NFS存储上,表单数据定为1600M,内存设置为表单数据量一半。
  • 关闭直接路劲读,本次测试主要关注Smart Cache作为Buffer Cache二级缓存性能。
  • 执行的测试SQL需要执行三次及三次以上,让ORACLE缓存相关热块。

1.1.6 Oracle Smart Cache 测试标准点

在这里插入图片描述

1.2 测试过程

1.2.1 Oracle Smart Cache 开启

SQL>analyze table ckpt_lu.test_table compute statistics;

先简单收集统计信息

06:30:56 SQL> conn ckpt_lu/ckpt_lu
Connected.
06:31:09 SQL> select sum(bytes/1024/1024) m from user_extents where segment_name='TEST_TABLE';

         M
----------
      1600

Elapsed: 00:00:00.37
06:31:28 SQL> select name,value from v$sysstat where name in ('physical read flash cache hits','physical reads','consistent gets','db block gets','flash cache insert');

NAME                                                                  VALUE
---------------------------------------------------------------- ----------
db block gets                                                           388
consistent gets                                                      145703
physical reads                                                         4754
physical read flash cache hits                                              0

Elapsed: 00:00:00.02
06:31:46 SQL> set time on
06:32:08 SQL> set timing on
06:32:08 SQL> select /*+ monitor */ count(*) as FirstWithSc from test_table;

FIRSTWITHSC
-----------
    5853184

Elapsed: 00:02:04.36
06:33:05 SQL> select /*+ monitor */ count(*) as SecondWithSc from test_table;

SECONDWITHSC
------------
     5853184

Elapsed: 00:00:43.06
06:35:22 SQL> select /*+ monitor */ count(*) as ThirdWithSc from test_table;

THIRDWITHSC
-----------
    5853184

Elapsed: 00:00:16.17
06:36:17 SQL> select /*+ monitor */ count(*) as FouthWithSc from test_table;

FOUTHWITHSC
-----------
    5853184

Elapsed: 00:00:16.19
06:36:59 SQL> select name,value from v$sysstat where name in ('physical read flash cache hits','physical reads','consistent gets','db block gets','flash cache insert');

NAME                                                                  VALUE
---------------------------------------------------------------- ----------
db block gets                                                           830
consistent gets                                                      974792
physical reads                                                       758834
physical read flash cache hits                                         547581

Elapsed: 00:00:00.01

执行压力脚本,并设置Sql Monitor监控

7nn5sg97fhkhk	select /*+ monitor */ count(*) as FirstWithSc from test_table 
b2hdkmfcscn3t	select /*+ monitor */ count(*) as ThirdWithSc from test_table
40s8yqbkh8237	select /*+ monitor */ count(*) as FouthWithSc from test_table
8tghy100mctdv	select /*+ monitor */ count(*) as SecondWithSc from test_table

收集四次SQL执行计划。

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述块缓存其中前后对比-击中大量块

在这里插入图片描述

1.2.2 Oracle Smart Cache 关闭

06:42:04 SQL> conn camdunki/camdunki
Connected.
06:42:48 SQL> select sum(bytes/1024/1024) m from user_extents where segment_name='TEST_TABLE';

         M
----------
      1600

Elapsed: 00:00:00.45
06:42:55 SQL> set time on
06:43:52 SQL> set timing on
06:43:52 SQL> select /*+ monitor */ count(*) as First from test_table;

     FIRST
----------
   5853184

Elapsed: 00:00:50.01
06:44:43 SQL> select /*+ monitor */ count(*) as Second from test_table;

    SECOND
----------
   5853184

Elapsed: 00:00:46.66
06:45:44 SQL> select /*+ monitor */ count(*) as Third from test_table;

     THIRD
----------
   5853184

Elapsed: 00:00:42.97
06:46:37 SQL> select /*+ monitor */ count(*) as Fouth from test_table;

     FOUTH
----------
   5853184

Elapsed: 00:00:45.04
06:47:37 SQL> select name,value from v$sysstat where name in ('physical read flash cache hits','physical reads','consistent gets','db block gets','flash cache insert');

NAME                                                                  VALUE
---------------------------------------------------------------- ----------
db block gets                                                           699
consistent gets                                                      974502
physical reads                                                       749431
physical read flash cache hits                                            0

Elapsed: 00:00:00.01

执行压力脚本,并设置Sql Monitor监控

7nn5sg97fhkhk  select /*+ monitor */ count(*) as First from test_table;
b2hdkmfcscn3t  select /*+ monitor */ count(*) as Second from test_table;
40s8yqbkh8237  select /*+ monitor */ count(*) as Third from test_table;
8tghy100mctdv  select /*+ monitor */ count(*) as Fouth from test_table;

收集四次SQL执行计划。

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

块缓存击中量-不变

在这里插入图片描述

1.3 测试结果数据整合

1.3.1 Sql语句执行时间

可以发现通过以上测试俩者之间时间差距还是比较大的

在这里插入图片描述

**

开启Smart Cache后Sql语句第一次执行耗时较久。第二次部分热块被Cache到二级缓存区上,时间有所缩短,第三次大部分块被Cache,时间缩短了大约7倍。

**

1.3.2 Sql语句执行效率

在这里插入图片描述**

从等待事件上看,俩种情况下第一次Sql等待事件差不多,随着执行次数增加,在开启特性的情况下,热块逐步被Cache到二级缓存中,所对应的等待事件也慢慢降低,语句更加高效一点,没有二级缓存的情况下,Sql语句一直处于低效运行状态。

**

1.3.3 系统资源情况

在这里插入图片描述**

如图,该图显示测试过程中CPU Wait on OI 比率,在6:30之前,创建测试表需要对NFS存储进行频繁的读写,CPU Wait on IO比率居高不下。6:30至6:42分开启Oracle Smart Cache特性进行Sql语句测试,WAIT ON IO暂时下降,Sdc设备正是本地设置的二级缓存盘,这个时候SQL所需要的大部分的数据块在本地二级缓存上可以得到,CPU WAIT ON IO恢复正常值。等到关闭Oracle Smart Cache特性进行Sql语句测试时,Sql所需要的块还是从NFS存储上读取,导致CPU Wait on OI再次飙升。

**

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值