现在的位置: 首页 > 综合 > 正文

阿里巴巴 DBA 面试题目

2014年08月25日 ⁄ 综合 ⁄ 共 4302字 ⁄ 字号 评论关闭

这些问题来着阿里巴巴DBA面试,你能回答多少呢?也许你能回答出来,距离DBA,你又进了一步。下面也请你来试试吧,问题后面会附上该题的一份答案,不一定完全正确,仅供参考。


第一轮:SQL tuning 类

1:列举几种表连接方式

答:merge join,hash join,nested loop

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

答:sqlplus、set autotrace …、utlxplan.sql 创建 plan_table 表

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

答:在初始化参数里面设置 optimizer_mode=choose/all_rows/first_row 等可以使用 cbo。rbo会选择不合适的索引,cbo需要统计信息。

4:如何定位重要(消耗资源多)的SQL?

答:根据v$sqlarea 中的逻辑读/disk_read。以及寻找CPU使用过量的session,查出当前session的当前SQL语句,或者:监控WIN平台Oracle的运行

5:如何跟踪某个session的SQL?

答:先找出对应的’sid,serial’,然后调用system_system.set_sql_trace_in_session(sid,serial,true);参考:跟踪某个会话

6:SQL调整最关注的是什么?

答:逻辑读。IO量

7:说说你对索引的认识(索引的结构、对dml影响、对查询影响、为什么提高查询性能)

答:默认的索引是b-tree。对insert的影响:分裂,要保证tree的平衡。对delete的影响:删除行的时候要标记改节点为删除。对update的影响:如果更新表中的索引字段,则要相应的更新索引中的键值。查询中包含索引字段的键值和行的物理地址。

8:使用索引查询一定能提高查询的性能吗?为什么?

答:不能。如果返回的行数目较大,使用全表扫描的性能较好。

9:Array:绑定变量是什么?绑定变量有什么优缺点?

答:通俗的说,绑定变量就是变量的一个占位符,使用绑定变量可以减少只有变量值不同的语句的解析。

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

答:使用stored outline。

11:和排序相关的内存在8i和Arrayi分别怎样调整,临时表空间的作用是什么?

答:8i:使用sort_area_size,hash_area_size,每个session分配相同的值,不管有无使用。Arrayi:使用 pga_aggregate来统一管理。临时表空间的作用:在sort_area_size中不能完成的部分在临时表空间完成,临时表空间在重建索引,创建临时表等都要用到。还有hash join不能完成的也在临时表空间中做。

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

  • select a,b,c,d from (select a,b,c,d from T order by c) where rownum< li>
  • minus
  • select a,b,c,d from (select a,b,c,d from T order by c) where rownum < li>
  • 或者:
  • select * from (select rownum rn,a.* from (select a,b,c,d from T order by c) a )where rn between 21 and 30;

第二轮:数据库基本概念类

1:pctused and pctfree 表示什么含义有什么作用?

答:表示数据块什么时候移入和移出freelist。pctused:如果数据块的使用率小于pctused的值,则该数据块重新加入到fresslist中。ctfree:如果数据块的使用率高于pctfree的值,则该数据块从freelist中移出。

2:简单描述table / segment / extent / block之间的关系

答:一个table至少是一个segment,如果分区表,则每个分区是一个segment,table可以看成是一个逻辑上的概 念,segment可以看成是这个逻辑概念的物理实现;segment由一个或多个extents组成,segment不可以跨表空间但可以跨数据文件;extent由多个连续的blocks组成,不可以跨数据文件;block由1-多个os块组成,是oracle i/o的最小存储单位。

3:描述tablespace和datafile之间的关系

答:tablespace是逻辑上的概念,datafile是物理上的概念。一个tablespace可以由多个datafile组成,一个datafile不能跨越多个tablespace。

4:本地管理表空间和字典管理表空间的特点,ASSM有什么特点?

答:一个使用freelist管理,一个使用位图管理。

5:回滚段的作用是什么?

答:保存数据的前像,保证数据读取的时间点一致性。Oracle里数据的多版本特性就是通过回滚段来实现的,正因为此,Oracle数据库实现了读写不竞争的性能优势!

6:日志的作用是什么?

答:记录对数据库的操作,便于恢复。

7:SGA主要有那些部分,主要作用是什么?

答:db_cache(缓存数据块),shared_pool(缓存sql,执行计划,数据字典信息 等),large_pool(MTS模式、parallel 、rman等要用到),java pool(java程序如SQLJ存储过程运行时要用到)。

8:Oracle系统进程主要有哪些,作用是什么?

答:smon(合并空间,实例恢复),pmon(清理失败的进程),归档进程(负责在日志切换的时候归 档日志文件),lgmr(日志书写器进程,负责写日志),ckpt(检查点进程,触发检查点),dbwr(数据库写入器,负责把数据写入导 datafile)。

第三轮:备份恢复类

1:备份如何分类?

答:逻辑备份(exp)与物理备份。或者冷备份与热备份。

2:归档是什么含义?

答:把日志文件放到另一个地方。

3:如果一个表在2004-08-04 10:30:00 被drop,在有完善的归档和备份的情况下,如何恢复?

答:拷贝备份,recover database until time 2004-08-04 10:30:00 alter database open resetlogs;

4:rman是什么,有何特点?

答:rman叫恢复管理器。特点很多。可以在线备份,到少目标数据库是mount状态。1)热备份。2)可以存储脚本。3)可以增量备份。4)自动管理备份集

5:standby的特点

答:利用传输重做日志来达到同步的目的。可以设定多个保护级别,Arrayi后支持逻辑standbyDB。

6:对于一个要求恢复时间比较短的系统(数据库50G,每天归档5G),你如何设计备份策略

答:每天一个全备份。


第四轮:系统管理类

1:对于一个存在系统性能的系统,说出你的诊断处理思路

答:做一个statspack,根据top 5,system load,top sql等来做相应的调整。

2:列举几种诊断IO、CPU、性能状况的方法

答:hp-unix:iostat -x 1 5;top/vmstat/glance

3:对statspack有何认识?

答:一个性能诊断工具而已,其本质就是在两个时间点采样两个系统数据。(动态性能视图),然后根据两个snapshot,产生一个报告。

4:如果系统现在需要在一个很大的表上创建一个索引,你会考虑那些因素,如何做以尽量减小对应用的影响

答:1)增大sort_area_size(8i)/pga_aggregate_target(Arrayi)值。2)如果表有分区(一般大表都要用到分区的),按分区逐个建索引,如果是本地索引的话。3)系统空闲的时候建。

5:对raid10 和raid5有何认识?

答:raid10是先镜像后条带,适合对写入速度要求较高的数据库系统,特别是online redolog文件,raid5适合大部分的数据库系统和数据仓库系统,读性能优于写性能。






MySQL DBA的基础面试题目

1, mysql的复制原理以及流程。

(1)先问基本原理流程,3个线程以及之间的关联。

(2)再问一致性延时性,数据恢复。

(3)再问各种工作遇到的复制bug的解决方法

2, mysql中myisam与innodb的区别,至少5点。
(1) 问5点不同
(2) 问各种不同mysql版本的2者的改进
(3)2者的索引的实现方式

3, 问mysql中varchar与char的区别以及varchar(50)中的30代表的涵义。

(1)varchar与char的区别

        char是一种固定长度的类型,varchar则是一种可变长度的类型

(2)varchar(50)中50的涵义

         最多存放50个字节

(3)int(20)中20的涵义

         int(M)中的M indicates the
maximum display width (最大显示宽度)for integer types. The maximum legal display width is 255.

(4)为什么MySQL这样设计?

      


4, 问了innodb的事务与日志的实现方式。

(1)有多少种日志

(2)日志的存放形式

(3)事务是如何通过日志来实现的,说得越深入越好。

5, 问了mysql binlog的几种日志录入格式以及区别

(1)各种日志格式的涵义

(2)适用场景

(3)结合第一个问题,每一种日志格式在复制中的优劣。

6, 问了下mysql数据库cpu飙升到500%的话他怎么处理?

(1) 没有经验的,可以不问

(2)有经验的,问他们的处理思路

7, sql优化。

(1)explain出来的各种item的意义

(2)profile的意义以及使用场景。

(3)explain中的索引问题。

8, 备份计划,mysqldump以及xtranbackup的实现原理,

(1) 备份计划

(2)备份恢复时间

(3)备份恢复失败如何处理

9, 500台db,在最快时间之内重启。

10, 在当前的工作中,你碰到到的最大的mysql db问题是?

11, innodb的读写参数优化

(1)读取参数,global buffer pool以及 local buffer

(2)写入参数

(3)与IO相关的参数

(4)缓存参数以及缓存的适用场景

12 ,请简洁地描述下MySQL中InnoDB支持的四种事务隔离级别名称,以及逐级之间的区别?

13,表中有大字段X(例如:text类型),且字段X不会经常更新,以读为为主,请问

(1)您 是选择拆成子表,还是继续放一起?

(2)写出您这样选择的理由?

14,MySQL中InnoDB引擎的行锁是通过加在什么上完成(或称实现)的?为什么是这样子的

抱歉!评论已关闭.