阿里巴巴笔试题及答案
阿里巴巴笔试题及答案 【篇一:阿里巴巴 oracle-dba 笔试题及答案】 txt1:txt1:列举几种表连接方式列举几种表连接方式 hash join/merge join/nest loop(cluster join)/index join hash join/merge join/nest loop(cluster join)/index join 2: 2:不借助第三方工具,怎样查看不借助第三方工具,怎样查看 sqlsql 的执行计划的执行计划 set autot on set autot on explain plan set statement_id = item_id for sql; explain plan set statement_id = item_id for sql; select * from table(dbms_xplan.display); select * from table(dbms_xplan.display); 在在 optimizer_mode=chooseoptimizer_mode=choose 时时, ,如果表有统计信息(分区表外)如果表有统计信息(分区表外), , 优化器将选择优化器将选择 cbo,cbo,否则选否则选 rborbo。。 rbo rbo 遵循简单的分级方法学遵循简单的分级方法学, ,使用使用 1515 种级别要点,当接收到查询,种级别要点,当接收到查询, 优化器将评估使用到的要点数目优化器将评估使用到的要点数目, , 然后选择最佳级别(最少的数量)的执行路径来运行查询。然后选择最佳级别(最少的数量)的执行路径来运行查询。 cbo cbo 尝试找到最低成本的访问数据的方法尝试找到最低成本的访问数据的方法, ,为了最大的吞吐量或最快为了最大的吞吐量或最快 的初始响应时间的初始响应时间, ,计算使用不同计算使用不同 的执行计划的成本,并选择成本最低的一个的执行计划的成本,并选择成本最低的一个, ,关于表的数据内容的统关于表的数据内容的统 计被用于确定执行计划。计被用于确定执行计划。 4: 4:如何定位重要如何定位重要( (消耗资源多消耗资源多) )的的 sqlsql select sql_text select sql_text from v$sql from v$sql where disk_reads 1000 or (cutions 0 and where disk_reads 1000 or (cutions 0 and buffer_gets/cutions 30000); 5:buffer_gets/cutions 30000); 5:如何跟踪某个如何跟踪某个 sessionsession 的的 sqlsql c c dbms_system.set_sql_trace_in_session(sid,serial#,sql_trace);dbms_system.set_sql_trace_in_session(sid,serial#,sql_trace); select sid,serial# from v$session where sid = (select sid from select sid,serial# from v$session where sid = (select sid from v$mystat where rownum = 1);v$mystat where rownum = 1); c dbms_system.set_ev(sid,serial#,event_10046,level_12,); c dbms_system.set_ev(sid,serial#,event_10046,level_12,); 6:sql6:sql 调整最关注的是什么调整最关注的是什么 查看该查看该 sqlsql 的的 response time(db block gets/consistentresponse time(db block gets/consistent gets/physical reads/sorts (disk))gets/physical reads/sorts (disk)) 7: 7:说说你对索引的认识(索引的结构、对说说你对索引的认识(索引的结构、对 dmldml 影响、为什么提高查影响、为什么提高查 询性能)询性能) b-tree index/bitmap index/function index/patitional b-tree index/bitmap index/function index/patitional index(local/global)index(local/global) 索引通常能提高索引通常能提高 select/update/deleteselect/update/delete 的性能的性能, , 会降低会降低 insertinsert 的速度的速度, , 8: 8:使用索引查询一定能提高查询的性能吗?为什么使用索引查询一定能提高查询的性能吗?为什么 索引就是为了提高查询性能而存在的索引就是为了提高查询性能而存在的, , 如果在查询中索引没有提高性能如果在查询中索引没有提高性能, , 只能说是用错了索引只能说是用错了索引, ,或者讲是场合不同或者讲是场合不同 9: 9:绑定变量是什么?绑定变量有什么优缺点?绑定变量是什么?绑定变量有什么优缺点? 绑定变量是相对文本变量来讲的绑定变量是相对文本变量来讲的, ,所谓文本变量是指在所谓文本变量是指在 sqlsql 直接书写直接书写 查询条件,查询条件, 这样的这样的 sqlsql 在不同条件下需要反复解析在不同条件下需要反复解析, ,绑定变量是指使用变量来代绑定变量是指使用变量来代 替直接书写条件,替直接书写条件, 查询查询 bind valuebind value 在运行时传递,然后绑定执行。在运行时传递,然后绑定执行。 如果排序操作不能在如果排序操作不能在 sort_area_sizesort_area_size 中完成中完成, ,就会用到就会用到 temptemp 表空表空 间间 9i 9i 中如果中如果 workarea_size_policy=autoworkarea_size_policy=auto 时时, , 排序在排序在 pgapga 内进行内进行, ,通常通常 pga_aggregate_targetpga_aggregate_target 的的 1/201/20 可以用来可以用来 进行进行 disk sort;disk sort; 如果如果 workarea_size_policy=manualworkarea_size_policy=manual 时时, ,排序需要排序需要 的内存由的内存由 sort_area_sizesort_area_size 决定决定 在执行在执行 order by/group by/distinct/union/create index/indexorder by/group by/distinct/un