Oracle效能優化學習心得byLYH

2021-08-31 10:30:48 字數 5007 閱讀 7553

oracle效能優化學習心得

一,優化總的原則

1, 檢視系統的使用情況

2, 檢視sga分配情況,結合系統具體情況進行分析。

3, 表的設計分析

4, sql語句分析

實施要則

1, 檢視系統的使用情況,cpu占用,記憶體,i/o讀取等

oracle10g提供的oracle enterprise manager圖形化工具中的addm 和 sql tuning advisor等可以方便的檢視系統狀況

2, ops上負載均衡,不同查詢用不同instance

3, 提供指令碼檢視sga使用情況

4, 分析sql執**況(trace及其他工具)

實施細節

1, 外部調整:我們應該記住oracle並不是單獨執行的。因此我們將檢視一下通過調整oracle伺服器以得到高的效能。

2, row re-sequencing以減少磁碟i/o:我們應該懂得oracle調優最重要的目標是減少i/o。

3, oracle sql調整。oracle sql調整是oracle調整中最重要的領域之一,只要通過一些簡單的sql調優規則就可以大幅度地提公升sql語句的效能,這是一點都不奇怪的。

4, 調整oracle排序:排序對於oracle效能也是有很大影響的。

5, 調整oracle的競爭:表和索引的引數設定對於update和insert的效能有很大的影響。

二,調優分類:

對oracle資料庫進行效能調整時,應當按照一定的順序進行,因為系統在前面步驟中進行的調整可以避免後面的一些不必要調整或者代價很大的調整。一般來說可以從兩個階段入手:

1、設計階段:對其邏輯結構和物理結構進行優化設計,使之在滿足需求條件的情況下,系統效能達到最佳,系統開銷達到最小;

2、資料庫執行階段:採取作業系統級、資料庫級的一些優化措施來使系統效能最佳;

㈠設計階段:

a,資料庫設計優化

較多修改較少查詢的資料和較多查詢較少修改的資料分別對待。

a,結構優化

1,根據應用程式進行資料庫設計。

即應用程式採用的是傳統的c/s兩層體系結構,還是b/w/d三層體系結構。不同的應用程式體系結構要求的資料庫資源是不同的。

2,遵循3大正規化規範化資料結構,減少不必要的冗餘。

3,反規範設計,增加必要冗餘,提高查詢速度。

4,針對變化較少的資料,合理建立臨時表和檢視,需注意對臨時表和檢視的及時同步更新

5,在伺服器端使用過程和函式,減少網路資料傳輸

b,i/o優化

1, 使用分割槽,對查詢條件字段(主外來鍵)建立索引,依據rowid實體地址查詢,減少i/o的消耗。應避免可能參與計算的字段

2, 建立合適的索引。

預設情況下建立的索引是非群集索引,但有時它並不是最佳的;合理的索引設計要建立在對各種查詢的分析和**上。一般來說:

1. 有大量重複值、且經常有範圍查詢(between, >,< ,>=,< =)和order by、group by發生的列,可考慮建立群集索引;

2. ②.經常同時訪問多列,且每列都含有重複值可考慮建立組合索引;

3. ③.組合索引要盡量使關鍵查詢形成索引覆蓋,其前導列一定是使用最頻繁的列。

a,定期的重構索引是有必要的.

alter index rebuild

b,避免在索引列上使用計算,判斷或函式處理

3,使用聚簇(對列的選擇原則同索引)。

4,使用存檔功能。

5,資料緩衝,快照,檢視,遠端呼叫等,減少i/o和網路消耗

6,i/o調整

這一步是在資訊系統開發之前完成的。資料庫管理員可以將組成同乙個表空間的資料檔案放在不同的硬碟上,做到硬碟之間i/o負載均衡。在磁碟比較富裕的情況下還應該遵循以下原則:

將表和索引分開;

創造使用者表空間,與系統表空間(system)分開磁碟;

建立表和索引時指定不同的表空間;

建立回滾段專用的表空間,防止空間競爭影響事務的完成;

建立臨時表空間用於排序操作,盡可能的防止資料庫碎片存在於多個表空間中。

7,確定資料塊大小和儲存引數。

由於資料庫的塊大小在資料庫建立以後就不能在修改(除非重建資料庫),因此為了減少資料鏈結和行遷移,又提高磁碟空間的利用率,在設計資料庫時要確定合適的資料塊大小和儲存引數。通常我們是根據樣例資料確定資料塊大小,而根據業務現狀和未來發展趨勢確定儲存引數。

㈡執行階段:

b,系統優化

許多新手都錯誤的認為應該首先調整oracle資料庫,而不是先確認外部資源是否足夠。實際上,如果外部環境出現瓶頸,再多的oracle調整都是沒有幫助的。

1,多處理器系統調整優化,啟用並行查詢。

2,減少記憶體交換,減少分頁,使sga(system globle area)可留駐記憶體。

3,優化系統i/o環境。

4,優化網路環境

c,資料庫連線與網路優化

1,使用直接ole db連線。

2,使用connection pool(資料連線池)機制

3,優化程式設計,減少網路傳輸量

d,oracle引數配置優化

oracle引數設定,根據具體應用情況而定。

1, sga的分配及使用效率優化

分配給每個例項的記憶體,即sga的使用效率如何,會大大影響資料庫系統的效能。sga由下列部分組成:共享池(shared pool)、資料塊緩衝區(db block buffer)、重做日誌緩衝區(log buffer)、大池組成(large pool)。

2, 使用sql*loader direct path選項進行大量資料裝載

3, database resource manager(drm,資料庫資源管理器)來控制使用者的資源分配

4, 減少資源競爭

在oracle中,需要採用一些機制來保證資料庫物件在使用期間的穩定性和資料的一致性,如使用鎖存器(latch)、鎖(lock)等。因此爭用和這些機制相關的資源會影響資料庫的效能。為了減少這種資源競爭,可以通過調整資料庫的相關初始化引數(如db_block_lru_latches、dml_locks)來減少資源的爭用,優化資料庫效能。

在對oracle資料庫進行優化時,需要用到許多的引數,其中有一部分引數對系統效能影響較大,這部分引數叫可變引數。可變引數按其作用可以分為兩大類,一大類是起限制作用的,如open_cursors;另一大類是影響系統效能的,如db_block_buffers。

5,可變引數優化

在對oracle資料庫進行優化時,需要用到許多的引數,其中有一部分引數對系統效能影響較大,這部分引數叫可變引數。可變引數按其作用可以分為兩大類,一大類是起限制作用的,如open_cursors;另一大類是影響系統效能的,如db_block_buffers。

在進行資料庫系統效能優化時,需要熟練掌握和了解一些可變引數。本文討論了一些對系統效能有較大影響的引數。

限制類可變引數

(1)dml_locks

該引數表明多少個使用者,可同時能修改多少張表。例如:有三個使用者同時修改二張表,則要求表上的總數為6。

若置為0,則組織佇列不起作用,其效能會稍有提高。使用該引數時不能用drop table、create index或顯式封鎖。

(2)license_max_session

該引數指出允許併發使用者會話的最大數。若此引數為0,則不能實施併發。若併發的使用者會話數已達到此極限,則只有具有restricted session許可權的使用者才能連線到伺服器。

(3)license_max_users

該引數指出在乙個資料庫上可建立的最大使用者數。當達到最大值時,便不能再建新使用者,可改變此值以放鬆限制。在license_max_session或license_max_user為0時,則併發會話或任何使用者都不能用。

若對不同的例項,此引數不同時,則以第乙個登入的資料庫例項的引數為準。

(4)max_dump_file_size

該引數指定作業系統中寫跟蹤檔案的塊的最大值。可用此值來限制跟蹤檔案的空間。

(5)open_cursors

該引數指明乙個使用者程序能同時開啟游標的最大數,它能限制每個使用者程序占用的記憶體空間量。

(6)open_links

該引數指定併發連線到遠端資料庫的最大使用者程序數。若同時引用多個資料庫,則應該增大該值。例如:

同時交替訪問a、b和c三個資料庫時,若open_links設定為2,則需花費等待連線時間。此引數只用於分布事務。若該引數設定為0,則不允許進行分布事務處理。

(7)process

該引數指定同時連線到oracle伺服器上的最大使用者程序數。該引數值包括6個後台程序和乙個登入,因此,該引數值為20,則只能有13或14個併發使用者連線到伺服器。

(8)row_locking

該引數指定行封鎖方式。若設定為「always」,則在修改表時只實施行封鎖。若設定為「intent」時,則行封鎖只適用於select for update,而在修改時實施表封鎖。

影響系統效能類可變引數

(1)checkpoint_process

該引數根據是否要求檢查點而設定成true或者false。當所有緩衝區的資訊寫到磁碟時,檢查點程序(chpt)建立乙個靜態的點。在歸檔日誌檔案中做乙個記號表示有乙個檢查點發生。

檢查點發生在歸檔日誌轉換的時候或當達到log_checkpoint_interval定義的塊數的時候。當設定此引數為true時,後台程序chpt便可工作。在檢查點期間內,若日誌寫程序(lgwr)的效能減低,則可用chpt程序加以改善。

(2)db_block_checkpoint_batch

該引數的值設定得較大時,可加速檢查點的完成。當指定的值比引數db_block_checkpoint_batch大時,其效果和指定最大值相同。

(3)db_block_buffers

該引數是在sga中可作緩衝用的資料庫塊數。該引數決定sga的大小,對資料庫效能具有決定性因素。若取較大的值,則可減少i/o次數,但要求記憶體空間較大。

每個緩衝區的大小由引數db_block_size決定。

(4)db_block_size

該引數表示oracle資料庫塊的大小,以位元組為單位,典型值為2048或4096。該值一旦設定則不能改變。它影響表及索引的freelists引數的最大值。

(5)db_files

該引數為資料庫執行時可開啟的資料檔案最大數目。

專案管理及流程優化學習心得

學習心得 2015年6月10日 馮秉茹 一 專案管理學習心得 本月通過對專案管理的學習,逐漸掌握了專案管理的基礎概念 要素及各過程階段的作用與聯絡。專案管理就是在有限的資源約束下,運用系統的觀點 方法和理論,對專案涉及的全部工作進行有效地管理。即從專案的投資決策開始到專案結束的全過程進行計畫 組織 ...

Oracle 9i學習心得

一 oracle的體系很龐大,要學習它,首先要了解oracle的框架。1 物理結構 由控制檔案 資料檔案 重做日誌檔案 引數檔案 歸檔檔案 密碼檔案組成 控制檔案 包含維護和驗證資料庫完整性的必要資訊 例如,控制檔案用於識別資料檔案和重做日誌檔案,乙個資料庫至少需要乙個控制檔案 資料檔案 儲存資料的...

效能學習心得體會

單位 陽信縣食品藥品監督管理局張峰 按照縣委 縣 的安排,我從3月15日開始學習了 行政效能提公升年 和 幹部作風改進年 學習活動。通過這次學習,加強了我的作風建設,提高了我的辦事效率和服務水平。一 學習的基本情況 認真縣委工作會議 馬福祥通知今年以來的重要講話精神 有關效能建設的檔案,圍繞以下內容...