阿里巴巴的Oracle DBA笔试题答案-SQL tuning类


Posted in 面试题 onApril 03, 2016
SQL tuning类参考解答:
一:SQL tuning 类

1:列举几种表连接方式

程序代码
hash join/merge join/nest loop(cluster join)/index join

2:不借助第三方工具,怎样查看sql的执行计划

程序代码
set autot on
explain plan set statement_id = &item_id for &sql;
select * from table(dbms_xplan.display);
http://download-west.oracle.com/ … /b10752/ex_plan.htm

3:如何使用CBO,CBO与RULE的区别

在optimizer_mode=choose时,如果表有统计信息(分区表外),优化器将选择CBO,否则选RBO。RBO遵循简单的分级方法学,使用15种级别要点,当接收到查询,优化器将评估使用到的要点数目, 然后选择最佳级别(最少的数量)的执行路径来运行查询。

CBO尝试找到最低成本的访问数据的方法,为了最大的吞吐量或最快的初始响应时间,计算使用不同 的执行计划的成本,并选择成本最低的一个,关于表的数据内容的统计被用于确定执行计划。

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:绑定变量是什么?绑定变量有什么优缺点?

绑定变量是相对文本变量来讲的,所谓文本变量是指在SQL直接书写查询条件,这样的SQL在不同条件下需要反复解析,绑定变量是指使用变量来代替直接书写条件,查询bind value在运行时传递,然后绑定执行。优点是减少硬解析,降低CPU的争用,节省shared_pool ;缺点是不能使用histogram,sql优化比较困难

10:如何稳定(固定)执行计划

程序代码
query_rewrite_enabled = true
star_transformation_enabled = true
optimizer_features_enable = 9.2.0

创建并使用stored outline
oracle can automatically create outlines for all SQL statements, or you can create them for specific SQL statements. In either case, the outlines derive their input from the optimizer.

oracle creates stored outlines automatically when you set the initialization parameter Create_STORED_OUTLINES to true. When activated, oracle creates outlines for all compiled SQL statements. You can create stored outlines for specific statements using the Create OUTLINE statement.

Creating Outlines:http://download-west.oracle.com/docs/cd/B19306_01/server.102/b14211/outlines.htm

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/group by/distinct/union/create index/index rebuild/minus等操作时,

如果在pga或sort_area_size中不能完成,排序将在临时表空间进行(disk sort),

临时表空间主要作用就是完成系统中的disk sort.

12:存在表T(a,b,c,d),要根据字段c排序后取第21—30条记录显示,请给出sql

程序代码
create table t(a number(,b number(,c number(,d number();
/
begin
for i in 1 .. 300 loop
insert 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;
/
select * from (select * from test order by c desc) x where rownum minus
select * from (select * from test order by c desc) y where rownum
相比之 minus性能较差

Tags in this post...

面试题 相关文章推荐
JNI的定义
Nov 25 面试题
北京银河万佳Java面试题
Mar 21 面试题
实现向右循环移位
Jul 31 面试题
什么是ARP(Address Resolution Protocol)地址解析协议
Oct 31 面试题
.TTL是什么?有什么用处,通常那些工具会用到它?(ping? traceroute? ifconfig? netstat?)
May 09 面试题
局域网标准
Sep 10 面试题
如何进行Linux分区优化
Feb 12 面试题
linux面试题参考答案(7)
Jul 24 面试题
一些Unix笔试题和面试题
Sep 25 面试题
Boolean b = new Boolean(“abcde”); 会编译错误码
Nov 27 面试题
Java中的异常处理机制的简单原理和应用
Apr 27 面试题
一套Delphi的笔试题一
Feb 14 面试题
几道数据库的概念性面试题
May 30 #面试题
阿里巴巴Oracle DBA笔试题答案-备份恢复类
Nov 20 #面试题
Oracle性能调优原则
May 03 #面试题
ORACLE十问
Apr 20 #面试题
ORACLE第二个十问
Dec 14 #面试题
一道写SQL的面试题和答案
Nov 19 #面试题
一个SQL面试题
Aug 21 #面试题
You might like
php记录代码执行时间(实现代码)
2013/07/05 PHP
PHP学习笔记(二) 了解PHP的基本语法以及目录结构
2014/08/04 PHP
PHP实现批量修改文件后缀名的方法
2015/07/30 PHP
YII CLinkPager分页类扩展增加显示共多少页
2016/01/29 PHP
PHP的Yii框架中过滤器相关的使用总结
2016/03/29 PHP
php判断手机浏览还是web浏览,并执行相应的动作简单实例
2016/07/28 PHP
PHP 二维关联数组根据其中一个字段排序(推荐)
2017/04/04 PHP
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
php 可变函数使用小结
2018/06/12 PHP
PHP时间戳和日期相互转换操作实例小结
2018/12/18 PHP
js捕获鼠标滚轮事件代码
2013/12/16 Javascript
JavaScript中Math对象方法使用概述
2014/01/02 Javascript
利用Keydown事件阻止用户输入实现代码
2014/03/11 Javascript
javaScript如何处理从java后台返回的list
2014/04/24 Javascript
jQuery通过点击行来删除HTML表格行的实现示例
2014/09/10 Javascript
jquery操作对象数组元素方法详解
2014/11/26 Javascript
JavaScript中字符串(string)转json的2种方法
2015/06/25 Javascript
Angular.js实现多个checkbox只能选择一个的方法示例
2017/02/24 Javascript
vue实现底部菜单功能
2018/07/24 Javascript
解决layui 复选框等内置控件不显示的问题
2018/08/14 Javascript
jQuery实现的3D版图片轮播示例【滑动轮播】
2019/01/18 jQuery
Vue3.0中的monorepo管理模式的实现
2019/10/14 Javascript
vue-cli3.0实现一个多页面应用的历奇经历记录总结
2020/03/16 Javascript
一起来了解一下JavaScript的预编译(小结)
2021/03/01 Javascript
[04:59]DOTA2-DPC中国联赛 正赛 Ehome vs iG 选手采访
2021/03/11 DOTA
用python代码做configure文件
2014/07/20 Python
Python发送以整个文件夹的内容为附件的邮件的教程
2015/05/06 Python
python基于plotly实现画饼状图代码实例
2019/12/16 Python
HTML5中的拖放实现详解
2017/08/23 HTML / CSS
英国最受欢迎的手表网站:Watch Shop
2016/10/21 全球购物
介绍一下如何利用路径遍历进行攻击及如何防范
2014/01/19 面试题
英语专业个人求职自荐信
2013/09/21 职场文书
食品安全责任书
2014/04/15 职场文书
goland 设置project gopath的操作
2021/05/06 Golang
IDEA使用SpringAssistant插件创建SpringCloud项目
2021/06/23 Java/Android
gateway网关接口请求的校验方式
2021/07/15 Java/Android