通过前面关于索引扫描还是全表扫描(Index Scan Or Full Table Scan)?的讨论又发现了自己基础概念不清晰的一个大问题:
DB block gets,Consistent gets,Physical reads与Logical reads各自具体表示的是什么以及之间的的关系到底是怎样。
官方在线文档基本的定义为如下:
DB block gets:the number of accesses to the current image of a block
Consistent gets:the number of accesses to a read-consistent image of a block
Physical reads:the number of blocks read from disk
通过官方的简要解释加上对fenng和旺旺的请教以及网上搜索了一些资料,终于加深了一些理解:

,

在大多数时候,大家都会认为Sql语句中走Index Scan比Full Table Scan快,我前面也走进了这样的误区(对Index Scan的理解不够)。这两天重新复习了一下这方面内容,并整理了一下。
当Oracle Optimizer(优化器)没有选择Index Scan而选择了Full Table Scan的时候一般会是由两种情况:
1、表没有Analyze,Optimizer得不到statistics(统计)数据,无法评估而选择了Full Table Scan
2、Optimizer通过得到的statistics数据后评估认为Full Table Scan将比Index Scan更快

, , ,

前段时间学习一直只关注进度,甚至都没有考虑到是否已经真正消化了真正掌握了,现在开始正式做事的时候居然发觉前段时间学习的知识差不多都忘光了,看来自己的学习方法实在是有待改进了。
上周三开始正式做事情,事情也比较简单,就是看看开发人员的SQL,再做一下WebTrace(通过Web系统做Sql_Trace工作),根据需要建立Index,再看看执行计划。本以为这对于自己来说应该是很简单的事情了,WebTrace也是再熟悉不过了(自己写的),可最后真正做的时候就开始笨手笨脚不知道该做啥了。甚至在之前一直在学习的索引优化现在居然一点都不会用了,连什么情况下索引有用什么情况下FTS更好都忘记了。难道是紧张,可这也找不出紧张的理由啊,看来还是没有真正消化的缘故。

, , ,