關於Oracle資料庫優化的幾點總結

2021-06-20 00:07:09 字數 1188 閱讀 1907

個人理解,資料庫效能最關鍵的因素在於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資料庫的查詢優化

沒事兒嘮嘮it 2016 12 08 00 58 1 多表查詢時,資料量小的表放在靠右放。2 單錶查詢時,能夠過濾掉較大資料量的條件靠右放。3 查詢字段盡量避免使用 號,應直接羅列欄位名稱。4 儘量減少對資料庫的訪問次數。1 索引字段存在資料型別轉換 如數值字元轉換位數字,或字串轉換為日期等 2 索...

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作業系...