db_keep_cache_size參数的控制范围測试

ocm考试新题中。须要创建keep存储的表,但在该參数是否应该改动上,有一些分歧。有人说asmm会自己主动给keep分配内存的,该參数就不用设置了。

看文档和asktom。也是云山雾罩,说什么的都有,还是来实际的測试吧:

SQL> col COMPONENT for a30
SQL> select COMPONENT,CURRENT_SIZE/1024/1024||'MB' MB from V_$SGA_DYNAMIC_COMPONENTS where COMPONENT in ('DEFAULT buffer cache','KEEP buffer cache');

COMPONENT                      MB
------------------------------ ------------------------------------------
DEFAULT buffer cache           352MB
KEEP buffer cache              0MB                                              

SQL> conn hr/hr
Connected.
SQL> drop table t1 purge;

Table dropped.

SQL> create table t1 as select * from employees;

Table created.

SQL> insert into t1 select * from t1;

107 rows created.

SQL> /

214 rows created.

SQL> /

428 rows created.

SQL> /

856 rows created.

SQL> /

1712 rows created.

SQL> /

3424 rows created.

SQL> /

6848 rows created.

SQL> /

13696 rows created.

SQL> commit;

Commit complete.

SQL> col SEGMENT_NAME for a10
SQL> select SEGMENT_NAME,BYTES/1024/1024||'mb' MB from user_segments where SEGMENT_NAME='T1';

SEGMENT_NA MB
---------- ------------------------------------------
T1         3mb                                                                  

SQL> alter table t1 storage( buffer_pool keep);

Table altered.

--造了一张3m的keep表
SQL> set autot on
SQL> select count(*) from t1;

  COUNT(*)
----------
     27392                                                                      

Execution Plan
----------------------------------------------------------
Plan hash value: 3724264953                                                     

-------------------------------------------------------------------
| Id  | Operation          | Name | Rows  | Cost (%CPU)| Time     |
-------------------------------------------------------------------
|   0 | SELECT STATEMENT   |      |     1 |    85   (0)| 00:00:02 |
|   1 |  SORT AGGREGATE    |      |     1 |            |          |
|   2 |   TABLE ACCESS FULL| T1   | 26589 |    85   (0)| 00:00:02 |
-------------------------------------------------------------------             

Note
-----
   - dynamic sampling used for this statement                                   

--做全表扫描,没有物理读,说明是从之前的插入语句读取的数据,并做了240次递归
Statistics
----------------------------------------------------------
        240  recursive calls
          1  db block gets
        421  consistent gets
          0  physical reads
        176  redo size
        413  bytes sent via SQL*Net to client
        385  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          4  sorts (memory)
          0  sorts (disk)
          1  rows processed                                                     

SQL> select count(*) from t1;

  COUNT(*)
----------
     27392                                                                      

Execution Plan
----------------------------------------------------------
Plan hash value: 3724264953                                                     

-------------------------------------------------------------------
| Id  | Operation          | Name | Rows  | Cost (%CPU)| Time     |
-------------------------------------------------------------------
|   0 | SELECT STATEMENT   |      |     1 |    85   (0)| 00:00:02 |
|   1 |  SORT AGGREGATE    |      |     1 |            |          |
|   2 |   TABLE ACCESS FULL| T1   | 26589 |    85   (0)| 00:00:02 |
-------------------------------------------------------------------             

Note
-----
   - dynamic sampling used for this statement                                   

--第二次全表扫描已经没有递归了,说明数据已经存入内存,并整齐摆放了
Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
        310  consistent gets
          0  physical reads
          0  redo size
        413  bytes sent via SQL*Net to client
        385  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed                                                     

SQL> set autot off
SQL> conn / as sysdba
Connected.
SQL> select COMPONENT,CURRENT_SIZE/1024/1024||'MB' MB from V_$SGA_DYNAMIC_COMPONENTS
  2  where COMPONENT in ('DEFAULT buffer cache','KEEP buffer cache');

COMPONENT                      MB
------------------------------ ------------------------------------------
DEFAULT buffer cache           352MB
KEEP buffer cache              0MB
--查看内存。整齐摆放的数据并未在keep内存里,说明在default里
SQL> alter system set db_keep_cache_size=12m;

System altered.

SQL> select COMPONENT,CURRENT_SIZE/1024/1024||'MB' MB from V_$SGA_DYNAMIC_COMPONENTS
  2  where COMPONENT in ('DEFAULT buffer cache','KEEP buffer cache');

COMPONENT                      MB
------------------------------ ------------------------------------------
DEFAULT buffer cache           340MB
KEEP buffer cache              12MB
--开辟keep内存
SQL> conn hr/hr
Connected.
SQL> set autot on
SQL> select count(*) from t1;

  COUNT(*)
----------
     27392                                                                      

Execution Plan
----------------------------------------------------------
Plan hash value: 3724264953                                                     

-------------------------------------------------------------------
| Id  | Operation          | Name | Rows  | Cost (%CPU)| Time     |
-------------------------------------------------------------------
|   0 | SELECT STATEMENT   |      |     1 |    85   (0)| 00:00:02 |
|   1 |  SORT AGGREGATE    |      |     1 |            |          |
|   2 |   TABLE ACCESS FULL| T1   | 26589 |    85   (0)| 00:00:02 |
-------------------------------------------------------------------             

Note
-----
   - dynamic sampling used for this statement                                   

--又一次做全表扫描,优化器尽管已经发现内存default里有数据,可是keep内存开辟了,表又是keep的,但keep里没找到数据
--所以在此强制做了物理读
--说明keep參数为0的时候,表尽管是keep的,但数据还是在default里的,keep的大小并未被asmm自己主动分配
Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
        310  consistent gets
        307  physical reads
          0  redo size
        413  bytes sent via SQL*Net to client
        385  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed                                                     

SQL> select count(*) from t1;

  COUNT(*)
----------
     27392                                                                      

Execution Plan
----------------------------------------------------------
Plan hash value: 3724264953                                                     

-------------------------------------------------------------------
| Id  | Operation          | Name | Rows  | Cost (%CPU)| Time     |
-------------------------------------------------------------------
|   0 | SELECT STATEMENT   |      |     1 |    85   (0)| 00:00:02 |
|   1 |  SORT AGGREGATE    |      |     1 |            |          |
|   2 |   TABLE ACCESS FULL| T1   | 26589 |    85   (0)| 00:00:02 |
-------------------------------------------------------------------             

Note
-----
   - dynamic sampling used for this statement                                   

Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
        310  consistent gets
          0  physical reads
          0  redo size
        413  bytes sent via SQL*Net to client
        385  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed                                                     

SQL> spool off

假设考keep。该參数,还是打开了吧。recycle同理

时间: 2024-08-10 18:08:54

db_keep_cache_size參数的控制范围測试的相关文章

软件測试基本方法(六)之集成測试和系统測试

在软件开发中.常常会遇到这种情况.单元測试时确认每一个模块都能单独工作,但这些模块集成在一起之后会出现有些模块不能正常工作.比如,在chrome环境下用js写了一个实时捕捉video中特定区域的模块,正常工作:利用worker线程进行webgl场景渲染,也正常.但是当两个运算合并时.出现一个模块不能正常执行,原因在于两个模块不适合在worker线程中结合.基于worker本身的局限性,仅仅能有一个模块正常工作. 所以,非常有必要进行集成測试. (1)集成測试定义: 集成測试是将软件集成起来,对模

LINPACK測试

1简单介绍 LINPACK是线性系统软件包(Linear system package) 的缩写. Linpack如今在国际上已经成为最流行的用于測试高性能计算机系统浮点性能的benchmark.通过利用高性能计算机.用高斯消元法求解一元N次稠密线性代数方程组的測试.评价高性能计算机的浮点性能. Linpack測试包含三类,Linpack100.Linpack1000和HPL. Linpack100求解规模为100阶的稠密线性代数方程组.它仅仅同意採用编译优化选项进行优化.不得更改代码,甚至代码

Android—— ubuntu下【CTS】測试TV真机

近期接触到CTS,据传不懂CTS就不算一个合格的android开发者,我之前一直没见周边谁用过.作为一个产品开发的android人员,我还是太年轻- 撰写不易,转载请注明出处:http://blog.csdn.net/jscese/article/details/40650001#t11 概念: Compatibility Test Suite (CTS)  兼容性測试组.是由google提供的一套測试框架.含有非常多測试用例, 框架用于管理測试用例在真机设备或者模拟器上的执行,那些用例全是用j

CodeIgniter RestServer中put请求获取不到參数的问题解决

近期用restserver遇到个蛋疼的问题,发现$this->put得到的參数都是null.查了一下发现.这貌似这个普遍问题,參见链接:https://github.com/chriskacerguis/codeigniter-restserver/issues/362 还是先来看下官方的解释:參见 http://code.tutsplus.com/tutorials/working-with-restful-services-in-codeigniter-2--net-8814 $this->

Android Monkey自己主动化測试

前言 假设你做Android开发,还没有使用过Monkey进行測试,那么今天看到这篇文章,希望能解决你Android測试中的一些问题.起码能帮你省点測试的时间而且发现很多其它的问题. Monkey简单介绍 Monkey是一个可执行在模拟器和实际设备中的Android命令行自己主动化測试工具,它能够模拟伪随机的用户事件流,比如点击.触摸.手势等.你能够使用Monkey对正在开发的程序进行压力測试. Monkey的特征: 測试的对象为程序包名,通过-p參数指定. Monkey測试使用的事件流.数据流

Hadoop作业性能指标及參数调优实例 (二)Hadoop作业性能调优7个建议

作者:Shu, Alison Hadoop作业性能调优的两种场景: 一.用户观察到作业性能差,主动寻求帮助. (一)eBayEagle作业性能分析器 1. Hadoop作业性能异常指标 2. Hadoop作业性能调优7个建议 (二)其他參数调优方法 二.Hadoop集群报告异常,发现个别作业导致集群事故. 一.用户观察到作业性能差,主动寻求帮助. (一)eBay Eagle作业性能分析器 对一般作业性能调优.eBay Eagle[i]的作业性能分析器已经能满足用户大部分需求. eBayEagle

[iOS翻译]《iOS7 by Tutorials》在Xcode 5里使用单元測试(上)

简单介绍: 单元測试是软件开发的一个重要方面.毕竟,单元測试能够帮你找到bug和崩溃原因,而程序崩溃是Apple在审查时拒绝app上架的首要原因. 单元測试不是万能的,但Apple把它作为开发工具包的一部分,不仅让你创作的APP更稳定,并且提供了一致.有趣的用户体验,这些都是让用户给你五星评价的源泉.iOS7提供了一个升级的单元測试框架.让你在Xcode中执行单元測试更为easy.当你完毕这一章节,你将学会怎样给现有app加入測试--并有可能培养出对编写測试的热爱! /* 本文翻译自<iOS7

机房收费系统——測试计划

測试计划(GB8567--88) 1引言 在项目基本编码工作完毕的就要进行測试.对于排除出错误和修复漏洞有重要作用. 1.1编写目的 測试的主要目的就是尽可能多的找到系统中的漏洞,而且设计出測试用例,对系统測试.目的及在于对測试的方法.測试流程,有一定大体上的掌控. 本文档的预期读者是測试人员. 系统測试在整个项目开发过程中.比例占到了40%~50%.基本上在项目进行编码的过程中就開始了測试,所以測试的好坏也影响了系统的功能实现情况. 1.2背景 说明: a.  測试计划所从属的软件系统的名称:

HDu 2138 How many prime numbers 高效Miller素数測试

题目就是给出一组数.让我们測试当中有多少个是素数. 求素数有測试sqrt(n)个数的方法.有筛子方法,只是对于本题这种题目来说就都不是高效的. 本题使用Miller Rabin素数測试法.效率奇高.对于不是极其大的整数測试都差点儿是常数时间.令人神往的算法啊. 网上有个程序,好像是什么吉林的模板程序,只是我一直没看懂他是什么思路写的,是个AC的程序,只是却是错误的,呵呵,由于程序一直把9当做素数. 于是上网查找了当中原理,自己写了个程序,效率和他的几乎相同一样.通过时间基本无区别,只是我的思路是