Oracle資料庫優化的經驗總結

2021-09-06 13:22:00 字數 1205 閱讀 2902

個人理解,資料庫效能最關鍵的因素在於io,因為操作記憶體是快速的,但是讀寫磁碟是速度很慢的,優化資料庫最關鍵的問題在於減少磁碟的io,就個 人理解應該分為物理的和邏輯的優化, 物理的是指oracle產品本身的一些優化,邏輯優化是指應用程式級別的優化物理優化的一些原則:  1)oracle的執行環境(網路,硬體等) 

2)使用合適的優化器 

3)合理配置oracle例項引數 

4)建立合適的索引(減少io) 

5)將索引資料和表資料分開在不同的表空間上(降低io衝突) 

6)建立表分割槽,將資料分別儲存在不同的分割槽上(以空間換取時間,減少io) 

邏輯上優化: 

1)可以對錶進行邏輯分割,如中國移動使用者表,可以根據手機尾數分成10個表,這樣對效能會有一定的作用 

2)sql語句使用佔位符語句,並且開發時候必須按照規定編寫sql語句(如全部大寫,全部小寫等)oracle解析語句後會放置到共享池中, 如: 

select * from emp where name=?這個語句只會在共享池中有一條,而如果是字串的話,那就根據不同名字存在不同的語句,所以佔位符效率較好 

3)資料庫不僅僅是乙個儲存資料的地方,同樣是乙個程式設計的地方,一些耗時的操作,可以通過儲存過程等在使用者較少的情況下執行,從而錯開系統使用的高峰時間,提高資料庫效能 

4)盡量不使用*號,如select * from emp,因為要轉化為具體的列名是要查資料字典, 比較耗時 

5)選擇有效的表名 

對於多表連線查詢,可能oracle的優化器並不會優化到這個程度, oracle 中多表查詢是根據from字句從右到左的資料進行的,那麼最好右邊的表(也就是基礎表)選 擇資料較少的表,這樣排序更快速,如果有link表(多對多中間表),那麼將link表放最右邊作為基礎表,在預設情況下oracle會自動優化,但是如 果配置了優化器的情況下,可能不會自動優化,所以平時最好能按照這個方式編寫sql 

6)where字句規則: 

oracle 中where字句時從右往左處理的,表之間的連線寫在其他條件之前,能過濾掉非常多的資料的條件,放在where的末尾, 另外!=符號比較的列將不使用索引,列經過了計算(如變大寫等)不會使用索引(需要建立起函式), is null、is not null等優化器不會使用索引 

7)使用exits not exits 替代 in not in 

8)合理使用事務,合理設定事務隔離性,資料庫的資料操作比較消耗資料庫資源的,盡量使用批量處理,以降低事務操作次數

Oracle資料庫優化

1.使用索引 當sql中含有max min order by 時增速明顯。建立索引應用於join where order by排序的字段上,避免建立在含有大量重複的字段上,例如某個具有列舉型別的字段,避免索引所在的字段含有 null 值 索引會降低 insert update 的速率 2.選取最適用...

ORACLE資料庫的優化

cpu引數的調整 cpu是伺服器的一項重要資,伺服器良好的工作狀態是在工作高峰時cpu的使用在90 以上。如果空閒時間cpu使用率就在90 以上,說明伺服器缺乏cpu資源,如果工作高峰時cpu使用率仍然恨低,說明伺服器cpu資源還比較富餘。使用操作相同命令可以看到cpu的使用情況,以般unix作業系...

資料庫開發的效能優化經驗

一 問題的提出 在應用系統開發初期,由於開發資料庫資料比較少,對於查詢sql語句,複雜檢視的的編寫等體會不出sql語句各種寫法的效能優劣,但是如果將應用系統提交實際應用後,隨著資料庫中資料的增加,系統的響應速度就成為目前系統需要解決的最主要的問題之一。系統優化中乙個很重要的方面就是sql語句的優化。...