{eval=Array;=+count(Array);}

国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

問答專欄Q & A COLUMN

Oracle數據庫運行越來越慢,應該怎么優化一下?

bladefurybladefury 回答0 收藏1
問題描述:怎么對Oracle數據庫進行優化,提升運行速度?
收藏問題

3條回答

Pluser

Pluser

回答于2022-06-28 15:18

我根據所維護的Oracle 項目經驗來回答這個問題,希望能夠幫助到題主及有需要的朋友。

Oracle 運行越來越慢,是有多種原因,我從由易到難的思路,介紹一下我們實際運用的方法分享給大家:


一、Oracle 數據庫層自身的優化

1. 表的優化。表是Oracle中存放數據的最終載體,表的優化是核心。 隨時業務系統使用時間越長,表中的數據就越多,表的優化會起到立竿見影的效果。

(1) 表的高水位問題。

表中的數據,因較多的 delete 操作,會產生高水位,此時當發生全表讀的操作,將會額外消耗資源,從而造成業務人員直接感覺到系統使用慢。

補救的辦法是:回收高水位。

(2) 表的統計信息過舊或者不準確

   統計信息不準確,會引起執行計劃出錯,造成業務系統越來越慢。 表的統計信息就相當于人的基本情況,當基本情況都不準確時,如何能夠保證正確的執行呢。

補救的辦法是:收集表的統計信息。

(3) 未實施表分區技術

化整為零的思想。 某些表,根據業務的實際需要,未做表分區。 比如會經常用按年月來查詢表中某月的數據,如果表中的數據量非常大,比如超100萬條,就可以按月進行分區,讓按月的查詢,只需要讀取所需要月份的分區表。

補救的辦法是: 對表實行化整為零,轉為分區表


2. 索引的優化

(1) 差索引

數據庫運行慢,很多的情況是查詢語句中引用的列,差索引。索引是提升速度非常重要的手段。

補救的辦法是: 分析SQL 語句,對缺失的索引進行創建。

(2) 索引的統計信息不準

索引的統計信息與表的信息信息思想是一樣的, 只有統計信息準確,SQL 才能夠最大程度的選擇最好的執行計劃,以最短的時間執行完所需要的業務SQL。

補救的辦法是:收集索引的統計信息。

3. SQL 語句的優化

數據庫慢,很多情況是因為SQL寫法不對,造成執行時間長,消耗了過多的資源。 因此優化SQL 是非常重要的方式之一。

補救的辦法是:收集Oracle 數據庫的 AWR, ADDM, ASH 等性能報告,找出執行時間長、消耗資源多的SQL 語句進行優化。


4. Oracle 數據庫的參數優化

數據庫想要運行速度快,對Oracle的運行參數進行優化是重要的手段和方法,比如大家所熟悉的 SGA、PGA、DB_Cache_Size 、Process 等參數進行分析、優化。



二、 操作系統不建議用 WIndows

Oracle 數據庫的運行也是要挑系統平臺的,一般的中、小企業,推薦的是使用 Linux ,從每次Oracle新版本的發行就知道,首先推出的是Linux平臺,然后是 Unix平臺,最后才是Windows平臺。


三、 升級 Oracle 數據庫硬件

如經過前面 2 個大項的優化,仍然不能提升Oracle 數據庫的運行速度,則可能是因為現有的硬件不能滿足當前的業務需求,必須采取升級 Oracle 數據庫服務器的硬件資源比如:升級CPU、內存、磁盤(特別是提升 磁盤 I/O 速度),來提升Oracle數據庫的運行速度。


以上方法和思路,是我們實際項目中遇到并運用的方法和手段,歡迎大家交流。

評論0 贊同0
  •  加載中...
CHENGKANG

CHENGKANG

回答于2022-06-28 15:18

隨著業務數據的增長,以及新業務的推出,很多企業都面臨著系統性能的問題,并且日益凸顯。似乎用盡了所有招數,但性能就是不見改善,問題到底出在哪里?

遇到如此問題,我們一般怎么做呢?是不是都有過下面的體會?

不差錢人的做法:

升級cpu、擴內存、換固態盤存儲,只能說一開始很管用,慢慢地老問題又出現了。

老實人做法:

新上線了業務系統性能不佳,怎么辦呢?我們來玩打游擊。把一些不重要的業務放在晚上運行,調整新業務的功能模塊,或者暫時不做數據同步等

扯皮做法:

看看網絡有沒有問題呢,有的話就改;是不是存儲的問題呢,有問題就換;運維人員有沒有問題呢,服務商也隨意招;但要誰來承擔責任呢,每次遇到嚴重的故障,是不是時間用來扯皮較多?

現實中,很多運維人員都很拼命地在保障系統高效運行,但根據相關統計,80%的系統性能問題來自SQL方面的問題。所以,在基本保證網絡(跟平時比,跟同時段其他業務比)、服務器(CPU、內存使用率)、存儲(IO等待)等資源都問題不大的情況下,可以通過查看Oracle對應時段的AWR、ASH、ADDM來尋找同時段運行較慢的SQL。有針對性的去優化。

而SQL優化中最基本的做法就是建立索引(這個需要根據SQL執行計劃去建立合適的索引)、SQL改寫、HINT提示等等

性能優化是一個比較復雜的系統工程,以上僅是提示點思路吧,具體還需要根據系統的實際情況多做練習,然后再觀察。優化是一個循序漸進的過程,就像我們人生病一樣,先吃藥治病,然后再去醫院復查,看看是否已經治愈一個道理。

希望以上對題主有所幫助,也歡迎其他大牛提出更好的思路,幫助題主。

評論0 贊同0
  •  加載中...
stormzhang

stormzhang

回答于2022-06-28 15:18

你先生成你運行慢那一時間段的性能報告,然后通過里邊的指數看是你的硬件問題還是你的語句的問題,SGA區小的話加SGA區,接著再分析你的語句,看是不是你這個語句的計劃任務是怎么走的,是否沒走索引走了全表掃描!以上就是我的觀點

評論0 贊同0
  •  加載中...

相關問題

最新活動

您已邀請0人回答 查看邀請

我的邀請列表

  • 擅長該話題
  • 回答過該話題
  • 我關注的人
向幫助了您的網友說句感謝的話吧!
付費偷看金額在0.1-10元之間
<