日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

oracle sga pga mysql_oracle实例内存(SGA和PGA)调整-xin

發(fā)布時間:2024/9/27 数据库 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle sga pga mysql_oracle实例内存(SGA和PGA)调整-xin 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、名詞解釋

(1)SGA:System Global Area是Oracle Instance的基本組成部分,在實例啟動時分配;系統(tǒng)全局域SGA主要由三部分構(gòu)成:共享池、數(shù)據(jù)緩沖區(qū)、日志緩沖區(qū)。

(2)共享池:Shared Pool用于緩存最近被執(zhí)行的SQL語句和最近被使用的數(shù)據(jù)定義,主要包括:Library cache(共享SQL區(qū))和Data dictionary cache(數(shù)據(jù)字典緩沖區(qū))。? 共享SQL區(qū)是存放用戶SQL命令的區(qū)域,數(shù)據(jù)字典緩沖區(qū)存放數(shù)據(jù)庫運行的動態(tài)信息。

(3)緩沖區(qū)高速緩存:Database Buffer Cache用于緩存從數(shù)據(jù)文件中檢索出來的數(shù)據(jù)塊,可以大大提高查詢和更新數(shù)據(jù)的性能。

(4)大型池:Large Pool是SGA中一個可選的內(nèi)存區(qū)域,它只用于shared server環(huán)境。

(5)Java池:Java Pool為Java命令的語法分析提供服務(wù)。

(6)PGA:Process Global Area是為每個連接到Oracle database的用戶進程保留的內(nèi)存。

二、分析與調(diào)整

(1)系統(tǒng)全局域:

SGA與操作系統(tǒng)、內(nèi)存大小、cpu、同時登錄的用戶數(shù)有關(guān)。可占OS系統(tǒng)物理內(nèi)存的1/3到1/2。

a.共享池:

查看共享SQL區(qū)的使用率:

Sql代碼??

select(sum(pins-reloads))/sum(pins)?"Library?cache"?from?v$librarycache;--動態(tài)性能表

這個使用率應(yīng)該在90%以上,否則需要增加共享池的大小。

查看數(shù)據(jù)字典緩沖區(qū)的使用率:

Sql代碼??

select?(sum(gets-getmisses-usage-fixed))/sum(gets)?"Data?dictionary?cache"?from?v$rowcache;--動態(tài)性能表

這個使用率也應(yīng)該在90%以上,否則需要增加共享池的大小。

修改共享池的大小:

Sql代碼??

ALTER?SYSTEM?SET?SHARED_POOL_SIZE?=?64M;

b.緩沖區(qū)高速緩存:

查看數(shù)據(jù)庫數(shù)據(jù)緩沖區(qū)的使用情況:

Sql代碼??

SELECT?name,value?FROM?v$sysstat?order?by?name?WHERE?name?IN(''DB?BLOCK?GETS'',''CONSISTENT?GETS'',''PHYSICAL?READS'');

計算出來數(shù)據(jù)緩沖區(qū)的使用命中率=1-(physical reads/(db block gets+consistent gets)),這個命中率應(yīng)該在90%以上,否則需要增加數(shù)據(jù)緩沖區(qū)的大小。

c.日志緩沖區(qū)

查看日志緩沖區(qū)的使用情況:

Sql代碼??

SELECT?name,?value??FROM?v$sysstat?WHERE?name?IN?(''redo?entries'',''redo?log?space?requests'');

查詢出的結(jié)果可以計算出日志緩沖區(qū)的申請失敗率:

申請失敗率=requests/entries,申請失敗率應(yīng)該接近于0,否則說明日志緩沖區(qū)開設(shè)太小,需要增加ORACLE數(shù)據(jù)庫的日志緩沖區(qū)。

d.大型池:

可以減輕共享池的負擔(dān),可以為備份、恢復(fù)等操作來使用,不使用LRU算法來管理。其大小由數(shù)據(jù)庫的‘共享模式/db模式’如果是共享模式的話,要分配的大一些。

指定Large Pool的大小:

Sql代碼??

ALTER?SYSTEM?SET?LARGE_POOL_SIZE=64M

e.Java池:

在安裝和使用Java的情況下使用。

(2)PGA調(diào)整

a.PGA_AGGREGATE_TARGET初始化設(shè)置

PGA_AGGREGATE_TARGET的值應(yīng)該基于Oracle實例可利用內(nèi)存的總量來設(shè)置,這個參數(shù)可以被動態(tài)的修改。假設(shè)Oracle實例可分配4GB的物理內(nèi)存,剩下的內(nèi)存分配給操作系統(tǒng)和其它應(yīng)用程序。你也許會分配80%的可用內(nèi)存給Oracle實例,即3.2G。現(xiàn)在必須在內(nèi)存中劃分SGA和PGA區(qū)域。

在OLTP(聯(lián)機事務(wù)處理)系統(tǒng)中,典型PGA內(nèi)存設(shè)置應(yīng)該是總內(nèi)存的較小部分(例如20%),剩下80%分配給SGA。

OLTP:PGA_AGGREGATE_TARGET = (total_mem * 80%) * 20%

在DSS(數(shù)據(jù)集)系統(tǒng)中,由于會運行一些很大的查詢,典型的PGA內(nèi)存最多分配70%的內(nèi)存。

DSS:PGA_AGGREGATE_TARGET = (total_mem * 80%) * 50%

在這個例子中,總內(nèi)存4GB,DSS系統(tǒng),你可以設(shè)置PGA_AGGREGATE_TARGET為1600MB,OLTP則為655MB。

b.配置PGA自動管理

不用重啟DB,直接在線修改。

SQL>?alter system set workarea_size_policy=auto scope=both;

System altered.

SQL>?alter system set pga_aggregate_target=512m scope=both;

System altered.

SQL>?show parameter workarea

NAME???????????????????????????????? TYPE??????? VALUE

------------------------------------ ----------- ------------------------------

workarea_size_policy???????????????? string????? AUTO --這個設(shè)置成AUTO

SQL> show parameter pga

NAME???????????????????????????????? TYPE??????? VALUE

------------------------------------ ----------- ------------------------------

pga_aggregate_target???????????????? big integer 536870912

SQL>

c.監(jiān)控自動PGA內(nèi)存管理的性能

V$PGASTAT:這個視圖給出了一個實例級別的PGA內(nèi)存使用和自動分配的統(tǒng)計。

SQL> set lines 256

SQL> set pages 42

SQL> SELECT * FROM V$PGASTAT;

NAME????????????????????????????????????????????????????????????????? VALUE UNIT

---------------------------------------------------------------- ---------- ------------

aggregate PGA target parameter??????????????????????????????????? 536870912 bytes??? --當(dāng)前PGA_AGGREGATE_TARGET的值

aggregate PGA auto target???????????????????????????????????????? 477379584 bytes??? --當(dāng)前可用于自動分配了的PGA大小,應(yīng)該比PGA_AGGREGATE_TARGET 小

global memory bound??????????????????????????????????????????????? 26843136 bytes??? --自動模式下工作區(qū)域的最大大小,Oracle根據(jù)工作負載自動調(diào)整。

total PGA inuse???????????????????????????????????????????????????? 6448128 bytes

total PGA allocated??????????????????????????????????????????????? 11598848 bytes??? --PGA的最大分配

maximum PGA allocated???????????????????????????????????????????? 166175744 bytes

total freeable PGA memory??????????????????????????????????????????? 393216 bytes??? --PGA的最大空閑大小

PGA memory freed back to OS??????????????????????????????????????? 69074944 bytes

total PGA used for auto workareas???????????????????????????????????????? 0 bytes??? --PGA分配給auto workareas的大小

maximum PGA used for auto workareas???????????????????????????????? 1049600 bytes

total PGA used for manual workareas?????????????????????????????????????? 0 bytes

maximum PGA used for manual workareas??????????????????????????????? 530432 bytes

over allocation count????????????????????????????????????????????????? 1118??? --實例啟動后,發(fā)生的分配次數(shù),如果這個值大于0,就要考慮增加pga的值

bytes processed?????????????????????????????????????????????????? 114895872 bytes

extra bytes read/written??????????????????????????????????????????? 4608000 bytes

cache hit percentage????????????????????????????????????????????????? 96.14 percent??? --命中率

16 rows selected.

--V$PGA_TARGET_ADVICE

SQL>?SELECT round(PGA_TARGET_FOR_ESTIMATE/1024/1024) target_mb,

ESTD_PGA_CACHE_HIT_PERCENTAGE cache_hit_perc,

ESTD_OVERALLOC_COUNT

FROM v$pga_target_advice;

The output of this query might look like the following:

TARGET_MB?? CACHE_HIT_PERC ESTD_OVERALLOC_COUNT

---------- -------------- --------------------

63?????? 23????????? 367

125??????? 24????????? 30

250??????? 30????????? 3

375??????? 39????????? 0

500??????? 58????????? 0

600??????? 59????????? 0

700??????? 59????????? 0

800??????? 60????????? 0

900??????? 60????????? 0

1000??? 61????????? 0

1500??? 67????????? 0

2000??? 76????????? 0

3000??? 83????????? 0

4000??? 85????????? 0

可以看出當(dāng)TARGET_MB 為375M是ESTD_OVERALLOC_COUNT=0,所以可以將PGA_AGGREGATE_TARGET設(shè)置成375M。

附:oracle SGA與PGA區(qū)別:

SGA:是用于存儲數(shù)據(jù)庫信息的內(nèi)存區(qū),該信息為數(shù)據(jù)庫進程所共享。它包含Oracle 服務(wù)器的數(shù)據(jù)和控制信息,它是在Oracle服務(wù)器所駐留的計算機的實際內(nèi)存中得以分配,如果實際內(nèi)存不夠再往虛擬內(nèi)存中寫。

PGA:包含單個服務(wù)器進程或單個后臺進程的數(shù)據(jù)和控制信息,與幾個進程共享的SGA 正相反,PGA 是只被一個進程使用的區(qū)域,PGA 在創(chuàng)建進程時分配,在終止進程時回收。

總結(jié)

以上是生活随笔為你收集整理的oracle sga pga mysql_oracle实例内存(SGA和PGA)调整-xin的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。