




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 二、二、Oracle Oracle 體系結(jié)構(gòu)體系結(jié)構(gòu) 五、五、Oracle SQLOracle SQL編寫規(guī)范編寫規(guī)范 四、典型案例分析暨優(yōu)化要點(diǎn)四、典型案例分析暨優(yōu)化要點(diǎn) 三、三、Oracle SQLOracle SQL優(yōu)化基礎(chǔ)優(yōu)化基礎(chǔ) 一、培訓(xùn)目的一、培訓(xùn)目的培訓(xùn)總目錄培訓(xùn)總目錄1培訓(xùn)目的培訓(xùn)目的培訓(xùn)目標(biāo)培訓(xùn)內(nèi)容課堂交互 本次課程大約需要3個(gè)小時(shí),課后,我們會(huì)留半個(gè)小時(shí)與大家進(jìn)行探討,希望在 座各位在培訓(xùn)過(guò)程中記錄下自己的問(wèn)題; Oracle 體系結(jié)構(gòu); Oracle SQL優(yōu)化及編寫規(guī)范; 了解Oracle 體系架構(gòu); 掌握Oracle SQL優(yōu)化基本方法; Oracle SQL優(yōu)化典
2、型案例分析;2 二、二、Oracle Oracle 體系結(jié)構(gòu)體系結(jié)構(gòu) 五、五、Oracle SQL Oracle SQL 編寫規(guī)范編寫規(guī)范 四、典型案例分析暨優(yōu)化要點(diǎn)四、典型案例分析暨優(yōu)化要點(diǎn) 三、三、Oracle SQL Oracle SQL 優(yōu)化基礎(chǔ)優(yōu)化基礎(chǔ) 一、培訓(xùn)目的一、培訓(xùn)目的培訓(xùn)總目錄培訓(xùn)總目錄3OracleOracle服務(wù)器架構(gòu)服務(wù)器架構(gòu)4OracleOracle內(nèi)存體系架構(gòu)內(nèi)存體系架構(gòu)5OracleOracle進(jìn)程體系架構(gòu)進(jìn)程體系架構(gòu) 用戶進(jìn)程用戶進(jìn)程:在數(shù)據(jù)庫(kù)用戶或批處理進(jìn)程連接到在數(shù)據(jù)庫(kù)用戶或批處理進(jìn)程連接到 Oracle DB 時(shí)啟動(dòng)時(shí)啟動(dòng) 服務(wù)器進(jìn)程服務(wù)器進(jìn)程:連接到連
3、接到Oracle 實(shí)例,在用戶建立實(shí)例,在用戶建立 會(huì)話時(shí)啟動(dòng)會(huì)話時(shí)啟動(dòng) 后臺(tái)進(jìn)程后臺(tái)進(jìn)程:在在Oracle 實(shí)例啟動(dòng)時(shí)啟動(dòng)實(shí)例啟動(dòng)時(shí)啟動(dòng)6OracleOracle存儲(chǔ)體系架構(gòu)存儲(chǔ)體系架構(gòu)7OracleOracle高可用性高可用性_ _雙機(jī)熱備雙機(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ī)空閑 無(wú)擴(kuò)展性無(wú)擴(kuò)展性8OracleOracle高可用性高可用性_ _雙機(jī)熱備切換雙機(jī)熱備切換9OracleOracle高可用性高可用性_RAC_RAC優(yōu)點(diǎn)優(yōu)點(diǎn) 良好的可伸縮性、可擴(kuò)展性良好的可伸縮性、可擴(kuò)展性 高可用性高可用性 新進(jìn)的新進(jìn)的C
4、ache Fusion技術(shù)技術(shù) 負(fù)載均衡負(fù)載均衡缺點(diǎn)缺點(diǎn) 管理復(fù)雜管理復(fù)雜 對(duì)網(wǎng)絡(luò)要求高對(duì)網(wǎng)絡(luò)要求高10OracleOracle高可用性高可用性_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)當(dāng)集群內(nèi)節(jié)點(diǎn) A A 失失敗敗, , 用戶被轉(zhuǎn)移用戶被轉(zhuǎn)移11OracleOracle RACRAC負(fù)載均衡負(fù)載均衡 數(shù)據(jù)庫(kù)啟動(dòng)時(shí),向監(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)程選擇
5、最空閑的節(jié)點(diǎn)當(dāng)建立連接時(shí),監(jiān)聽進(jìn)程選擇最空閑的節(jié)點(diǎn) 處理請(qǐng)求處理請(qǐng)求12 二、二、Oracle Oracle 體系結(jié)構(gòu)體系結(jié)構(gòu) 五、五、Oracle SQL Oracle SQL 編寫規(guī)范編寫規(guī)范 四、典型案例分析暨優(yōu)化要點(diǎn)四、典型案例分析暨優(yōu)化要點(diǎn) 三、三、Oracle SQL Oracle SQL 優(yōu)化基礎(chǔ)優(yōu)化基礎(chǔ) 一、培訓(xùn)目的一、培訓(xùn)目的培訓(xùn)總目錄培訓(xùn)總目錄13性能優(yōu)化概述性能優(yōu)化概述 誰(shuí)來(lái)調(diào)整系統(tǒng)誰(shuí)來(lái)調(diào)整系統(tǒng) 應(yīng)用設(shè)計(jì)人員、應(yīng)用開發(fā)人員應(yīng)用設(shè)計(jì)人員、應(yīng)用開發(fā)人員 數(shù)據(jù)庫(kù)管理人員數(shù)據(jù)庫(kù)管理人員 什么時(shí)候調(diào)整什么時(shí)候調(diào)整 系統(tǒng)設(shè)計(jì)、系統(tǒng)開發(fā)過(guò)程系統(tǒng)設(shè)計(jì)、系統(tǒng)開發(fā)過(guò)程 系統(tǒng)運(yùn)行過(guò)程系統(tǒng)運(yùn)行過(guò)
6、程 14應(yīng)用系統(tǒng)類型應(yīng)用系統(tǒng)類型 聯(lián)機(jī)事務(wù)處理(聯(lián)機(jī)事務(wù)處理(OLTPOLTP) 高吞吐量高吞吐量 增、刪、改多增、刪、改多 決策支持(決策支持(DSSDSS) 數(shù)據(jù)量大數(shù)據(jù)量大 主要用于查詢主要用于查詢 15SQLSQL語(yǔ)句處理過(guò)程語(yǔ)句處理過(guò)程 查詢語(yǔ)句處理查詢語(yǔ)句處理 DMLDML語(yǔ)句處理語(yǔ)句處理 (insertinsert、deletedelete、updateupdate) DDLDDL語(yǔ)句處理語(yǔ)句處理 (createcreate、dropdrop、alteralter)16SQLSQL語(yǔ)句處理各個(gè)階段語(yǔ)句處理各個(gè)階段17SQLSQL語(yǔ)句處理必經(jīng)階段語(yǔ)句處理必經(jīng)階段 第第1 1步步:
7、Create a Cursor : Create a Cursor 創(chuàng)建游標(biāo)創(chuàng)建游標(biāo) 第第2 2步步: Parse the Statement : Parse the Statement 分析語(yǔ)句分析語(yǔ)句 第第5 5步步: Bind Any Variables : Bind Any Variables 綁定變量綁定變量 第第7 7步步: Run the Statement : Run the Statement 運(yùn)行語(yǔ)句運(yùn)行語(yǔ)句 第第9 9步步: Close the Cursor : Close the Cursor 關(guān)閉游標(biāo)關(guān)閉游標(biāo)18SQLSQL語(yǔ)句處理可選階段語(yǔ)句處理可選階段 并行功能并
8、行功能 第第6 6步:步:Parallelize the Statement Parallelize the Statement 并行執(zhí)行語(yǔ)并行執(zhí)行語(yǔ)句句 查詢語(yǔ)句查詢語(yǔ)句 第第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ù)輸出數(shù)據(jù) 第第8 8步:步:Fetch Rows of a QueryFetch Rows of a Query 取查
9、詢出來(lái)的行取查詢出來(lái)的行19DDLDDL語(yǔ)句處理過(guò)程語(yǔ)句處理過(guò)程 不同于不同于DMLDML語(yǔ)句和查詢語(yǔ)句的執(zhí)行語(yǔ)句和查詢語(yǔ)句的執(zhí)行 DDLDDL成功后需要對(duì)數(shù)據(jù)字典表進(jìn)行修改成功后需要對(duì)數(shù)據(jù)字典表進(jìn)行修改 分析階段還包括分析、查找數(shù)據(jù)字典分析階段還包括分析、查找數(shù)據(jù)字典 信息和執(zhí)行信息和執(zhí)行20OracleOracle優(yōu)化器優(yōu)化器 優(yōu)化優(yōu)化: : 選擇最有效的執(zhí)行計(jì)劃來(lái)執(zhí)行選擇最有效的執(zhí)行計(jì)劃來(lái)執(zhí)行 SQL SQL語(yǔ)句的過(guò)程語(yǔ)句的過(guò)程 優(yōu)化器優(yōu)化器: : 選擇執(zhí)行計(jì)劃的數(shù)據(jù)庫(kù)引擎選擇執(zhí)行計(jì)劃的數(shù)據(jù)庫(kù)引擎 基于規(guī)則(基于規(guī)則(RBORBO) 基于代價(jià)(基于代價(jià)(CBOCBO) 21OracleO
10、racle統(tǒng)計(jì)信息統(tǒng)計(jì)信息 影響影響CBOCBO執(zhí)行計(jì)劃最關(guān)鍵的因素執(zhí)行計(jì)劃最關(guān)鍵的因素 分析的方法分析的方法 analyzeanalyze命令命令 dbms_statdbms_stat包包 分析的頻率分析的頻率 Oracle 10gOracle 10g自動(dòng)分析自動(dòng)分析22共享共享SQLSQL語(yǔ)句語(yǔ)句 儲(chǔ)存于共享池(儲(chǔ)存于共享池(shared_poolshared_pool) 判斷判斷SQLSQL語(yǔ)句是否與共享池中某一語(yǔ)句是否與共享池中某一SQLSQL相相同的步驟(同的步驟(CURSOR_SHARINGCURSOR_SHARING) 對(duì)所發(fā)出語(yǔ)句的文本串進(jìn)行對(duì)所發(fā)出語(yǔ)句的文本串進(jìn)行hashed
11、hashed 將所發(fā)出語(yǔ)句的文本串進(jìn)行比較將所發(fā)出語(yǔ)句的文本串進(jìn)行比較 將將SQLSQL中涉及的對(duì)象進(jìn)行比較中涉及的對(duì)象進(jìn)行比較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連接中連接中 可選擇性可選擇性: : “唯一鍵的數(shù)量唯一鍵的數(shù)量/ /表中的行數(shù)表中的行數(shù)”的比值的比值24Oracle SQL Oracle SQL 執(zhí)行計(jì)劃執(zhí)行計(jì)劃 S
12、QLSQL語(yǔ)句語(yǔ)句: :SELECT SELECT enameename, job, , job, salsal, , dnamedname FROM FROM empemp, , deptdept WHERE WHERE emp.deptnoemp.deptno = = dept.deptnodept.deptno AND NOT EXISTS AND NOT EXISTS ( SELECT ( SELECT * * FROM FROM salgradesalgrade WHERE WHERE emp.salemp.sal BETWEEN BETWEEN losallosal AND AND
13、 hisalhisal ); );25Oracle SQL Oracle SQL 執(zhí)行計(jì)劃圖執(zhí)行計(jì)劃圖26Oracle SQL Oracle SQL 執(zhí)行計(jì)劃圖執(zhí)行計(jì)劃圖27訪問(wèn)路徑訪問(wèn)路徑 全表掃描(全表掃描(FTSFTS) 通過(guò)通過(guò)rowidrowid的表存?。ǖ谋泶嫒。═able Access by rowidTable Access by rowid) 索引掃描(索引掃描(Index ScanIndex Scan) 索引唯一掃描索引唯一掃描(index unique scan)(index unique scan) 索引范圍掃描索引范圍掃描(index range scan)(inde
14、x range scan) 索引全掃描索引全掃描(index full scan)(index full scan) 索引快速掃描索引快速掃描(index fast full scan)(index fast full scan)28表連接表連接 表連接表連接JOIN:JOIN: 將兩個(gè)表結(jié)合在一起,一次只能連接將兩個(gè)表結(jié)合在一起,一次只能連接2 2個(gè)表,個(gè)表, 表連接也可以被稱為表關(guān)聯(lián)表連接也可以被稱為表關(guān)聯(lián) 排序排序合并連接(合并連接(Sort Merge JoinSort Merge Join) 嵌套循環(huán)(嵌套循環(huán)(Nested LoopsNested Loops) 哈希連接(哈希連接(
15、Hash JoinHash Join)29排序排序- -合并連接圖合并連接圖30嵌套循環(huán)連接圖嵌套循環(huán)連接圖31連接適用情況連接適用情況 排序排序合并連接合并連接 非等值連接、關(guān)聯(lián)列都有索引非等值連接、關(guān)聯(lián)列都有索引 嵌套連接嵌套連接 驅(qū)動(dòng)表較小驅(qū)動(dòng)表較小 哈希連接哈希連接 等值連接等值連接32生成執(zhí)行計(jì)劃生成執(zhí)行計(jì)劃 sql set autotrace onsql set autotrace on sql explain plan for select sql explain plan for select 用用dbms_systemdbms_system存儲(chǔ)過(guò)程生成執(zhí)行計(jì)劃存儲(chǔ)過(guò)程生成執(zhí)行
16、計(jì)劃 用用PL/SQL DEVELOPERPL/SQL DEVELOPER(F5F5)33干預(yù)執(zhí)行計(jì)劃干預(yù)執(zhí)行計(jì)劃_ _訪問(wèn)路徑訪問(wèn)路徑 FULL FULL / /* *+ FULL ( table ) + FULL ( table ) * */ / 指定該表使用指定該表使用FTSFTS INDEX INDEX / /* *+ INDEX ( table index) + INDEX ( table index) * */ / 使用該表上指定的索引對(duì)表進(jìn)行索引掃描使用該表上指定的索引對(duì)表進(jìn)行索引掃描 INDEX_FFS / INDEX_FFS /* *+ INDEX_FFS ( table i
17、ndex) + INDEX_FFS ( table index) * */ / 使用快速全索引掃描使用快速全索引掃描 NO_INDEX / NO_INDEX /* *+ NO_INDEX ( table index) + NO_INDEX ( table index) * */ / 不使用該表上指定的索引進(jìn)行存取,仍然可以使用不使用該表上指定的索引進(jìn)行存取,仍然可以使用 其它的索引進(jìn)行索引掃描其它的索引進(jìn)行索引掃描34干預(yù)執(zhí)行計(jì)劃干預(yù)執(zhí)行計(jì)劃_ _表連接表連接 USE_NL / USE_NL /* *+ USE_NL ( tab ,tab, . ) + USE_NL ( tab ,tab, .
18、 ) * */ / 使用嵌套連接使用嵌套連接 USE_MERGE / USE_MERGE /* *+ USE_MERGE ( tab ,tab,.) + USE_MERGE ( tab ,tab,.) * */ / 使用排序使用排序- - -合并連接合并連接 USE_HASH / USE_HASH /* *+ USE_HASH ( tab ,tab, .) + USE_HASH ( tab ,tab, .) * */ / 使用使用HASHHASH連接連接35 二、二、Oracle Oracle 體系結(jié)構(gòu)體系結(jié)構(gòu) 五、五、Oracle SQL Oracle SQL 編寫規(guī)范編寫規(guī)范 四、典型案例
19、分析暨優(yōu)化要點(diǎn)四、典型案例分析暨優(yōu)化要點(diǎn) 三、三、Oracle SQL Oracle SQL 優(yōu)化基礎(chǔ)優(yōu)化基礎(chǔ) 一、培訓(xùn)目的一、培訓(xùn)目的培訓(xùn)總目錄培訓(xùn)總目錄36典型案例典型案例_1_1 系統(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ù)量?jī)H為6GB6GB左右。但是每左右。但是每天卻產(chǎn)生大概天卻產(chǎn)生大概150GB150GB左右的左右的REDO LOGREDO LOG 使用使用LOGMNRLOGMNR分析分析ORACLEORACLE日志,發(fā)現(xiàn)基本
20、上日志,發(fā)現(xiàn)基本上都為都為JMSSTOREJMSSTORE表的增、刪操作。該表為表的增、刪操作。該表為WEBLOGICWEBLOGIC的消息表的消息表(CLOBCLOB字段)字段)。37典型案例典型案例_1_1 系統(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$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 最終定位問(wèn)題產(chǎn)生原因:應(yīng)用程序在每
21、筆最終定位問(wèn)題產(chǎn)生原因:應(yīng)用程序在每筆查詢后面都附帶了消息傳輸(查詢后面都附帶了消息傳輸(1010次)次) 將該將該SQLSQL屏蔽,問(wèn)題得到解決屏蔽,問(wèn)題得到解決38典型案例典型案例_2_2 系統(tǒng)名稱:系統(tǒng)名稱:OAOA系統(tǒng)系統(tǒng) 故障現(xiàn)象:故障現(xiàn)象:SQLSQL語(yǔ)句執(zhí)行速度慢(語(yǔ)句執(zhí)行速度慢(5S5S)select distinct select distinct b.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_
22、enddatefrom from tb_model_workflowtb_model_workflow b,tb_documentb,tb_document c,tb_engine_filecommonc,tb_engine_filecommon a,tb_engine_filetachea,tb_engine_filetache g gwhere where a.fd_c_workflowida.fd_c_workflowid= =b.fd_workflowidb.fd_workflowid and and g.fd_fileidg.fd_fileid= =a.fd_fileida.fd_f
23、ileid and and a.fd_c_fileno=c.ida.fd_c_fileno=c.idand and a.fd_c_isenda.fd_c_isend=1and =1and b.fd_workflowtypeb.fd_workflowtype=1 and (=1 and (c.security_level_codec.security_level_code=1 =1 or(or(c.security_level_codec.security_level_code=2 and =2 and g.fd_ft_staffidg.fd_ft_staffid=2)or =2)or ( (c
24、.security_level_codec.security_level_code=3 and =3 and g.fd_ft_staffidg.fd_ft_staffid=2)=2)and and a.fd_c_enddatea.fd_c_enddate=(sysdate-30)and =(sysdate-30)and a.fd_c_enddatea.fd_c_enddate=(sysdate+1)=(sysdate+1)and (and (pany_pany_id=1 or =1 or c.send_companyc.send_company=1) =1) order by order by
25、 a.fd_c_enddatea.fd_c_enddate descdesc; ;39典型案例典型案例_2_2 系統(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大大40典型案例典型案例_2_2 系統(tǒng)名稱:系統(tǒng)名稱:OAOA系統(tǒng)系統(tǒng) 故障處理:故障處理: 查詢?cè)摫聿樵冊(cè)摫韋d_c_enddatefd_c_enddate的可選擇性的可選擇性,發(fā)現(xiàn)發(fā)現(xiàn)
26、很高,因此對(duì)該字段建索引,很高,因此對(duì)該字段建索引,執(zhí)行計(jì)劃變?yōu)閳?zhí)行計(jì)劃變?yōu)槿缦?,?zhí)行時(shí)間縮短為如下,執(zhí)行時(shí)間縮短為0.3S0.3S左右左右41典型案例典型案例_3_3 系統(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 update zjxc.BIZ_CUST_BALANCEzjxc.BIZ_CUST_BALANCE t set t set t.warefeet.warefee = 0 where = 0 where t.cusi
27、dt.cusid in in (select (select b.cusidb.cusid from _cusid_temp_0401 b) and from _cusid_temp_0401 b) and t.year_montht.year_month = 201003; = 201003; 表表biz_cusid_temp_0401biz_cusid_temp_0401為為FTSFTS,但,但cusidcusid字段建有索引字段建有索引42典型案例典型案例_3_3 系統(tǒng)名稱:商務(wù)領(lǐng)航系統(tǒng)系統(tǒng)名稱:商務(wù)領(lǐng)航系統(tǒng) 故障處理:故障處理: 改寫上述改寫上述SQLS
28、QL語(yǔ)句語(yǔ)句update update _cust__cust_balance t set t set t.warefeet.warefee = 0 where = 0 where exists (select 1 from _cusid_temp_0401 b exists (select 1 from _cusid_temp_0401 b where where t.cusidt.cusid= =b.cusidb.cusid and and t.year_montht.year_month = 201003) ;
29、 = 201003) ; 表表biz_cusid_temp_0401biz_cusid_temp_0401的訪問(wèn)從的訪問(wèn)從FTSFTS改變改變?yōu)樗饕ㄒ粧呙铻樗饕ㄒ粧呙?SQL SQL執(zhí)行時(shí)間縮短為執(zhí)行時(shí)間縮短為1212秒秒43典型案例典型案例_4_4 系統(tǒng)名稱:系統(tǒng)名稱:CRMCRM系統(tǒng)系統(tǒng) 故障現(xiàn)象:過(guò)多的故障現(xiàn)象:過(guò)多的latch freelatch free鎖影響性能鎖影響性能 故障處理:故障處理: 查找查找latch freelatch free對(duì)應(yīng)的相關(guān)語(yǔ)句,都為對(duì)應(yīng)的相關(guān)語(yǔ)句,都為SELECT COL_VALUE FROM PUB_COLUMN_REFERENCE WHERE
30、REFER_ID = :B1SELECT COL_VALUE FROM PUB_COLUMN_REFERENCE WHERE REFER_ID = :B1 而該而該SQLSQL語(yǔ)句都為函數(shù)語(yǔ)句都為函數(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語(yǔ)句語(yǔ)句44典型案例典型案例_4_4 系統(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)該SQLSQ
31、L每執(zhí)行每執(zhí)行一次,將會(huì)調(diào)用該函數(shù)一次,將會(huì)調(diào)用該函數(shù)3835538355次,也就是說(shuō)次,也就是說(shuō)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ī)制)45Oracle SQLOracle SQL優(yōu)化要點(diǎn)優(yōu)化要點(diǎn) 使用執(zhí)行計(jì)劃來(lái)分析使用執(zhí)行計(jì)劃來(lái)分析SQLSQL性能進(jìn)而進(jìn)行優(yōu)化性能進(jìn)而進(jìn)行優(yōu)化 使用使用HINTSHINTS來(lái)干預(yù)執(zhí)行計(jì)劃來(lái)干預(yù)執(zhí)行計(jì)劃 最大限度地避免全表掃描(最大限度地避免全表掃描(FTSFTS) 減少子查詢的使用減少子查詢的使用 規(guī)范規(guī)范SQLSQL
32、語(yǔ)句的編寫,使得語(yǔ)句的編寫,使得SQLSQL語(yǔ)句能夠被共享語(yǔ)句能夠被共享 減少減少SQLSQL解析的次數(shù):使用綁定變量解析的次數(shù):使用綁定變量46Oracle SQLOracle SQL優(yōu)化要點(diǎn)優(yōu)化要點(diǎn) 用索引提高效率用索引提高效率 避免在索引列上使用計(jì)算避免在索引列上使用計(jì)算 避免在索引列上使用函數(shù)轉(zhuǎn)換避免在索引列上使用函數(shù)轉(zhuǎn)換 避免改變索引列的類型避免改變索引列的類型 避免在索引列上使用避免在索引列上使用IS NULLIS NULL和和IS NOT IS NOT NULLNULL 避免在索引列上使用避免在索引列上使用like%AAAlike%AAA47Oracle SQLOracle SQ
33、L優(yōu)化要點(diǎn)優(yōu)化要點(diǎn) 盡量避免盡量避免SQLSQL語(yǔ)句不必要的排序操作語(yǔ)句不必要的排序操作 UNIONUNION操作要用操作要用UNION ALLUNION ALL來(lái)代替來(lái)代替 ORDER BY ORDER BY 中的字段最好建立索引中的字段最好建立索引 盡量避免使用盡量避免使用DISTINCTDISTINCT語(yǔ)句語(yǔ)句 盡量避免使用盡量避免使用(NOT) IN(NOT) IN,而使用(,而使用(NOTNOT) EXISTSEXISTS來(lái)代替來(lái)代替 對(duì)表超過(guò)對(duì)表超過(guò)10%10%以上的以上的deletedelete、updateupdate操作要重操作要重建索引。建索引。48 五、五、Oracle
34、SQL Oracle SQL 編寫規(guī)范編寫規(guī)范 二、二、Oracle Oracle 體系結(jié)構(gòu)體系結(jié)構(gòu) 四、典型案例分析暨優(yōu)化要點(diǎn)四、典型案例分析暨優(yōu)化要點(diǎn) 三、三、Oracle SQL Oracle SQL 優(yōu)化基礎(chǔ)優(yōu)化基礎(chǔ) 一、培訓(xùn)目的一、培訓(xùn)目的培訓(xùn)總目錄培訓(xùn)總目錄49SQLSQL編寫規(guī)范編寫規(guī)范_ _書寫格式書寫格式 縮進(jìn)縮進(jìn) 對(duì)于存儲(chǔ)過(guò)程文件,縮進(jìn)為對(duì)于存儲(chǔ)過(guò)程文件,縮進(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è)空格50SQLSQL編寫規(guī)范編寫規(guī)范_ _書寫格式書寫格式 換行換行_1_1 Select/From/Where/Or
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年郴州宜章縣機(jī)關(guān)事業(yè)單位選聘考試試題【答案】
- 公司股權(quán)轉(zhuǎn)讓及增資合同書
- 如何評(píng)判培訓(xùn)課件
- 養(yǎng)殖糞污處理設(shè)施建設(shè)工程實(shí)施方案(模板)
- 黨政公文培訓(xùn)課件
- 合肥市二模數(shù)學(xué)試卷
- 衡山縣小升初數(shù)學(xué)試卷
- 光伏項(xiàng)目資金申請(qǐng)報(bào)告(模板)
- 初級(jí)中學(xué)學(xué)生宿舍建設(shè)項(xiàng)目投標(biāo)書(參考模板)
- 企業(yè)高效團(tuán)隊(duì)管理合作技巧培訓(xùn)課件
- 商鋪消防安全培訓(xùn)
- 石行業(yè)安全事故案例學(xué)習(xí)
- 更換給水水泵的施工方案
- 糖尿病患者低血糖發(fā)生原因分析品管圈魚骨圖柏拉圖
- 2023年中國(guó)人保財(cái)險(xiǎn)全系統(tǒng)聯(lián)合招聘筆試參考題庫(kù)附帶答案詳解
- 瓶胚工藝培訓(xùn)
- 脊髓解剖及脊髓損傷
- 地下連續(xù)墻成槽垂直度控制
- 【超星爾雅學(xué)習(xí)通】《老子》《論語(yǔ)》今讀網(wǎng)課章節(jié)答案
- 中國(guó)農(nóng)業(yè)銀行筆試題庫(kù)(含答案)
- simufact教程基礎(chǔ)部分從Simufact得到支持
評(píng)論
0/150
提交評(píng)論