SGA

SGA
  SGA (System Global Area)是Oracle Instance的基本組成部分,在實例啓動時分配。是一組包含一個Oracle實例的數據和控制信息的共享內存結構。主要是用於存儲數據庫信息的內存區,該信息爲數據庫進程所共享(PGA不能共享的)。它包含Oracle 服務器的數據和控制信息,它是在Oracle服務器所駐留的計算機的實際內存中得以分配,如果實際內存不夠再往虛擬內存中寫。
  SGA幾個很重要的特性:
  1、SGA的構成——數據和控制信息,我們下面會詳細介紹;
  2、SGA是共享的,即當有多個用戶同時登錄了這個實例,SGA中的信息可以被它們同時訪問(當涉及到互斥的問題時,由latch和enquence控制);
  3、一個SGA只服務於一個實例,也就是說,當一臺機器上有多個實例運行時,每個實例都有一個自己的SGA儘管SGA來自於OS的共享內存區,但實例之間不能相互訪問對方的SGA區。
  它主要包括:
  1.數據庫高速緩存(the database buffer cache),
  2.重演日誌緩存(the redo log buffer)
  3.共享池(the shared pool)
  4.數據字典緩存(the data dictionary cache)以及其它各方面的信息。
  1.數據高速緩衝區(Data Buffer Cache)
  在數據高速緩衝區中存放着Oracle系統最近使用過的數據塊(即用戶的高速緩衝區),當把數據寫入數據庫時,它以數據塊爲單位進行讀寫,當數據高速緩衝區填滿時,則系統自動去掉一些不常被用訪問的數據。如果用戶要查的數據不在數據高速緩衝區時,Oracle自動從磁盤中去讀取。數據高速緩衝區包括三個類型的區:1) 髒的區(Dirty Buffers):包含有已經改變過並需要寫回數據文件的數據塊。
  2) 自由區(Free Buffers):沒有包含任何數據並可以再寫入的區,Oracle可以從數據文件讀數據塊該區。
  3) 保留區(Pinned Buffers):此區包含有正在處理的或者明確保留用作將來用的區。
  2.Redo Log Buffer Cache緩存對於數據塊的所有修改。
  主要用於恢復其中的每一項修改記錄都被稱爲redo 條目。利用Redo條目的信息可以重做修改。
  3. Shared Pool用於緩存最近被執行的SQL語句和最近被使用的數據定義。
  它主要由兩個內存結構構成:Library cache和Data dictionary cache
  修改共享池的大小:ALTER SYSTEM SET SHARED_POOL_SIZE = 64M;
  Libray Cache緩存最近被執行的SQL和PL/SQL的相關信息。實現常用語句的共享,使用LRU算法進行管理,由以下兩個結構構成:Shared SQL area、Shared PL/SQL area、Data Dictionary Cache、Data dictionary cache緩存最近被使用的數據庫定義。它包括關於數據庫文件、表、索引、列、用戶、權限以及其它數據庫對象的信息。在語法分析階段,Server Process訪問數據字典中的信息以解析對象名和對存取操作進行驗證。數據字典信息緩存在內存中有助於縮短響應時間。
  4.數據字典緩存(the data dictionary cache)
  它包括的信息有:數據庫文件,表,索引,列,用戶,權限和其他數據對象,在解析間段,服務器進程查看數據字典來決定對象名稱和有效的訪問的信息,緩存數據字典信息來提高請求反應時間,大小是由共享池的大小來決定的。

發佈了34 篇原創文章 · 獲贊 3 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章