Oracle數據庫優化策略總結
SELECT時不利用函數
在做頻繁的查詢壟斷時,儘量直接select字段名,然後利用C語言代碼對查詢收穫做二次加工,避免讓Oracle來做混雜的函數可能數學計算。因爲Oracle出於通用性的琢磨,其函數及數學計算的速度遠不及用C語言直接編譯成機器碼後計算來的快。
綁定變量
這個能夠大幅度減退SQL的“hard parse”,我們大局部過程都曾經告終了變量綁定。個別未曾告終的,修正一下,也能很快看到收穫。
批量FETCH
萬一順次select會歸來多條(幾百、上千)登記,利用批量Fetch,例如順次fetch 1000條登記,要比一條條的fetch數據快的多,也能夠管用減退oracle的壓力。
批量提交
順次修正多條(例如小於10000條左右)登記,然後順次性提交,要比每條提交順次快的多。當然前提是業務邏輯批准這麼做。
批量增刪改
萬一必需順次性修正可能剔除多條登記,能夠批准批量數組綁定的.措施,這個和前面說得“綁定變量”相仿,差異是前者綁定的是一個變量,這裏綁定的是一個大數組的首指針,這種措施要比逐條綁定厲行快的多。
SQL預解析
前面的大局部是批量壟斷,還有一種常見的場景是小事務壟斷,但頻率極其高。這種場景等閒SQL也不混雜,幾乎未曾優化的餘地了,然而由於壟斷頻繁,同樣會構成CPU居高不下。現在我們的過程大局部都是下面這個利用形式:
loop parse sql; bind var; execute sql; end loop;
固然我們利用了綁定變量的措施,然而由於壟斷頻繁,同樣構成許多的“soft parse”以及網絡通信。在內存數據庫中,我們等閒批准預解析的措施來長進效率,事實上,Oracle很早就給開發者供給這種形式,只是開發者嫌繁瑣沒利於用而已。將過程改成下列形式:
parse sql; bind var; loop execute sql; end loop;
這麼就能夠管用減退Oracle的壓力,能夠將厲行效率起碼長進一倍。然而這種形式波及到過程構造的改變,定然在設計階段就這麼做。否則,後期再調劑的話,危險和工作量都會很大。
SQL語句的一些優化措施
1、SQL語句用大寫的;因爲Oracle總是先解析SQL語句,把小寫的字母轉換成大寫的再厲行。
2、避免在索引列上利用NOT等閒,我們要避免在索引列上利用NOT, NOT會發生在和在索引列上利用函數雷同的波及。
3、當Oracle“碰到”NOT,他就會靜止利用索引轉而厲行全表掃描。
4、避免在索引列上利用計算。WHERE子句中,假定索引列是函數的一局部。優化器將不利用索引而利用全表掃描。
5、儘量少用DISTINCT壟斷,用EXISTS輪換DISTINCTvalues should never be negative。
-
Windows10系統無法安裝solidworks怎麼辦
Windows10安裝不了SolidWorks怎麼辦?SolidWorks是一款3d設計軟件,對於一些設計工作者來說,是必不可少的作圖工具。可是有些用戶在Windows10系統下會遇到無法安裝SolidWorks的情況,這該如何解決呢?這就需要使用到註冊表來解決了,下面我們來看看Windows10安裝不了Solid...
-
高中體液免疫系統圖解
高中學生已經學習過神經調節和體液調節的知識,對於人體和動物體的穩態調節有一定的認識;免疫與艾滋病的預防是生活中的常見話題,與學生生活貼近。下面是高中體液免疫系統圖解,爲大家提供參考。1.免疫系統的組成教師將預防針與免疫調節聯繫起來,以乙肝疫苗爲例,同時pp...
-
win8系統bios中文圖解
win8系列之所以開機速度很快是因爲開啓了快速啓動,在這種情況下是不能像我們以前那樣F12或者F8進入基本的.輸入輸出系統(Bios)的,這裏提供一種簡便的方法,如下:首先將鼠標移動到屏幕右下角點擊設置然後,點擊更改電腦設置進入電腦設置界面,點擊常規,然後點擊立即重啓重...
-
可視門禁系統接線圖解
隨着感應卡技術,生物識別技術的發展,門禁系統得到了飛躍式的發展。以下是小編爲大家精心整理的可視門禁系統接線圖解,歡迎大家閱讀。一、設備安裝(1)前端設備A、進門處安裝讀卡器。在讀卡器感應範圍內,切勿靠近或接觸高頻或強磁場(如重載馬達、監視器等),並需配合...