单块读
来源:互联网 发布:淘宝网中老年女衬衫 编辑:程序博客网 时间:2024/06/05 22:45
什么是单块读?顾名思义,就是单个块单个块得读,等待事件表现为db file sequential read;单块读有哪些情况?大部分索引扫描是单块读(除index fast full scan),rowid回表是单块读,undo里读数据是单块读,行迁移行链接是单块读,读取段头是单块读,读边界块是单块读。现在就来探讨下undo里读数据是单块读的情况:--session1:SQL> begin 2 for x in 1..1000000 loop 3 update t set id=999; 4 end loop; 5 commit; 6 end; 7 /执行了太久了,不出结果--session2:SQL> select count(*) from t;--session3:SQL> @getsession_mySID_SERIAL SQL_ID_NUM P_NAME P_VALUE EVENT SQL_TEXT MINUTE1 MINUTE_EXEC INST_ID USERNAME---------- --------------- --------------- --------------- ------------------------- -------------------- ---------- ----------- ---------- ----------MACHINE---------------1,7 7kyc4rsrd3q1b,0 address 837617808 latch: cache buffers chai UPDATE T SET ID=999 469.68 7.1 1 SCOTT number 150 ns tries 0lhj29,871 cyzznbykb509s,0 file# 3 db file sequential read select count(*) from .98 .58 1 SCOTT block# 398158 t blocks 1lhj2 rows selected.Elapsed: 00:00:00.09--这里select count(*) from t 对应的等待时间为 db file sequential read--隔一会再查还是一样SQL> @getsession_mySID_SERIAL SQL_ID_NUM P_NAME P_VALUE EVENT SQL_TEXT MINUTE1 MINUTE_EXEC INST_ID USERNAME---------- --------------- --------------- --------------- ------------------------- -------------------- ---------- ----------- ---------- ----------MACHINE---------------1,7 7kyc4rsrd3q1b,0 count 1 Data file init write UPDATE T SET ID=999 470.17 7.58 1 SCOTT intr 256 timeout 4294967295lhj29,871 cyzznbykb509s,0 file# 3 db file sequential read select count(*) from 1.47 1.07 1 SCOTT block# 419088 t blocks 1lhj2 rows selected.Elapsed: 00:00:00.01--file#对应的是undo表空间SQL> select file_id,tablespace_name from dba_data_files where file_id = 3; FILE_ID TABLESPACE_NAME---------- ------------------------------ 3 UNDOTBS1 --可见对应的是undo表空间1 row selected.Elapsed: 00:00:11.88说明表在做dml的时候,此时再发出一个关于此表的查询,如果查询的数据刚好是dml的数据,那么是从undo表空间读取的。undo有优点也有缺点:优点是能保证能保证数据的准确性,在修改数据之前,oracle会把要修改的copy到undo表空间,事务成功了则释放可重新利用undo,事务失败了则通过undo来回滚到dml之前。这是oracle独有的机制;缺点也很明显,就是undo里面读数据是单块读,速度非常慢。这也就是为什么很多数据库down掉之后,恢复要很长一段时间。
0 0
- 单块读
- 什么情况下发生单块读?
- 单块读和多块读操作汇总
- index range scan 单块读 无法走并行
- 王立平--android中的权限
- Ceph添加/删除Mon(ceph.conf)
- C++ 内存池 -- C++ Memory Pool
- 第九周项目五程序填充问题
- NSdata 与 NSString,Byte数组,UIImage 的相互转换
- 单块读
- StorSimple 简介
- 6.1 泛型高阶函数
- SSM框架Web程序的流程(Spring SpringMVC Mybatis)
- error LNK2019: 无法解析的外部符号 __imp__DispatchMessageW@4,该符号在函数 _WinMain@16 中被引用
- 无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型“Microsoft.VisualStudio.OLE.Interop.IServiceProvider”。
- BOOST库介绍,安装
- JS进阶书籍
- 【Java】Given two binary strings, return their sum