北航数据库原理与技术第九章new分析.ppt

  1. 1、本文档共62页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
北航数据库原理与技术第九章new分析

索引调优 索引字段应当包含足够多的不同的值 表较大,但大多数的查询只会查找其中2%~4%的记录行 并非索引越多,效率就会越好 平衡查询和DML操作的要求 创建复合索引时,应注意索引字段的顺序。使用复合索引的一种好方法是:通过在复合索引中包含所有需要的列来消除数据页读操作。 注意消除重复索引。 加锁和性能 检查事务的隔离级别,并确保它没有高于所需要的级别。 确保快速地启动和提交事务。重新设计所有包含游标的事务。 如果两个程序有可能会死锁,应当确保它们按照同样的顺序对资源进行锁定。 确保客户应用程序在获取数据之后立即释放所有的锁。 * * 关系代数等价变换规则(3) 关系代数等价变换规则(4) 关系代数等价变换规则(5) 关系代数等价变换规则(6) 关系代数等价变换规则(7) 关系代数等价变换规则(8) 关系代数等价变换规则(9) 关系代数等价变换规则(10) 变换规则小结 1-2: 连接、笛卡尔积的交换律、结合律 3: 合并或分解投影运算 4: 合并或分解选择运算 5-8:选择运算与其他运算交换 5,9,10: 投影运算与其他运算交换 查询优化的一般准则 选择运算应尽可能先做。目的:减小中间关系。 在执行连接操作前对文件适当进行预处理 排序 在连接属性上建立索引 投影运算和选择运算同时做。目的:避免重复扫描关系。 把投影运算与其前面或后面的双目运算结合起来。目的:减少扫描关系的遍数。 查询优化的一般准则 某些选择运算+在其前面执行的笛卡尔积— 连接运算 找出公共子表达式 查询树 查询树 --- 关系代数表达式的树形表示. 输入关系?查询树的叶节点 关系操作? 内部节点 从底向上执行 例子(1) 一个未优化的关系代数表达式 例子(2) 初始查询树 例子(3) 规则1:尽可能早地进行选取操作 例子(4) 规则2:使用连接操作替代笛卡尔积 例子(5) 规则3:首先执行产生较小结果集的连接 例子(6) 规则4:将没有用的属性利用投影操作去掉 性能优化 数据库性能是由多个因素所构成的: 正确性(事务完整性和数据完整性) 可用性 响应时间 性能优化的工作是从项目的第一天就开始的。对数据库性能影响最大的是数据库的设计和开发。通常,所谓的性能优化实际上就是重新开发数据库系统中设计的很糟的那一部分。 优化准则 花费尽可能多的努力来设计数据库模式,所有的优化都要基于数据库模式。 集中精力优化运行最频繁的代码,而不是那些运行最慢的代码。 在升级硬件之前进行优化。即使在速度快的服务器上,坏代码仍旧是坏代码。 优化准则 列出所有可能的优化思路,即使你没有时间在现在去实施它们。 新特性会与优化竞争资源;因此,最好的办法是开发一个维持现有功能,但提高了性能的版本。 优化是一个研究与探索的过程,你很难对它做出预测。所以,最好不要对优化的效果或交付日期做出承诺。 优化准则 以索引的形式列出系统中那些易于修改和优化的部分。 集中精力修改应用程序中性能最坏的部分。 花费一些时间作为用户使用应用程序。去使用该程序的部门工作上一个星期,这将会使你产生很多有价值的灵感。 负载测试 数据负载测试 只有当数据量超出了服务器内存容量好几倍的时候,才能够对数据库模式和查询进行负载测试。 用户负载测试 只有当使用大量的用户来测试数据库时才有可能发生锁争用,而锁争用会导致严重的性能问题。 负载测试 清除测试的影响 数据库已经经过优化,它可以智能地将数据缓存在内存中,而这将会影响到后续测试的结果。因此,测试前要刷新内存,这可以通过停止并重新启动服务器实现。 影响性能的因素 规范化的数据库物理模式设计 完善的和平衡的索引策略 使用基于集合的查询方式编码,并避免以过程化(基于行的方式)来操作数据 使用数据库约束和触发器来实施业务规则 精心地设计表、索引和代码以避免锁争用 数据库设计与性能 将数据库规范化到第三范式,随后精心地实施使用高性能的、单列主键的物理设计。 不要过度地规范化数据库,或者说使数据库过度复杂化,而应当坚持不懈地努力,直至找到简单而优雅的数据库设计为止。 避免要以事务的方式在表和表之间来回倒数据的数据库设计。 数据库设计与性能 如果要使用代码来创建多个临时表或者额外的工作表,那就说明数据库的设计是不充分的。 在设计数据库模式的时候,必须考虑那些基于它的查询。 必要的时候,要勇敢地将数据从OLTP表复制到非规范化的、只读的表中去,以便加快数据库的读速度。 约束和触发器 要在数据库级实施规则,以便能够快速地执行这些规则,并保证在任何情况下都无法避开这些规则的检查。 用数据库约束来实施数据库规则和业务规则,对于那些无法用数据库约束来实施的规则,再使用触发器来实施。 触发器必须使用基于集合的DML语句,而不要使用游标。因为每一个insert、up

文档评论(0)

586334000 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档