日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Oracle內(nèi)存結(jié)構(gòu)研究的相關(guān)內(nèi)容介紹

我曾在《Oracle內(nèi)存結(jié)構(gòu)研究-PGA篇》一文中看到,PGA只是一個(gè)服務(wù)器的進(jìn)程專門使用的私有的相關(guān)內(nèi)存區(qū),但是SGA卻是共享的相關(guān)內(nèi)存區(qū)。所以下文中就有相關(guān)內(nèi)容的提及,望你會(huì)從中有所感悟。

創(chuàng)新互聯(lián)公司專注于企業(yè)營銷型網(wǎng)站建設(shè)、網(wǎng)站重做改版、尉犁網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、html5、成都商城網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為尉犁等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

一、SGA由多個(gè)部分組成:

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ù)控制共享池相關(guān)組件大小:

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以上控制自動(dòng)SGA內(nèi)存管理的總內(nèi)存大小。

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

下面將詳細(xì)介紹各個(gè)部分的作用和推薦設(shè)置。

二、SGA各組件作用

1, 固定SGA:

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

2, 塊緩沖區(qū):

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

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

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

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

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

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

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

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

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

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

每隔3秒

緩存達(dá)到1MB或1/3滿時(shí)

用戶提交時(shí)

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

4, Java池(Java pool):

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

5, 大池(Large pool):

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

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

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

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

6, 共享池(Shared pool)

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

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

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

不使用“綁定變量”導(dǎo)致:

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

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

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

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

7, 流池(Stream pool)

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

 三、SGA設(shè)置

沒有通用的設(shè)置,所有Oracle內(nèi)存結(jié)構(gòu)設(shè)置都要根據(jù)系統(tǒng)的負(fù)載、業(yè)務(wù)需求和硬件環(huán)境來進(jìn)行調(diào)整。這里只是總結(jié)出大體的設(shè)定,避免因SGA設(shè)置不當(dāng)引起的問題。

1,自動(dòng)SGA內(nèi)存管理

在Oracle 10g中引入了自動(dòng)SGA內(nèi)存管理特性,DBA可以設(shè)定SGA_TARGET告訴Oracle可用的SGA內(nèi)存為多大,由Oracle根據(jù)系統(tǒng)負(fù)載來動(dòng)態(tài)調(diào)整各組件大小,相應(yīng)的數(shù)定會(huì)保存在控制文件中,使數(shù)據(jù)庫重啟后也記得各組件大小。

需要注意一下幾點(diǎn):

要使用自動(dòng)SGA內(nèi)存管理,STATISTICS_LEVEL參數(shù)必須設(shè)為TYPICAL或ALL,系統(tǒng)自動(dòng)收集相應(yīng)的信息用來動(dòng)態(tài)調(diào)整SGA設(shè)定。

可以設(shè)定某個(gè)組件的值,Oracle使用此值為該組件的最小大小

可動(dòng)態(tài)調(diào)整的參數(shù):

DB_CACHE_SIZE,SHARED_POOL_SIZE,LARGE_POOL_SIZE,JAVA_POOL_SIZE。

需手動(dòng)設(shè)置的參數(shù):

LOG_BUFFER,STREAMS_POOL,DB_NK_CACHE_SIZE,DB_KEEP_CACHE_SIZE,DB_RECYCLE_CACHE_SIZE。

2,手動(dòng)SGA內(nèi)存管理

1) 32bit和64bit限制

在32位的操作系統(tǒng)中,Oracle***可用內(nèi)存為1.75g,也就是說SGA+PGA<=1.75g,超過這一限制的內(nèi)存將不會(huì)被Oracle用到。

32位的Oracle可以裝到64位的操作系統(tǒng)上,64位的Oracle不可以裝到32位的操作系統(tǒng)上。

2) 查看Oracle版本:

 
 
 
  1. SQL> select * from v$version;  
  2. BANNER  
  3. Oracle Database 10g Enterprise Edition Release
     10.2.0.1.0 - Prod  
  4. PL/SQL Release 10.2.0.1.0 - Production  
  5. CORE 10.2.0.1.0 Production  
  6. TNS for 32-bit Windows: Version 10.2.0.1.0 - 
    Production  
  7. NLSRTL Version 10.2.0.1.0 – Production 

3) 各組件設(shè)置:

JAVA_POOL_SIZE:如果沒用到數(shù)據(jù)庫端java的系統(tǒng),30MB足夠。

LOG_BUFFER:默認(rèn)為MAX(512KB,128KB*CPU個(gè)數(shù))。一般系統(tǒng)1MB足夠,運(yùn)行大型事務(wù)的系統(tǒng)可以設(shè)為2MB,讓1/3滿寫入日志文件時(shí)可以繼續(xù)寫入緩沖,再大也沒有意義。

SHARED_POOL_SIZE:過大過小都會(huì)嚴(yán)重影響系統(tǒng)性能,1GB內(nèi)存可以設(shè)為100MB,2GB內(nèi)存可設(shè)為150MB,4GB內(nèi)存可設(shè)為300MB。共享池命中過低首先要調(diào)整的是應(yīng)用程序而不是擴(kuò)大共享池。使用綁定變量可以減少共享池需求、提高命中率,減少共享池管理負(fù)擔(dān)和LATCH競爭。

LARGE_POOL_SIZE:使用專用服務(wù)模式可設(shè)為30MB,除非必要,不然不建議使用共享服務(wù)器模式。

DB_CACHE_SIZE:除去上述內(nèi)存外其他可用內(nèi)存都分配給該區(qū)域。

總結(jié)

32位Oracle:

1G內(nèi)存:SHARED_POOL_SIZE=100MB,DB_CACHE_SIZE=0.5GB;

2G內(nèi)存:SHARED_POOL_SIZE=150MB,DB_CACHE_SIZE=1.25GB;

64位Oracle

4G內(nèi)存:SHARED_POOL_SIZE=200MB,DB_CACHE_SIZE=2.5GB;

8G內(nèi)存:SHARED_POOL_SIZE=400MB,DB_CACHE_SIZE=5GB;

12G內(nèi)存:SHARED_POOL_SIZE=500MB,DB_CACHE_SIZE=8GB

再次強(qiáng)調(diào),以上只是避免因Oracle內(nèi)存結(jié)構(gòu)中SGA設(shè)置不當(dāng)引起問題的大體設(shè)置,需要根據(jù)具體的系統(tǒng)負(fù)載和業(yè)務(wù)邏輯結(jié)合Stackpack等工具細(xì)調(diào)。

【編輯推薦】

  1. Oracle綁定變量如何提升相關(guān)效率
  2. Oracle實(shí)現(xiàn)跨服務(wù)器操作詳解
  3. Oracle索引聚簇表的數(shù)據(jù)加載中兩個(gè)組成部分
  4. Oracle體系結(jié)構(gòu)中基本概念,數(shù)據(jù)庫
  5. 用Oracle綁定變量替代sql語句里常量

分享題目:Oracle內(nèi)存結(jié)構(gòu)研究的相關(guān)內(nèi)容介紹
地址分享:http://www.dlmjj.cn/article/copepgc.html