一:SQL tuning 類
阿里巴巴筆試1:列舉幾種表連接方式:hash join/merge join/nest loop(cluster join)/index join
阿里巴巴筆試2:不借助第三方工具,怎樣查看sql的執(zhí)行計劃
set autot on
explain plan set statement_id = &item_id for &sql;
select * from table(dbms_xplan.display);
阿里巴巴筆試3:如何使用CBO,CBO與RULE的區(qū)別
在optimizer_mode=choose時,如果表有統(tǒng)計信息(分區(qū)表外),優(yōu)化器將選擇CBO,否則選RBO。RBO遵循簡單的分級方法學,使用15種級別要點,當接收到查詢,優(yōu)化器將評估使用到的要點數(shù)目, 然后選擇最佳級別(最少的數(shù)量)的執(zhí)行路徑來運行查詢。CBO嘗試找到最低成本的訪問數(shù)據(jù)的方法,為了最大的吞吐量或最快的初始響應時間,計算使用不同 的執(zhí)行計劃的成本,并選擇成本最低的一個,關于表的數(shù)據(jù)內容的統(tǒng)計被用于確定執(zhí)行計劃。
阿里巴巴筆試4:如何定位重要(消耗資源多)的SQL
select sql_text
from v$sql
where disk_reads > 1000 or (executions > 0 and buffer_gets/executions > 30000);
阿里巴巴筆試5:如何跟蹤某個session的SQL
exec dbms_system.set_sql_trace_in_session(sid,serial#,&sql_trace);
select sid,serial# from v$session where sid = (select sid from v$mystat where rownum = 1);
exec dbms_system.set_ev(&sid,&serial#,&event_10046,&level_12,);
阿里巴巴筆試6:SQL調整最關注的是什么
查看該SQL的response time(db block gets/consistent gets/physical reads/sorts (disk))
阿里巴巴筆試7:說說你對索引的認識(索引的結構、對dml影響、為什么提高查詢性能)
b-tree index/bitmap index/function index/patitional index(local/global) 索引通常能提高select/update/delete的性能,會降低insert的速度
阿里巴巴筆試8:使用索引查詢一定能提高查詢的性能嗎?為什么
索引就是為了提高查詢性能而存在的, 如果在查詢中索引沒有提高性能, 只能說是用錯了索引,或者講是場合不同
阿里巴巴筆試9:綁定變量是什么?綁定變量有什么優(yōu)缺點?
綁定變量是相對文本變量來講的,所謂文本變量是指在SQL直接書寫查詢條件,這樣的SQL在不同條件下需要反復解析,綁定變量是指使用變量來代替直接書寫條件,查詢bind value在運行時傳遞,然后綁定執(zhí)行。優(yōu)點是減少硬解析,降低CPU的爭用,節(jié)省shared_pool ;缺點是不能使用histogram,sql優(yōu)化比較困難
阿里巴巴筆試10:如何穩(wěn)定(固定)執(zhí)行計劃
query_rewrite_enabled = true
star_transformation_enabled = true
optimizer_features_enable = 9.2.0
創(chuàng)建并使用stored outline
阿里巴巴筆試11:和排序相關的內存在8i和9i分別怎樣調整,臨時表空間的作用是什么
8i中sort_area_size/sort_area_retained_size決定了排序所需要的內存如果排序操作不能在sort_area_size中完成,就會用到temp表空間9i中如果workarea_size_policy=auto時, 排序在pga內進行,通常pga_aggregate_target的1/20可以用來進行disk sort;如果workarea_size_policy=manual時,排序需要的內存由sort_area_size決定在執(zhí)行order by/group by/distinct/union/create index/index rebuild/minus等操作時,如果在pga或sort_area_size中不能完成,排序將在臨時表空間進行(disk sort)臨時表空間主要作用就是完成系統(tǒng)中的disk sort.
阿里巴巴筆試12:存在表T(a,b,c,d),要根據(jù)字段c排序后取第21—30條記錄顯示,請給出sqlcreate table t(a number(,b number(,c number(,d number();/begin for i in 1 .. 300 loopinsert into t values(mod(i,2),i/2,dbms_random.value(1,300),i/4);end loop;end;/select * from (select c.*,rownum as rn from (select * from t order by c desc) c) where rn between 21 and 30;/(文章轉載自: https://www.gerenjianli.com/bishi/bishi/ 請保留此標記)select * from (select * from test order by c desc) x where rownum < 30minusselect * from (select * from test order by c desc) y where rownum < 20 order by 3 desc相比之 minus性能較差
二:阿里巴巴筆試數(shù)據(jù)庫基本概念類
阿里巴巴筆試1:pctused and pctfree 表示什么含義有什么作用
pctused與pctfree控制數(shù)據(jù)塊是否出現(xiàn)在freelist中,pctfree控制數(shù)據(jù)塊中保留用于update的空間,當數(shù)據(jù)塊中的free space小于pctfree設置的空間時,該數(shù)據(jù)塊從freelist中去掉,當塊由于dml操作free space大于pct_used設置的空間時,該數(shù)據(jù)庫塊將被添加在freelist鏈表中。
阿里巴巴筆試2:簡單描述table / segment / extent / block之間的關系
table創(chuàng)建時,默認創(chuàng)建了一個data segment,每個data segment含有min extents指定的extents數(shù),每個extent據(jù)據(jù)表空間的存儲參數(shù)分配一定數(shù)量的blocks
阿里巴巴筆試3:描述tablespace和datafile之間的關系
一個tablespace可以有一個或多個datafile,每個datafile只能在一個tablespace內,table中的數(shù)據(jù),通過hash算法分布在tablespace中的各個datafile中,tablespace是邏輯上的概念,datafile則在物理上儲存了數(shù)據(jù)庫的種種對象。