從連線到資料(三)

realkid4發表於2011-01-03

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部落格 ” ,連結:http://blog.itpub.net/17203031/viewspace-683199/,如需轉載,請註明出處,否則將追究法律責任。

相關文章