2009年淘宝数据库笔试题

这篇文档提及的是2009年阿里巴巴和淘宝网在校园招聘中使用的数据库笔试题目,涵盖了数据库管理、查询优化、性能监控以及索引策略等多个方面。以下是对这些知识点的详细解释: 1. **表连接方式**:四种表连接方式包括哈希连接(Hash Join)、归并连接(Merge Join)、嵌套循环连接(Nested Loop Join)和索引连接(Index Join)。每种连接方式都有其适用场景,例如哈希连接适合于连接大表,而嵌套循环连接在连接小表时效率较高。 2. **查看SQL执行计划**:通过设置`autot on`和`explain plan`,可以查看SQL的执行计划。在Oracle中,可以使用`dbms_xplan.display`函数来展示执行计划的详细信息。 3. **CBO与RULE的区别**:CBO(Cost-Based Optimizer)基于成本进行查询优化,考虑表的统计信息来选择最优执行计划。而RBO(Rule-Based Optimizer)遵循简单的规则,基于查询语句的结构来选择执行路径。在`optimizer_mode=choose`时,若有统计信息,CBO会被优先选择。 4. **定位资源消耗大的SQL**:使用`v$sql`视图可以找出磁盘读取次数超过1000次或缓冲获取与执行次数比例大于30000的SQL语句,这些都是可能的性能瓶颈。 5. **跟踪会话的SQL**:通过`dbms_system.set_sql_trace_in_session`可以追踪特定会话的SQL执行,先从`v$session`获取SID和Serial#,然后使用`dbms_system.set_ev`设置事件跟踪。 6. **SQL调整关注点**:SQL的响应时间、DB Block Gets、Consistent Gets、Physical Reads和磁盘排序是调整SQL性能时需要关注的关键指标。 7. **索引的理解**:索引分为B-Tree索引、Bitmap索引、Function索引和Partitioned索引。它们可以加速SELECT、UPDATE和DELETE操作,但可能会减慢INSERT速度。索引结构决定了查找效率,而DML操作时,索引维护会增加开销。 8. **索引对查询性能的影响**:并非所有情况下使用索引都能提升查询性能,如果查询条件不适合索引,或者数据分布不均匀,索引可能无法发挥作用,甚至可能导致性能下降。 9. **绑定变量**:绑定变量在SQL中使用动态参数,减少解析次数,节省Shared Pool资源,降低CPU使用。但缺点是无法使用直方图优化,且SQL优化较为复杂。 10. **稳定执行计划**:通过设置查询重写(query_rewrite_enabled)、星型转换(star_transformation_enabled)和优化器特性启用(optimizer_features_enable),以及创建和使用Stored Outline,可以固定执行计划,避免因统计信息变化导致的执行计划变动。 11. **排序内存调整**:在Oracle 8i中,sort_area_size和sort_area_retained_size控制排序内存。在9i中,如果workarea_size_policy设为auto,排序默认在PGA中进行,部分内存由pga_aggregate_target的1/20分配。手动模式下,排序内存由sort_area_size决定。临时表空间主要用于磁盘排序操作。 12. **分页查询**:若要按字段c排序并获取第21至30条记录,可以使用`ROWNUM`伪列配合子查询实现: ```sql SELECT * FROM ( SELECT a, b, c, d FROM t ORDER BY c ) WHERE ROWNUM BETWEEN 21 AND 30 ``` 这样的SQL在Oracle中可以实现分页查询,但请注意,对于较大的数据集,应考虑使用更高效的分页方法,如`OFFSET-FETCH`或`ROW_NUMBER()`窗口函数(Oracle 12c及以上版本支持)。
























剩余13页未读,继续阅读

- suncplover2011-10-20感觉dba才能回答这些题,淘宝门槛还是很高。

- 粉丝: 2
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源


