当执行SELECT语句时,如果在内存里找不到相应的数据,就会从磁盘读取进而缓存至LRU末端(冷端),这个过程就叫物理读。当相应数据已在内存,就会逻辑读。

物理读是磁盘读,逻辑读是内存读;内存读的速度远比磁盘读来得快。

参数db_file_multiblock_read_count=N,会决定在全表扫描或索引全扫描时单次IO最大读取N个数据块。

下在结合实验来讲解物理读:

创建测试表:

create table t3 as select * from dba_segments tablespace users;

对测试表进行统计信息收集:

begin
  dbms_stats.gather_table_stats(ownname => 'SYS',tabname => 'T3',cascade => true);
end;

查看T3表的相关信息:

select * from dba_tables where table_name='T3'

数据分布在100个数据块

修改参数

SQL> alter session set db_file_multiblock_read_count=1;

对T3表全扫描

可以看到,T3全扫描过程读取了101个数据块,同时引起103内存读(包括当前读和一致读)

截取这个步骤的AWR信息

db_file_multiblock_read_count=1的情况下,查询T3全表数据期间发生100.3个数据块的物理读,IO次数为100.3次。

USERS表空间的user01.dbf数据文件发生了101次读操作

增大db_file_multiblock_read_count之后

SQL> alter session set db_file_multiblock_read_count=128;

Session altered.

SQL> alter system flush buffer_cache;

查询表T3

物理读依旧101,逻辑读也相应改变

USERS表空间users01.dbf数据文件读次数降为15次

同样的数量的数据块物理读,如果单次读取的数据块越多,那么IO次数就越少,系统性能则越好。

最新文章

  1. 缓冲区溢出利用——捕获eip的傻瓜式指南
  2. nginx的优化
  3. PRML读书会第十四章 Combining Models(committees,Boosting,AdaBoost,决策树,条件混合模型)
  4. SharpGL学习笔记(十五) 纹理映射
  5. hadoop wordcount
  6. HW7.13
  7. HTTP返回码总结 (zz)
  8. WPF 命令的简单总结
  9. ArcGIS API for JavaScript 4.2学习笔记[15] 弹窗内容的格式与自定义格式
  10. 剑指offer-(19)顺时针打印矩阵
  11. linq 左连接后实现与主表一对一关系数据
  12. Win10系列:C#应用控件基础4
  13. 开启BBR加速
  14. GPUImage中对比度调整的实现——GPUImageContrastFilter
  15. angular插件制作——Directive指令使用详解
  16. [转]java中判断字符串是否为数字的三种方法
  17. ADO.NET 批量插入
  18. Python构造字符串
  19. write()和print()还有<%= %>的细微区别
  20. 如何在java中实现跨线程的通讯

热门文章

  1. C#调用系统API
  2. malloc 返回值的类型是 void *
  3. jquery表单验证插件 jquery.form.js ------转载
  4. hdu4525
  5. ORA-01102的解决办法
  6. 二 Android Studio 打包EgretApp (开机画面、横竖屏、调试、和原生交互)
  7. 【BZOJ2049,2631,3282,1180】LCT模板四连A
  8. 《从零开始学Swift》学习笔记(Day 69)——Swift与Objective-C混合编程之语言
  9. SSM框架---搭建
  10. LeetCode 笔记系列十 Suduko