




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、培訓(xùn)目的培訓(xùn)目標(biāo)培訓(xùn)內(nèi)容課堂交互 本次課程大約需要3個(gè)小時(shí),課后,我們會(huì)留半個(gè)小時(shí)與大家進(jìn)行探討,希望在 座各位在培訓(xùn)過程中記錄下自己的問題; Oracle 體系結(jié)構(gòu); Oracle SQL優(yōu)化及編寫規(guī)范; 了解Oracle 體系架構(gòu); 掌握Oracle SQL優(yōu)化基本方法; Oracle SQL優(yōu)化典型案例分析;第1頁(yè)/共55頁(yè) 二、二、Oracle 體系結(jié)構(gòu)體系結(jié)構(gòu) 五、五、Oracle SQL 編寫規(guī)范編寫規(guī)范 四、典型案例分析暨優(yōu)化要點(diǎn)四、典型案例分析暨優(yōu)化要點(diǎn) 三、三、Oracle SQL 優(yōu)化基礎(chǔ)優(yōu)化基礎(chǔ) 一、培訓(xùn)目的一、培訓(xùn)目的培訓(xùn)總目錄培訓(xùn)總目錄第2頁(yè)/共55頁(yè)OracleOr
2、acle服務(wù)器架構(gòu)第3頁(yè)/共55頁(yè)OracleOracle內(nèi)存體系架構(gòu)第4頁(yè)/共55頁(yè)OracleOracle進(jìn)程體系架構(gòu) 用戶進(jìn)程:在數(shù)據(jù)庫(kù)用戶或批處理進(jìn)程連接到 Oracle DB 時(shí)啟動(dòng) 服務(wù)器進(jìn)程:連接到Oracle 實(shí)例,在用戶建立 會(huì)話時(shí)啟動(dòng) 后臺(tái)進(jìn)程:在Oracle 實(shí)例啟動(dòng)時(shí)啟動(dòng)第5頁(yè)/共55頁(yè)OracleOracle存儲(chǔ)體系架構(gòu)第6頁(yè)/共55頁(yè)OracleOracle高可用性_ _雙機(jī)熱備優(yōu)點(diǎn)優(yōu)點(diǎn) 管理簡(jiǎn)單管理簡(jiǎn)單 相對(duì)較為穩(wěn)定相對(duì)較為穩(wěn)定缺點(diǎn)缺點(diǎn) 切換間存在停頓切換間存在停頓 備機(jī)空閑備機(jī)空閑 無擴(kuò)展性無擴(kuò)展性第7頁(yè)/共55頁(yè)OracleOracle高可用性_ _雙機(jī)熱備切
3、換第8頁(yè)/共55頁(yè)OracleOracle高可用性_RAC_RAC優(yōu)點(diǎn)優(yōu)點(diǎn) 良好的可伸縮性、可擴(kuò)展性良好的可伸縮性、可擴(kuò)展性 高可用性高可用性 新進(jìn)的新進(jìn)的Cache Fusion技術(shù)技術(shù) 負(fù)載均衡負(fù)載均衡缺點(diǎn)缺點(diǎn) 管理復(fù)雜管理復(fù)雜 對(duì)網(wǎng)絡(luò)要求高對(duì)網(wǎng)絡(luò)要求高第9頁(yè)/共55頁(yè)OracleOracle高可用性_RAC_RAC將應(yīng)用和用戶自動(dòng)而透明地重新連接到將應(yīng)用和用戶自動(dòng)而透明地重新連接到另一個(gè)系統(tǒng)另一個(gè)系統(tǒng)登錄的上下文可被保持登錄的上下文可被保持應(yīng)用查詢不會(huì)中斷應(yīng)用查詢不會(huì)中斷當(dāng)集群內(nèi)節(jié)點(diǎn) A 失敗, 用戶被轉(zhuǎn)移第10頁(yè)/共55頁(yè)OracleOracle RACRAC負(fù)載均衡 數(shù)據(jù)庫(kù)啟動(dòng)時(shí),向
4、監(jiān)聽進(jìn)程注冊(cè)數(shù)據(jù)庫(kù)啟動(dòng)時(shí),向監(jiān)聽進(jìn)程注冊(cè) 節(jié)點(diǎn)向監(jiān)聽進(jìn)程報(bào)告節(jié)點(diǎn)向監(jiān)聽進(jìn)程報(bào)告CPU 的使用情況的使用情況 當(dāng)建立連接時(shí),監(jiān)聽進(jìn)程選擇最空閑的節(jié)點(diǎn)當(dāng)建立連接時(shí),監(jiān)聽進(jìn)程選擇最空閑的節(jié)點(diǎn) 處理請(qǐng)求處理請(qǐng)求第11頁(yè)/共55頁(yè) 二、二、Oracle 體系結(jié)構(gòu)體系結(jié)構(gòu) 五、五、Oracle SQL 編寫規(guī)范編寫規(guī)范 四、典型案例分析暨優(yōu)化要點(diǎn)四、典型案例分析暨優(yōu)化要點(diǎn) 三、三、Oracle SQL 優(yōu)化基礎(chǔ)優(yōu)化基礎(chǔ) 一、培訓(xùn)目的一、培訓(xùn)目的培訓(xùn)總目錄培訓(xùn)總目錄第12頁(yè)/共55頁(yè)性能優(yōu)化概述13 誰來調(diào)整系統(tǒng)誰來調(diào)整系統(tǒng) 應(yīng)用設(shè)計(jì)人員、應(yīng)用開發(fā)人員應(yīng)用設(shè)計(jì)人員、應(yīng)用開發(fā)人員 數(shù)據(jù)庫(kù)管理人員數(shù)據(jù)庫(kù)管理人員
5、 什么時(shí)候調(diào)整什么時(shí)候調(diào)整 系統(tǒng)設(shè)計(jì)、系統(tǒng)開發(fā)過程系統(tǒng)設(shè)計(jì)、系統(tǒng)開發(fā)過程 系統(tǒng)運(yùn)行過程系統(tǒng)運(yùn)行過程 第13頁(yè)/共55頁(yè)應(yīng)用系統(tǒng)類型14 聯(lián)機(jī)事務(wù)處理(聯(lián)機(jī)事務(wù)處理(OLTPOLTP) 高吞吐量高吞吐量 增、刪、改多增、刪、改多 決策支持(決策支持(DSSDSS) 數(shù)據(jù)量大數(shù)據(jù)量大 主要用于查詢主要用于查詢 第14頁(yè)/共55頁(yè)SQLSQL語句處理過程15 查詢語句處理查詢語句處理 DMLDML語句處理語句處理 (insertinsert、deletedelete、updateupdate) DDLDDL語句處理語句處理 (createcreate、dropdrop、alteralter)第15頁(yè)
6、/共55頁(yè)SQLSQL語句處理各個(gè)階段16第16頁(yè)/共55頁(yè)SQLSQL語句處理必經(jīng)階段17 第第1 1步步: Create a Cursor : Create a Cursor 創(chuàng)建游標(biāo)創(chuàng)建游標(biāo) 第第2 2步步: Parse the Statement : Parse the Statement 分析語句分析語句 第第5 5步步: Bind Any Variables : Bind Any Variables 綁定變量綁定變量 第第7 7步步: Run the Statement : Run the Statement 運(yùn)行語句運(yùn)行語句 第第9 9步步: Close the Cursor :
7、 Close the Cursor 關(guān)閉游標(biāo)關(guān)閉游標(biāo)第17頁(yè)/共55頁(yè)SQLSQL語句處理可選階段18 并行功能并行功能 第第6 6步:步:Parallelize the Statement Parallelize the Statement 并行執(zhí)行語并行執(zhí)行語句句 查詢語句查詢語句 第第3 3步:步:Describe Results of a Query Describe Results of a Query 描述查描述查詢的結(jié)果集詢的結(jié)果集 第第4 4步:步:Define Output of a QueryDefine Output of a Query 定義查詢的定義查詢的輸出數(shù)據(jù)輸出
8、數(shù)據(jù) 第第8 8步:步:Fetch Rows of a QueryFetch Rows of a Query 取查詢出來的行取查詢出來的行第18頁(yè)/共55頁(yè)DDLDDL語句處理過程19 不同于不同于DMLDML語句和查詢語句的執(zhí)行語句和查詢語句的執(zhí)行 DDLDDL成功后需要對(duì)數(shù)據(jù)字典表進(jìn)行修改成功后需要對(duì)數(shù)據(jù)字典表進(jìn)行修改 分析階段還包括分析、查找數(shù)據(jù)字典分析階段還包括分析、查找數(shù)據(jù)字典 信息和執(zhí)行信息和執(zhí)行第19頁(yè)/共55頁(yè)OracleOracle優(yōu)化器20 優(yōu)化優(yōu)化: : 選擇最有效的執(zhí)行計(jì)劃來執(zhí)行選擇最有效的執(zhí)行計(jì)劃來執(zhí)行 SQL SQL語句的過程語句的過程 優(yōu)化器優(yōu)化器: : 選擇執(zhí)行
9、計(jì)劃的數(shù)據(jù)庫(kù)引擎選擇執(zhí)行計(jì)劃的數(shù)據(jù)庫(kù)引擎 基于規(guī)則(基于規(guī)則(RBORBO) 基于代價(jià)(基于代價(jià)(CBOCBO) 第20頁(yè)/共55頁(yè)OracleOracle統(tǒng)計(jì)信息21 影響影響CBOCBO執(zhí)行計(jì)劃最關(guān)鍵的因素執(zhí)行計(jì)劃最關(guān)鍵的因素 分析的方法分析的方法 analyzeanalyze命令命令 dbms_statdbms_stat包包 分析的頻率分析的頻率 Oracle 10gOracle 10g自動(dòng)分析自動(dòng)分析第21頁(yè)/共55頁(yè)共享SQLSQL語句22 儲(chǔ)存于共享池(儲(chǔ)存于共享池(shared_poolshared_pool) 判斷判斷SQLSQL語句是否與共享池中某一語句是否與共享池中某一SQ
10、LSQL相相同的步驟(同的步驟(CURSOR_SHARINGCURSOR_SHARING) 對(duì)所發(fā)出語句的文本串進(jìn)行對(duì)所發(fā)出語句的文本串進(jìn)行hashedhashed 將所發(fā)出語句的文本串進(jìn)行比較將所發(fā)出語句的文本串進(jìn)行比較 將將SQLSQL中涉及的對(duì)象進(jìn)行比較中涉及的對(duì)象進(jìn)行比較第22頁(yè)/共55頁(yè)基本概念23 ROWIDROWID 偽列,唯一。定位數(shù)據(jù)的最快方法偽列,唯一。定位數(shù)據(jù)的最快方法 索引創(chuàng)建時(shí)會(huì)記錄索引創(chuàng)建時(shí)會(huì)記錄ROWIDROWID值值 Driving TableDriving Table(驅(qū)動(dòng)表)(驅(qū)動(dòng)表): : 外層表,用于嵌套以及外層表,用于嵌套以及hashhash連接中連接
11、中 可選擇性可選擇性: : “唯一鍵的數(shù)量唯一鍵的數(shù)量/ /表中的行數(shù)表中的行數(shù)”的比值的比值第23頁(yè)/共55頁(yè)Oracle SQL Oracle SQL 執(zhí)行計(jì)劃24 SQLSQL語句語句: :SELECT ename, job, sal, dnameSELECT ename, job, sal, dname FROM emp, dept FROM emp, dept WHERE emp.deptno = dept.deptno WHERE emp.deptno = dept.deptno AND NOT EXISTS AND NOT EXISTS ( SELECT ( SELECT * *
12、 FROM salgrade FROM salgrade WHERE emp.sal WHERE emp.sal BETWEEN losal AND hisal ); BETWEEN losal AND hisal );第24頁(yè)/共55頁(yè)Oracle SQL Oracle SQL 執(zhí)行計(jì)劃圖25第25頁(yè)/共55頁(yè)Oracle SQL Oracle SQL 執(zhí)行計(jì)劃圖26第26頁(yè)/共55頁(yè)訪問路徑27 全表掃描(全表掃描(FTSFTS) 通過通過rowidrowid的表存?。ǖ谋泶嫒。═able Access by rowidTable Access by rowid) 索引掃描(索引掃描(In
13、dex ScanIndex Scan) 索引唯一掃描索引唯一掃描(index unique scan)(index unique scan) 索引范圍掃描索引范圍掃描(index range scan)(index range scan) 索引全掃描索引全掃描(index full scan)(index full scan) 索引快速掃描索引快速掃描(index fast full scan)(index fast full scan)第27頁(yè)/共55頁(yè)表連接28 表連接表連接JOIN:JOIN: 將兩個(gè)表結(jié)合在一起,一次只能連接將兩個(gè)表結(jié)合在一起,一次只能連接2 2個(gè)表,個(gè)表, 表連接也可
14、以被稱為表關(guān)聯(lián)表連接也可以被稱為表關(guān)聯(lián) 排序排序合并連接(合并連接(Sort Merge JoinSort Merge Join) 嵌套循環(huán)(嵌套循環(huán)(Nested LoopsNested Loops) 哈希連接(哈希連接(Hash JoinHash Join)第28頁(yè)/共55頁(yè)排序- -合并連接圖29第29頁(yè)/共55頁(yè)嵌套循環(huán)連接圖30第30頁(yè)/共55頁(yè)連接適用情況31 排序排序合并連接合并連接 非等值連接、關(guān)聯(lián)列都有索引非等值連接、關(guān)聯(lián)列都有索引 嵌套連接嵌套連接 驅(qū)動(dòng)表較小驅(qū)動(dòng)表較小 哈希連接哈希連接 等值連接等值連接第31頁(yè)/共55頁(yè)生成執(zhí)行計(jì)劃32 sql set autotrace
15、 onsql set autotrace on sql explain plan for select sql explain plan for select 用用dbms_systemdbms_system存儲(chǔ)過程生成執(zhí)行計(jì)劃存儲(chǔ)過程生成執(zhí)行計(jì)劃 用用PL/SQL DEVELOPERPL/SQL DEVELOPER(F5F5)第32頁(yè)/共55頁(yè)干預(yù)執(zhí)行計(jì)劃_ _訪問路徑33 FULL FULL / /* *+ FULL ( table ) + FULL ( table ) * */ / 指定該表使用指定該表使用FTSFTS INDEX INDEX / /* *+ INDEX ( table
16、index) + INDEX ( table index) * */ / 使用該表上指定的索引對(duì)表進(jìn)行索引掃描使用該表上指定的索引對(duì)表進(jìn)行索引掃描 INDEX_FFS / INDEX_FFS /* *+ INDEX_FFS ( table index) + INDEX_FFS ( table index) * */ / 使用快速全索引掃描使用快速全索引掃描 NO_INDEX / NO_INDEX /* *+ NO_INDEX ( table index) + NO_INDEX ( table index) * */ / 不使用該表上指定的索引進(jìn)行存取,仍然可以使用不使用該表上指定的索引進(jìn)行存取
17、,仍然可以使用 其它的索引進(jìn)行索引掃描其它的索引進(jìn)行索引掃描第33頁(yè)/共55頁(yè)干預(yù)執(zhí)行計(jì)劃_ _表連接34 USE_NL / USE_NL /* *+ USE_NL ( tab ,tab, . ) + USE_NL ( tab ,tab, . ) * */ / 使用嵌套連接使用嵌套連接 USE_MERGE / USE_MERGE /* *+ USE_MERGE ( tab ,tab,.) + USE_MERGE ( tab ,tab,.) * */ / 使用排序使用排序- - -合并連接合并連接 USE_HASH / USE_HASH /* *+ USE_HASH ( tab ,tab, .)
18、 + USE_HASH ( tab ,tab, .) * */ / 使用使用HASHHASH連接連接第34頁(yè)/共55頁(yè) 二、二、Oracle 體系結(jié)構(gòu)體系結(jié)構(gòu) 五、五、Oracle SQL 編寫規(guī)范編寫規(guī)范 四、典型案例分析暨優(yōu)化要點(diǎn)四、典型案例分析暨優(yōu)化要點(diǎn) 三、三、Oracle SQL 優(yōu)化基礎(chǔ)優(yōu)化基礎(chǔ) 一、培訓(xùn)目的一、培訓(xùn)目的培訓(xùn)總目錄培訓(xùn)總目錄第35頁(yè)/共55頁(yè)典型案例_1_136 系統(tǒng)名稱:綜合集中維護(hù)支撐系統(tǒng)系統(tǒng)名稱:綜合集中維護(hù)支撐系統(tǒng) 故障現(xiàn)象:壓力測(cè)試系統(tǒng)故障現(xiàn)象:壓力測(cè)試系統(tǒng)CPUCPU資源資源100%100% 故障分析:故障分析: 數(shù)據(jù)庫(kù)實(shí)際的數(shù)據(jù)量?jī)H為數(shù)據(jù)庫(kù)實(shí)際的數(shù)據(jù)量
19、僅為6GB6GB左右。但是每左右。但是每天卻產(chǎn)生大概天卻產(chǎn)生大概150GB150GB左右的左右的REDO LOGREDO LOG 使用使用LOGMNRLOGMNR分析分析ORACLEORACLE日志,發(fā)現(xiàn)基本上日志,發(fā)現(xiàn)基本上都為都為JMSSTOREJMSSTORE表的增、刪操作。該表為表的增、刪操作。該表為WEBLOGICWEBLOGIC的消息表的消息表(CLOBCLOB字段)字段)。第36頁(yè)/共55頁(yè)典型案例_1_137 系統(tǒng)名稱:綜合集中維護(hù)支撐系統(tǒng)系統(tǒng)名稱:綜合集中維護(hù)支撐系統(tǒng) 故障處理:故障處理: 運(yùn)行相關(guān)查詢業(yè)務(wù),在數(shù)據(jù)庫(kù)中查詢運(yùn)行相關(guān)查詢業(yè)務(wù),在數(shù)據(jù)庫(kù)中查詢v$sqlareav$
20、sqlarea,JMSSTOREJMSSTORE表相關(guān)操作的頻率表相關(guān)操作的頻率 對(duì)應(yīng)用進(jìn)行跟蹤調(diào)試,查找每筆查詢業(yè)務(wù)對(duì)應(yīng)用進(jìn)行跟蹤調(diào)試,查找每筆查詢業(yè)務(wù)所運(yùn)行的所運(yùn)行的SQLSQL 最終定位問題產(chǎn)生原因:應(yīng)用程序在每筆最終定位問題產(chǎn)生原因:應(yīng)用程序在每筆查詢后面都附帶了消息傳輸(查詢后面都附帶了消息傳輸(1010次)次) 將該將該SQLSQL屏蔽,問題得到解決屏蔽,問題得到解決第37頁(yè)/共55頁(yè)典型案例_2_238 系統(tǒng)名稱:系統(tǒng)名稱:OAOA系統(tǒng)系統(tǒng) 故障現(xiàn)象:故障現(xiàn)象:SQLSQL語句執(zhí)行速度慢(語句執(zhí)行速度慢(5S5S)select distinct select distinct b
21、.fd_workflowname,a.fd_fileid,a.fd_c_filetitle,a.fd_c_enddateb.fd_workflowname,a.fd_fileid,a.fd_c_filetitle,a.fd_c_enddatefrom tb_model_workflow b,tb_document c,tb_engine_filecommon from tb_model_workflow b,tb_document c,tb_engine_filecommon a,tb_engine_filetache ga,tb_engine_filetache gwhere a.fd_c_
22、workflowid=b.fd_workflowid and g.fd_fileid=a.fd_fileid and where a.fd_c_workflowid=b.fd_workflowid and g.fd_fileid=a.fd_fileid and a.fd_c_fileno=c.ida.fd_c_fileno=c.idand a.fd_c_isend=1and b.fd_workflowtype=1 and (c.security_level_code=1 and a.fd_c_isend=1and b.fd_workflowtype=1 and (c.security_leve
23、l_code=1 or(c.security_level_code=2 and g.fd_ft_staffid=2)or or(c.security_level_code=2 and g.fd_ft_staffid=2)or (c.security_level_code=3 and g.fd_ft_staffid=2)(c.security_level_code=3 and g.fd_ft_staffid=2)and a.fd_c_enddate=(sysdate-30)and a.fd_c_enddate=(sysdate-30)and a.fd_c_enddate=(sysdate+1)a
24、nd (pany_id=1 or c.send_company=1) and (pany_id=1 or c.send_company=1) order by a.fd_c_enddate desc;order by a.fd_c_enddate desc;第38頁(yè)/共55頁(yè)典型案例_2_239 系統(tǒng)名稱:系統(tǒng)名稱:OAOA系統(tǒng)系統(tǒng) 故障處理:故障處理: 查看該查看該sqlsql的執(zhí)行計(jì)劃的執(zhí)行計(jì)劃 tb_engine_filecommontb_engine_filecommon表為表為FTSFTS(full full table scantable scan),而且),而且costcost大
25、大第39頁(yè)/共55頁(yè)典型案例_2_240 系統(tǒng)名稱:系統(tǒng)名稱:OAOA系統(tǒng)系統(tǒng) 故障處理:故障處理: 查詢?cè)摫聿樵冊(cè)摫韋d_c_enddatefd_c_enddate的可選擇性的可選擇性,發(fā)現(xiàn)發(fā)現(xiàn)很高,因此對(duì)該字段建索引,很高,因此對(duì)該字段建索引,執(zhí)行計(jì)劃變?yōu)閳?zhí)行計(jì)劃變?yōu)槿缦?,?zhí)行時(shí)間縮短為如下,執(zhí)行時(shí)間縮短為0.3S0.3S左右左右第40頁(yè)/共55頁(yè)典型案例_3_341 系統(tǒng)名稱:商務(wù)領(lǐng)航系統(tǒng)系統(tǒng)名稱:商務(wù)領(lǐng)航系統(tǒng) 故障現(xiàn)象:出賬速度慢故障現(xiàn)象:出賬速度慢 故障處理:故障處理: 查找查找V$SESSIONV$SESSION中正在長(zhǎng)時(shí)間運(yùn)行的中正在長(zhǎng)時(shí)間運(yùn)行的SQLSQLupdate zjxc
26、.BIZ_CUST_BALANCE t set t.warefee = 0 where t.cusid inupdate zjxc.BIZ_CUST_BALANCE t set t.warefee = 0 where t.cusid in (select b.cusid from _cusid_temp_0401 b) and (select b.cusid from _cusid_temp_0401 b) and t.year_month = 201003; t.year_month = 201003; 表表biz_cusid_temp_0401biz_cus
27、id_temp_0401為為FTSFTS,但,但cusidcusid字段建有索引字段建有索引第41頁(yè)/共55頁(yè)典型案例_3_342 系統(tǒng)名稱:商務(wù)領(lǐng)航系統(tǒng)系統(tǒng)名稱:商務(wù)領(lǐng)航系統(tǒng) 故障處理:故障處理: 改寫上述改寫上述SQLSQL語句語句update _cust_balance t set t.warefee = 0 where update _cust_balance t set t.warefee = 0 where exists (select 1 from _cusid_temp_0401 b exists (select 1 from z
28、_cusid_temp_0401 b where t.cusid=b.cusid and t.year_month = 201003) ; where t.cusid=b.cusid and t.year_month = 201003) ; 表表biz_cusid_temp_0401biz_cusid_temp_0401的訪問從的訪問從FTSFTS改變改變?yōu)樗饕ㄒ粧呙铻樗饕ㄒ粧呙?SQL SQL執(zhí)行時(shí)間縮短為執(zhí)行時(shí)間縮短為1212秒秒第42頁(yè)/共55頁(yè)典型案例_4_443 系統(tǒng)名稱:系統(tǒng)名稱:CRMCRM系統(tǒng)系統(tǒng) 故障現(xiàn)象:過多的故障現(xiàn)象:過多的latch freelatch
29、 free鎖影響性能鎖影響性能 故障處理:故障處理: 查找查找latch freelatch free對(duì)應(yīng)的相關(guān)語句,都為對(duì)應(yīng)的相關(guān)語句,都為SELECT COL_VALUE FROM PUB_COLUMN_REFERENCE WHERE REFER_ID = :B1SELECT COL_VALUE FROM PUB_COLUMN_REFERENCE WHERE REFER_ID = :B1 而該而該SQLSQL語句都為函數(shù)語句都為函數(shù)GET_COLUMN_VALUEGET_COLUMN_VALUE調(diào)用所產(chǎn)生調(diào)用所產(chǎn)生 查詢調(diào)用該函數(shù)的相關(guān)可疑查詢調(diào)用該函數(shù)的相關(guān)可疑SQLSQL語句語句第43
30、頁(yè)/共55頁(yè)典型案例_4_444 系統(tǒng)名稱:系統(tǒng)名稱:CRMCRM系統(tǒng)系統(tǒng) 故障處理:故障處理: 定位定位SQLSQL有相關(guān)子查詢調(diào)用了該函數(shù)有相關(guān)子查詢調(diào)用了該函數(shù) 對(duì)該對(duì)該SQLSQL進(jìn)行進(jìn)行tracetrace跟蹤,發(fā)現(xiàn)該跟蹤,發(fā)現(xiàn)該SQLSQL每執(zhí)行每執(zhí)行一次,將會(huì)調(diào)用該函數(shù)一次,將會(huì)調(diào)用該函數(shù)3835538355次,也就是說次,也就是說latch freelatch free相應(yīng)的相應(yīng)的SQLSQL將被執(zhí)行將被執(zhí)行3835538355次次 修改相關(guān)應(yīng)用(修改相關(guān)應(yīng)用(cachecache相關(guān)刷新機(jī)制)相關(guān)刷新機(jī)制)第44頁(yè)/共55頁(yè)Oracle SQLOracle SQL優(yōu)化要點(diǎn)45
31、 使用執(zhí)行計(jì)劃來分析使用執(zhí)行計(jì)劃來分析SQLSQL性能進(jìn)而進(jìn)行優(yōu)化性能進(jìn)而進(jìn)行優(yōu)化 使用使用HINTSHINTS來干預(yù)執(zhí)行計(jì)劃來干預(yù)執(zhí)行計(jì)劃 最大限度地避免全表掃描(最大限度地避免全表掃描(FTSFTS) 減少子查詢的使用減少子查詢的使用 規(guī)范規(guī)范SQLSQL語句的編寫,使得語句的編寫,使得SQLSQL語句能夠被共享語句能夠被共享 減少減少SQLSQL解析的次數(shù):使用綁定變量解析的次數(shù):使用綁定變量第45頁(yè)/共55頁(yè)Oracle SQLOracle SQL優(yōu)化要點(diǎn)46 用索引提高效率用索引提高效率 避免在索引列上使用計(jì)算避免在索引列上使用計(jì)算 避免在索引列上使用函數(shù)轉(zhuǎn)換避免在索引列上使用函數(shù)轉(zhuǎn)
32、換 避免改變索引列的類型避免改變索引列的類型 避免在索引列上使用避免在索引列上使用IS NULLIS NULL和和IS NOT IS NOT NULLNULL 避免在索引列上使用避免在索引列上使用like%AAAlike%AAA第46頁(yè)/共55頁(yè)Oracle SQLOracle SQL優(yōu)化要點(diǎn)47 盡量避免盡量避免SQLSQL語句不必要的排序操作語句不必要的排序操作 UNIONUNION操作要用操作要用UNION ALLUNION ALL來代替來代替 ORDER BY ORDER BY 中的字段最好建立索引中的字段最好建立索引 盡量避免使用盡量避免使用DISTINCTDISTINCT語句語句
33、盡量避免使用盡量避免使用(NOT) IN(NOT) IN,而使用(,而使用(NOTNOT) EXISTSEXISTS來代替來代替 對(duì)表超過對(duì)表超過10%10%以上的以上的deletedelete、updateupdate操作要重操作要重建索引。建索引。第47頁(yè)/共55頁(yè) 五、五、Oracle SQL 編寫規(guī)范編寫規(guī)范 二、二、Oracle 體系結(jié)構(gòu)體系結(jié)構(gòu) 四、典型案例分析暨優(yōu)化要點(diǎn)四、典型案例分析暨優(yōu)化要點(diǎn) 三、三、Oracle SQL 優(yōu)化基礎(chǔ)優(yōu)化基礎(chǔ) 一、培訓(xùn)目的一、培訓(xùn)目的培訓(xùn)總目錄培訓(xùn)總目錄第48頁(yè)/共55頁(yè)SQLSQL編寫規(guī)范_ _書寫格式49 縮進(jìn)縮進(jìn) 對(duì)于存儲(chǔ)過程文件,縮進(jìn)為對(duì)
34、于存儲(chǔ)過程文件,縮進(jìn)為8 8個(gè)空格個(gè)空格 對(duì)于對(duì)于Java SourceJava Source里的里的SQLSQL字符串,不可有字符串,不可有縮進(jìn),即每一行字符串不以空格開頭縮進(jìn),即每一行字符串不以空格開頭 空格空格 SQL SQL內(nèi)算數(shù)運(yùn)算符、邏輯運(yùn)算符連接的兩個(gè)內(nèi)算數(shù)運(yùn)算符、邏輯運(yùn)算符連接的兩個(gè)元素之間必須用空格分隔元素之間必須用空格分隔 逗號(hào)之后必須接一個(gè)空格逗號(hào)之后必須接一個(gè)空格 關(guān)鍵字、保留字和左括號(hào)間必有一個(gè)空格關(guān)鍵字、保留字和左括號(hào)間必有一個(gè)空格第49頁(yè)/共55頁(yè)SQLSQL編寫規(guī)范_ _書寫格式50 換行換行_1_1 Select/From/Where/Order by/Group by Select/From/Where/Order by/Group by等子
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 國(guó)企會(huì)計(jì)應(yīng)酬管理制度
- 關(guān)于興趣的議論文
- 年級(jí)主任安全管理制度
- “互聯(lián)網(wǎng)+”投資協(xié)議
- 2025-2030中國(guó)配方奶粉行業(yè)市場(chǎng)發(fā)展?fàn)顩r及發(fā)展趨勢(shì)與投資前景研究報(bào)告
- 農(nóng)業(yè)產(chǎn)業(yè)信息化建設(shè)合作協(xié)議
- 生態(tài)農(nóng)業(yè)種植基地合作合同
- 食品加工企業(yè)質(zhì)量檢測(cè)合作協(xié)議
- 網(wǎng)絡(luò)資源共享使用協(xié)議
- 網(wǎng)絡(luò)通信技術(shù)解決方案協(xié)議
- 2025年度企業(yè)應(yīng)急預(yù)案演練計(jì)劃
- 人工智能在疾病診斷中的誤診原因探討
- 2025年高考?xì)v史考綱(完整版)
- (高清版)DB33∕T 1206-2020 建筑電氣工程施工質(zhì)量驗(yàn)收檢查用表標(biāo)準(zhǔn)
- 電鍍加工合同協(xié)議
- 國(guó)開2024年《測(cè)量學(xué)》形考任務(wù)1234答案全析
- 非營(yíng)利組織項(xiàng)目申請(qǐng)書范文
- 2025年軍隊(duì)文職人員(司機(jī)崗)歷年考試真題庫(kù)及答案(重點(diǎn)300題)
- 2025-2030CAPP軟件行業(yè)市場(chǎng)深度調(diào)研及發(fā)展現(xiàn)狀趨勢(shì)與投資前景研究報(bào)告
- Windows 故障轉(zhuǎn)移群集功能實(shí)現(xiàn)高可用的文件服務(wù)器
- 水庫(kù)清淤工程安全措施
評(píng)論
0/150
提交評(píng)論