[20210301]为什么逻辑读这么多.txt --//重新看链接http://blog.itpub.net/267265/viewspace-2152011/=>[20180319]直接路径读特例12c.txt --//我以为自己终于知道为什么当时rowid between的逻辑读是5.主要在于读段头多次. --//实际上的测试还是颠覆我对该问题的看法,或者讲还是不理解为什么oracle要这样操作. 1.环境: SCOTT@book> @ ver1 PORT_STRING VERSION BANNER ------------------------------ -------------- -------------------------------------------------------------------------------- x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production create table t as select * from all_objects,(select 1 from dual connect by level<=4) ; create index i_t_object_id on t(object_id); --//分析略 SYS@book> alter system set "_trace_pin_time"=1 scope=spfile; System altered. --//重启数据库. 2.测试: SCOTT@book> alter session set statistics_level=all; Session altered. SCOTT@book> alter session set "_serial_direct_read"=never; Session altered. SCOTT@book> select rowid ,owner from t where object_id =42; ROWID OWNER ------------------ ------ AAAWGSAAEAAAAIlAAo SYS AAAWGSAAEAAAAIlAAp SYS AAAWGSAAEAAAAIlAAq SYS AAAWGSAAEAAAAIlAAr SYS SCOTT@book> select rowid ,owner,object_id from t where rowid between 'AAAWGSAAEAAAAIlAAo' and 'AAAWGSAAEAAAAIlAAp'; ROWID OWNER OBJECT_ID ------------------ ------ ---------- AAAWGSAAEAAAAIlAAo SYS 42 AAAWGSAAEAAAAIlAAp SYS 42 Plan hash value: 280204748 ------------------------------------------------------------------------------------------------------------------------------ | Id | Operation | Name | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time | A-Rows | A-Time | Buffers | ------------------------------------------------------------------------------------------------------------------------------ | 0 | SELECT STATEMENT | | 1 | | | 1391 (100)| | 2 |00:00:00.01 | 10 | |* 1 | TABLE ACCESS BY ROWID RANGE| T | 1 | 56 | 2352 | 1391 (1)| 00:00:17 | 2 |00:00:00.01 | 10 | ------------------------------------------------------------------------------------------------------------------------------ --//共10个逻辑读,看看跟踪文件读了那些文件呢? --//跟踪看到的情况: *** 2021-03-01 09:30:07.740 pin ktewh25: kteinicnt dba 0x1000222:4 time 2396795371 pin ktewh26: kteinpscan dba 0x1000222:4 time 2396795454 pin ktewh27: kteinmap dba 0x1000222:4 time 2396795474 pin kdswh11: kdst_fetch dba 0x1000225:1 time 2396795503 pin kdswh11: kdst_fetch dba 0x1000225:1 time 2396795978 pin ktewh27: kteinmap dba 0x1000222:4 time 2396796042 pin ktewh27: kteinmap dba 0x1000222:4 time 2396796065 pin ktewh27: kteinmap dba 0x1000222:4 time 2396796080 pin ktewh27: kteinmap dba 0x1000222:4 time 2396796094 pin ktewh27: kteinmap dba 0x1000222:4 time 2396796107 --//0x1000222 = set dba 4,546 = alter system dump datafile 4 block 546 = 16777762 --//kteinmap 读了6次. SCOTT@book> select * from dba_segments where owner=user and segment_name='T' 2 @ prxx ============================== OWNER : SCOTT SEGMENT_NAME : T PARTITION_NAME : SEGMENT_TYPE : TABLE SEGMENT_SUBTYPE : ASSM TABLESPACE_NAME : USERS HEADER_FILE : 4 HEADER_BLOCK : 546 BYTES : 41943040 BLOCKS : 5120 EXTENTS : 55 INITIAL_EXTENT : 65536 NEXT_EXTENT : 1048576 MIN_EXTENTS : 1 MAX_EXTENTS : 2147483645 MAX_SIZE : 2147483645 RETENTION : MINRETENTION : PCT_INCREASE : FREELISTS : FREELIST_GROUPS : RELATIVE_FNO : 4 BUFFER_POOL : DEFAULT FLASH_CACHE : DEFAULT CELL_FLASH_CACHE : DEFAULT PL/SQL procedure successfully completed. SYS@book> alter system dump datafile 4 block 546; System altered. Auxillary Map -------------------------------------------------------- Extent 0 : L1 dba: 0x01000220 Data dba: 0x01000223 Extent 1 : L1 dba: 0x01000220 Data dba: 0x01000230 Extent 2 : L1 dba: 0x010002a0 Data dba: 0x010002a1 Extent 3 : L1 dba: 0x010002a0 Data dba: 0x010002a8 Extent 4 : L1 dba: 0x010002b0 Data dba: 0x010002b1 Extent 5 : L1 dba: 0x010002b0 Data dba: 0x010002b8 Extent 6 : L1 dba: 0x010002c0 Data dba: 0x010002c1 Extent 7 : L1 dba: 0x010002c0 Data dba: 0x010002c8 Extent 8 : L1 dba: 0x010002d0 Data dba: 0x010002d1 Extent 9 : L1 dba: 0x010002d0 Data dba: 0x010002d8 Extent 10 : L1 dba: 0x010002e0 Data dba: 0x010002e1 Extent 11 : L1 dba: 0x010002e0 Data dba: 0x010002e8 Extent 12 : L1 dba: 0x010002f0 Data dba: 0x010002f1 Extent 13 : L1 dba: 0x010002f0 Data dba: 0x010002f8 Extent 14 : L1 dba: 0x01000d88 Data dba: 0x01000d89 Extent 15 : L1 dba: 0x01000d88 Data dba: 0x01000d90 Extent 16 : L1 dba: 0x01000300 Data dba: 0x01000302 Extent 17 : L1 dba: 0x01000380 Data dba: 0x01000382 Extent 18 : L1 dba: 0x01000400 Data dba: 0x01000402 Extent 19 : L1 dba: 0x01000480 Data dba: 0x01000482 Extent 20 : L1 dba: 0x01000500 Data dba: 0x01000502 Extent 21 : L1 dba: 0x01000580 Data dba: 0x01000582 Extent 22 : L1 dba: 0x01000600 Data dba: 0x01000602 Extent 23 : L1 dba: 0x01000680 Data dba: 0x01000682 Extent 24 : L1 dba: 0x01000700 Data dba: 0x01000702 Extent 25 : L1 dba: 0x01000780 Data dba: 0x01000782 Extent 26 : L1 dba: 0x01000800 Data dba: 0x01000802 Extent 27 : L1 dba: 0x01000880 Data dba: 0x01000882 Extent 28 : L1 dba: 0x01000900 Data dba: 0x01000902 Extent 29 : L1 dba: 0x01000a00 Data dba: 0x01000a02 Extent 30 : L1 dba: 0x01000a80 Data dba: 0x01000a82 Extent 31 : L1 dba: 0x01000b00 Data dba: 0x01000b02 Extent 32 : L1 dba: 0x01000b80 Data dba: 0x01000b82 Extent 33 : L1 dba: 0x01000c00 Data dba: 0x01000c02 Extent 34 : L1 dba: 0x01000c80 Data dba: 0x01000c82 Extent 35 : L1 dba: 0x01000d00 Data dba: 0x01000d02 Extent 36 : L1 dba: 0x01000e00 Data dba: 0x01000e02 Extent 37 : L1 dba: 0x01000e80 Data dba: 0x01000e82 Extent 38 : L1 dba: 0x01000f00 Data dba: 0x01000f02 Extent 39 : L1 dba: 0x01000f80 Data dba: 0x01000f82 Extent 40 : L1 dba: 0x01001000 Data dba: 0x01001002 Extent 41 : L1 dba: 0x01001080 Data dba: 0x01001082 Extent 42 : L1 dba: 0x01001100 Data dba: 0x01001102 Extent 43 : L1 dba: 0x01001180 Data dba: 0x01001182 Extent 44 : L1 dba: 0x01001200 Data dba: 0x01001202 Extent 45 : L1 dba: 0x01001280 Data dba: 0x01001282 Extent 46 : L1 dba: 0x01001300 Data dba: 0x01001302 Extent 47 : L1 dba: 0x01001380 Data dba: 0x01001382 Extent 48 : L1 dba: 0x01001400 Data dba: 0x01001402 Extent 49 : L1 dba: 0x01001480 Data dba: 0x01001482 Extent 50 : L1 dba: 0x01001500 Data dba: 0x01001502 Extent 51 : L1 dba: 0x01001580 Data dba: 0x01001582 Extent 52 : L1 dba: 0x01001600 Data dba: 0x01001602 Extent 53 : L1 dba: 0x01001680 Data dba: 0x01001682 Extent 54 : L1 dba: 0x01001700 Data dba: 0x01001702 -------------------------------------------------------- Second Level Bitmap block DBAs -------------------------------------------------------- DBA 1: 0x01000221 --//你可以发现读了6次Extent,与我前面分析正确,分6次读取Auxillary Map,每次读10个Extent. --//kteinicnt,kteinpscan 2次我就不清楚了. 3.继续测试: --//前面忘了分析表.分析后测试: SCOTT@book> select rowid ,owner,object_id from t where rowid between 'AAAWGSAAEAAAAIlAAr' and 'AAAWGSAAEAAAAIlAAs'; ROWID OWNER OBJECT_ID ------------------ ------ ---------- AAAWGSAAEAAAAIlAAr SYS 42 AAAWGSAAEAAAAIlAAs SYS 55 Plan hash value: 280204748 ------------------------------------------------------------------------------------------------------------------------------ | Id | Operation | Name | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time | A-Rows | A-Time | Buffers | ------------------------------------------------------------------------------------------------------------------------------ | 0 | SELECT STATEMENT | | 1 | | | 1391 (100)| | 2 |00:00:00.01 | 9 | |* 1 | TABLE ACCESS BY ROWID RANGE| T | 1 | 848 | 19504 | 1391 (1)| 00:00:17 | 2 |00:00:00.01 | 9 | ------------------------------------------------------------------------------------------------------------------------------ --//分析后少了1次. SCOTT@book> @ rowid AAAWGSAAEAAAAIlAAs OBJECT FILE BLOCK ROW ROWID_DBA DBA TEXT ---------- ---------- ---------- ---------- -------------------- -------------------- ---------------------------------------- 90514 4 549 44 0x1000225 4,549 alter system dump datafile 4 block 549 ; *** 2021-03-01 09:51:47.692 pin ktewh26: kteinpscan dba 0x1000222:4 time 3696747000 pin ktewh27: kteinmap dba 0x1000222:4 time 3696747079 pin kdswh11: kdst_fetch dba 0x1000225:1 time 3696747113 pin kdswh11: kdst_fetch dba 0x1000225:1 time 3696747527 pin ktewh27: kteinmap dba 0x1000222:4 time 3696747578 pin ktewh27: kteinmap dba 0x1000222:4 time 3696747598 pin ktewh27: kteinmap dba 0x1000222:4 time 3696747612 pin ktewh27: kteinmap dba 0x1000222:4 time 3696747626 pin ktewh27: kteinmap dba 0x1000222:4 time 3696747640 --//少了kteinpscan --//本来想查询kteinicnt,kteinpscan函数,链接https://www.modb.pro/oraFunc查询没有结果. --//http://orafun.info/ 站点好像无法使用. 4.继续测试: create table t1 as select * from all_objects ; create index i_t1_object_id on t1(object_id); insert into t1 select * from t1; commit ; --//分析略. SCOTT@book> select rowid ,owner,object_id from t1 where object_id between 1 and 4; ROWID OWNER OBJECT_ID ------------------ ------ ---------- AAAWGUAAEAAABebAAw SYS 2 AAAWGUAAEAAAB/wAAw SYS 2 AAAWGUAAEAAABebAAF SYS 3 AAAWGUAAEAAAB/wAAF SYS 3 AAAWGUAAEAAABebAAx SYS 4 AAAWGUAAEAAAB/wAAx SYS 4 6 rows selected. SCOTT@book> select rowid ,owner,object_id from t1 where rowid between 'AAAWGUAAEAAABebAAx' and 'AAAWGUAAEAAABebAAy'; ROWID OWNER OBJECT_ID ------------------ ------ ---------- AAAWGUAAEAAABebAAx SYS 4 AAAWGUAAEAAABebAAy SYS 31 *** 2021-03-01 09:56:14.070 pin ktewh26: kteinpscan dba 0x100179a:4 time 3963125446 pin ktewh27: kteinmap dba 0x100179a:4 time 3963125514 pin kdswh11: kdst_fetch dba 0x100179b:1 time 3963125547 pin kdswh11: kdst_fetch dba 0x100179b:1 time 3963125916 pin ktewh27: kteinmap dba 0x100179a:4 time 3963125964 pin ktewh27: kteinmap dba 0x100179a:4 time 3963125984 pin ktewh27: kteinmap dba 0x100179a:4 time 3963125999 pin ktspfwh8: ktspScanInit1 dba 0x1002581:8 time 3963126015 pin ktspswh6: ktspInitScan dba 0x1001799:9 time 3963126064 pin ktspfwh13: ktspGetNextL1ForScan dba 0x1002680:8 time 3963126079 pin ktspfwh13: ktspGetNextL1ForScan dba 0x1002681:8 time 3963126094 pin ktspfwh21: ktspfhsd dba 0x100179a:4 time 3963126108 Plan hash value: 1216763554 ------------------------------------------------------------------------------------------------------------------------------ | Id | Operation | Name | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time | A-Rows | A-Time | Buffers | ------------------------------------------------------------------------------------------------------------------------------ | 0 | SELECT STATEMENT | | 1 | | | 691 (100)| | 2 |00:00:00.01 | 12 | |* 1 | TABLE ACCESS BY ROWID RANGE| T1 | 1 | 2 | 46 | 691 (1)| 00:00:09 | 2 |00:00:00.01 | 12 | ------------------------------------------------------------------------------------------------------------------------------ --//逻辑读反而增加,可以发现我前面没有遇到的函数. --//我前面建立的表是ctas插入的,而该表T1 有部分信息采用insert插入. --//一些细节不再探究.
[20210301]为什么逻辑读这么多.txt
来源:这里教程网
时间:2026-03-03 16:30:04
作者:
编辑推荐:
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- Oracle恢复方法(表、包)
Oracle恢复方法(表、包)
26-03-03 - 使用PL/SQL Developer修改Oracle数据库的表
使用PL/SQL Developer修改Oracle数据库的表
26-03-03 - Linux服务器shell脚本调用sql脚本
Linux服务器shell脚本调用sql脚本
26-03-03 - windows 下 文件内容清理且不删除-拾亿
windows 下 文件内容清理且不删除-拾亿
26-03-03 - Oracle 19c rac 安装补丁 Patch 32226239
Oracle 19c rac 安装补丁 Patch 32226239
26-03-03 - ORACLE 19C RAC集群安装与PRCR-1079&CRS-5017&ORA-03113
- 12c使用DBLINK连接9i报ORA-03134
12c使用DBLINK连接9i报ORA-03134
26-03-03 - oracle客户端安装步骤—附图形界面启用失败处理方法
oracle客户端安装步骤—附图形界面启用失败处理方法
26-03-03 - 记一次utlrp.sql脚本执行引发的结果
记一次utlrp.sql脚本执行引发的结果
26-03-03 - Rax App 研发框架背后的思考
Rax App 研发框架背后的思考
26-03-03
