最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

Oracle調(diào)優(yōu)專家秘籍

來源:懂視網(wǎng) 責編:小采 時間:2020-11-09 11:49:19
文檔

Oracle調(diào)優(yōu)專家秘籍

Oracle調(diào)優(yōu)專家秘籍:第二:SQL的優(yōu)化永遠只針對大表之間的連接才用得上。不要懷疑,首先,我說的大表是指包含大表,不管是大表與大表,還是大表與小表 注:本文不是給你一個案例,而是講調(diào)優(yōu)的方法,古人云:授人魚不如授人漁,這里要講的,就是教你怎么捕魚。 這里要說的sq
推薦度:
導讀Oracle調(diào)優(yōu)專家秘籍:第二:SQL的優(yōu)化永遠只針對大表之間的連接才用得上。不要懷疑,首先,我說的大表是指包含大表,不管是大表與大表,還是大表與小表 注:本文不是給你一個案例,而是講調(diào)優(yōu)的方法,古人云:授人魚不如授人漁,這里要講的,就是教你怎么捕魚。 這里要說的sq

第二:SQL的優(yōu)化永遠只針對大表之間的連接才用得上。不要懷疑,首先,我說的大表是指包含大表,不管是大表與大表,還是大表與小表

注:本文不是給你一個案例,而是講調(diào)優(yōu)的方法,古人云:授人魚不如授人漁,這里要講的,就是教你怎么捕魚。

這里要說的sql調(diào)優(yōu)很有意思,得先從感恩節(jié)說起。

感恩節(jié)(英語:Thanksgiving Day)是美國和加拿大共有的節(jié)日,由美國人民獨創(chuàng),原意是為了感謝上天賜予的好收成。11月的第四個星期四是感恩節(jié)。感恩節(jié)是美國人民獨創(chuàng)的一個古老節(jié)日,也是美國人合家歡聚的節(jié)日,因此美國人提起感恩節(jié)總是備感親切。感恩節(jié)是美國國定假日中最地道、最美國式的節(jié)日。

感恩節(jié)之后的第一天,是星期五,在這一天,美國人有瘋狂購物的習慣,所以被稱之為黑色星期五,近來己經(jīng)由傳統(tǒng)的商場購物改為網(wǎng)上購物,所以我的愕運便由此而生,我的DB便在這一天被瘋狂購物給訪問爆了。

客戶提供了一份高峰時段的AWR報告,仔細分析后,發(fā)現(xiàn)竟然是一條高耗CPU的SQL給整跨了,僅僅一條,占了85%的CPU,這才深入去了解了SQL的優(yōu)化,以前也做過DB的一些優(yōu)化,基本上通過分析表、建索引、調(diào)參數(shù)、打PATCH等等都能解決,但這次,持續(xù)了一周,學了幾天,還沒解決。最終決定潛心研究SQL的優(yōu)化,得出以下幾點關(guān)于優(yōu)化的結(jié)論:

第 一:1/9原則,引用Oracle大牛Tom大師的原話:數(shù)據(jù)庫中90%的性能問題都可以由調(diào)整10%的SQL語句來解決。

Tom say: Sql tuning constitute a good 90 percent or more of the effort. Thats right; before we even get the DBAs involved, we the developers have done 90 percent of the work. This is why I think most people do not understand database tuning.

第二:SQL的優(yōu)化永遠只針對大表之間的連接才用得上。不要懷疑,,首先,我說的大表是指包含大表,不管是大表與大表,還是大表與小表,只要是有大表就行,因為小表與小表之間不會出現(xiàn)性能問題;其次:有連接才有優(yōu)化的價值,我真的不知道單表的SQL有什么優(yōu)化可言,對單表查詢無非是三點:全表/索引/分區(qū)表,這三點,你肯定會。

第 三:說第三條之間,先說明:正如前面兩條所言,數(shù)據(jù)庫90%的優(yōu)化在SQL,SQL的優(yōu)化關(guān)鍵在“大表連接”,所以下面說的SQL優(yōu)化都是指大表連接。

SQL的執(zhí)行中,Oracle提供的執(zhí)行計劃,不是什么神秘的東西,其實就是oracle去表中查找我們所需結(jié)果的一個算法,算法這東西太熟了,在大學《數(shù)據(jù)結(jié)構(gòu)》這門課中就學過(慚愧,這堂課從來都是去睡覺,因為當時根本不知道那位老朽在說什么),算法就是運算過程,在這里,就是指查找路徑,說白了:執(zhí)行計劃=算法=查找路徑,要找最優(yōu)的執(zhí)行計劃,就是要找出最優(yōu)算法,最優(yōu)算法熟吧? 不熟我跟你說幾個名詞:"冒泡算法",“折中算法”,“快速查找”,去過軟件公司面試的人很多人肯定都做過這種題。而Oracle提供的執(zhí)行計劃中,恰恰就提供這些詳細的過程在里面。你能看到Oracle先去哪個表/索引拿數(shù)據(jù)、根據(jù)什么條件拿多少行,再把拿到的結(jié)果去連接哪個表、等等,經(jīng)過一系列的運算,最后得出什么結(jié)果給你。

但是,ORACLE也是一款軟件,不是神,你給它一條SQL,它在開始運算之前,是不知道哪種算法是最優(yōu)的,不可能每個都試一遍,再做比較吧,而且每條語句的執(zhí)行計劃上百種,每條語句都執(zhí)行上百次,那服務(wù)器干脆別活了。所以,它只能預(yù)估一種針對這條SQL認為最優(yōu)的算法,然后去執(zhí)行。請注意:

1.永遠沒有最優(yōu)算法,如果有最優(yōu)算法a,那優(yōu)化還需要做嗎?每次都按最優(yōu)算法a做行了。

2. Oracle認為最優(yōu)的算法也不一定是最優(yōu)算法,如果是的話,我們還需要做嗎?

說到這里:我們就明白了,ORACLE調(diào)優(yōu)的90%=SQL調(diào)優(yōu)=大表連接調(diào)優(yōu)=執(zhí)行計劃調(diào)優(yōu)=算法調(diào)優(yōu),而大表連接就2點:1.連接順序。2.連接算法(嵌套/哈希/合并)。

結(jié)論:SQL的調(diào)優(yōu)就是手動設(shè)計出最優(yōu)連接順序和算法的執(zhí)行計劃。

linux

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

Oracle調(diào)優(yōu)專家秘籍

Oracle調(diào)優(yōu)專家秘籍:第二:SQL的優(yōu)化永遠只針對大表之間的連接才用得上。不要懷疑,首先,我說的大表是指包含大表,不管是大表與大表,還是大表與小表 注:本文不是給你一個案例,而是講調(diào)優(yōu)的方法,古人云:授人魚不如授人漁,這里要講的,就是教你怎么捕魚。 這里要說的sq
推薦度:
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top