oracle效能優化

2021-09-01 10:56:16 字數 1290 閱讀 7280

sql共享原理:

為了不重複解析相同的sql語句,在第一次解析之後,oracle將sql語句存放在記憶體中。這塊位於系統全域性區域sga(systemglobal area)的共享池(shared buffer poo1)中的記憶體可以被所有的資料庫使用者共享。因此,當你執行乙個sql語句(有時被稱為乙個游標)時,如果它和之前執行過的語句完全相同,oracle就能很快獲得已經被解析的語句以及最好的執行方案。oracle的這個功能大大地提高了sql的執行效能並節省了記憶體的使用。

可惜的是,oracle只對簡單的表提供高速緩衝(cache bufferiilg),這個功能並不適用於多表連線查詢。資料庫管理員必須在啟動引數檔案中為這個區域設定合適的引數,當這個記憶體區域越大,就可以保留更多的語句,當然被共享的可能性也就越大了。當向oracle提交乙個sql語句時,oracle會首先在這塊記憶體中查詢相同的語句。

sql共享的三個條件:

當前被執行的語句和共享池中的語句必須完全相同 (包括大小寫、空格、換行等)

兩個語句所指的物件必須完全相同 (同義詞與表是不同的物件)

兩個sql語句中必須使用相同的名字的繫結變數(bind variables) 

oracle資料庫sql語句優化的一些策略

以這些優化策略為指導,通過經驗總結,我們可以不斷地豐富優化方案,進而指導我們進行應用系統的資料庫效能優化。以下列舉幾則被證明行之有效的優化方案:

● 建立表的時候。應盡量建立主鍵,盡量根據實際需要調整資料表的pctfree和pctused引數;大資料表刪除,用truncate table代替delete。

● 合理使用索引,在oltp應用中一張表的索引不要太多。資料重複量大的列不要建立二叉樹索引,可以採用位圖索引;組合索引的列順序盡量與查詢條件列順序保持一致;對於資料操作頻繁的表,索引需要定期重建,以減少失效的索引和碎片。

● 查詢盡量用確定的列名,少用*號。select count(key)fromtab where key> 0效能優於select count(*)from tab;

盡量少巢狀子查詢,這種查詢會消耗大量的cpu資源;對於有比較多or運算的查詢,建議分成多個查詢,用union all聯結起來;多表查詢的查詢語句中,選擇最有效率的表名順序。oracle解析器對錶解析從右到左,所以記錄少的表放在右邊。

● 盡量多用commit語句提交事務,可以及時釋放資源、解鎖、釋放日誌空間、減少管理花費;在頻繁的、效能要求比較高的資料操作中,盡量避免遠端訪問,如資料庫鏈等,訪問頻繁的表可以常駐記憶體:alter table...cache;

● 在oracle中動態執行sql,盡量用execute方式,不用dbms_sql包。

oracle效能優化

今天有個問題沒有答上來 oracle的效能優化。查了查資料,學習學習。優化心得摘抄 資料庫優化oracle9i 很多的時侯,做oracle dba的我們,當應用管理員向我們通告現在應用很慢 資料庫很慢的時侯,我們到資料庫時做幾個示例的select也發現同樣的問題時,有些時侯我們會無從下手,因為我們認...

Oracle 效能優化

1.在select語句中避免使用 2.使用truncate清空表 2.1語法 truncate table cluster shema.table name cluster name drop reuse storage 3.使用rowid高效刪除重覆記錄 rowid是可以唯一標記記錄的物理位置 d...

Oracle效能優化

一 索引 適用及原則 表記錄量在3000以上,記錄小沒有意義 建索引的列為關聯比較頻繁的列,比如志願表的報名號,建索引的列沒有空值 建索引的列值基本固定不會修改,否則效率會打折扣,需要做定期重建索引 建了索引會影響對該錶的新增和修改的效率,如果可能,生產階段不建,查詢階段建 二 語句寫法及程式實現 ...