国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Oracle數(shù)據(jù)庫SQL語句優(yōu)化要點分析

2014-08-15 09:45趙新民崔海艷
網(wǎng)絡空間安全 2014年6期
關鍵詞:數(shù)據(jù)庫

趙新民+++崔海艷

【摘要】針對Oracle數(shù)據(jù)庫性能受到SQL語句制約的問題,本文針對SQL語句的優(yōu)化要點進行了分析。首先詳細描述了Oracle優(yōu)化器,給出了影響執(zhí)行計劃的因素;其次對SQL語句可優(yōu)化的類型進行了總結分析,并詳細分析了優(yōu)化的規(guī)則,舉出了SQL實例進行比較。本文對于系統(tǒng)維護人員和數(shù)據(jù)庫分析師都具有一定的積極作用。

【關鍵詞】Oracle;數(shù)據(jù)庫;SQL

1引言

隨著信息化進程的不斷加快,數(shù)據(jù)庫的應用越來越廣泛,信息系統(tǒng)的優(yōu)劣與數(shù)據(jù)庫系統(tǒng)的性能有著直接的關聯(lián)。隨著數(shù)據(jù)庫規(guī)模的不斷擴大,如何保持數(shù)據(jù)庫應用系統(tǒng)高效地運行,受到人們越來越多的關注。

2優(yōu)化器

對于信息管理系統(tǒng)來說,其最關鍵的核心是數(shù)據(jù)庫系統(tǒng),對于眾多的應用系統(tǒng)來說,查詢操作在整個系統(tǒng)中占據(jù)著相當大的比重,也就是說,查詢速度的快慢直接影響著信息管理系統(tǒng)的性能。當數(shù)據(jù)庫的規(guī)模越大,這個特性表現(xiàn)的越明顯,良好的查詢語句對系統(tǒng)性能的提高起著積極的作用。

2.1Oracle優(yōu)化器

無論SQL語句的性能如何,最終都要在Oracle數(shù)據(jù)庫中執(zhí)行,Oracle數(shù)據(jù)庫在執(zhí)行SQL語句之前,首先通過優(yōu)化器利用初始化的參數(shù),并利用指定的優(yōu)化方法對執(zhí)行計劃進行分析,并執(zhí)行。

當前,Oracle優(yōu)化器主要有RBO和CBO兩種優(yōu)化方式。其中RBO是基于規(guī)則的優(yōu)化器,根據(jù)訪問的路徑和訪問路徑的等級去選擇SQL語句的執(zhí)行計劃,假如一條SQL語句有多個路徑可以通過,Oralce會自動選擇等級最低的訪問路徑。RBO優(yōu)化器僅含有幾條在小表上低效利用的索引,無形之中增加了I/O,該優(yōu)化方式效率相對較低;CBO是基于代價的優(yōu)化器,其成本主要由可用訪問路徑、嵌入的提示、對象的統(tǒng)計信息等組成,CBO會選擇成本代價最低的執(zhí)行計劃。當前,CBO優(yōu)化器成為Oracle數(shù)據(jù)庫優(yōu)化的主要組成,CBO的構成如圖1所示。

利用Oracle優(yōu)化器對SQL語句進行分析,在所有的查詢中,有一半經(jīng)過RBO優(yōu)化之后,執(zhí)行的速度會快一點,而另一半則由CBO優(yōu)化后,執(zhí)行的速度最快。從Oracle8i版本以后,RBO優(yōu)化已經(jīng)不再發(fā)展RBO。

2.2影響執(zhí)行計劃的因素

影響執(zhí)行計劃的因素較多,總結起來主要有幾種。

(1)連接順序。當前,數(shù)據(jù)庫進行數(shù)據(jù)查詢,大部分情況下都需要由若干表連接,一般采取將查詢結果只有一行記錄的表優(yōu)先。

(2)訪問路徑。對于路徑的掃描,Oracle優(yōu)化器的方式有簇掃描、索引掃描、行ID掃描、全表掃描、散列掃描等。由于Oracel數(shù)據(jù)庫對I/O的評估原則是“塊”在整個表中所占的比例來確定選取何種掃描路徑。

(3)連接方式。查詢優(yōu)化的重點是連接操作,內表與外表之間進行連接的算法主要有歸并連接、散列連接及嵌套循環(huán)連接,每種連接都有其自己的優(yōu)點。

(4)成本估算。其成本的代價主要從I/O、CPU和通信三方面進行考慮,其中I/O是最主要的。在成本估算中占的比重最大。

3優(yōu)化SQL語句

3.1可優(yōu)化的SQL語句類型

優(yōu)化器可以優(yōu)化SQL語句的類型主要有幾種。

(1)簡單語句。對于數(shù)據(jù)表的操作,主要的操作動作有select、update、insert及delete語句,這種類型的語句主要包括from和where。一般來說,可以優(yōu)化的地方主要在where中。其影響效率的問題主要集中在幾個方面:分組或排序過程中包含了過多的中間結果集、對索引的列使用了全表掃描。

(2)連接語句。利用多個表相結合的方式查找相關的數(shù)據(jù)信息,這也是數(shù)據(jù)庫最常用的方法,由from子句實現(xiàn)多個表的連接,利用where將相關的條件進行關聯(lián)。其影響效率的問題主要集中在幾個方面:表連接順序不是最優(yōu)、分組或排序過程包含了過多的中間結果集、索引列使用了全表掃描等。

(3)外部連接。該方式與連接語句有相同之處,同樣涉及到多表連接的問題。其影響效率的問題也與連接語句相近。

(4)復雜語句。對于select、update、insert及delete語句中的子查詢以select形式存在。該方式的問題是內部查詢的效率對外部查詢的效率有影響。

(5)復雜查詢。利用組操作符將若干簡單語句結合起來形成的語句,一般情況下,將語句拆分為上述的四種類型的語句之后再進行優(yōu)化處理。

對于查詢問題的分析,主要是要盡可能地減少子查詢或者使用子查詢返回的結果集要盡量地減少。

3.2優(yōu)化的規(guī)則

(1)在索引列字段上盡可能地避免使用“!=”、“NULL”、“<>”及“not”等符號,盡可能地不要使用隱式類型的轉換。這些符號的使用可能會對索引信息造成影響,進行轉變?yōu)槿頀呙?,影響了?shù)據(jù)庫的性能。

(2)盡可能地不要使用“select * from 表名”?!?”符號代表需要返回所有列,就意味著要掃描所有的返回記錄,收取所有的列名與列值。使Oracle不斷地進行磁盤的讀取及交換。如果需要,將“*”換成具體的列名。

(3)避免在索引列字段中使用改變列的函數(shù)。當函數(shù)改變了索引列的類型及內容時,可能使原來可以使用的索引值變得無法繼續(xù)使用,從而影響了系統(tǒng)的效率。

(4)綁定變量進行傳值。綁定變量進行傳值與數(shù)據(jù)庫收到語句解析后的內容是一致的,Oracle可以在下一條語句到來時直接存入緩存并執(zhí)行,不必再進行解析和生成執(zhí)行過程。

(5)合理建立索引。良好的索引機制,可以使系統(tǒng)查詢速度更快。

(6)利用where代替having子句。where子句是在分組之前對條件進行篩選,而Having是分組后進行篩選,分組前篩選可以有效減少分組的時間和資源的消耗。endprint

比較下面兩個SQL語句:

語句A:select name , num from department where num not in (select num from school);

語句B:select name,num from department where not exists(select num from school where department.num=school.num)。

通過在數(shù)據(jù)庫中執(zhí)行這兩條語句,其結果是相同的,執(zhí)行語句A時,Oracle首先對school表進行整個掃描,沒有在school上建立num索引,語句B使用了聯(lián)合查詢,對school表進行部分掃描,利用了num列的索引。語句B的效率要高于語句A。

4結束語

本文對Oracle數(shù)據(jù)庫的SQL語句優(yōu)化要點進行了分析,由于篇幅所限,并沒有給出具體的數(shù)據(jù)庫系統(tǒng),只給出了兩個SQL語句的比較。有興趣的讀者,可以在本文的基礎上,對數(shù)據(jù)庫管理系統(tǒng)中的SQL語句進行優(yōu)化處理操作,以達到提高系統(tǒng)效率的目的。

參考文獻

[1] 趙夢勤,李秀蘭.Oracle數(shù)據(jù)庫應用系統(tǒng)的優(yōu)化策略.計算機工程與應用,2003,(27):213-215.

[2] 王能斌著.數(shù)據(jù)庫系統(tǒng)原理(2000).北京:電子工業(yè)出版社,2001.

[3] Edward Whalen, Mitchell Schroeter 著;高艷春,周兆確,唐艷軍譯.Oracle 性能調整與優(yōu)化(第一版).北京:人民郵電出版社,2002.

[4] 王曉春,趙霧,張巖.Windows 平臺上 Oracle 數(shù)據(jù)庫的系統(tǒng)性能優(yōu)化.計算機工程,2004,30(09):79-81.

[5] 鄭謙益,居梯.Sybase SQL Server性能優(yōu)化技術及其應用研究.微機發(fā)展,2003,(01):31-33.

作者簡介:

趙新民(1974-),男,沈陽師范學院,大學本科,法學學士,現(xiàn)就職于中國聯(lián)通赤峰分公司信息化服務中心,從事系統(tǒng)維護、網(wǎng)絡維護、數(shù)據(jù)庫操作方面工作。

崔海艷(1975-),女,長春郵電學院,大學本科,學士學位,現(xiàn)就職于中國聯(lián)通赤峰分公司信息化服務中心,從事系統(tǒng)維護、網(wǎng)絡維護、數(shù)據(jù)庫操作方面工作。endprint

猜你喜歡
數(shù)據(jù)庫
數(shù)據(jù)庫
數(shù)據(jù)庫
數(shù)據(jù)庫
數(shù)據(jù)庫