ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 从连接到数据(三)

从连接到数据(三)

原创 Linux操作系统 作者:realkid4 时间:2011-01-03 22:48:41 0 删除 编辑

3、获取数据集合

 

SQL语句是一种集合操作语言。返回的结果都是以集合的形式给出。但Oracle操作的最小数据单位是block数据块,要从数据块中把数据行提取出来。

 

首先,Server Process是获取数据块的最直接主体。首先,他会到SGA的数据块缓存区buffer cache中,找目标数据块是否被缓存,在缓存区内。

 

如果数据块没有在缓存区内,Server Process会自己到物理硬盘上读取相应文件。最后找到合适的数据块。读入到Buffer Cache里面。Oracle初始化参数中,有一个db_file_multiblock_read_count,表示一次进行物理读获取的最多数据块个数。

 

 

SQL> show parameter multiblock

 

NAME                                 TYPE        VALUE

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

db_file_multiblock_read_count        integer     16

 

 

缓存到buffer cache中的数据块,归属在buffer cache管理之中。目前Oracle管理的方式是使用LRU算法,根据数据块的访问频率,buffer在以不同的频率age out出缓存。

 

数据行的标记rowid,是唯一表示数据行物理位置的内容。可以定位到一行的信息。rowid是一个多信息构成的数据串,包括对象编号、文件号、数据块号和slot行号几部分构成。获取到rowid,就可以最快的定位到一行记录。

 

 

4、断开连接

 

session是有active和inactive的状态。当一个session没有响应、崩溃的时候,Oracle会自主的做善后工作。

 

包括,将对应的Server Process终止,回滚事务,释放PGA空间和释放对象上的锁。这些工作主要由PMON完成。

 

 

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/17203031/viewspace-683199/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
求道~

注册时间:2010-11-30

  • 博文量
    545
  • 访问量
    8041220