熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

SQL語句性能調整之性能調整綜述

2013-11-13 15:54:47  來源: Oracle 

  Oracle數據庫是高度可調的數據庫產品本章描述調整的過程和那些人員應與Oracle服務器的調整有關以及與調整相關聯的操作系統硬件和軟件本章包括以下方面:

   誰來調整系統?

  什麼時候調整?

  建立有效調整的目標

  在設計和開發時的調整

  調整產品系統

  監控產品系統

  誰來調整系統:

  為了有效地調整系統若干類人員必須交換信息並牽涉到系統調整中例如:

  應用設計人員必須傳達應用系統的設計使得每個人都清楚應用中的數據流動

  應用開發人員必須傳達他們選擇的實現策略使得語句調整的過程中能快速容易地識別有問題的應用模塊和可疑的SQL語句

  數據庫管理人員必須仔細地監控系統活動並提供它們的資料使得異常的系統性能可被快速得識別和糾正

  硬件/軟件管理人員必須傳達系統的硬件軟件配置並提供它們的資料使得相關人員能有效地設計和管理系統

  簡而言之與系統涉及的每個人都在調整過程中起某些作用當上面提及的那些人員傳達了系統的特性並提供了它們的資料調整就能相對的容易和更快一些

  不幸的是事實上的結果是數據庫管理員對調整負有全部或主要的責任但是數據庫管理員很少有合適的系統方面的資料而且在很多情況下數據庫管理員往往是在實施階段才介入數據庫這就給調整工作帶來許多負面的影響因為在設計階段的缺陷是不能通過DBA的調整而得以解決而設計階段的缺陷往往對數據庫性能造成極大的影響

  其實在真正成熟的開發環境下開發人員作為純代碼編寫人員時對性能的影響最小此時大部分的工作應由應用設計人員完成而且數據庫管理員往往在前期的需求管理階段就介入為設計人員提供必要的技術支持

  調整並不是數據庫管理員的專利相反大部分應該是設計人員和開發人員的工作這就需要設計人員和開發人員具體必要的數據庫知識這樣才能組成一個高效的團隊然而事實上往往並非如此

   什麼時候作調整?

  多數人認為當用戶感覺性能差時才進行調整這對調整過程中使用某些最有效的調整策略來說往往是太遲了此時如果你不願意重新設計應用的話你只能通過重新分配內存(調整SGA)和調整I/O的辦法或多或少地提高性能Oracle提供了許多特性這些特性只有應用到正確地設計的系統中時才能夠很大地提高性能

  應用設計人員需要在設計階段設置應用的性能期望值然後在設計和開發期間應用設計人員應考慮哪些Oracle 特性可以對系統有好處並使用這些特性

  通過良好的系統設計你就可以在應用的生命周期中消除性能調整的代價和挫折說明在應用的生命周期中調整的相對代價和收益正如你見到的最有效的調整時間是在設計階段在設計期間的調整能以最低的代價給你最大的收益

  


  圖 在應用生命周期中調整的代價

  


  圖 在應用生命周期中調整的收益

  當然即使在設計很好的系統中也可能有性能降低但這些性能降低應該是可控的和可以預見的

   調整目標

  不管你正在設計或維護系統你應該建立專門的性能目標它使你知道何時要作調整如果你試圖胡亂地改動初始化參數或SQl 語句你可能會浪費調整系統的時間而且無什麼大的收益調整你的系統的最有效方法如下

  當設計系統時考慮性能

  調整操作系統的硬件和軟件

  識別性能瓶頸

  確定問題的原因

  采取糾正的動作

  當你設計系統時制定專門的目標;例如響應時間小於當應用不能滿足此目標時識別造成變慢的瓶頸(例如I/O競爭)確定原因采取糾正動作在開發期間你應測試應用研究確定在采取應用之前是否滿足設計的性能目標

  當你正在維護生產庫系統時有多種快速有效的方法來識別性能瓶頸

  不管怎樣調整通常是一系列開銷一旦你已確定了瓶頸你可能要犧牲一些其它方面的指標來達到所要的結果例如如果I/O有問題你可能需要更多內存或磁盤如果不可能買你可能要限制系統的並發性來獲取所需的性能然而如果你已經明確地定義了性能的目標那用什麼來交換高性能的決策就變的很容易的因為你已經確定了哪些方面是最重要的如過我的目標為高性能可能犧牲一些空間資源

  隨著應用的越來越龐大硬件性能的提高全面的調整應用逐漸變成代價高昂的行為在這樣情況下要取得最大的投入/效率之比較好的辦法是調整應用的關鍵部分使其達到比較高的性能這樣從總體上來說整個系統的性能也是比較高的這也就是有名的/原則調整應用的%(關鍵部分)能解決%的問題

  在設計和開發系統時作調整

  良好設計的系統可以防止在應用生命周期中產生性能問題系統設計人員和應用開發人員必須了解Oracle的查詢處理機制以便寫出高效的SQL語句章 有效的應用設計討論了你的系統中各種可用的配置以及每種配置更適合哪種類型的應用章 優化器討論了Oracle的查詢優化器以及如何寫語句以獲取最快的結果

  當設計你的系統時使用下列優化性能的准則

  消除客戶機/服務器應用中不必要的網絡傳輸 使用存儲過程

  使用適合你系統的相應Oracle服務器選件(例如並行查詢或分布式數據庫)

  除非你的應用有特殊的需要否則使用缺省的Oracle鎖

  利用數據庫記住應用模塊以便你能以每個模塊為基礎來追蹤性能

  選擇你的數據塊的最佳大小 原則上來說大一些的性能較好

  分布你的數據使得一個節點使用的數據本地存貯在該節點中

  調整產品系統

  本節描述對應用系統快速容易地找出性能瓶頸並決定糾正動作的方法這種方法依賴於對Oracle服務器體系結構和特性的了解程度在試圖調整你的系統前你應熟悉Oracle調整的內容

  為調整你已有的系統遵從下列步驟

  調整操作系統的硬件和軟件

  通過查詢V $SESSION_WAIT視圖識別性能的瓶頸這個動態性能視圖列出了造成會話(session)等待的事件

  通過分析V $SESSION_WAIT中的數據決定瓶頸的原因

  糾正存在的問題

  監控應用系統

  這主要是通過監控oracle的動態視圖來完成

  各種有用的動態視圖如v$session_wait v$session_event等


From:http://tw.wingwit.com/Article/program/Oracle/201311/17506.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.