泰为DBA面试经历

1.前言

     这是工作2年来第一次产生跳槽的冲动,去的第一个面试。在It速查网上查了该公司的资料,对该公司印象不是很好,竟然有部门领导和底下的员工互骂,所谓家丑不可外扬,竟然吵到网上来了,挺好笑的。

    言归正传,公司技术部分为3个组,客户端、服务器组等。

 

2.面试情况

笔试:

    一开始答了一个小时的题,准备不够充分,没有答好,前面花的时间太多了。笔试题后面会提到。

 笔试题考的都是oracle,包括三个部分。
   全英文的

   第一部分是备份和恢复的问题。
   第二部分是数据库性能调优的问题。(问了我如何对数据库进行调优,调优的方式,我巴拉巴拉说了一通。)
   第三部分是utilities的问题,导入导出的几个参数。

   最后还有一个实际的问题。


 两个表t1(userid, date, count);
       t2(userid, first_date, last_date);

t1有1000万条数据,t2都有索引,如何从t1提取到t2,除掉
 select userid, min(date), max(date) from t1 group by userid;的简单方式。要写一个存储过程。


还有 就是一个not exists 转化另外一条语句,我用了 not in, 还要说明哪个效率高,为什么呢?

还有一个问题是从10000条数据中查一个语句。

最后问了一个字符集的问题,我没有答出来。只是说了一个语句方法和导入导出的两个方法。

哎,比较失败。


怎样提高delete语句的效率?
当然是用索引了
但是delete删除多了索引就会变得不可用,因为不表比较大重建索引也很花时间,主要是这种删除在我的应用里经常用到,所以我是想解决这个问题
用索引,然后分批并行做,分批提交,8i以后的都可以在线并行重建索引啊

 

 

接下来是面试:

    面试官看起来四十到五十岁左右,还比较实在。也没多客气,开始就问我的志向是否从开发人员转到DBA,我还废话了一大堆,比较啰嗦,再讲了些自己的工作经历,数据库快照、数据库升级、php接口、导入导出工具、DTS、LOADER(围绕这里问了几个效率的问题,如何控制内存,我这里没有答到重点),LOADER的问题开发中遇到什么困难等。


其中提到
高水线(high watermark)概念和原理

问题:

在oracle里,使用delete删除数据以后,数据库的存储容量不会减少,而且使用delete删除某个表的数据以后,查询这张表的速度和删除之前一样,不会发生变化。

原因:

因为oralce有一个HWM高水位,它是oracle的一个表使用空间最高水位线。当插入了数据以后,高水位线就会上涨,但是如果你采用delete语句删除数据的话,数据虽然被删除了,但是高水位线却没有降低,还是你刚才删除数据以前那么高的水位。除非使用truncate删除数据。那么,这条高水位线在日常的增删操作中只会上涨,不会下跌,所以数据库容量也只会上升,不会下降。而使用select语句查询数据时,数据库会扫描高水位线以下的数据块,因为高水位线没有变化,所以扫描的时间不会减少,所以才会出现使用delete删除数据以后,查询的速度还是和delete以前一样。

 

 

 

结果:

    后来没有了下文,面试失败:(,原因还有待于自己分析。

你可能感兴趣的:(面试)