国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

改變優化參數來適應庫緩沖區中SQL的變化

2024-07-21 02:42:04
字體:
來源:轉載
供稿:網友
雖然系統級性能調優不是結構化查詢語言(SQL)性能調優的最好解決方案,但是,當你不能改變某些SQL語句時(例如,提供商提供的某些包中的SQL語句),使用SQL處理的常規模式來調節系統性能是極其有幫助的。在日常工作經驗的基礎上,Oracle數據庫管理員改變某些優化參數來適應庫緩沖區中SQL類型的變化是很常見的事。

一些較為常見的變更:

1、針對Oracle參數的更改。對optimizer_mode,optimizer_index_cost_adj和optimizer_index_caching的改變能對SQL執行計劃產生巨大影響。  

2、 針對統計參數的更改。使用dbms_stats包導入特定的統計參數(針對當然處理模式作了調整的)可對SQL的執行速度產生巨大影響。  

3、 使用自動化查詢重新寫入。使用Oracle實體化視圖能夠預先聚集、預先匯總數據,從而減少運行時刻表連接的數量。對于更新比較少的數據庫,也可以通過預先連接表來提高處理速度。  

一些對性能調優最重要的Oracle優化參數如下:

* optimizer_mode(優化模式)-在Oracle 9i中,有許多優化模式,都是由參數optimizer_mode的值決定的。這個參數的取值范圍是rule, choose, all_rows, first_rows, first_rows_1, first_rows_10 和 first_rows_100.  

我們以定義“最好的”執行計劃作為開始點。在任何給定的時間,庫緩沖區中的所有SQL語句都需要有“最好的”執行計劃(當然,由于在任何給定的時間里處理需求可能不同,所以這個最優執行計劃可能會經常發生變化)。什么是“最好的”執行計劃?是返回結果最快的執行計劃還是使用最少計算資源的執行計劃?很明顯,答案依賴于你的數據庫的處理過程,Oracle提供了兩種優化模式,允許你選擇你認為的“最好的”執行計劃:  

1、 optimizer_mode=first_rows――相對全表掃描訪問,這個優化模式更注重索引訪問。當你想要一個查詢以最快的速度返回結果行時,即使它的邏輯輸入輸出總量比全表掃描高,也要使用這個模式在線訪問系統一般都使用這個模式,因為終端用戶想要盡快地看到第一頁查詢結果。  

2、optimizer_mode=all_rows――這個優化模式更注重全表掃描(特別是并發全表掃描),因為在這種情況下服務器資源的開銷最小。這個模式一般被用于批處理進程和數據倉庫中,它們的目標都是使服務器消耗的資源最小化。

3、 optimizer_mode=first_rows_n――從Oracle 9i開始,又有一種新的優化模式針對某些返回小結果集的查詢進行優化。其取值范圍是first_rows_1, first_rows_10 和 first_rows_100,使用這些參數值可以確保Oracle能夠優化這類SQL。  

雖然參數optimizer_mode控制了“基于代價的優化”的總體行為,還有其他Oracle參數也會對“基于代價的優化”產生相當大的影響。Oracle提供了一些重要的參數來控制“基于代價的優化”做出的選擇:  

1、optimizer_index_cost_adj――這個參數可用來調整“基于代價的優化”相對于全表掃描訪問而言,更加傾向于索引訪問的程度。這個值越小,“基于代價的優化”就越有可能使用一個可用的索引。  

2、 optimizer_index_caching――這個參數告訴Oracle你的索引在內存的數據緩沖區中的可能性有多大。對這個參數的設置將會影響到“基于代價的優化” 做出的對一個表連接(嵌套循環)使用索引還是使用全表掃描選擇。  

3、 db_file_multiblock_read_count――當把這個值設置得比較大時(使用更大的服務器),“基于代價的優化”識別出分散的(多塊)讀操作的代價或許比識別順序讀操作的代價更小一些。這就使得“基于代價的優化”更加傾向于全表掃描。  

但是從Oracle 9.2版本開始,情況不再是這樣了。當計算系統統計表時,它包含了“多塊讀操作記數”(MBRC),這個數字決定了全表掃描的成本。Oracle 10g則更進一步,加入了一些“系統默認值”,這些默認值是非常不合適的。對于Oracle 9.2版本而言,請注意Metalink上的149560.1。  

1、 parallel_automatic_tuning――當該參數設置為“開啟”時,對于含有許多CPU的Oracle服務器,全表掃描并發執行。因為并發全表掃描的速度可以非常快,所以“基于代價的優化”對于索引訪問開銷很大,因此更加傾向于使用全表掃描。  

2、 hash_area_size(假如不使用pga_aggregate_target的話)――這個參數設置“基于代價的優化”相對于使用嵌套循環和排序合并表連接來說,更傾向于使用哈希連接的程度。  

3、sort_area_size(只當不使用參數pga_aggregate_target時)――這個參數影響了“基于代價的優化”做出的執行索引訪問還是執行對結果集的排序的決定。這個參數值越高,則在內存中執行排序(比使用臨時表空間快上千倍)的可能性就越大,同時“基于代價的優化”相對于使用預先排序好的索引檢索,更傾向于使用直接排序。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 桃江县| 芒康县| 即墨市| 宁强县| 霍邱县| 萍乡市| 常山县| 平凉市| 陕西省| 扶余县| 赤城县| 大宁县| 莱州市| 合作市| 错那县| 舞钢市| 雅安市| 丹凤县| 淳化县| 甘孜县| 张北县| 濮阳市| 万山特区| 石柱| 五原县| 新沂市| 怀集县| 阿拉尔市| 肇庆市| 定安县| 南江县| 娄底市| 会东县| 平远县| 达拉特旗| 黔南| 德州市| 德江县| 霍林郭勒市| 巧家县| 江安县|