1. 前言 5
1.1 目的 5
1.2 文檔說明 5
1.3 詞匯表 5
1.4 參考資料 5
2. PLSQL程序優(yōu)化原則 6
2.1 導致性能問題的內(nèi)在原因 6
2.2 PLSQL優(yōu)化的核心思想 6
2.3 ORACLE優(yōu)化器 6
2.4 PLSQL優(yōu)化 7
2.4.1 選擇最有效率的表名順序 7
2.4.2 WHERE子句中的連接順序 8
2.4.3 SELECT子句中避免使用 ‘ * ‘ 8
2.4.4 用EXISTS替代IN 8
2.4.5 用NOT EXISTS替代NOT IN 9
2.4.6 用表連接替換EXISTS 9
2.4.7 用EXISTS替換DISTINCT 10
2.4.8 減少對表的查詢 10
2.4.9 避免循環(huán)(游標)里面嵌查詢 11
2.4.10 盡量用union all替換union 13
2.4.11 使用DECODE函數(shù)來減少處理時間 13
2.4.12 group by優(yōu)化 13
2.4.13 盡量避免用order by 14
2.4.14 用Where子句替換HAVING子句 14
2.4.15 使用表的別名(Alias) 14
2.4.16 刪除重復記錄 14
2.4.17 COMMIT使用 15
2.4.18 減少多表關聯(lián) 15
2.4.19 批量數(shù)據(jù)插入 15
2.5 索引使用優(yōu)化 16
2.5.1 避免在索引列上使用函數(shù)或運算 16
2.5.2 避免改變索引列的類型. 17
2.5.3 避免在索引列上使用NOT 17
2.5.4 用>=替代> 18
2.5.5 避免在索引列上使用IS NULL和IS NOT NULL 18
2.5.6 帶通配符(%)的like語句 18
2.5.7 總是使用索引的第一個列 19
2.5.8 多個平等的索引 19
2.5.9 不明確的索引等級 19
2.5.10 自動選擇索引 19
2.5.11 使用提示(Hints) 19
2.5.12 表上存在過舊的分析 20
2.5.13 表上存在并行 21
2.5.14 關于索引建立 21
3. PLSQL程序性能問題測試方法 21
3.1 性能問題分析 21
3.2 EXPAIN PLAN分析索引使用 22
3.3 TOPSQL分析 24
3.4 針對性語句搜索 28
3.5 后臺存儲過程跟蹤 29
3.6 性能監(jiān)控 30
4. 性能測試工具設計思想 31
1. 前言
1.1 目的
性能測試是測試中比較重要的工作,性能測試應分為壓力的測試和性能的測試,其中性能問題中絕大部分都是由于程序編寫的不合理、不規(guī)范造成的。本文檔說明了程序中常見的不優(yōu)化的腳本編寫,導致的性能問題,并且在也描述了怎樣去跟蹤和解決程序上的性能問題的方法。
在最后一章里面描述了做一個白盒測試工具測試性能問題的設計思想。
1.2 文檔說明
本文檔只說明PLSQL編寫的優(yōu)化問題,不包括ORACLE本身的性能優(yōu)化(內(nèi)存SGA、系統(tǒng)參數(shù)、表空間等)、操作系統(tǒng)的性能問題和硬件的性能問題。對于PLSQL程序優(yōu)化方面的內(nèi)容有很多,本文檔列出在我們實際工作中一些常見的情況。本文檔難免有不正確的地方,也需要大家給予指正。
本文檔舉例說明的問題語句不是實際程序中真正存在的,只是讓大家能看起來更容易理解,但這些語句也不代表在我們程序中其他部分語句不存在這些問題。
舉例說明中的語句采用的是社保核心平臺的數(shù)據(jù)字典,在舉例描述中沒有標明表名和字段名的含義,還需單獨參考。
|
|