oracle connection,select,update 工作原理

tanxiaoke88發表於2009-09-23

1.理解connection ..session..transaction.知道何時開始與結束 ­

2.connection的工作原理 ­

     connection是如何驗證的 ­

        SQL>  conn  sys/a123@demo  as  sysdba當輸入此條語句結束後. ­

第一步:伺服器程式會透過sqlnet.ora驗證 ­

     我的sqlnet.ora是這樣的: ­

                          SQLNET.AUTHENTICATION_SERVICES= (NTS) ­

                          NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT) ­

     那麼,客戶端就會首先在tnsnames.ora檔案中找demo的記錄.當發現是本地解析時(TNSNAMES)就會進行 ­

第二步: 讀取tnsnames.ora檔案: ­

   DEMO = ­

      (DESCRIPTION = ­

      (ADDRESS_LIST = ­

      (ADDRESS = (PROTOCOL = TCP)(HOST = xiaoke)(PORT = 1521)) ­

    ) ­

    (CONNECT_DATA = ­

      (SERVICE_NAME = demo) ­

    ) ­

  ) ­

連線的是xiaoke這臺機器的1521埠的database_sid=demo(用tcp協議). ­

3.select的工作原理 ­

以 "select  column  from  table"為例 ­

    分為三個階段:parse(解析) ­

                               execute執行) ­

                               fetch(取回) ­

看起來,是很簡單的事情,其實Oracle做了很複雜的事情. ­

一)parse(解析) ­

當客服端發出select命令後,伺服器程式會搜尋共享池中的庫快取記憶體,看有沒有相同的執行語句,如果有的話,就會直接執行.如果沒有的話,伺服器程式就會進行以下的步驟: ­

1)語法分析 ­

2)分析表,列(驗證存在與否) ­

3)獲得物件的解析鎖(不能改變表的結構,但可以改變表的內容) ­

4)驗證對物件操縱的許可權 ­

5)把執行計劃寫入到庫快取記憶體 ­

二)execute(執行) ­

此階段比較簡單,伺服器程式會在資料庫緩衝區中尋找table,如果沒找到table就會在資料檔案中讀出table到資料庫緩衝區,此階段結束,如果找到了,此階段結束. ­

三) ­

fetch(提取) ­

伺服器程式提取資料給使用者 ­

4.update的工作原理­

update的工作分為兩個階段:­

                   parse(解析)                    execute(執行) ­

1)parse(解析) ­

parser階段和select語句的parser階段原理差不多.其中當用到表,列及使用者的許可權的時候,伺服器程式會在資料字典快取記憶體區中去找,看是否存在,當不存在時,就會到硬碟上去取資料到資料字典快取記憶體中.­

2)execute­

當解析階段把執行計劃寫入到庫快取記憶體中後,就會開始了執行階段.首先伺服器程式會檢查資料庫快取記憶體區中尋找表,列名,當找到後,對列加鎖.然後執行更新,舊的資料就會寫到undo buffer中去,同時undo_buffer與資料庫緩衝區的變化寫到redo log buffer中.­

­

 

 

­

圖片­

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21340813/viewspace-615428/,如需轉載,請註明出處,否則將追究法律責任。

相關文章