关于db_block_gets了解和实验

实验

一、 自己手动创建的小表

创建一个区大小为  40k 

SYS@ORCL>show parameter db_block_size





NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_block_size                        integer    





SYS@ORCL>create tablespace tyger1 datafile '/u01/app/oracle/oradata/ORCL/tyger1.dbf' size 10m

  2  extent management local uniform size 40k;





Tablespace created.





SYS@ORCL>create table test_db1(x int) tablespace tyger1;





Table created.





SYS@ORCL>set autotrace on 

SYS@ORCL>insert into test_db1 values(1);





1 row created.









Execution Plan

----------------------------------------------------------





-------------------------------------------------------------------------

| Id  | Operation        | Name | Rows  | Bytes | Cost (%CPU)| Time     |

-------------------------------------------------------------------------

|   0 | INSERT STATEMENT |      |     1 |   100 |     1   (0)| 00:00:01 |

-------------------------------------------------------------------------









Statistics

----------------------------------------------------------

          1  recursive calls

         19  db block gets

          1  consistent gets

          3  physical reads

        964  redo size

        675  bytes sent via SQL*Net to client

        562  bytes received via SQL*Net from client

          4  SQL*Net roundtrips to/from client

          1  sorts (memory)

          0  sorts (disk)

          1  rows processed





SYS@ORCL>insert into test_db1 values(2);





1 row created.









Execution Plan

----------------------------------------------------------





-------------------------------------------------------------------------

| Id  | Operation        | Name | Rows  | Bytes | Cost (%CPU)| Time     |

-------------------------------------------------------------------------

|   0 | INSERT STATEMENT |      |     1 |   100 |     1   (0)| 00:00:01 |

-------------------------------------------------------------------------









Statistics

----------------------------------------------------------

          1  recursive calls

          3  db block gets

          1  consistent gets

          0  physical reads

        244  redo size

        675  bytes sent via SQL*Net to client

        562  bytes received via SQL*Net from client

          4  SQL*Net roundtrips to/from client

          1  sorts (memory)

          0  sorts (disk)

          1  rows processed









2. 创建一个区 大小为80k

SYS@ORCL>create tablespace tyger2 datafile '/u01/app/oracle/oradata/ORCL/tyger2.dbf' size 10m

  2  extent management local uniform size 80k;





Tablespace created.





SYS@ORCL>create table test_db2(x int) tablespace tyger2;





Table created.





SYS@ORCL>insert into test_db2 values(1);





1 row created.









Execution Plan

----------------------------------------------------------





-------------------------------------------------------------------------

| Id  | Operation        | Name | Rows  | Bytes | Cost (%CPU)| Time     |

-------------------------------------------------------------------------

|   0 | INSERT STATEMENT |      |     1 |   100 |     1   (0)| 00:00:01 |

-------------------------------------------------------------------------









Statistics

----------------------------------------------------------

          1  recursive calls

         29  db block gets

          1  consistent gets

         28  physical reads

       1364  redo size

        675  bytes sent via SQL*Net to client

        562  bytes received via SQL*Net from client

          4  SQL*Net roundtrips to/from client

          1  sorts (memory)

          0  sorts (disk)

          1  rows processed





SYS@ORCL>insert into test_db2 values(2);





1 row created.









Execution Plan

----------------------------------------------------------





-------------------------------------------------------------------------

| Id  | Operation        | Name | Rows  | Bytes | Cost (%CPU)| Time     |

-------------------------------------------------------------------------

|   0 | INSERT STATEMENT |      |     1 |   100 |     1   (0)| 00:00:01 |

-------------------------------------------------------------------------









Statistics

----------------------------------------------------------

          1  recursive calls

          3  db block gets

          1  consistent gets

          0  physical reads

        288  redo size

        677  bytes sent via SQL*Net to client

        562  bytes received via SQL*Net from client

          4  SQL*Net roundtrips to/from client

          1  sorts (memory)

          0  sorts (disk)

          1  rows processed

结论:对于新创建的表来说。由于创建的是空表就没有对表里的空间进行分配,当插入第一条数据时,就须要对区上的块进行空间分配和对数据字典的一些操作,就会有比較大的db_block_size。

假设再次插入数据的话就基本没有对空间的分配啥的,就会有比較少的db_block_size产生。

所以对于extent指定的区大小来说  相同的空表插入相同的数据 db_block_size 可能不同。

对插入更新、删除的实验:

SYS@ORCL>update test_db1 set x=3 where x=1;





1 row updated.









Execution Plan

----------------------------------------------------------

Plan hash value: 2185639234





-------------------------------------------------------------------------------

| Id  | Operation          | Name     | Rows  | Bytes | Cost (%CPU)| Time     |

-------------------------------------------------------------------------------

|   0 | UPDATE STATEMENT   |          |     1 |    13 |     2   (0)| 00:00:01 |

|   1 |  UPDATE            | TEST_DB1 |       |       |            |          |

|*  2 |   TABLE ACCESS FULL| TEST_DB1 |     1 |    13 |     2   (0)| 00:00:01 |

-------------------------------------------------------------------------------





Predicate Information (identified by operation id):

---------------------------------------------------





   2 - filter("X"=1)





Note

-----

   - dynamic sampling used for this statement









Statistics

----------------------------------------------------------

         28  recursive calls

          1  db block gets

         11  consistent gets

          0  physical reads

        388  redo size

        678  bytes sent via SQL*Net to client

        565  bytes received via SQL*Net from client

          4  SQL*Net roundtrips to/from client

          1  sorts (memory)

          0  sorts (disk)

          1  rows processed





SYS@ORCL>delete test_db1 where x=2;





1 row deleted.









Execution Plan

----------------------------------------------------------

Plan hash value: 3135214910





-------------------------------------------------------------------------------

| Id  | Operation          | Name     | Rows  | Bytes | Cost (%CPU)| Time     |

-------------------------------------------------------------------------------

|   0 | DELETE STATEMENT   |          |     1 |    13 |     2   (0)| 00:00:01 |

|   1 |  DELETE            | TEST_DB1 |       |       |            |          |

|*  2 |   TABLE ACCESS FULL| TEST_DB1 |     1 |    13 |     2   (0)| 00:00:01 |

-------------------------------------------------------------------------------





Predicate Information (identified by operation id):

---------------------------------------------------





   2 - filter("X"=2)





Note

-----

   - dynamic sampling used for this statement









Statistics

----------------------------------------------------------

          5  recursive calls

          1  db block gets

          9  consistent gets

          0  physical reads

        288  redo size

        678  bytes sent via SQL*Net to client

        557  bytes received via SQL*Net from client

          4  SQL*Net roundtrips to/from client

          1  sorts (memory)

          0  sorts (disk)

          1  rows processed





SYS@ORCL>insert into test_db1 values(&x);

Enter value for x: 1

old   1: insert into test_db1 values(&x)

new   1: insert into test_db1 values(1)





1 row created.





。。。。

SYS@ORCL>commit;





Commit complete.





SYS@ORCL>select * from test_db1;





         X

----------

         3

         1

         2

         3

         4

         5

         6

         7

         8

         9

        19

        10

         1

        11

        12

        13

        14

        15

        16

        17

        18





21 rows selected.







SYS@ORCL>alter system flush buffer_cache;





System altered.

SYS@ORCL>update test_db1 set x=21 where x=18;





1 row updated.









Execution Plan

----------------------------------------------------------

Plan hash value: 2185639234





-------------------------------------------------------------------------------

| Id  | Operation          | Name     | Rows  | Bytes | Cost (%CPU)| Time     |

-------------------------------------------------------------------------------

|   0 | UPDATE STATEMENT   |          |     1 |    13 |     2   (0)| 00:00:01 |

|   1 |  UPDATE            | TEST_DB1 |       |       |            |          |

|*  2 |   TABLE ACCESS FULL| TEST_DB1 |     1 |    13 |     2   (0)| 00:00:01 |

-------------------------------------------------------------------------------





Predicate Information (identified by operation id):

---------------------------------------------------





   2 - filter("X"=18)





Note

-----

   - dynamic sampling used for this statement









Statistics

----------------------------------------------------------

          5  recursive calls

          1  db block gets

          9  consistent gets

          0  physical reads

        412  redo size

        678  bytes sent via SQL*Net to client

        567  bytes received via SQL*Net from client

          4  SQL*Net roundtrips to/from client

          1  sorts (memory)

          0  sorts (disk)

          1  rows processed

二、对于比較大的表来说

SYS@ORCL>create table test_db1 as select * from dba_objects;





Table created.

 

 

SYS@ORCL>insert into test_db1 values('tyger','tyger','tyger',22,23,'tyger','04-SEP-14','04-SEP-14','tyger','t','t','t','t');





1 row created.









Execution Plan

----------------------------------------------------------





-------------------------------------------------------------------------

| Id  | Operation        | Name | Rows  | Bytes | Cost (%CPU)| Time     |

-------------------------------------------------------------------------

|   0 | INSERT STATEMENT |      |     1 |   100 |     1   (0)| 00:00:01 |

-------------------------------------------------------------------------









Statistics

----------------------------------------------------------

          1  recursive calls

         15  db block gets

          1  consistent gets

          5  physical reads

       1144  redo size

        677  bytes sent via SQL*Net to client

        646  bytes received via SQL*Net from client

          4  SQL*Net roundtrips to/from client

          1  sorts (memory)

          0  sorts (disk)

          1  rows processed





 

 

SYS@ORCL>alter system flush buffer_cache;





System altered.





SYS@ORCL>update test_db1 set OBJECT_NAME='tom' where owner='tyger';





3 rows updated.









Execution Plan

----------------------------------------------------------

Plan hash value: 2185639234





-------------------------------------------------------------------------------

| Id  | Operation          | Name     | Rows  | Bytes | Cost (%CPU)| Time     |

-------------------------------------------------------------------------------

|   0 | UPDATE STATEMENT   |          |     8 |   664 |   154   (2)| 00:00:02 |

|   1 |  UPDATE            | TEST_DB1 |       |       |            |          |

|*  2 |   TABLE ACCESS FULL| TEST_DB1 |     8 |   664 |   154   (2)| 00:00:02 |

-------------------------------------------------------------------------------





Predicate Information (identified by operation id):

---------------------------------------------------





   2 - filter("OWNER"='tyger')





Note

-----

   - dynamic sampling used for this statement









Statistics

----------------------------------------------------------

          5  recursive calls

          3  db block gets

        769  consistent gets

        687  physical reads

        824  redo size

        679  bytes sent via SQL*Net to client

        589  bytes received via SQL*Net from client

          4  SQL*Net roundtrips to/from client

          1  sorts (memory)

          0  sorts (disk)

          3  rows processed

SYS@ORCL>delete test_db1 where owner='tyger';





3 rows deleted.









Execution Plan

----------------------------------------------------------

Plan hash value: 3135214910





-------------------------------------------------------------------------------

| Id  | Operation          | Name     | Rows  | Bytes | Cost (%CPU)| Time     |

-------------------------------------------------------------------------------

|   0 | DELETE STATEMENT   |          |     8 |   136 |   154   (2)| 00:00:02 |

|   1 |  DELETE            | TEST_DB1 |       |       |            |          |

|*  2 |   TABLE ACCESS FULL| TEST_DB1 |     8 |   136 |   154   (2)| 00:00:02 |

-------------------------------------------------------------------------------





Predicate Information (identified by operation id):

---------------------------------------------------





   2 - filter("OWNER"='tyger')





Note

-----

   - dynamic sampling used for this statement









Statistics

----------------------------------------------------------

          4  recursive calls

          3  db block gets

        769  consistent gets

          0  physical reads

       1064  redo size

        679  bytes sent via SQL*Net to client

        567  bytes received via SQL*Net from client

          4  SQL*Net roundtrips to/from client

          1  sorts (memory)

          0  sorts (disk)

          3  rows processed

结论:对于占用多个段的大表来说。可能对数据改动时 对 数据字典  或者对于区、块的分配都包括在 physical reads中。

感想:

对于生产库来说,这个值一般不会太考虑究竟数字是怎么来的,由于数字都比较大,通常只关心它的尺寸大小。

版权声明:本文博主原创文章。博客,未经同意不得转载。

左右db_block_size了解和实验的更多相关文章

  1. 关于对db_block_gets的理解与实验

    实验 一. 自己手动创建的小表 创建一个区大小为  40k  SYS@ORCL>show parameter db_block_size NAME                         ...

  2. 模拟生产搭建Standby RAC实验环境(11.2.0.4 DG)

    模拟生产搭建Standby RAC实验环境(11.2.0.4 DG) 环境:RHEL 6.5 + Oracle 11.2.0.4 GI.DB 1.需求背景介绍 2.准备工作 3.主库配置 4.备库配置 ...

  3. [原] 利用 OVS 建立 VxLAN 虚拟网络实验

    OVS 配置 VxLAN HOST A ------------------------------------------ | zh-veth0(10.1.1.1) VM A | | ---|--- ...

  4. Android中Activity的四大启动模式实验简述

    作为Android四大组件之一,Activity可以说是最基本也是最常见的组件,它提供了一个显示界面,从而实现与用户的交互,作为初学者,必须熟练掌握.今天我们就来通过实验演示,来帮助大家理解Activ ...

  5. SEED实验系列文章目录

    美国雪城大学SEEDLabs实验列表 SEEDLabs是一套完整的信息安全实验,涵盖本科信息安全教学中的大部分基本原理.项目组2002年由杜文亮教授创建,目前开发了30个实验,几百所大学已采用.实验楼 ...

  6. 物联网实验4 alljoyn物联网实验之手机局域网控制设备

    AllJoyn开源物联网协议框架,官方描述是一个能够使连接设备之间进行互操作的通用软件框架和系统服务核心集,也是一个跨制造商来创建动态近端网络的软件应用.高通已经将该项目捐赠给了一个名为“AllSee ...

  7. (转)linux下和云端通讯的例程, ubuntu和openwrt实验成功(一)

    一.  HTTP请求的数据流总结#上传数据, yeelink的数据流如下POST /v1.0/device/4420/sensor/9089/datapoints HTTP/1.1Host: api. ...

  8. (原创) alljoyn物联网实验之手机局域网控制设备

    AllJoyn开源物联网协议框架,官方描述是一个能够使连接设备之间进行互操作的通用软件框架和系统服务核心集,也是一个跨制造商来创建动态近端网络的软件应用.高通已经将该项目捐赠给了一个名为“AllSee ...

  9. 实验:Oracle直接拷贝物理存储文件迁移

    实验目的:Oracle直接拷贝物理文件迁移,生产库有类似施工需求,故在实验环境简单验证一下. 实验环境: A主机:192.168.1.200 Solaris10 + Oracle 11.2.0.1 B ...

随机推荐

  1. C++--allocator类的使用

    C++为我们提供了安全的内存空间申请方式与释放方式,可是new与delete表达式却是把空间的分配回收与对象的构建销毁紧紧的关联在一起.实际上,作为与C语言兼容的语言,C++也为我们提供了更加底层的内 ...

  2. 你不知道的JavaScript上卷笔记

    你不知道的JavaScript上卷笔记 前言 You don't know JavaScript是github上一个系列文章   初看到这一标题的时候,感觉怎么老外也搞标题党,用这种冲突性比较强的题目 ...

  3. 基于Java的开源CMS系统选择(转)

    CMS概述 对于网站CMS系统而言,基于PHP的是主流,如Drupal/Joomla在各个主流虚拟机提供商上都是标准配置,也被广泛使用. 但如果你拥有Java团队,或者项目目标是想建立一个企业网使用的 ...

  4. Gradle 修改 Maven 仓库地址(转)

    近来迁移了一些项目到Android Studio,采用Gradle构建确实比原来的Ant方便许多.但是编译时下载依赖的网速又着实令人蛋疼不已. 如果能切换到国内的Maven镜像仓库,如开源中国的Mav ...

  5. 策略模式——MFC样例

    Context(应用场景): 1.须要使用ConcreteStrategy提供的算法. 2.内部维护一个Strategy的实例. 3. 负责动态设置执行时Strategy详细的实现算法. 4.负责跟S ...

  6. mysql主键设置成auto_increment时,进行并发性能測试出现主键反复Duplicate entry 'xxx' for key 'PRIMARY'

    mysql主键设置成auto_increment时,进行并发性能測试出现主键反复Duplicate entry 'xxx' for key 'PRIMARY' 解决方法: 在my.cnf的[mysql ...

  7. Hibernate对象持久化框架

    JDBC:(Java Data Base Connectivity)java数据库连接 java.sql包提供JDBC API,可通过它编写訪问数据库的程序代码.当中经常使用的接口和类包含以下内容: ...

  8. iOS国际化和genstrings所有子文件夹本地化字符串

    iOS国际化和genstrings所有子文件夹本地化字符串 在最近的一个繁忙的对外工程.每天加班.没有时间更新博客.简单谈一下知识的国际化. 首先,我们使用串.必须NSLocalizedString( ...

  9. Windows Phone开发(25):启动器与选择器之WebBrowserTask

    原文:Windows Phone开发(25):启动器与选择器之WebBrowserTask 从名字上就看出来,这个家伙就是打开浏览并浏览到指定页面. 它有两个用途完全一样的属性:Uri属性是Syste ...

  10. hdu 4885 (n^2*log(n)推断三点共线建图)+最短路

    题意:车从起点出发,每次仅仅能行驶L长度,必需加油到满,每次仅仅能去加油站或目的地方向,路过加油站就必需进去加油,问最小要路过几次加油站. 開始时候直接建图,在范围内就有边1.跑最短了,再读题后发现, ...