Oracle數(shù)據(jù)庫優(yōu)化策略總結(jié)篇
為了提高查詢效率,我們常常做一些優(yōu)化策略。本文主要介紹一些Oracle數(shù)據(jù)庫的一些不常見卻是非常有用的優(yōu)化策略,希望能對您有所幫助。
SQL語句優(yōu)化
這個好辦,抓到挪借CPU高的SQL語句,依據(jù)索引、SQL技巧等修改一下,行之管用。
SELECT時(shí)不利用函數(shù)
在做頻繁的查詢壟斷時(shí),盡量直接select字段名,然后利用C語言代碼對查詢收獲做二次加工,避免讓Oracle來做混雜的函數(shù)可能數(shù)學(xué)計(jì)算。因?yàn)镺racle出于通用性的琢磨,其函數(shù)及數(shù)學(xué)計(jì)算的速度遠(yuǎn)不及用C語言直接編譯成機(jī)器碼后計(jì)算來的快。
綁定變量
這個能夠大幅度減退SQL的“hard parse”,我們大局部過程都曾經(jīng)告終了變量綁定。個別未曾告終的,修正一下,也能很快看到收獲。
批量FETCH
萬一順次select會歸來多條(幾百、上千)登記,利用批量Fetch,例如順次fetch 1000條登記,要比一條條的fetch數(shù)據(jù)快的多,也能夠管用減退oracle的壓力。
批量提交
順次修正多條(例如小于10000條左右)登記,然后順次性提交,要比每條提交順次快的多。當(dāng)然前提是業(yè)務(wù)邏輯批準(zhǔn)這么做。
批量增刪改
萬一必需順次性修正可能剔除多條登記,能夠批準(zhǔn)批量數(shù)組綁定的措施,這個和前面說得“綁定變量”相仿,差異是前者綁定的是一個變量,這里綁定的是一個大數(shù)組的首指針,這種措施要比逐條綁定厲行快的多。
SQL預(yù)解析
前面的大局部是批量壟斷,還有一種常見的場景是小事務(wù)壟斷,但頻率極其高nextplas.com。這種場景等閑SQL也不混雜,幾乎未曾優(yōu)化的余地了,然而由于壟斷頻繁,同樣會構(gòu)成CPU居高不下。現(xiàn)在我們的過程大局部都是下面這個利用形式:
loop parse sql; bind var; execute sql; end loop;
固然我們利用了綁定變量的措施,然而由于壟斷頻繁,同樣構(gòu)成許多的“soft parse”以及網(wǎng)絡(luò)通信。在內(nèi)存數(shù)據(jù)庫中,我們等閑批準(zhǔn)預(yù)解析的措施來長進(jìn)效率,事實(shí)上,Oracle很早就給開發(fā)者供給這種形式,只是開發(fā)者嫌繁瑣沒利于用而已。將過程改成下列形式:
parse sql; bind var; loop execute sql; end loop;
這么就能夠管用減退Oracle的壓力,能夠?qū)栃行势鸫a長進(jìn)一倍。然而這種形式波及到過程構(gòu)造的改變,定然在設(shè)計(jì)階段就這么做。否則,后期再調(diào)劑的話,危險(xiǎn)和工作量都會很大。
SQL語句的一些優(yōu)化措施
1、SQL語句用大寫的;因?yàn)镺racle總是先解析SQL語句,把小寫的字母轉(zhuǎn)換成大寫的再厲行。
2、避免在索引列上利用NOT等閑,我們要避免在索引列上利用NOT, NOT會發(fā)生在和在索引列上利用函數(shù)雷同的波及。
3、當(dāng)Oracle“碰到”NOT,他就會靜止利用索引轉(zhuǎn)而厲行全表掃描。
4、避免在索引列上利用計(jì)算。WHERE子句中,假定索引列是函數(shù)的一局部。優(yōu)化器將不利用索引而利用全表掃描。
5、盡量少用DISTINCT壟斷,用EXISTS輪換DISTINCTvalues should never be negative。
以上就是Oracle數(shù)據(jù)庫的優(yōu)化策略的全部,如果您想了解更多關(guān)于Oracle數(shù)據(jù)庫的知識,那就關(guān)注Oracle數(shù)據(jù)庫欄目,相信會對您有所收獲的。
- Oracle性能究極優(yōu)化 下
- Oracle性能究極優(yōu)化
- Oracle性能究極優(yōu)化(Oracle 性能優(yōu)化)
- Oracle SQL性能優(yōu)化系列學(xué)習(xí)三
- Oracle SQL性能優(yōu)化系列學(xué)習(xí)二
- Oracle SQL性能優(yōu)化系列學(xué)習(xí)一
- Oracle數(shù)據(jù)庫及應(yīng)用程序優(yōu)化開發(fā)者網(wǎng)絡(luò)Oracle
- Oracle數(shù)據(jù)庫性能優(yōu)化技術(shù)開發(fā)者網(wǎng)絡(luò)Oracle
- Oracle 語句優(yōu)化分析說明
- oracle 優(yōu)化的一點(diǎn)體會
- oracle 性能優(yōu)化建議小結(jié)
- oracle下一條SQL語句的優(yōu)化過程(比較詳細(xì))
- oracle數(shù)據(jù)庫sql的優(yōu)化總結(jié)
相關(guān)文章
oracle?delete誤刪除表數(shù)據(jù)后如何恢復(fù)
最近在使用oracle數(shù)據(jù)時(shí),一不小心把table中的數(shù)據(jù)delete掉并且已經(jīng)提交了,下面這篇文章主要給大家介紹了關(guān)于oracle?delete誤刪除表數(shù)據(jù)后如何恢復(fù)的相關(guān)資料,需要的朋友可以參考下2022-06-06Oracle數(shù)據(jù)庫中如何按天、周、月、季、年統(tǒng)計(jì)數(shù)據(jù)
我們經(jīng)常遇到一些需求,需要我們在sql語句中對日期進(jìn)行分類統(tǒng)計(jì),下面這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫中如何按天、周、月、季、年統(tǒng)計(jì)數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2024-03-03通過 plsql 連接遠(yuǎn)程 Oracle數(shù)據(jù)庫的多種方法
這篇文章主要介紹了通過 plsql 連接遠(yuǎn)程 Oracle的方法,通過plsql 工具和 oracle client(不是即時(shí)客戶端 instantclient) 的方式來連接 Oracle,這是方法之一,還有其中一種方法感興趣的朋友跟隨小編一起看看吧2021-08-08Window下Oracle Database 11g 發(fā)行版2安裝教程
這篇文章主要為大家詳細(xì)介紹了Window下Oracle Database 11g 發(fā)行版2安裝教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07Oracle sql批量插入多條數(shù)據(jù)的實(shí)現(xiàn)
這篇文章主要介紹了Oracle sql批量插入多條數(shù)據(jù)的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07利用windows任務(wù)計(jì)劃實(shí)現(xiàn)oracle的定期備份
我們搞數(shù)據(jù)庫管理系統(tǒng)的經(jīng)常會遇到數(shù)據(jù)庫定期自動備份的問題,有各種各樣的方法,這里介紹一種利用windows任務(wù)計(jì)劃實(shí)現(xiàn)oracle定期備份的方法供大家分享。2009-08-08Oracle索引(B*tree與Bitmap)的學(xué)習(xí)總結(jié)
本篇文章是對Oracle索引(B*tree與Bitmap)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05