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

Oracle數(shù)據(jù)庫運行階段的性能優(yōu)化技術(shù)

數(shù)據(jù)庫 Oracle
我們今天主要介紹的是Oracle數(shù)據(jù)庫的實際操作的性能優(yōu)化技術(shù)中的另外的一些項目,例如。如何在數(shù)據(jù)庫的運行階段來調(diào)整相關(guān)的數(shù)據(jù)庫。

上篇文章我們介紹的是在Oracle數(shù)據(jù)庫的實際操作的性能優(yōu)化技術(shù)中的設(shè)計階段、以及Oracle數(shù)據(jù)庫的運行階段,以下的文章我們主要講述的是如何在數(shù)據(jù)庫的運行階段調(diào)整數(shù)據(jù)庫這一步驟。望你會有所收獲。

 在數(shù)據(jù)庫運行階段調(diào)整數(shù)據(jù)庫

數(shù)據(jù)庫運行階段調(diào)整數(shù)據(jù)庫包括兩個方面:操作系統(tǒng)級的調(diào)整;數(shù)據(jù)庫級的調(diào)整。

1 操作系統(tǒng)級的調(diào)整

實施操作系統(tǒng)級調(diào)整的主要目的是減少內(nèi)存交換,減少分頁,使SGA(System Globle Area)可留駐內(nèi)存。

2 減少內(nèi)存交換

內(nèi)存交換(swapping)可能會造成很大的內(nèi)存開銷,應(yīng)將它最小化。運行在Solaris Unix操作系統(tǒng)上的Oracle數(shù)據(jù)庫,可利用vmstat或sar命令來檢查交換,查看到系統(tǒng)級內(nèi)存和硬盤I/O的使用情況,調(diào)整unix數(shù)據(jù)緩沖池的大小、每個進程所能使用的內(nèi)存大小等參數(shù)。


vmstat命令

它報告Solaris上的進程、虛擬內(nèi)存、磁盤、分頁和CPU的活動情況。下面命令將顯示系統(tǒng)每5秒鐘做的事情的概要:
% vmstat 5

sar命令

用于監(jiān)控交換、分頁、磁盤和CPU活動。下面命令用于每10秒顯示10次分頁活動的概要:
% sar -p 10 10

若系統(tǒng)內(nèi)存交換較多,且需要節(jié)省內(nèi)存,可采用以下措施:

1) 避免運行不必要的系統(tǒng)daemon進程或應(yīng)用程序進程;

2) 在不明顯影響數(shù)據(jù)塊命中率的前提下減少數(shù)據(jù)庫緩沖區(qū)的數(shù)量,以釋放一些內(nèi)存;

3) 減少UNIX文件緩沖區(qū)的數(shù)量(特別是在使用裸設(shè)備時)。

3 控制分頁

少量的內(nèi)存分頁不會太顯著地影響系統(tǒng)的性能,因為應(yīng)用程序不必全部放在內(nèi)存中。但是分頁過多將會造成系統(tǒng)性能下降。為了檢測過多的分頁,可在快速響應(yīng)或空閑期間運行測量,并與響應(yīng)遲緩時的測量進行比較??赏ㄟ^以下辦法來解決:

使用vmstat或sar -p監(jiān)控分頁;

安裝更多的內(nèi)存;

將一些工作移到另一系統(tǒng)中;

配置系統(tǒng)核心使用更少的內(nèi)存;

保持SGA在單個共享內(nèi)存段中。

4 使SGA(System Globle Area)留駐內(nèi)存

SGA是對數(shù)據(jù)庫數(shù)據(jù)進行快速訪問的一個系統(tǒng)全局區(qū),若SGA本身需要頻繁地進行釋放、分配,則不可能達到快速訪問數(shù)據(jù)的目的,因此,要求SGA駐留內(nèi)存。這時,我們可以重新配置UNIX核心,調(diào)整一些操作系統(tǒng)參數(shù)以達到增加共享內(nèi)存的目的。

5 數(shù)據(jù)庫級的調(diào)整

每一個Oracle實例都是由一組Oracle后臺進程和SGA的一個內(nèi)存區(qū)組成的。這組后臺進程會自動的讀寫數(shù)據(jù)庫的數(shù)據(jù)文件,因此,數(shù)據(jù)庫性能可以被這些因素所影響:SGA各部分的分配是否合理,使用效率是否正常;I/O和鎖競爭是否較多。

6 SGA的分配及使用效率

分配給每個實例的內(nèi)存,即SGA的使用效率如何,會大大影響數(shù)據(jù)庫系統(tǒng)的性能。SGA由下列部分組成:共享池、數(shù)據(jù)塊緩沖區(qū)、重做日志緩沖區(qū)、大池組成。

l 共享池(Shared pool)

共享池存放庫緩存(存儲共享SQL和PL/SQL區(qū))和數(shù)據(jù)字典緩存(數(shù)據(jù)庫對象信息)以及會話期間信息(對于MTS)。由于這些信息是應(yīng)用程序需要經(jīng)常訪問的,因此這些信息需要保持高的命中率??梢酝ㄟ^以下語句來確認共享池數(shù)據(jù)的命中率:

庫緩存:

select gethitratio from v$librarycache 應(yīng)大于90%
select sum(reloads)/sum(pins) from v$librarycache 應(yīng)小于1%

數(shù)據(jù)字典緩存:

select sum(getmisses)/sum(gets) from v$rowcache 應(yīng)小于15%

由于程序設(shè)計人員的水平參差不齊,可能存在大的匿名塊,這會導(dǎo)致SQL不能重用,因此需要找出大的匿名塊以轉(zhuǎn)換為存儲過程達到重用:

 

  1. select * from v$sqlarea where command_type=47 and length(sql_text)>500 

而對于一些應(yīng)用系統(tǒng)非常頻繁使用的SQL對象如存儲過程、函數(shù)、包等,可以通過釘在內(nèi)存中的方式來防止由于共享池太小被移出:

 

  1. exec dbms_shared_pool.keep(對象名) 

數(shù)據(jù)塊緩沖區(qū)(Db block buffer):

數(shù)據(jù)塊緩沖區(qū)存放用戶所經(jīng)常訪問的數(shù)據(jù)文件的數(shù)據(jù)塊內(nèi)容以及用戶修改的數(shù)據(jù)內(nèi)容。數(shù)據(jù)庫把數(shù)據(jù)文件里的內(nèi)容讀到內(nèi)存中,下次需要時直接從內(nèi)存中讀取,從而減少了磁盤的I/O和響應(yīng)時間。當然,一般只在比較小的數(shù)據(jù)表(如常用代碼表)才緩存到內(nèi)存中。

由于數(shù)據(jù)快緩沖區(qū)中不可能存放所有的數(shù)據(jù),因此可使用LRU算法來確定移出哪些數(shù)據(jù)塊,但又盡量保證有較高的數(shù)據(jù)命中率。

查看數(shù)據(jù)塊命中率的SQL語句為:

 

  1. select 1-(phy.value/(cur.value+con.value)) from v$sysstat cur,v$sysstat con,v$sysstat phy  
  2. where cur.name='db block gets' and con.name='consistent gets' 
  3. and phy.name='physical gets' 

如果這個命中率小于0.85,就要考慮為數(shù)據(jù)塊緩沖區(qū)分配更多的內(nèi)存了。

重做日志緩沖區(qū)(Log buffer):

重做日志緩沖區(qū)存放從用戶內(nèi)存區(qū)復(fù)制來的每個DML或DDL語句的重做條目。如果這個緩沖區(qū)分配太小會導(dǎo)致沒有足夠的空間來放重做條目而等待。

7  I/O和資源競爭

由于有眾多的進程要寫數(shù)據(jù)文件,因此需要通過I/O調(diào)整來解決I/O瓶頸問題。如果在設(shè)計階段有效地考慮了表空間的合理分配,就能有效地在一定程度上減少I/O競爭。在數(shù)據(jù)庫運行時,由于數(shù)據(jù)的動態(tài)增長,原來分配給表或索引的空間已經(jīng)用完,Oracle會自動分配空間給這些數(shù)據(jù)庫對象。而這個動態(tài)分配會對系統(tǒng)性能有所影響,所以要求:

避免動態(tài)空間管理

表空間的本地化管理,以減少與數(shù)據(jù)字典表空間的磁盤競爭。

在系統(tǒng)設(shè)計和試運行階段數(shù)據(jù)量相對較小,效率低下的SQL可能并不會影響系統(tǒng)響應(yīng)時間,但當系統(tǒng)數(shù)據(jù)量增長到一定程度時,需要在系統(tǒng)運行時監(jiān)控并找出是哪些SQL不能有效使用索引或缺少索引,并進行相應(yīng)調(diào)整:建立索引;修改SQL寫法。

另外,在Oracle中,需要采用一些機制來保證數(shù)據(jù)庫對象在使用期間的穩(wěn)定性和數(shù)據(jù)的一致性,如使用鎖存器(latch)、鎖(lock)等。因此爭用和這些機制相關(guān)的資源會影響數(shù)據(jù)庫的性能。為了減少這種資源競爭,可以通過調(diào)整數(shù)據(jù)庫的相關(guān)初始化參數(shù)(如db_block_lru_latches、dml_locks)來減少資源的爭用,優(yōu)化數(shù)據(jù)庫性能。

一些常用的性能優(yōu)化手段和工具

Oracle數(shù)據(jù)庫系統(tǒng)提供了一些工具和腳本來獲取數(shù)據(jù)庫的性能指標和優(yōu)化的方法。如使用utlbstat.sql和utlestat.sql腳本獲取一段時間內(nèi)數(shù)據(jù)庫的內(nèi)存、磁盤I/O等的情況;使用動態(tài)性能視圖和數(shù)據(jù)字典視圖來獲取命中率和系統(tǒng)等待事件等信息。當然,也可以使用Oracle Enterprise Manager圖形化工具來監(jiān)控。

結(jié)束語

Oracle數(shù)據(jù)庫的性能調(diào)整相當重要,但難度也較大。數(shù)據(jù)庫管理員需要綜合運用上面介紹的規(guī)律,在數(shù)據(jù)庫建立時,就能根據(jù)應(yīng)用的需要合理設(shè)計分配表空間以及存儲參數(shù)、內(nèi)存使用初始化參數(shù),對以后的數(shù)據(jù)庫性能有很大的益處。只有認真分析Oracle運行過程當中出現(xiàn)的各種性能問題,才能保證Oracle數(shù)據(jù)庫高效可靠地運行。還需要指出的是:數(shù)據(jù)庫的性能調(diào)整是一個系統(tǒng)工程,涉及的方面很多,不能僅僅根據(jù)一個時間點的情況就斷定數(shù)據(jù)庫運行性能的好與壞。如何有效地進行調(diào)整,數(shù)據(jù)庫管理員需要經(jīng)過反反復(fù)復(fù)的過程。這些都需要在大量的實踐工作中不斷地積累經(jīng)驗,從而更好地進行數(shù)據(jù)庫的調(diào)優(yōu)。

 

責(zé)任編輯:佚名 來源: programbbs
相關(guān)推薦

2011-05-18 09:39:19

Oracle數(shù)據(jù)庫性能優(yōu)化

2010-04-20 10:49:45

Oracle數(shù)據(jù)庫

2011-05-20 10:30:20

ORACLE數(shù)據(jù)庫性能優(yōu)化

2010-11-15 16:13:24

Oracle數(shù)據(jù)庫性能

2010-04-21 13:52:17

Oracle數(shù)據(jù)庫性能

2010-04-09 15:08:17

Oracle 數(shù)據(jù)庫性

2010-05-10 15:50:39

Oracle數(shù)據(jù)庫性能

2010-04-27 16:41:07

Oracle性能

2010-05-04 17:08:24

Oracle數(shù)據(jù)庫

2011-07-27 08:56:32

Oracle數(shù)據(jù)庫綁定變量軟解析

2010-05-05 11:48:27

Oracle設(shè)計開發(fā)階

2009-05-11 14:19:55

Oracle性能優(yōu)化數(shù)據(jù)庫

2014-06-10 15:07:19

Oracle數(shù)據(jù)庫優(yōu)化

2010-06-17 12:59:07

Oracle

2023-08-28 10:42:22

數(shù)據(jù)庫Oracle

2012-11-21 17:35:21

Oracle技術(shù)嘉年華

2011-05-19 10:29:40

數(shù)據(jù)庫查詢

2013-09-17 10:32:08

Android性能優(yōu)化數(shù)據(jù)庫

2020-02-25 23:55:07

數(shù)據(jù)庫工具技術(shù)

2010-04-13 17:35:50

Oracle數(shù)據(jù)庫性能
點贊
收藏

51CTO技術(shù)棧公眾號