<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Oracle數據庫中最常用的SQL語句

    SQL語句進行調整,往往有一項前期工作,就是定位最常用的SQL 語句。Oracle數據庫可以從多個方面取得SQL語句。如從數據庫自身的存儲過程或者函數中取得,也可以從前臺的應用程序中取得。所以,數據庫管理員必須學會如何從數據庫當前程序庫緩存中對已經存在的SQL語句進行采樣。了解當前使用最頻繁的SQL語句以及其對應的資源消耗情況。只有如此,數據庫管理員才能夠對癥下藥,解決SQL語句執行效率不高的問題。  在Oracle數據庫中有多種方法可以幫助數據庫管理員定位常用的SQL語句。筆者在這里介紹比較常用的兩種方法。
      一、查詢系統表sys.wrh$_sqlsta。
      在數據庫系統中有如下一張表。這張表存儲中Oracle數據庫執行過的SQL語句的相關情況。
      
      如上面這張表中,他會反映某個特定Sql語句的執行信息。其中第一個參數Excutions_Total參數紀錄了某條SQL語句總共執行的次數。而第二個參數Disk-Reads-Totali參數則統計了從磁盤中讀取數據的次數。當SQL語句的執行次數特別多而且又是多次從磁盤中讀取數據的話,那么數據庫管理員就要注意了。因為從磁盤中讀取數據要比從內存中讀取數據慢的多。此時,若數據庫管理員能夠想方設法,讓這些執行頻率高的SQL語句不直接從磁盤中讀取數據,而是從內存中讀取數據,那么就可以非常有效的提高SQL語句的執行效率。
      另外數據庫可以員也可以通過Statspack方法來定位SQL語句。當我們啟用這個功能的時候,數據庫會生成一張Stats$Sql_summary的表。他的功能跟上面這張表類似,只是他會有選擇的紀錄相關的信息。
      在Sql_Parameter會記入相關的條件。如當SQL語句執行次數大于多少才進行紀錄;又或者當SQL語句執行磁盤讀取次數大于多少時進行統計等等。通過這個過濾,會讓數據庫管理員了解更多的信息。但是,這里要注意一個問題,當任何一個指標超出(Oracle官方資料上把這個指標叫做閥值)的時候,系統就會往上面這個表中添加一條紀錄。所以如果這個指標設置的比較低,當數據庫比較繁忙的時候,我們會發現這張表會變得非常的活躍。數據庫會時不時的向這張表中添加紀錄。
      所以,如果數據庫管理員想用這種方法來定位SQL語句的話,那么需要同時做好兩項工作
      一是需要根據SQL調整過程來隨時調整這個指標。當我們數據庫管理員需要對SQL語句進行調整的時候,就必須要降低指標值。如此才能夠定位那些不常用的SQL語句,并對其進行調整。但是,降低指標值會導致數據庫向這個表中添加更多的紀錄。此時,數據庫管理員在調整過后,就要手工刪除這表中多余的數據。
      二是要定期的查看這表中的內容。因為隨著系統應用時機的不同,有些SQL語句可能在某個時段后不再使用。所以,如果SQL調整不再使用這些內容的話,則數據庫管理員從這張表中刪除他們就顯得非常的必要了。

    二、使用第三方工具對其進行定位。  除了Oracle數據庫自帶的工具之外,我們數據庫管理員還可以利用一些第三方的工具或者腳本來對常用的SQL語句進行定位。
      如有些公司開發了一些GUI工具。這些工具可以幫助我們數據庫管理員迅速顯示程序庫緩存中的SQL 語句,并且通過一些參數,還可以抽取執行頻率比較高的或者耗用資源比較多的SQL語句。另外,我們也可以自己寫一些SQL腳本。通過這個腳本來直接讀取數據庫緩存中的SQL語句。
      采用第三方工具有時候會比上面這個方法更加的有用。因為上面這個方法其紀錄的是一個過去式的結果。而直接在緩存中讀取的數據,則反映的是及時的數據。如當用戶發覺數據庫性能降低的時候,則數據庫管理員可以采用這些工具,了解SQL語句的執行情況,看看是否是因為SQL語句所造成的。
      當數據庫管理員找到影響數據庫性能的那個SQL語句之后,我們就可以對每個可疑的SQL語句進行調整。
      如數據庫管理員可以更改優化器模式。在Oracle數據庫中,提供了不少的優化器模式,如最快優化器或者耗用資源最少優化器等等。數據庫管理員可以嘗試更改不同的優化器模式,然后讓數據庫產生多個執行計劃。通過對每個計劃進行追蹤、分析、計時,來確定那個執行計劃具有最快的執行時間。
      如可以添加提示,來強制改變執行計劃,來獲得最優的執行時間。調整SQL語句的過程包含多個操作。SQL語句的調整從全局水平轉移到特定的水平。SQL語句調整的終極目標是縮短SQL語句的執行時間。Oracle數據庫中不同的執行計劃,其執行所需要的時間是不同的。出于調整的需要,數據庫管理員可以通過向所選擇的語句中添加提示的方式,強制對執行計劃進行修改。
      如可以通過添加索引來刪除不必要的全表掃描。索引是提高數據庫查詢性能的一個法寶。當SQL語句查詢效率低下,數據庫管理員想到的第一個方法就是能否對表添加合適的索引來提高SQL語句的查詢效率。通過對表添加索引,特別是基于位圖和基于函數的索引, 可以防止一些不必要的全表掃描。不過,在后續調整的過程中給表添加索引的話,要注意一個問題。就是添加索引后,可能會造成許多其他的SQL語句執行計劃的改變。所以,在為某一個SQL語句調整添加或者刪除了某個索引之后,可能會發現其他的SQL語句執行效率有所改變。故一般在后期的SQL語句調整過程中,我們都不怎么建議數據庫管理員對原來的索引進行調整。在確實有必要的情況下,數據庫管理員要能夠站在一個全局的角度,去評估索引更改后對其他SQL語句執行計劃的影響。從而最終確定這么處理是否合適。
      另外在對單獨的SQL語句進行調整的時候,還需要注意一個持久化的問題。也就是說,對SQL語句的調整,無論是執行計劃的調整,還是優化器模式的改變,其效果不能夠只是暫時的。讓SQL語句調整變得更持久,只有如此,調整才有實際意義。
      如何才能夠提高調整后的SQL語句的持久性呢?筆者這里有一個小的建議。如果通過以上的定位方法,了解到某條SQL語句執行頻率非常高,或者耗用的資源比較多,又或者多次從磁盤中讀取數據。對于這種SQL語句,如何保證調整的持久化呢?此時,可以改變SQL語句的來源來達到持久化的目的。如當數據庫管理員發現SQL語句是來源于應用程序。此時,在調整的過程中,數據庫管理員可以考慮,把應用程序傳遞過來的SQL語句打包放入存儲過程,然后把存儲過過程放入Oracle系統的軟件包中來實現。他可以讓我們定。位SQL語句的工作來的簡單;而且,他還使得所有遠程 的應用程序更加便于移植,因為對Oracle的調用都是封裝在數據庫函數或者過程之中。
      從以上的分析中我們可以看出,要對SQL語句進行調整,無論是采取何種方式,第一件工作就是要定位需要對哪些SQL語句進行調整。為了提高調整的效果,哪些執行頻率高、耗用資源多的SQL語句,就成為我們調整的對象。所以,如何定位這些語句就顯得至關重要。我們只要找到這些SQL語句,就可以使得我們的優化工作事半功倍

    posted on 2009-04-13 13:30 MichaelLee 閱讀(303) 評論(0)  編輯  收藏 所屬分類: SQL


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    公告

    ====Michael Lee====
    =Java Sofware Engineer=
    =Work @ Beijing=
    ---再煩,也別忘微笑;再急,也要注意語氣;再苦,也別忘堅持;再累,也要愛自己!---
    ---低調做人,你會一次比一次穩健;高調做事,你會一次比一次優秀---
    ---成功的時候不要忘記過去;失敗的時候不要忘記還有未來---

    常用鏈接

    留言簿(2)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 波多野结衣久久高清免费| 深夜免费在线视频| 亚洲免费一级视频| 亚洲性猛交xx乱| 亚洲黄色免费观看| 亚洲剧场午夜在线观看| 毛片免费在线视频| 亚洲爆乳AAA无码专区| 欧洲美熟女乱又伦免费视频| 亚洲精品日韩一区二区小说| 免费看美女被靠到爽的视频| 亚洲一区二区三区高清不卡 | 亚洲性猛交XXXX| 成人免费一区二区三区| 久久久久亚洲精品影视| 亚洲黄色免费电影| 亚洲爆乳成av人在线视菜奈实| 免费一级毛片清高播放| www免费黄色网| 久久精品国产亚洲AV电影| 成人免费黄色网址| 青青青视频免费观看| 亚洲中文字幕无码一区二区三区| 免费在线观影网站| 亚洲成人免费网址| 免费a级毛片大学生免费观看| 精品免费久久久久国产一区| 老司机亚洲精品影院无码| 青春禁区视频在线观看直播免费| 国产青草亚洲香蕉精品久久| 亚洲日本va中文字幕久久| 亚洲人成免费网站| 一区二区三区免费精品视频| 亚洲视频在线观看地址| 国产精品冒白浆免费视频| 97无码人妻福利免费公开在线视频| 亚洲精品在线电影| 亚洲成av人在片观看| 免费看又黄又无码的网站| 无码天堂va亚洲va在线va| 亚洲激情中文字幕|