oracle效能優化二——作業系統優化

彎_彎發表於2015-09-23

       在我的前一篇部落格《oracle效能優化一——簡介》對oracle優化進行了簡單介紹,那麼今天我就從作業系統方面來介紹如何優化oracle資料庫。

1.優化思路

在資料庫優化的時候,可以從5個方面調整,我們可以做為資料庫優化的思路

Ø         網路

Ø         硬體

ü         I/O子系統

ü         Cpu子系統

ü         儲存器

Ø         作業系統

ü         UNIX系統

ü         NT系統

ü         VMS

Ø         資料庫

ü         儲存引數調整

ü         環境引數調整

Ø         應用程式

批處理和OLTP應用程式具有不同特點,批處理要考慮整體時間,而OLTP更注重單個sql的效能,在考慮單條sql是重點是:

ü         棘手sql調整

ü         索引調整

2.硬體優化

       硬體的調整常在應用程式展開的初期見到,並且能解決很多效能問題,隨著應用程式的展開,資料庫規模的增長,後期主要的調整手段要放到資料庫和應用程式上去。它們往往是影響效能的主要因素,同時也比硬體調整要更加經濟。當然,如果客戶不計成本向裡扔錢,不反對硬體升級。

3. 作業系統的優化

對作業系統的優化要看具體的作業系統而言,下面有一些常用的經驗可供參考。

1.         對於unix作業系統,我們經常需要調整如下引數:

Ø         共享記憶體(SharedMemory)

Ø         訊號燈(Semaphores)

       對於共享記憶體主要關注下面四個核心引數:SHMMAX(單個共享記憶體段最大值)、SHMSEG(能夠連到單個程式上共享記憶體段的最大值)、SHMALL(共享記憶體段總數目)。oracle建議將單個例項的SGA分配在一個共享記憶體段裡。所以SHMMAX一般為實體記憶體的一半。具體的調整請看oracle的安裝手冊。最後,可以使用一些系統級工具進行監測:ipcs –b 可以獲得當前共享記憶體段列表;tstshm 可以評估共享記憶體段設定。

       對於訊號燈:主要關注SSEMMNI(系統裡訊號燈集合的最大數目)、SEMMSL(每個集合裡訊號燈的最大數目)、SEMMNS(系統範圍內可用的訊號燈的最大數目)。每個oracle程式使用一個訊號燈,訊號燈數要比process多,否則資料不能啟動,每個核心引數的最佳取值同上,在oracle的安裝文件裡有詳細說明,此不贅述。

最後還要注意,要給作業系統留下足夠的記憶體,不要因為SGA太大而造成過多的頁交換,太多的page fault會消耗系統資源。

       可以利用作業系統的監視工具來分析系統的瓶頸,下面的示例都是本文例項使用sql*loader匯入資料檔案時的情況,這是系統資源使用的一個高峰。

   使用iostat如圖1所示,bps表示每秒傳輸的kb數、tps表示每秒訪問磁碟驅動的次數。

 

圖1

       可以看到硬碟平均每秒訪問磁碟100次左右,平均每秒傳輸5M左右資料,這樣每次訪問磁碟可以訪問到52K資料。

        使用vmstat如圖1所示,大家要主要關心pagefault、page pin、page pout,這些資料表明了系統的頁交換情況,cpu id顯示了cpu資源利用率,procs 表明佇列的多少。

 

圖2

       圖2表明:有大量的頁交換產生,空閒記憶體太少,存在著記憶體瓶頸。但是cpu有大量的空閒等待時間。這表明SGA太大,導致系統本身的快取太小。

通過這兩個工具的監測,就可以明白原來系統的瓶頸就在記憶體和硬碟io這兩個子系統上,更深層次的原因還有待對oracle的監測來發現。

對於WINDOWNT系列作業系統,可以使用如下手段優化作業系統:

Ø 使不必要的服務失效

Ø取消螢幕保護

Ø 只將機器用做資料庫伺服器

Ø 如果是WINDOWSNT系統

控制面扳中Networktool –Properties下面四個選項中選擇Maximize Throughput for Network Application

控制面扳中Systemtool—Performance中boost選擇None,減少檔案系統緩衝

Ø 利用效能監視器監視資料庫伺服器,分析效能瓶頸

Ø 利用微軟資源工具箱(resourcespake)中的工具(Process Viewer、Process Explode、Quick Slice、Process Stat)監視資料庫伺服器,決定作業系統是否優化

 做優化,不單單要指導如何優化SQL,還有懂得作業系統的知識,從底層開始優化。


相關文章