激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频

Oracle數據庫的優(yōu)化

時(shí)間:2024-08-11 00:38:13 計算機畢業(yè)論文 我要投稿

Oracle數據庫的優(yōu)化

摘要 本文提出了一種優(yōu)化Oracle數據庫的方法。Oracle中SQL語(yǔ)句的執行過(guò)程可分為解析(Parse)、執行(Execute)和提取結果(Fetch)三步,此方法就是通過(guò)對SQL語(yǔ)句在Oracle數據庫中優(yōu)化執行的三個(gè)過(guò)程來(lái)提高Oracle數據庫的性能。


關(guān)鍵詞 數據庫 掃描 多表聯(lián)結 子查詢(xún)

1 如何優(yōu)化Parse
1. 1 SQL語(yǔ)句的Parse處理步驟:
1) 計算語(yǔ)句值
2) 共享池中有無(wú)與此語(yǔ)句值相同的語(yǔ)句?
3) 共享池中有與此語(yǔ)句字符完全匹配的語(yǔ)句?
4) 準備要運行的SQL語(yǔ)句
5) 為新語(yǔ)句在共享池中創(chuàng )建空間
6) 將語(yǔ)句存放在共享池中
7) 修改共享池圖,標明語(yǔ)句的值和在共享池中的位置
8) 執行準備好的SQL語(yǔ)句
最理想的是,語(yǔ)句只執行1、2、3和8步來(lái)進(jìn)行處理。不經(jīng)過(guò)2、3步來(lái)測試被傳給Oracle的語(yǔ)句要使用1~8步進(jìn)行處理。只經(jīng)過(guò)1、2、3、8的SQL語(yǔ)句要比經(jīng)過(guò)1~8步的語(yǔ)句更為有效。
1.2 在共享池中重用SQL語(yǔ)句
當SQL語(yǔ)句被傳遞給Oracle處理時(shí),其秘訣是重復使用已經(jīng)在共享池中的語(yǔ)句,而不是讓Oracle在接受語(yǔ)句時(shí)去準備新的語(yǔ)句。前面表明,如果Oracle接受了一個(gè)與共享池中的語(yǔ)句相一致的語(yǔ)句,就重用共享池中的語(yǔ)句。
Oracle提供在數據庫中存儲代碼的能力。當應用系統開(kāi)始運行時(shí),從數據庫中讀取代碼(可用PL/SQL語(yǔ)句編制)并像其它語(yǔ)句那樣傳遞到共享池中去處理。從數據庫中取出的代碼是編譯過(guò)的并駐留在共享池中。
可以利用數據庫中存儲的程序代碼設計應用系統,檢查所有的事務(wù)處理以及主要的通用的過(guò)程,研究現有的應用系統并把主要的處理程序轉換為數據庫中存儲的程序代碼。在Oracle中存儲代碼可以通過(guò)過(guò)程、程序包、函數、觸發(fā)器等來(lái)實(shí)現。
2 如何優(yōu)化Execute和Fetch
2.1 避免無(wú)計劃的全表掃描
全表掃描連續從表讀取所有數據,而不管數據是否與查詢(xún)有關(guān)。避免不必要的全表掃描有兩個(gè)充足理由:1)全表掃描沒(méi)有選擇性
2) 過(guò)全表掃描讀取的數據很快從SGA的緩沖區移走(如果正在掃描的表不是“高速存儲”的表)
在基于規則優(yōu)化的情況下,如果下列任何條件在SGA語(yǔ)句出現,就要對一個(gè)表進(jìn)行全表掃描。
1) 該表無(wú)索引
2) 對返回的行無(wú)任何限定條件(如無(wú)Where語(yǔ)句)
3) 對數據表與任何索引主列相對應的行無(wú)限定條件。例如,在City-State-Zip列上創(chuàng )建了三列復合索引,那么僅對State列有限定條件的查詢(xún)不能使用這個(gè)索引,因為State不是索引的主列。
4) 對索引主列的行有限定條件,但條件或者是NULL或者是不相等。例如,City列上存在索引,在所有下列情況下都不會(huì )使用索引。
Where city is null
Where city is not null
Where city!=’liaoning’
5) 對索引主列的行有限定條件,但條件在表達式里使用。例如,如果在City列上索引,那么限定條件
Where City=’liaoning’
可以使用索引。然而,如果限定條件是
Where UPPER(City)=’liaoning’
那么不會(huì )使用City列上的索引,因為City列在UPPER函數里。如果將City列與文本字符串聯(lián)結在一起,也不會(huì )使用索引。例如,如果限定條件是
Where City||’x’ like ‘liaoning%’
那么不會(huì )使用City列上的索引。
6) 對索引主列的行有限定條件,但條件使用Like操作以及值以‘%’開(kāi)始或者值是一個(gè)賦值變量。例如,在所有下列情況下都不會(huì )使用索引:
Where City like ‘%aonin%’
Where City like :City_Bind_Variable
如果表小、索引列無(wú)選擇性,基于開(kāi)銷(xiāo)的優(yōu)化器可能決定使用全表掃描。
2.2只使用選擇性索引
索引的選擇性是指索引列里不同值的數目與表中記錄數的比。如果表有1000個(gè)記錄,表索引列有950個(gè)不同值,那么這個(gè)索引的選擇性就是950/1000或者0.95。最好的可能性選擇是1.0。依據非空值列的唯一索引,通常其選擇性為1.0。
如果使用基于開(kāi)銷(xiāo)的最優(yōu)化,優(yōu)化器不應該使用選擇性不好的索引。
索引的選擇性是指索引列里不同值的數目與表中記錄數的比。如果表有1000個(gè)記錄,表索引列有950個(gè)不同值,那么這個(gè)索引的選擇性就是950/1000或者0.95。最好的可能性選擇是1.0。依據非空值列的唯一索引,通常其選擇性為1.0。
索引的選擇性是指索引列里不同值的數目與表中記錄數的比。如果表有1000個(gè)記錄,表索引列有950個(gè)不同值,那么這個(gè)索引的選擇性就是950/1000或者0.95。最好的可能性選擇是1.0。依據非空值列的唯一索引,通常其選擇性為1.0。
2.3管理多表聯(lián)結
Oracle提供了3個(gè)聯(lián)結操作:NESTED LOOPS、HASH JOIN和MERGE JOIN。MERGE JOIN是一組操作,在所有行被處理完之前,它不返任何記錄給下一操作。NESTED LOOPS和HASH是行操作,因此會(huì )很快將第一批記錄返回給下一個(gè)操作。
在每個(gè)聯(lián)結選項里,必須執行一些步驟以獲取最好的聯(lián)結性能。如果沒(méi)有適當地優(yōu)化聯(lián)結操作,那么聯(lián)結所需的時(shí)間也許隨著(zhù)表的增長(cháng)而呈指數級地增長(cháng)。
2.4管理包含視圖的SQL語(yǔ)句
如果查詢(xún)包含視圖,優(yōu)化器有兩種執行查詢(xún)的方法:首先解決視圖然后執行查詢(xún),或者把視圖文本集成到查詢(xún)里去。如果首先執行視圖,那么首先完成全部的結果集,然后用其余的查詢(xún)條件做過(guò)濾器。
首先解決視圖會(huì )導致查詢(xún)性能下降的問(wèn)題,這取決于所涉及表的相對大小。如果視圖被集成到查詢(xún)里,那么查詢(xún)的條件也可以應用于視圖里,并且可以使用一個(gè)小一些的結果集。然而在一些情況下,也許可以通過(guò)視圖分離組操作提高查詢(xún)性能。
如果一個(gè)視圖包含集合的操作(如Group by、SUM、COUNT或者DISTINCT),那么視圖不能被集成到查詢(xún)里去。
不使用組或者沒(méi)有集合操作的視圖的SQL語(yǔ)法可以被集成到大的查詢(xún)里去。
2.5優(yōu)化子查詢(xún)
當使用自查詢(xún)時(shí),也許會(huì )碰到幾個(gè)獨特的問(wèn)題。涉及子查詢(xún)的查詢(xún)潛在問(wèn)題如

【Oracle數據庫的優(yōu)化】相關(guān)文章:

大型ORACLE數據庫優(yōu)化設計方案03-21

基于Oracle數據庫的邏輯數據同步技術(shù)在實(shí)踐中的應用研究03-10

主流空間數據庫引擎技術(shù)分析和優(yōu)化方法研究03-12

Oracle觸發(fā)器在MIS 開(kāi)發(fā)中的應用03-18

ORACLE RAC集群在電力營(yíng)銷(xiāo)系統中的應用03-18

應用Oracle數據庫監控維護技術(shù),維護數據庫安全03-03

論資本結構優(yōu)化目標與資本結構優(yōu)化03-01

Oracle Portal及其門(mén)戶(hù)網(wǎng)站開(kāi)發(fā)概述03-18

優(yōu)化課堂結構03-19

激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频