- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SQL语句调优
对于数据库管理员,调优数据库常常是一项挑战。调优应用程序是一种方法,但在大多数生产系统中DBA很少甚至不能更改源代码,因此限制了他们调优应用程序的能力。通常最有效的调优方法是解决问题的根源,即从 SQL语句本身入手。通常通过查找哪些 SQL语句消耗的资源最多来获得,然后决定采取一定的措施来减少资源消耗。SQL是标准的数据库查询语言。从某种意义上说,SQL很简单,因为每个接触过数据库的人都会使用;但从另一个角度来看,SQL 也很复杂,因为要想编写出简洁、高效的SQL语句并不是一件很容易的事。
在DB2数据库中,SQL语句分为动态SQL语句和静态SQL语句,在本书的“第5章DB2性能监控”中,我们给大家讲解了如何监控数据库并定位最消耗资源的SQL语句。那么当我们找出这些“恶劣”的SQL后,如何进行调整呢?接下来我们将讲解如何调优SQL。
11.2 通过解释工具分析SQL语句执行计划
将一条 SQL语句提交给 DB2数据库引擎进行处理时,DB2优化器会对其加以分析,以生成访问计划。访问计划包括将用于执行该语句的策略的详细信息(例如是否使用索引;若有排序方法,需要怎样的排序方法等)。如果该SQL语句是在一个应用程序中编写的,则访问计划生成于预编译时,另外还会生成一个可执行形式的访问计划,它作为称为包的对象存储在系统中。但若语句是通过 C提交的,或者语句是应用程序中的一条动态SQL语句(也就是说,这是一条在应用程序运行时构造的SQL语句),则访问计划将在该语句发出时生成,而所生成的可执行临时地存储在内存中(位于包缓冲区中PCKCACHE_SZ)),而不是系统。若发出了一条 SQL语句,而包缓冲区中已有其可执行形式的访问计划,则已有访问计划将被重用,不会再次调用DB2优化器。为什么说这非常重要?原因在于,尽管可以使用数据库系统监控器和来获取关于某些 SQL 操作执行的情况有多好(或多糟)的信息,但不能用这些监控器来分析单独 SQL语句。要执行此类分析,您必须能够捕获并查看存储于SQL语句的访问计划中的信息。而为了捕获并查看访问计划信息,必须使用DB2解释工具。
使用解释工具,您可以捕获并查看为特定SQL语句选择的访问计划的具体信息,还有可用于帮助确定编写不良的语句或数据库中弱点的性能信息。特别地,解释数据将帮助了解 如何为满足查询而访问表和索引。解释数据还可用于评估采取的任何性能调优行动。实际上,只要您更改了的某些方面、SQL语句或与语句交互的数据库,都应收集并检查解释数据,弄清楚您的更改对性能产生了怎样的效果(如果有效果的话)。理解为一个查询选择的执行计划。查看用于优化 SQL语句的数据库统计。
确定是否使用索引来访问表数据。
允许您进行前后对比,从而查看性能调优的效果。
获得访问计划执行的各操作的详细信息,包括各操作的预计成本。
辅助设计应用程序。
确定应何时重新应用程序。
辅助数据库设计。必须首先创建一组特殊的表解释表之后才能捕获解释信息。表11-1 列出了所解释表用于的信息。
表11- 解释表表名内容EXPLAIN_ARGUMENT 包含所用各独立操作符的独特特征(如果存在的话)EXPLAIN_INSTANCE 包含所解释的SQL语句的源的基本信息,还有关于进行解释的环境的信息(EXPLAIN_INSTANCE表是所有解释信息的主要控制表。其他解释表中的各行数据显式地链接到该表中的各行)EXPLAIN_OBJECT 包含关于为 SQL语句生成的访问计划所需的数据对象的信息EXPLAIN_OPERATOR 包含 SQL 编译器为满足 SQL语句需的所有操作符EXPLAIN_PREDICATE 包含确定特定操作符应用哪些谓词的相关信息EXPLAIN_STATEMENT 包含在得到不同级别的解释信息时存在的SQL语句文本。用户输入的原始SQL语句存储在该表中,另外还有DB2优化器用于选择满足 SQL语句的访问计划的版本(后一种版本可能与原始版本的语句略有差异,因为 SQL Precompiler 可能已通过额外的谓词重写和/或增强了该语句)EXPLAIN_STREAM 包含关于各单独操作符和数据对象之间存在的输入输出数据流的信息。(数据对象本身显示于EXPLAIN_OBJECT表中,而数据流中涉及的操作符可在EXPLAIN_OPERATOR表中找到。)在获得一条 SQL语句的解释数据之前,请查看DB2 安装目录下的qllib/misc/explain.ddl’或qllib\misc\explain.ddl’,以找到 Explain Tables的DDL。必须使用跟调用explain工具的授权ID相同的模式定义一组 explain表。db2 –tvf EXPLAIN.DDL
要清除 explain表,发出
您可能关注的文档
最近下载
- 雷赛智能L6RS系列交流伺服系统使用手册.pptx VIP
- 弘历软件大战略功能讲解.ppt VIP
- 北京化工大学实验二二氧化碳的PVT测定报告.pdf VIP
- 农产品食品检验员职业技能竞赛理论考试题库资料(含答案).pdf
- 黑布林格列佛游记中文翻译.docx VIP
- 绿色建筑、节能建筑专项施工方案.docx
- 冀教版九年级上册数学精品授课课件 第二十七章 反比例函数 27.1 反比例函数.ppt VIP
- 23年秋七年级劳动技术 第一单元 传统工艺制作编制收纳筐 教案.docx VIP
- 2025年恒丰银行校园招聘笔试参考题库附答案解析.docx VIP
- 2014水利工程施工监理规范SL288-2014【参考】.doc VIP
文档评论(0)