Oracle數(shù)據(jù)庫運(yùn)行越來越慢?
隨著業(yè)務(wù)數(shù)據(jù)的增長,以及新業(yè)務(wù)的推出,很多企業(yè)都面臨著系統(tǒng)性能的問題,并且日益凸顯。似乎用盡了所有招數(shù),但性能就是不見改善,問題到底出在哪里?
遇到如此問題,我們一般怎么做呢?是不是都有過下面的體會(huì)?
不差錢人的做法:
升級(jí)cpu、擴(kuò)內(nèi)存、換固態(tài)盤存儲(chǔ),只能說一開始很管用,慢慢地老問題又出現(xiàn)了。
老實(shí)人做法:
新上線了業(yè)務(wù)系統(tǒng)性能不佳,怎么辦呢?我們來玩打游擊。把一些不重要的業(yè)務(wù)放在晚上運(yùn)行,調(diào)整新業(yè)務(wù)的功能模塊,或者暫時(shí)不做數(shù)據(jù)同步等
扯皮做法:
看看網(wǎng)絡(luò)有沒有問題呢,有的話就改;是不是存儲(chǔ)的問題呢,有問題就換;運(yùn)維人員有沒有問題呢,服務(wù)商也隨意招;但要誰來承擔(dān)責(zé)任呢,每次遇到嚴(yán)重的故障,是不是時(shí)間用來扯皮較多?
現(xiàn)實(shí)中,很多運(yùn)維人員都很拼命地在保障系統(tǒng)高效運(yùn)行,但根據(jù)相關(guān)統(tǒng)計(jì),80%的系統(tǒng)性能問題來自SQL方面的問題。所以,在基本保證網(wǎng)絡(luò)(跟平時(shí)比,跟同時(shí)段其他業(yè)務(wù)比)、服務(wù)器(CPU、內(nèi)存使用率)、存儲(chǔ)(IO等待)等資源都問題不大的情況下,可以通過查看Oracle對應(yīng)時(shí)段的AWR、ASH、ADDM來尋找同時(shí)段運(yùn)行較慢的SQL。有針對性的去優(yōu)化。
而SQL優(yōu)化中最基本的做法就是建立索引(這個(gè)需要根據(jù)SQL執(zhí)行計(jì)劃去建立合適的索引)、SQL改寫、HINT提示等等
性能優(yōu)化是一個(gè)比較復(fù)雜的系統(tǒng)工程,以上僅是提示點(diǎn)思路吧,具體還需要根據(jù)系統(tǒng)的實(shí)際情況多做練習(xí),然后再觀察。優(yōu)化是一個(gè)循序漸進(jìn)的過程,就像我們?nèi)松∫粯?,先吃藥治病,然后再去醫(yī)院復(fù)查,看看是否已經(jīng)治愈一個(gè)道理。
希望以上對題主有所幫助,也歡迎其他大牛提出更好的思路,幫助題主。