Chinaunix首页 | 论坛 | 博客
  • 博客访问: 427006
  • 博文数量: 239
  • 博客积分: 8010
  • 博客等级: 中将
  • 技术积分: 2431
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-02 21:12
文章分类
文章存档

2008年(239)

我的朋友

分类: DB2/Informix

2008-06-17 23:36:51

本章小结

SQL语言是用户访问数据库数据的通用接口,用户以SQL语句的形式,向数据库系统发出请求。数据库系统在接收到用户的SQL请求后,由优化器进行语法分析和优化,从所有可能、等价的执行方式中,找出最终的执行计划,然后按照此执行计划运行,最后将处理结果返回用户。

数据的物理和逻辑独立性、数据的不断更新和变化,决定SQL语句的最终执行计划由优化器来完成。一个SQL语句的最终执行计划,是所有执行方式中执行费用最低的那一个。所谓SQL语句的执行费用,就是执行SQL语句时,所需执行时间、CPU使用、内存空间使用、I/O操作数量、生成的中间结果集数量等多方面因素的综合。

为了找出费用最低的执行计划,优化器根据数据字典中的相关信息,通过估算SQL语句每一个执行计划的费用,然后进行比较而得出。优化器所参照的数据字典信息,可以分为两大类:结构定义、数据库对象统计信息,用户可以根据自己的需要选择要收集的表、索引统计信息。

优化器选择SQL语句的执行计划,无外乎就是确定数据的访问路径(索引访问或者表扫描)、表连接的方式及顺序,以及索引不可用时是否进行排序等。SQL语句中的下列关键字会引起排序操作:order bygroup bydistinctunionintersectminus

用户应根据自己的需要,决定是否使用这些关键字。对多个表之间的关联操作,优化器需要决定表之间的连接顺序和连接方式。两个表之间的连接,可以使用的连接方式有:嵌套循环连接、排序合并连接、散列连接。

基于对优化器处理过程和方式的了解,用户应能够决定是否要为表增加索引、索引应建立在那些字段上,应能够编写出高效的SQL语句,本章就这些方面指出了一些指导性原则。用户可以在系统运行过程中通过检查SQL语句的执行计划来发现系统存在的问题。

为降低优化器自身对系统资源的消耗,数据库系统会采取一些措施,如:启发式优化方法、将SQL语句的最终执行计划存放在内存中等,减少优化器的优化次数。为保证优化器的正常运行,数据库管理员应当遵照以下的原则:定期执行统计信息的收集、在系统空闲状态下进行系统的维护。

常见的数据库系统都使用基于代价的优化方法,现有ORACLE系统版本还支持基于规则的优化方法。相对来说,DB2系统的优化器功能比较强大,而SYBASE系统的费用估算算法有些简单。

阅读(581) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~