ORACLE读取数据的过程是怎样的?
ORACLE读取数据的过程是怎样的?
当一个用户进程发布一个SQL语句,在解析完SQL后,这时候对应的服务器进程就需要查看SQL语句中引用的对像块在CACHE中是否已存在了,ORACLE通过查询*_SEGMENTS数据字典,来找出该段所在的文件号和SEGMENT的起始块号,可以得到一个对像在哪个文件中和拥有哪些已使用的块。
找出这些信息以后,再对这些块号和文件号进行HASH,看是否能在数据库的CACHE中找到,如果找不到则直接从磁盘中读取。 在使用索引的条件下,通过索引查找,找出KEY相对应的ROWID信息,再把ROWID转换成相应的文件号和块号可以很快地返回数据,所以这就是为什么我们在有些情况下要使用索引的原因。
但是在这里也要多一些额外的操作,如判断语中的谓词条件中是否有和是否能使用索引,然后要也要通*_SEGMENTS把索引SEGMENT的信息读进来,再根据这这些信息,把索引块读进来,不过一般相对来说存放INDEX的一个块能存放很多的KEY和ROWID的对应信息。
所以读取INDEX的块的成本一般都很小。 以上是我对于这个问题的解答,希望能够帮到大家。
答:9i 的数据类型: 名称 含义 Char 用于描述定长的字符型数据,长度<= 2000 字节 varchar2 用于描述变长的字符型数据,长度<= 4000 ...详情>>
问:同事ip:10.101.107.28 我的IP:10.101.104.23我们在...
答:你们公司是WINDOWS域环境吗,如果是的话,你在网上邻居里应该能看到对方的主机。让她把文件夹共享出来就可以。 如果不是WINDOWS域,那得看你们是不是在一个...详情>>
问:数据结构顺序表的建立,可定义顺序表 #define maxnum elemtyp...
答:打开VC ,然后点击新建,出来界面之后选择Win32 Console Application并输入工程的名称和选择项目的位置,然后出现“一个空工程”,在点击“...详情>>