基于成本的数据库查询优化浅析.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于成本的数据库查询优化浅析   摘要:主要介绍基于成本的数据库查询优化的一些基本概念,针对多表连接的三种方法:嵌套循环链接、归并连接和混合连接进行分析和阐述,并成本估算,列出估算公式。   关键词:数据库系统;成本;存取路径;连接顺序;连接方法;NLJ;MJ;Hybrid Join   中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)34-1540-02   On Cost Based Database Query Optimization   CUI Yu-li, YIN Chang-qing   (School of Software Engineering, Tongji University, Shanghai 201804, China)   Abstract: Mainly presents some basic concept of database query optimization, and analyze the three multi-table join methods: nested loop join, merge join and hybrid join,give the cost of each join methods.   Key words: DBMS; cost; access path; join sequence; join methods; NLJ; MJ;Hybrid Join      1 引言   目前,数据库系统是管理信息系统的核心。从大多数管理信息系统的数据库操作来看,查询操作在各种数据库操作中所占据的比重最大,因而提高查询的效率,优化数据库查询便成了提高数据库管理系统乃至管理信息系统的关键所在。举例来说,如果数据量累积到一定程度,比如一个银行的账户数据库表信息累积到上百万甚至上千万条记录,全表扫描一次往往需要数十分钟,甚至数小时。如果采用比全表扫描更好的查询策略,往往可以使查询时间大大缩短,由此可见查询优化技术的重要性。   数据库查询优化器是RDBMS的一个重要组成部分。对于基于成本的优化,数据库查询优化器的任务是,通过产生可供选择的执行计划,找到最低估算成本的执行计划,来优化一条SQL语句。它在SQL语句性能表现上扮演了至关重要的角色。本文就基于多表连接的三种方法简单估算一下成本开销,来说明基于成本的数据库查询优化。      2 成本含义      成本表示优化器对执行语句所用时间的最优估计。当一条SQL语句被输入RDBMS服务器,它将会被解析并提交给数据库查询优化器。查询优化器将会对其进行查询重写和表达式评估,以产生可供选择的执行计划。对于每个待选的执行计划,数据库优化器根据相应的统计量进行估计每个执行计划的成本,成本估计最小的执行计划将被选取用来执行SQL语句。在实际的数据库产品(如Oracle、Sybase、DB2等)的高版本中都是采用基于代价的优化方法,这种优化能根据从系统字典表所得到的信息来估计不同的执行计划的成本,然后选择一个较优的执行计划。   成本主要由CPU Cost 和I/O Cost两部分组成,具体图示如图1。   其中:Base cost 是CPU初始化花费的时间,是确定的。   Page cost 是缓冲池中定位请求页所花费时间。   Scan cost 是扫描每条记录的时间。   Row cost 是复制记录到线程私有存储空间所花费的时间。   I/O cost 是从硬盘中读取所需页面所花费的时间。   3 存取路径   那么什么是存取路径呢?当将 SQL 语句提交给 DBMS 执行时,DBMS 会“实时”地为动态 SQL 语句设计出存取路径。对分析者而言,在执行每条 SQL 语句之前,无法检查 DBMS 为这些语句所选择的存取路径。   当DBMS优化器为每条 SQL 语句创建优化的存取路径时,可以挑选各种不同的技术。查询优化器将主要执行两个步骤来最终决定选择哪个存取路径:1) 列举出可能的存取路径;2) 对列举出的存取路径成本评估,选择出最快的一个存取路径。影响存取路径的因素主要有以下几个方面:连接顺序, 连接方法, 存取方法等,本文就具体针对表连接做个简单的分析。   4 连接的理解   多张数据表查询时就要用到连接操作,连接表的顺序及连接的算法将极大地影响这数据库查询的速度和效率。数据库优化器提供了一系列技术来用于连接表数据。当在 FROM 子句中引用多个数据库表(或指定了 JOIN 子句)时,SQL 会请求DBMS执行连接操作。   那么DBMS优化器是如何做这件事?每个多表查询会分解成数个单独的存取路径。为完成此连接操作, DBMS优化器

文档评论(0)

heroliuguan + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8073070133000003

1亿VIP精品文档

相关文档