今天是2014-01-08,继续完成等待事件系列。 什么是:db file sequential read:? 简单说,就是oracle要读取单块数据,其他会话存在等待,有三个参数p1,是要读的文件,p2是block#,开始读取的数据块号,p3是blocks,一般p3为单块,但是如果是多块那么一般发

今天是2014-01-08,继续完成等待事件系列。

什么是:db file sequential read:?

简单说,就是oracle要读取单块数据,其他会话存在等待,有三个参数p1,是要读的文件,p2是block#,开始读取的数据块号,p3是blocks,一般p3为单块,但是如果是多块那么一般发生在从temporary segment中读的。

该类等待事件的出现主要是由于执行对索引,回滚(undo)段,和表(当借助rowid来访问),控制文件和数据文件头的单块读操作SQL语句(用户和递归)引起的,该事件的产生要么表的连接顺序有问题,要么索引使用不当导致。

如何解决呢:

1、优化sql,主要是看执行计划,能不走全表的就不走全表(但是有时候全表可能比索引更快),能走index scan的就不走table access byindex rowid.

2、增加file的i/0速率,一般对于硬件存储设备而言,数据文件所在的磁盘采用哪种raid也是很显著

3、增加buffer cache大小,使其数据在内存中得到,但是到了10G、11g 启用了asmm和amm那么buffer cache是会动的,或者考虑将相关表存放到keep 池中,如果是11g可以考虑result cache。

4、可以将数据放到非标准块中(大块存多行数据),避免i/0

5、采用索引组织表,减少i/o

6、采用并行查询执行(占用一定内存和cpu,需要依据主机负载判断)

7、可以尝试采用分区表等。

案例分析:

1、获得sql信息如下:

SELECTcount(1)

FROMWF_DEAL_COMMON_MAIN_T M,

WFC_ROOT_SUB_RELATION_T R,

RT_WORKITEMINST W

WHERE M.F_PROCINST_ID = R.ROOT_ID

AND R.SUB_ID =W.PROC_INSTANCE_ID

AND W.current_statein (1,2)

AND W.USER_ID = :1

AND W.OVERDUED = :2

查看执行计划如下:

>SELECT count(1)

16:02:35 2 FROM WF_DEAL_COMMON_MAIN_T M,

16:02:35 3 WFC_ROOT_SUB_RELATION_T R,

16:02:35 4 RT_WORKITEMINST W

16:02:35 5 WHERE M.F_PROCINST_ID = R.ROOT_ID

16:02:35 6 AND R.SUB_ID = W.PROC_INSTANCE_ID

16:02:35 7 AND W.current_state in (1, 2)

16:02:36 8 AND W.USER_ID = 999

16:02:36 9 AND W.OVERDUED = 1

16:02:36 10 ;

Predicate Information (identified by operation id):

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

4 -filter(("W"."CURRENT_STATE"=1 OR"W"."CURRENT_STATE"=2) AND"W"."OVERDUED"=1 AND

TO_NUMBER("W"."USER_ID")=999)

6 -access("R"."SUB_ID"="W"."PROC_INSTANCE_ID")

filter("R"."SUB_ID"="W"."PROC_INSTANCE_ID")

8 -access("M"."F_PROCINST_ID"="R"."ROOT_ID")

Note

-----

- dynamic samplingused for this statement

index full scan,table access full。注意此时有隐式转换。

如果把变量换成字符串。执行计划如下:

>r

1 SELECT count(1)

2 FROM WF_DEAL_COMMON_MAIN_T M,

3 WFC_ROOT_SUB_RELATION_T R,

4 RT_WORKITEMINST W

5 WHERE M.F_PROCINST_ID = R.ROOT_ID

6 AND R.SUB_ID = W.PROC_INSTANCE_ID

7 AND W.current_state in (1, 2)

8 AND W.USER_ID ='999'

9* AND W.OVERDUED = 2

Predicate Information (identified by operation id):

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

4 -filter(("W"."CURRENT_STATE"=1 OR"W"."CURRENT_STATE"=2) AND"W"."OVERDUED"=2)

5 -access("W"."USER_ID"='640001312')

7 -access("R"."SUB_ID"="W"."PROC_INSTANCE_ID")

8 -access("M"."F_PROCINST_ID"="R"."ROOT_ID")

Note

-----

- dynamicsampling used for this statement

总结:

从如上内容,可以分析得出:因为w.user_id为varchar 类型,当w.user_id赋值为数字则会产生index full scan和table access full,这主要是由于隐式转换导致,解决该办法一种是建立函数索引,另一种是在传送该值变量的时候进行转换。建议采用后者。

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

mysql 单块读 多块读_dbfilesequentialread等待事件相关推荐

  1. oracle缓冲等待块,CSS_Oracle数据库buffer busy wait等待事件, 当会话意图访问缓冲存储 - phpStudy...

    Oracle数据库buffer busy wait等待事件 当会话意图访问缓冲存储器中的数据块,而该数据块正在被其它会话使用时产生buffer busy waits事件.其它会话可能正在从数据文件向缓 ...

  2. MySQL数据库锁模块中的当前读和快照读

    文章目录 当前读 快照读 当前读 select - lock in share mode,select - for update update,delete,insert 即当前读是加了锁的增删改查操 ...

  3. 锁模块之当前读和快照读

    锁模块之当前读和快照读 InnoDB可重复读隔离级别下是如何避免幻读的. 这里我们分为表象和内在 表象:快照读(非阻塞读)--伪MVCC (前提是在RR级别下) 内在:next-key 锁(行锁+ga ...

  4. debugfs查看文件块号,dd命令读指定块号的内容

    1.通过debugfs查看指定文件的块号 ①df ./      查看文件系统 ②debugfs 文件系统 通过 blocks 文件路径 看文件的块号.一个文件占据的块号并不一定连续. 2. dd命令 ...

  5. java读文件块会读出null,为什么?

    java读文件块会读出null,为什么? 可以确定这个块不是最后一块 /*** 从文件中读取一块数据* @param fs* @param seel:第几块* @param vChunkSize:块大 ...

  6. Java代码块总结(速读版)

    **代码块必须直接定义在类中**,有两种:静态代码块 和 非静态代码块 静态代码块是在类(class文件)加载内存时执行,而非静态代码块是在创建对象(new 类名();)时执行. public cla ...

  7. mysql物理读和逻辑读,SQL Server中STATISTICS IO物理读和逻辑读的误区

    SQL Server中STATISTICS IO物理读和逻辑读的误区 人人知道,SQL Server中可以行使下面下令查看某个语句读写IO的情形 SET STATISTICS IO ON 那么这个下令 ...

  8. mysql事务ACID原理MVCC 幻读

    文章目录 mysql事务原理MVCC 1存储引擎 1.InnoDB存储引擎 2.MyISAM存储引擎 2.undo和redo的功能 undo: redo: 3.mysql锁 3.1表级锁 3.2行级锁 ...

  9. 25天掌握java基础(八)——static、单例、代码块、继承

    文章目录 Demo08-static.单例.代码块.继承 1.static 1.1static静态关键字 1.1.1static修饰成员变量 1.1.2static修饰成员方法 1.1.3static ...

最新文章

  1. .Net 程序员面试 C# 语言篇 (回答Scott Hanselman的问题)
  2. Linux - Sysstat [ All-in-One System Performance and Usage Activity Monitoring Tool For Linux]
  3. Interval query
  4. codeforces 283C
  5. 《Sibelius 脚本程序设计》连载(三十九) - 4.9 SystemStaff
  6. Java基础_学习笔记_13_类的多态性(二)
  7. java中子类继承父类时是否继承构造函数
  8. cmd下运行Oracle清屏命令
  9. 小知识--Windows语音效果
  10. 易语言短信接口_易语言短信接口_易语言发短信_易语言短信验证码_验证码短信代码示例_互亿无线...
  11. 超前进位加法器(Carry-Lookahead Adder,CLA)
  12. Rectangle矩形类
  13. 剑指offer 09、30:栈与队列
  14. 18年12月计算机英语统考成绩查询,没查的抓紧,18年12月四六级成绩查询入口将关闭...
  15. vue全局组件自动注册
  16. 企业微信无缘无故被封
  17. 比较好用的linux桌面系统,目前最好用的Linux桌面系统Mint
  18. 防止表单重复提交方法
  19. 英语文档学习颗粒归仓
  20. win7安装远程控制软件 TeamViewer

热门文章

  1. python爬取京东商品信息代码_Python利用Xpath选择器爬取京东网商品信息
  2. mysql加入新的从节点怎么配置,Mysql 5.7从节点配置多线程主从复制的方法详解
  3. 视频问答PPT大放送丨中信银行邓琼-GoldenDB分布式数据库研发与应用实践
  4. DM online-远大见未来 大咖讲堂丨大数据+,信息化应用与技术落地
  5. ​供应链管理-ERP的前世今生
  6. 前世今生:蚂蚁金服自研数据库OceanBase的道路与思考
  7. 前端面试常考题:JS垃圾回收机制
  8. 【华为云技术分享】云图说|全新华为云云备份服务:为您的数据提供三合一的保障
  9. 【华为云技术分享】云小课 | OBS提供多方面数据安全保障,让存储放心、贴心、省心
  10. 【华为云技术分享】【Python算法】分类与预测——Python随机森林