999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Oracle的數據庫性能優化研究

2016-09-08 06:13:10賀鵬程
電子設計工程 2016年9期
關鍵詞:數據庫效率優化

賀鵬程

(海軍裝備部駐重慶地區軍事代表局 重慶 400042)

計算機技術與應用

基于Oracle的數據庫性能優化研究

賀鵬程

(海軍裝備部駐重慶地區軍事代表局 重慶400042)

在Oracle數據庫設計中長期受到設計人員重視的是如何更好更快地提高Oracle數據庫性能的問題。其中對數據庫表現有較大關聯的是兩個因素,一是執行SQL語句的速度問題;二是數據庫的內存配置管理問題。通過優化SQL語句效率、擴充高級緩沖區和配置重做日志緩沖區等幾個方面介紹了Oracle數據庫優化方法,探討了Oracle如何提高性能優化的措施。通過測試Oracle查詢結果表明,經過優化后的Oracle數據庫縮短了響應時間,同時內存的使用效率也有了較大提升。

Oracle;性能優化;SQL查詢語句;內存優化

作為目前常見的Oracle數據庫系統,常被用于大型、海量數據的管理。因此,通過對Oracle數據庫系統的優化研究,對于提升信息系統管理效率和準確率方面具有巨大優勢[1-2]。但是對于Oracle數據庫系統的表現性能具有影響作用的因素有很多,不僅有軟件語言因素,也涉及到數據運行的硬件設施、網絡通信狀況以及數據維護管理等方面[3-5]。

Oracle數據庫系統優化的主要目標是減少磁盤輸入輸出操作、降低CPU占有率和減少運行時對系統資源的競爭,縮短用戶查詢響應時間以及提高系統對數據操作的吞吐量等[6-8],其原則是“使用最低的資源,達到最高的效率”。為實現這一目標,文中對Oracle數據管理系統的優化從兩個方面進行研究:一個方面是優化數據系統中的SQL語句,第二個方面是優化Oracle數據系統內存管理,提高內存使用效率。

1 Oracle優化SQL語句

SQL語句是Oracle數據庫操作執行的最基礎部分,對系統表現性能的影響也最為直接[9]。隨著數據庫中數據量的增加,同樣的SQL語句執行速度會逐漸變慢,體現在系統的響應時間也會逐漸延長。同時低質SQL語句與高質SQL語句之間的效率差異也會逐漸變大,而這也往往是數據庫設計人員會忽視的,因此對SQL語句的優化直接關系到數據庫反映時間[10]。下面從SQL語句初始化參數設置、索引設置和多表連接時的過濾條件等幾個方面,對SQL語句執行效率進行優化研究。

1.1select子句避免使用“*”

Oracle數據系統在解析SQL語句過程中,會將標識符“*”轉換為數據所在表的所有列名。因此,SQL語句中使用“*”所增加數據操作包括所在數據表中的所有列,尤其當數據表中數據列數目較大時,SQL語句的執行所需要的時間將大大延長,從而導致查詢效率地降低。所以,在編寫SQL語句時,需要盡量較少使用“*”標識符次數,最好直接使用數據表中的特定列名。以Oracle數據系統所提供的emp數據為例,通過采用標識符“*”與直接指定數據列進行的查詢效率如表1所示。

表1 select子句中*優化

從表中執行時間可以看出,當數據行數為1024時采用直接指定數據列名能夠有效縮短系統查詢時間,優化效率達到45%。

1.2優化where子句的限制條件

在Oracle數據系統中,SQL語句中對where子句的解析順序為由后至前。因此,當SQL語句需要疊加多條where子語句時,應當首先考慮將能夠限制最多數據行的過濾條件放置到where的末尾,若存在表間的連接語句,則將其作為最先寫入的約束條件。同樣以emp數據為例,通過where不同的限制條件,得到的SQL執行效率如表2所示。

表2 where子句約束條件優化

從表2可以看出,對SQL語句的優化體現在表間連接語句的前置和兩個限制條件的顛倒。雖然執行結果一致,但執行時間被縮短了0.1 s。

1.3展平子查詢

所謂子查詢的“展平”是指將SQL語句中的子查詢轉變為連接、半連接子語句[11-12]。Oracle數據系統在執行SQL語句時,將首先計算最外層查詢所在的from子句關系直積數值,然后對該直積中的每個子元使用from子句對應的where限制條件濾除數據。鑒于子查詢需要單獨計算每一個直積中的子元,因此在迭代查詢中的I/O操作將頻繁執行,將極為影響語句的執行效率。所以,在Oracle數據系統中應當盡量減少查詢嵌套層數,盡量使“展平”技術替代子查詢語句,以此減少數據I/O操作,縮短語句執行時間。

以Oracle數據系統中emp數據為例,找出所有條件滿足且價格大于100的book的publication time和name。通過采用兩種查詢方式得到的Oracle系統執行效率如表3所示。

表3 展平子查詢優化

從表 3可以看出,通過將子查詢“select book from booklist where price>100”轉變為查詢連接子表e,可以縮短查詢時間30%以上。

1.4用union替換or

在SQL語句中,應當盡量避免使用標識符or串接where子句的多個索引列,可以使用標識符union替換or[13]。其原因在于,當or標識符包括某索引列,SQL語句將在執行時將對全表進行掃描,但如果該列沒有被索引,則查詢效率將沒有改善;與此相反,若將or替換為union,SQL語句執行時將在表連接的過程中對數據進行查重過濾,去除掉多余數據行,從而提高檢索效率,避免了數據的反復查詢。

2 Oracle數據庫內存優化

Oracle數據系統的第二個優化方面是數據庫內存系統的管理優化。通過Oracle數據庫內存使用效率的提升,可以減少Oracle數據庫所占內存容量,從而減少數據的輸入輸出操作,進而縮短系統響應時間[14]。Oracle數據系統的內存配置主要由兩個區間組成,分別為系統全局區(System Global Area)和進程全局區(Process Global Area),但其中對Oracle數據系統性能影響較大的為SGA、數據緩沖區和日記緩沖區。下面分別對這3個方面進行內存配置的優化研究。

2.1系統全局區配置

Oracle數據系統對于內存大小要求較為嚴格。系統在運行時,需要將SGA設置為占有25~50%左右[15]。需要注意的是,在設置SGA的占用比時,也要保證平衡Oracle數據系統和其他應用程序的內存要求。因此,需要合理設置Oracle中所提供的SHARED_POOL_SIZE和DB_BLOCK_BUFFER兩個變量值來控制SGA的規模。與此同時,當共享池設置過大時,操作系統中的部分進程或者Oracle中的SGA將被迫與內存buffer置換,從而增加額外的數據操作,導致系統反應遲緩造成Oracle系統的性能不穩。

綜合考慮這些因素,以內存大小為4G的數據服務器為例,SGA大小應當約為1600~2000M。通過實驗證明,在對SHARED_POOL_SIZE和DB_BLOCK_BUFFER參數進行設置時,需要滿足的公式如(1)所示。

系統內存+SGA+并發執行進程數*(SHARED_POOL _SIZE+DB_BLOCK_BUFFER+2M)<0.7*總內存(1)

2.2數據庫緩沖區

在Oracle數據系統中,系統通常使用緩沖區的命名率作為數據緩存區的使用效率的評價標準。查詢某緩沖區的命名率的SQL語句如下所示。

SQL>select 1-sum(decode(name,‘Physical reads',value,0))/(sum(decode(name,‘db block gets',value,0)))

“HitRatio”fromGV_$SYSSTATwherenamein(‘physical reads',‘db block gets',‘consistent gets');

Hit Ratio

0.99863427

該SQL語句的返回值為某數據塊請求次數除以Oracle系統中數據緩沖區所能提供該數據塊的次數的商值。因此當該值越大時,表明Oracle數據緩沖區中數據塊存在的概率越大,系統反應速度也越快。所以,通過提高數據庫中緩沖區數據塊值數目,將增加Oracle系統在緩沖區中找到對應數據

塊的概率,進一步提升數據查詢的速度。

在Oracle系統中,影響數據庫緩沖區大小的值主要為參數DB_BLOCK_SIZE,系統默認DB_BLOCK_SIZE為2KB。以8KB的數據庫為例,當DB_BLOCK_SIZE為2KB時,系統需要執行4次I/O操作才能將數據導入緩沖區內,而當DB_BLOCK_SIZE設置為8KB時,系統僅需要1次數據讀盤即可完成工作。

2.3重做日記緩沖區

重做日記緩沖區是Oracle數據系統中恢復數據庫操作記錄的區域,通過管理重做日記文件,能夠有效保障數據安全和提高系統穩定性。在Oracle系統中,通過參數LOG_BUFFER設置可以設定系統操作等待時間,也能夠調節重做日記緩沖區性能。在Oracle系統中,評價重做日記緩沖區性能的SQL語句如下所示。

SQL>selectsubstr(name,1,20)“latch”,immediate_misses/decode((immediate_get+ immediate_misses)),0,1,(immediate_get+ immediate_misses))“Immediate Misses Ratio”,misses/decode((gets+misses),0,1,(gets+misses))“Wait Misses Ratio”fromV$LATCHwherenamein(‘redocopy',‘redo allocation');

Oracle將會顯示以下信息:

LatchImmediate Misses RatioWait Misses Ratio

----------------------------

Redo allocation00

Redo copy0.0070

其中Immediate Misses Ratio值代表Oracle系統重做缺失率。如果缺失率大于1%,則表明該系統操作執行出現了延遲過長導致緩沖區無法臨時保存數據,即所謂“閂鎖”。而解決這一問題的方法是,設置LOG_SIMULTANEOUS_COPIES值,增大系統平臺重置操作執行最大允許值,進而增加操作拷貝的閂鎖個數。

但當系統重做缺失率較低,而重做日志緩沖區的性能較差(表現在數據系統運行時恢復命令執行緩慢)時,通常是重做緩沖區空間過小或不足導致服務器進程無法獲得。其解決方法為將重做日記文件與數據文件做到存儲器分離,以此減少系統運行時對磁盤讀寫資源的競爭。

3 結束語

雖然Oracle數據庫性能調整難度較大,但是可以通過合理的參數設置對系統進行優化,從而達到提高系統反應性能、保持數據穩定安全的目的。對于以Oracle數據系統為基礎的信息應用,其運行速度、操作效率都與Oracle系統有直接關系。根據文中SQL語句的優化結果和Oracle系統內存優化研究可以看出,提高查詢語句的執行速率和優化設置Oracle內存管理對增強系統表現性能和縮短執行響應時間都有較大改善。數據庫的性能調整是一個較為復雜的系統工程,需要在各種不同情況下,通過綜合運用上述優化技術積累更多實踐經驗,進而提升數據庫性能。

[1]魏亞楠,宋義秋.Oracle數據庫應用系統的性能優化[J].制造業自動化,2010,20(8):131-133.

[2]任偉建,王子維,霍鳳財,等.基于Oracle數據庫的油田數據庫實時監控系統[J].化工自動化及儀表,2015(12):18-23.

[3]高旭.Oracle數據庫段空間收縮的研究[J].中小企業管理與科技,2015,31(12):233-234.

[4]蔣年德,李英.Oracle環境下管理信息系統的優化設計[J].計算機應用研究,2003,20(10):131-133.

[5]柳園園.Oracle數據庫SQL優化原則[J].電子技術與軟件工程,2015,21(7):197-197.

[6]劉光霆.Oracle中SQL查詢優化研究[J].計算機與信息技術,2008,32(5):32-35.

[7]王霞,閆愛平,李娜.大對象數據的存取在Oracle數據庫中的設計與實現[J].電子技術與軟件工程,2015,47(6):203.

[8]劉曉丹.基于Oracle分布式數據庫的查詢算法改進研究[J].自動化與儀器儀表,2015,47(11):67-75.

[9]韋安云.Oracle數據庫的性能調整與優化方法探析[J].電腦知識與技術,2015(21):41-44.

[10]吳秀君.基于ORACLECDC技術實現數據自動同步[J].電腦知識與技術,2015(27):23-28.

[11]冷鵬.自動跟蹤技術在Oracle數據庫維護中的應用分析[J].電子技術與軟件工程,2015(24):72-77.

[12]張標,金英.Oracle性能調整[J].煤炭技術,2007(2):81-85.

[13]宋霞.Oracle疑難錯誤解析[J].山東省農業管理干部學院學報,2007(6):54-58.

[14]李學忠.Oracle數據庫的優化使用[J].電子工藝技術,2003 (5):11-15.

[15]屈遠林.Oracle編程的常見問題及解決方法[J].鐵路計算機應用,2000(3):16-19.

Research on optimization of Oracle database

HE Peng-cheng
(Military Representative Bureau of Naval Equipment Department in Chongqing Area,Chongqing 400042,China)

The problem of Oracle database's performance optimization has been the focal point which the decision-maker and the technician show solicitude for commonly,and two key factors affecting the database's performance are that low efficiency of the SQL query sentence and management of Oracle's memory.Several kinds of common Oracle database's performance optimization techniques were elaborated,such as database design's optimization,the adjustment of various dynamic parameters of database,and the SQL sentence query optimization was discussed emphatically.Judging from the results of query optimization test,the system's response time reduces obviously and the system's operation efficiency obtains the promotion.

oracle database;performance optimization;SQL query optimization;parameter optimize

TP392

A

1674-6236(2016)09-0001-03

2016-01-18稿件編號:201601141

國家自然科學基金(61032001)

賀鵬程(1985—),男,四川成都人,碩士,工程師。研究方向:軍事裝備學。

猜你喜歡
數據庫效率優化
超限高層建筑結構設計與優化思考
房地產導刊(2022年5期)2022-06-01 06:20:14
民用建筑防煙排煙設計優化探討
關于優化消防安全告知承諾的一些思考
一道優化題的幾何解法
提升朗讀教學效率的幾點思考
甘肅教育(2020年14期)2020-09-11 07:57:42
數據庫
財經(2017年2期)2017-03-10 14:35:35
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
跟蹤導練(一)2
主站蜘蛛池模板: 欧美中文字幕一区| 无码区日韩专区免费系列| 午夜福利在线观看入口| 久久青青草原亚洲av无码| 国产产在线精品亚洲aavv| 欧美三级日韩三级| 亚洲中文无码av永久伊人| 中国一级特黄大片在线观看| 国产一区二区福利| 国产1区2区在线观看| 美女一区二区在线观看| 国产成人精品亚洲77美色| 亚洲成网站| 2020国产精品视频| 亚洲无码日韩一区| 国产一级二级三级毛片| 另类专区亚洲| 国产微拍精品| 91麻豆国产视频| 99性视频| 丰满少妇αⅴ无码区| 欧美精品一区在线看| 亚洲视频四区| 欧美精品一区在线看| 91精品aⅴ无码中文字字幕蜜桃 | 国产精品自在在线午夜| 伊人激情综合网| 久久久久亚洲精品成人网| 亚洲色图欧美激情| 精品少妇人妻av无码久久| 国产亚洲视频在线观看| 91精品国产综合久久香蕉922 | 成年免费在线观看| av一区二区无码在线| 日本妇乱子伦视频| 噜噜噜久久| 国产成人乱无码视频| 九色在线视频导航91| 手机成人午夜在线视频| 亚洲欧美人成人让影院| 亚洲无码A视频在线| 国产91精品最新在线播放| 人妻21p大胆| 日本欧美一二三区色视频| 日本亚洲成高清一区二区三区| 99激情网| 日韩欧美国产另类| 国产精品yjizz视频网一二区| 亚洲AV无码一区二区三区牲色| 成人免费一级片| 久久久久亚洲av成人网人人软件| 国产麻豆精品手机在线观看| 国产精品成人免费视频99| julia中文字幕久久亚洲| 91麻豆国产视频| 国产导航在线| 在线免费看片a| 国产精品大白天新婚身材| 精品视频一区二区观看| 亚洲欧洲一区二区三区| 久久精品人人做人人爽电影蜜月| 97se亚洲综合在线韩国专区福利| 亚洲乱码在线播放| 麻豆精品视频在线原创| 婷婷色在线视频| 波多野结衣的av一区二区三区| 亚洲色成人www在线观看| 无码丝袜人妻| 国产一级α片| 中文字幕人成人乱码亚洲电影| 久久精品aⅴ无码中文字幕| 国产精品白浆在线播放| 亚洲精品无码AⅤ片青青在线观看| 亚洲欧美色中文字幕| 国产精品观看视频免费完整版| 国产高清在线观看| 国产日韩欧美中文| 美美女高清毛片视频免费观看| 日韩国产 在线| 五月天久久婷婷| 国产婬乱a一级毛片多女| 国产日韩精品一区在线不卡 |