掌握Oracle資料庫效能調優方法

roc_guo發表於2022-05-01

掌握Oracle資料庫效能調優方法掌握Oracle資料庫效能調優方法

在Oracle效能調優任務中,測試人員能夠透過nmon和Oracle自帶的效能分析工具AWR等觀測資料庫的任務執行情況和資源使用情況。其中,AWR報告中的SQL Statistics項會從幾個維度列舉系統執行較慢的SQL語句,用於瓶頸SQL定位。導致SQL語句執行時間長的原因有很多種,例如SQL解析時使用硬解析(Hard Parse)方法。下面著重講一下SQL語句的使用軟硬解析的區別。

在Oracle資料庫中有一塊區域被稱為共享池(Shared Pool),它用於存放緩衝程式資料。已執行過的每一條SQL語句在共享池中都存有解析後的內容,儲存這些語句的地方叫快取記憶體(Library Cache)。因為記憶體區域是有限的,所以不能將所有解析後的語句都一直儲存,Oracle採用最近最少使用原則(LRU,Least Recently Used)來管理共享池中的物件,只保留那些使用最頻繁且最近使用的語句。

每當Oracle執行一條語句時,首先會進行語法檢查(Syntax Check)和語義檢查(Semantic Check)。如果這些都透過,就會對SQL語句進行解析(Parse),具體做法是利用內部的雜湊演算法來取得該SQL的雜湊值,檢查快取記憶體裡是否存在該值。如果能成功在快取記憶體中找到,就將利用已有的解析樹(Parse Tree)與執行計劃(Execution Plan),省略最佳化器的相關工作,這種解析被稱為軟解析(Soft Parse);反之,Oracle將執行建立解析樹、生成執行計劃的工作,並將其放入快取記憶體以待重用,這種方式稱為硬解析。

硬解析透過最佳化器建立最優的執行計劃時,會根據資料字典中物件的統計資訊計算多個執行計劃的代價,從而得到一個最優解。這一步涉及大量的計算,會消耗非常多的CPU資源。所以我們在做效能調優時,要儘可能使用軟解析,避免硬解析的執行。專案組在改程式序時,倡導功能相同的程式儘量保持一致性,多使用繫結變數,即將變數的資料透過一定的資料訪問技術來和相應的實體捆綁在一起,使之成為一個整體。

本文主要講了Oracle資料庫中SQL解析效能調優的原理和方法,希望能給各位開發測試人員帶來幫助。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2889763/,如需轉載,請註明出處,否則將追究法律責任。

相關文章