oracle效能調整的十大要點 SQL優化

2021-08-30 05:22:45 字數 2494 閱讀 1496

九、sql優化

1、優化器模式

oracle9i有兩種優化器模式可以選擇:

• rule-based:

– uses a ranking system

– syntax- and data dictionary–driven

• cost-based:

– chooses least-cost path

– statistics-driven

rule-based模式滿足向後相容,而cost-based模式中的成本大部分來自於邏輯讀的次數,推薦使用cost-based模式。

2、固定optimizer plan

1)概念

對於每乙個查詢,optimizer都會準備乙個定義了操作執行順序和方法的操作樹(執行計畫),oracle server根據這個執行計畫執行語句。通過固定執行計畫,可以強制應用通過一種理想的方式訪問資料,並且乙個穩定的執行計畫可以經歷資料庫的變化而保持不變。固定執行計畫通過建立stored outline實現,outline使用cost-based的optimizer,因為其由一系列的hints組成。

執行計畫的固定依賴於當判定乙個查詢是否存在stored outline時查詢語句是否完全一致,與判定shared pool裡乙個執行計畫是否可以重用時的匹配方式是一致的。

outline被儲存在outln schema中。

2) 建立stored outline

alter session set create_stored_outlines = train;

create or replace outline co_cl_join

for category train on

select co.crs_id, ...

from courses co,classes cl

where co.crs_id = cl.crs_id;

stored outline通過category組織,相同的sql語句可以在多個category同時擁有stored outline,如果categoey沒有指定,預設是default category。

當create_stored_outlines等於true或category名時,oracle會為所有被執行的sql語句建立stored outline,也可以通過create outline手工建立。

3) 使用stored outline

將use_stored_outlines設定為true或category名。

alter session set use_stored_outlines = train;

當為乙個查詢尋找stored outline時,查詢語句與stored outline裡的語句必須完全一致,在outline裡的hints也必須在查詢語句中出現。

3、private outline

private outline是當前儲存的stored outline的副本,可以被編輯而不影響正在執行的系統,乙個private outline只能被當前session看到,它的資料被儲存在當前被解析的schema裡。,知道顯示的將其公布。

當use_private_outlines=true時,乙個已有outline的sql被提交時,optimizer會檢查是否存在private outline,如果不存在,optimizer就不使用optimizer編譯語句,而不會去檢查公布的stored outline。

4、在sql中使用hints

create index gen_idx on customers(cust_gender);

select /*+ index(customers gen_idx)*/

cust_last_name,cust_street_address,cust_postal_code

from sh.customers where upper(gender)=』m』;

5、explain plan

可以不通過tracing,需要建立plan_table表:

sql>@oracle_home/rdbms/admin/utlxplan;

建立explain plan:

explain plan for select last_name from hr.emp;

查詢plan_table中的explain plan,可以直接查詢,也可以通過指令碼utlxplx.sql(隱藏並行查詢資訊)、utlxplp.sql(顯示並行查詢資訊)查詢。

6、管理統計資訊

利用analyize命令收集或刪除資訊。

引數:compute:統計精確的資料;

estimate:估計的統計資料。

各類統計資料的位置:

表:dba_tables;

索引:dba_indexes;

列:user_tab_col_statistics;

柱狀圖(histogram)詳細的描述了乙個特定列中資料的分布情況,可以通過analyize table ... for columns... 命令建立,儲存在dba_histogram/dba_tab_histograms中。

成功人生十大要點

成功人生十大要點,認清自己,把握自己的命運,實現自己的人生價值。每個人都有自己的特點,每個人都是獨一無二的奇蹟。尺有所短,寸有所長,不必拿自己的優點與別人的缺點作比較,也不必經常自嘆某某處總不如人,因為 沒有誰可以號稱完美。人生的缺憾,最大的就是拿自己和別人相比。和高人相比使我們自卑 和俗人相比使我...

購房維權事件「十大要點」

隨著樓市逐漸回暖,春季購房高峰即將到來,維權事件也會逐日增多。聯業律師事務所首席律師王展就購房事宜為讀者提出了十點建議 一 保證完整的退房權利。當出現開發商違約 購房者有權退房時,購房者應該有退房的選擇權,並且明確退房時如何處理,不退時又怎麼對待 二 把廣告寫進購房合同。直接在合同中約定廣告視為合同...

自動化測試十大要點

當一款自動化測試工具引入到乙個專案中,我們通常對它給予很高的期望 專案成員希望工具能夠盡可能的縮小測試範圍 節約成本並縮短專案進度,然而可悲的是,很多採用自動化測試的專案依然失敗了。以下幾個方面嚴重影響著自動化測試的效率,如果處理不當,將會造成事倍功半甚至前功盡棄的後果,自動化測試也成了一副空架子。...