1. 前言 5
1.1 目的 5
1.2 文檔說明 5
1.3 詞匯表 5
1.4 參考資料 5
2. PLSQL程序優(yōu)化原則 6
2.1 導(dǎo)致性能問題的內(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 減少對(duì)表的查詢 10
2.4.9 避免循環(huán)(游標(biāo))里面嵌查詢 11
2.4.10 盡量用union all替換union 13
2.4.11 使用DECODE函數(shù)來減少處理時(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 刪除重復(fù)記錄 14
2.4.17 COMMIT使用 15
2.4.18 減少多表關(guān)聯(lián) 15
2.4.19 批量數(shù)據(jù)插入 15
2.5 索引使用優(yōu)化 16
2.5.1 避免在索引列上使用函數(shù)或運(yùn)算 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 總是使用索引的第一個(gè)列 19
2.5.8 多個(gè)平等的索引 19
2.5.9 不明確的索引等級(jí) 19
2.5.10 自動(dòng)選擇索引 19
2.5.11 使用提示(Hints) 19
2.5.12 表上存在過舊的分析 20
2.5.13 表上存在并行 21
2.5.14 關(guān)于索引建立 21
3. PLSQL程序性能問題測(cè)試方法 21
3.1 性能問題分析 21
3.2 EXPAIN PLAN分析索引使用 22
3.3 TOPSQL分析 24
3.4 針對(duì)性語句搜索 28
3.5 后臺(tái)存儲(chǔ)過程跟蹤 29
3.6 性能監(jiān)控 30
4. 性能測(cè)試工具設(shè)計(jì)思想 31
1. 前言
1.1 目的
性能測(cè)試是測(cè)試中比較重要的工作,性能測(cè)試應(yīng)分為壓力的測(cè)試和性能的測(cè)試,其中性能問題中絕大部分都是由于程序編寫的不合理、不規(guī)范造成的。本文檔說明了程序中常見的不優(yōu)化的腳本編寫,導(dǎo)致的性能問題,并且在也描述了怎樣去跟蹤和解決程序上的性能問題的方法。
在最后一章里面描述了做一個(gè)白盒測(cè)試工具測(cè)試性能問題的設(shè)計(jì)思想。
1.2 文檔說明
本文檔只說明PLSQL編寫的優(yōu)化問題,不包括ORACLE本身的性能優(yōu)化(內(nèi)存SGA、系統(tǒng)參數(shù)、表空間等)、操作系統(tǒng)的性能問題和硬件的性能問題。對(duì)于PLSQL程序優(yōu)化方面的內(nèi)容有很多,本文檔列出在我們實(shí)際工作中一些常見的情況。本文檔難免有不正確的地方,也需要大家給予指正。
本文檔舉例說明的問題語句不是實(shí)際程序中真正存在的,只是讓大家能看起來更容易理解,但這些語句也不代表在我們程序中其他部分語句不存在這些問題。
舉例說明中的語句采用的是社保核心平臺(tái)的數(shù)據(jù)字典,在舉例描述中沒有標(biāo)明表名和字段名的含義,還需單獨(dú)參考。
|
|