自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Oracle SGA多個部分的組成

數(shù)據(jù)庫 Oracle
如果你是Oracle SGA方面的新手,對Oracle SGA的相關實際應用不是很了解的話,以下的文章會給你提供更全面的知識。

如果你想了解Oracle SGA中用到的基本語法的話,你就可以點擊以下的文章對其在實際相關操作中的正確用法,有一個更加完善的認識,以下就是正文的詳細內(nèi)容的介紹。希望你再瀏覽玩之后會有所收獲。

在《Oracle內(nèi)存結構研究-PGA篇》一文中提到,PGA是一個服務器進程的專用的私有內(nèi)存區(qū),而SGA則是共享內(nèi)存區(qū)。

SGA由多個部分組成:

1, 固定SGA(Fixed SGA)

 

2, 塊緩沖區(qū)(Db cache)

 

3, 重做日志緩沖區(qū)(Redo log buffer)

 

4, Java池(Java pool)

 

5, 大池(Large pool)

 

6, 共享池(Shared pool)

 

7, 流池(Stream pool)

 

有如下參數(shù)控制共享池相關組件大?。?/p>

1, JAVA_POOL_SIZE:控制Java池大小。

 

2, SHARED_POOL_SIZE:9i中控制共享池中占用***的部分,10g以上控制共享池大小。

 

3, LARGE_POOL_SIZE:控制大池大小。

 

4, DB_*K_CACHE_SIZE:控制不同塊大小的緩沖區(qū)大小。

 

5, LOG_BUFFER:控制重做日志緩沖區(qū)大小。

 

6, SGA_TARGET:10g以上控制自動SGA內(nèi)存管理的總內(nèi)存大小。

 

7, SGA_MAX_SIZE:控制SGA可以達到的***大小,改變需重啟數(shù)據(jù)庫。

 

下面將詳細介紹各個部分的作用和推薦設置。

SGA各組件作用

1, 固定SGA:

 

顧名思義,是一段不變的內(nèi)存區(qū),指向SGA中其他部分,Oracle SGA通過它找到SGA中的其他區(qū),可以簡單理解為用于管理的一段內(nèi)存區(qū)。

 

2, 塊緩沖區(qū):

查詢時,Oracle會先把從磁盤讀取的數(shù)據(jù)放入內(nèi)存,以后再查詢相關數(shù)據(jù)時不用再次讀取磁盤。插入和更新時,Oracle SGA會現(xiàn)在該區(qū)中緩存數(shù)據(jù),之后批量寫到硬盤中。通過塊緩沖區(qū),Oracle可以通過內(nèi)存緩存提高磁盤的I/O性能。

 

塊緩沖區(qū)中有三個區(qū)域:

 

默認池(Default pool):所有數(shù)據(jù)默認都在這里緩存。

 

保持池(Keep pool):用來緩存需要多次重用的數(shù)據(jù)。

 

回收池(Recycle pool):用來緩存很少重用的數(shù)據(jù)。

 

原來只有一個默認池,所有數(shù)據(jù)都在這里緩存。這樣會產(chǎn)生一個問題:大量很少重用的數(shù)據(jù)會把需重用的數(shù)據(jù)“擠出”緩沖區(qū),造成磁盤I/O增加,運行速度下降。后來分出了保持池和回收池根據(jù)是否經(jīng)常重用來分別緩存數(shù)據(jù)。

 

這三部分內(nèi)存區(qū)需要手動確定大小,并且之間沒有共享。例如:保持池中已經(jīng)滿了,而回收池中還有大量空閑內(nèi)存,這時回收池的內(nèi)存不會分配給保持池。

 

9i開始,還可以設置db_nk_cache。9i之前數(shù)據(jù)庫只能使用相同的塊大小。9i開始同一個數(shù)據(jù)庫可以使用多種塊大小(2KB,4KB,8KB,16KB,32KB),這些塊需要在各自的db_nk_cache中緩存。如果為不同的表空間指定了不同的塊大小,需要為其設置各自的緩沖區(qū)。

 

3, 重做日志緩沖區(qū)(Redo log buffer):

數(shù)據(jù)寫到重做日志文件之前在這里緩存,在以下情況中觸發(fā):

 

每隔3秒

 

緩存達到1MB或1/3滿時

 

用戶提交時

 

緩沖區(qū)的數(shù)據(jù)寫入磁盤前

 

4, Java池(Java pool):

在數(shù)據(jù)庫中運行Java代碼時用到這部分內(nèi)存。例如:編寫Java存儲過程在服務器內(nèi)運行。需要注意的是,該內(nèi)存與常見的Java編寫的B/S系統(tǒng)并沒關系。用JAVA語言代替PL/SQL語言在數(shù)據(jù)庫中寫存儲過程才會用到這部分內(nèi)存。

 

5, 大池(Large pool):

下面三種情況使用到大池:

 

并行執(zhí)行:存放進程間的消息緩沖區(qū)

 

RMAN:某些情況下用于磁盤I/O緩沖區(qū)

 

共享服務器模式:共享服務器模式下UGA在大池中分配(如果設置了大池)

 

6, 共享池(Shared pool)

共享池是SGA中最重要的內(nèi)存段之一。共享池太大和太小都會嚴重影響服務器性能。

 

SQL和PL/SQL的解釋計劃、代碼,數(shù)據(jù)字典數(shù)據(jù)等等都在這里緩存。

 

SQL和PL/SQL代碼在執(zhí)行前會進行“硬解析”來獲得執(zhí)行計劃及權限驗證等相關輔助操作。“硬解析”很費時間。對于響應時間很短的查詢,“硬解析”可以占到全部時間的2/3。對于響應時間較長的統(tǒng)計等操作,“硬解析”所占用的時間比例會下降很多。執(zhí)行計劃及所需的數(shù)據(jù)字典數(shù)據(jù)都緩存在共享池中,讓后續(xù)相同的查詢可以減少很多時間。

 

不使用“綁定變量”導致:

 

系統(tǒng)需要花費大量的資源去解析查詢。

 

共享池中的代碼從不重用,系統(tǒng)花費很大代價管理這部分內(nèi)存。

 

關于共享變量的優(yōu)缺點討論已經(jīng)超過了這篇文章的范疇,簡單來講,響應時間短的查詢要使用共享變量,響應時間長的統(tǒng)計不使用共享變量。

 

需要注意的是,SHARED_POOL_SIZE參數(shù)在9i中控制共享池中占用***的部分,10g以上控制共享池總大小。

 

7, 流池(Stream pool)

9iR2以上增加了“流”技術,10g以上在SGA中增加了流池。流是用來共享和復制數(shù)據(jù)的工具。

 

上述的相關內(nèi)容就是對Oracle SGA的描述,希望會給你帶來一些幫助在此方面。 

【編輯推薦】

  1. Oracle to_char的用法描述
  2. Oracle 多表關聯(lián)如何更新多個字段
  3. Oracle存儲過程的開發(fā)的介紹
  4. Oracle數(shù)據(jù)庫中表的不同的連接方式描述
  5. 配置Oracle RAC中應注意的問題有哪些
責任編輯:佚名 來源: 博客園
相關推薦

2010-10-28 14:29:39

Oracle內(nèi)存結構

2010-04-12 16:03:12

Oracle SGA設

2010-04-08 09:00:29

Oracle內(nèi)存結構

2009-02-01 10:45:18

Oracle數(shù)據(jù)庫性能調(diào)整

2010-04-13 11:35:26

Oracle字符集

2010-04-09 15:15:01

Oracle SGA

2010-03-31 10:40:11

Oracle事例

2010-04-13 15:49:02

Oracle SGA

2011-07-29 15:58:53

SGAOracle

2010-03-31 10:30:03

Oracle 10g

2010-04-01 17:14:04

Oracle索引

2009-09-08 09:37:03

LINQ重要組成部分

2009-07-07 17:39:26

JSP系統(tǒng)

2009-07-28 15:28:35

ASP.NET AJA

2010-06-29 19:31:48

UML建模技術

2010-06-30 10:02:05

UML建模技術

2010-01-22 18:41:32

Visual C++

2009-06-04 07:55:08

Struts框架簡介Struts

2010-02-25 17:30:28

WCF服務系統(tǒng)

2010-03-02 13:23:11

Android手機程序
點贊
收藏

51CTO技術棧公眾號