SQL tuning 類 的面試題

2021-07-10 23:44:03 字數 3580 閱讀 9319

1.

列舉幾種表連線方式

內連線、外連線(左外連線,右外連線,全連線),等值鏈結,非等值鏈結,自連線

2.

不借助第三方工具,怎樣檢視

sql的執行計畫

使用explain plan,檢視plan_table

explain plan

setstatement_id=』wlp_test』 ---其中wlp_test自定義的名稱,方便後面檢視plan_table

使用set autotrace on

select * from table(dbms_xplan.display);

3.

如何使用

cbo,cbo

與rule

的區別如果optimizer_mode=choose(9i

的預設值)時,如果有統計資訊就使用

cbo,沒有就使用

rbo。

all_rows

是10g

以及後續版本的預設值,它表示使用

cbo來解析目標

sql;

區別:rbo

使用簡單的分級規則來選擇執行計畫,而

cbo則根據最低成本來選擇執行計畫。

rbo一旦執行計畫出了問題很難對其做調整。甚至

sql的寫法和

sql中物件出現的先後順序都能影響執行計畫的選擇。

oracle 10gr2及以後版本不再支援基於規則(rule)的優化器。

4.

如何定位重要

(消耗資源多)的

sqlselect sql_textfrom v$sql where disk_reads > 1000 or executions >0 andbuffer_gets/executions >30000;

5.

如何跟蹤某個

session

的sql

selectsid,serial# from v$session where sid = (select sid from v$mystat where rownum =1);

execdbms_system.set_sql_trace_in_session(sid,serial#,&sql_trace);

execdbms_system.set_ev(&sid,&serial#,&event_10046,&level_12,'');

6.

sql調整最關注的是什麼

檢視該sql

的響應時間,即

responsetime

(db blockgets/consistent gets/physical reads/sorts(disk);

7.

說說你對索引的認識

(索引的結構、對

dml影響、對查詢影響、為什麼提高查詢效能

)使用分為

b樹索引,位圖索引,復合索引,雜湊索引,位圖連線索引,分割槽索引,反鍵索引,基於函式的索引。索引通常會提高

select/update/delete

的效能,降低

insert

的效能。因為查詢通過索引時,會先通過索引查詢需要行的

rowid

,讓後通過

rowid

把需要的塊讀入記憶體,而全表掃瞄則是把所有的行都讀入記憶體,然後再查詢需要的行,所以索引可以提高查詢效能。

8.

使用索引查詢一定能提高查詢的效能嗎

?為什麼

不一定,但是索引就是為了提高效能而建立的,如果查詢中索引沒有提高效能,只能說用錯了索引,或者場合不對。

9.

繫結變數是什麼

?繫結變數有什麼優缺點

?繫結變數是指在

sql文字中使用的變數,改變變數的值來得到不同的查詢結果。優點:使用繫結變數來減少硬解析,避免

cpu爭用,降低磁碟讀,避免

sharedpool latch

的爭用。繫結變數的缺點就是,不能使用

histogram

(直方圖)。

10.

如何穩定(固定

)執行計畫

a.使用

sql profile

來穩定執行計畫

(10g

以及以前版本)

b.使用

spm來穩定執行計畫(

11g以及以後版本)

11.

和排序相關的內存在8i和

9i分別怎樣調整,臨時表空間的作用是什麼

oracle 8i

中sort_area_size/sort_area_retained_size

決定了排序所需要的記憶體,如果排序操作不能在

sort_area_size

中完成,

就會用到

temp

表空間;

oracle 9i

中如果workarea_size_policy=auto時,

排序在pga

內進行,

通常pga_aggregate_target

的1/20

可以用來進行

disk sort;

如果workarea_size_policy=manual時,

排序需要的記憶體由

sort_area_size

決定在執行

order by/groupby/distinct/union/create index/index rebuild/minus

等操作時

,如果在

pga或

sort_area_size

中不能完成

,排序將在臨時表空間進行

(disk sort),

臨時表空間主要作用就是完成系統中的

disk sort.

12.

存在表t(a,b,c,d),

要根據字段

c排序後取第21—

30條記錄顯示,請給出

sqla.select * from(select t1.*,rownum rn from (select * from t order by c) t1) where rn between21 and 30;

b.select * from(select * from t order by c) where rownum<31

minus

select * from (select * from t order by c)where rownum<20;

封裝類的面試題

integer a1 1 integer a2 1 system.out.println a1 a2 true integer a3 128 integer a4 128 system.out.println a3 a4 false integer封裝類中已經定義了乙個integercache,in...

Java String 類面試題

本文裝置自 字串物件是一種特殊的物件.string類是乙個不可變的類.也就說,string物件一旦建立就不允許修改 string類有乙個對應的string池,也就是 string pool.每乙個內容相同的字串物件都對應於乙個pool裡的物件.1 看下面一段 string s new string ...

java String類面試題

1.判斷定義為string型別的s1和s2是否相等 string s1 abc string s2 abc system.out.println s1 s2 true system.out.println s1.equals s2 true 2.下面這句話在記憶體中建立了幾個物件?string s1...