知识大全 SQL语句性能调整之性能调整综述

Posted 系统

篇首语:花门楼前见秋草,岂能贫贱相看老。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 SQL语句性能调整之性能调整综述相关的知识,希望对你有一定的参考价值。

SQL语句性能调整之性能调整综述  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  Oracle数据库是高度可调的数据库产品 本章描述调整的过程和那些人员应与Oracle服务器的调整有关 以及与调整相关联的操作系统硬件和软件 本章包括以下方面:

   谁来调整系统?

  什么时候调整?

  建立有效调整的目标

  在设计和开发时的调整

  调整产品系统

  监控产品系统

  谁来调整系统:

  为了有效地调整系统 若干类人员必须交换信息并牵涉到系统调整中 例如:

  应用设计人员必须传达应用系统的设计 使得每个人都清楚应用中的数据流动

  应用开发人员必须传达他们选择的实现策略 使得语句调整的过程中能快速 容易地识别有问题的应用模块和可疑的SQL语句

  数据库管理人员必须仔细地监控系统活动并提供它们的资料 使得异常的系统性能可被快速得识别和纠正

  硬件/软件管理人员必须传达系统的硬件 软件配置并提供它们的资料 使得相关人员能有效地设计和管理系统

  简而言之 与系统涉及的每个人都在调整过程中起某些作用 当上面提及的那些人员传达了系统的特性并提供了它们的资料 调整就能相对的容易和更快一些

  不幸的是 事实上的结果是 数据库管理员对调整负有全部或主要的责任 但是 数据库管理员很少有合适的系统方面的资料 而且 在很多情况下 数据库管理员往往是在实施阶段才介入数据库 这就给调整工作带来许多负面的影响 因为在设计阶段的缺陷是不能通过DBA的调整而得以解决 而设计阶段的缺陷往往对数据库性能造成极大的影响

  其实 在真正成熟的开发环境下 开发人员作为纯代码编写人员时 对性能的影响最小 此时大部分的工作应由应用设计人员完成 而且数据库管理员往往在前期的需求管理阶段就介入 为设计人员提供必要的技术支持

  调整并不是数据库管理员的专利 相反大部分应该是设计人员和开发人员的工作 这就需要设计人员和开发人员具体必要的数据库知识 这样才能组成一个高效的团队 然而事实上往往并非如此

   什么时候作调整?

  多数人认为当用户感觉性能差时才进行调整 这对调整过程中使用某些最有效的调整策略来说往往是太迟了 此时 如果你不愿意重新设计应用的话 你只能通过重新分配内存(调整SGA)和调整I/O的办法或多或少地提高性能 Oracle提供了许多特性 这些特性只有应用到正确地设计的系统中时才能够很大地提高性能

  应用设计人员需要在设计阶段设置应用的性能期望值 然后在设计和开发期间 应用设计人员应考虑哪些Oracle 特性可以对系统有好处 并使用这些特性

  通过良好的系统设计 你就可以在应用的生命周期中消除性能调整的代价和挫折 图 图 说明在应用的生命周期中调整的相对代价和收益 正如你见到的 最有效的调整时间是在设计阶段 在设计期间的调整能以最低的代价给你最大的收益

  

  图 在应用生命周期中调整的代价

  

  图 在应用生命周期中调整的收益

  当然 即使在设计很好的系统中 也可能有性能降低 但这些性能降低应该是可控的和可以预见的

   调整目标

  不管你正在设计或维护系统 你应该建立专门的性能目标 它使你知道何时要作调整 如果你试图胡乱地改动初始化参数或SQl 语句 你可能会浪费调整系统的时间 而且无什么大的收益 调整你的系统的最有效方法如下

  当设计系统时考虑性能

  调整操作系统的硬件和软件

  识别性能瓶颈

  确定问题的原因

  采取纠正的动作

  当你设计系统时 制定专门的目标;例如 响应时间小于 秒 当应用不能满足此目标时 识别造成变慢的瓶颈(例如 I/O竞争) 确定原因 采取纠正动作 在开发期间 你应测试应用研究 确定在采取应用之前是否满足设计的性能目标

  当你正在维护生产库系统时 有多种快速有效的方法来识别性能瓶颈

  不管怎样 调整通常是一系列开销 一旦你已确定了瓶颈 你可能要牺牲一些其它方面的指标来达到所要的结果 例如 如果I/O有问题 你可能需要更多内存或磁盘 如果不可能买 你可能要限制系统的并发性 来获取所需的性能 然而 如果你已经明确地定义了性能的目标 那用什么来交换高性能的决策就变的很容易的 因为你已经确定了哪些方面是最重要的 如过我的目标为高性能 可能牺牲一些空间资源

  随着应用的越来越庞大 硬件性能的提高 全面的调整应用逐渐变成代价高昂的行为 在这样情况下 要取得最大的投入/效率之比 较好的办法是调整应用的关键部分 使其达到比较高的性能 这样从总体上来说 整个系统的性能也是比较高的 这也就是有名的 / 原则 调整应用的 %(关键部分) 能解决 %的问题

  在设计和开发系统时作调整

  良好设计的系统可以防止在应用生命周期中产生性能问题 系统设计人员和应用开发人员必须了解Oracle的查询处理机制以便写出高效的SQL语句 第 章 有效的应用设计 讨论了你的系统中各种可用的配置 以及每种配置更适合哪种类型的应用 第 章 优化器 讨论了Oracle的查询优化器 以及如何写语句以获取最快的结果

  当设计你的系统时 使用下列优化性能的准则

  消除客户机/服务器应用中不必要的网络传输 使用存储过程

  使用适合你系统的相应Oracle服务器选件(例如 并行查询或分布式数据库)

  除非你的应用有特殊的需要 否则使用缺省的Oracle锁

  利用数据库记住应用模块 以便你能以每个模块为基础来追踪性能

  选择你的数据块的最佳大小 原则上来说大一些的性能较好

  分布你的数据 使得一个节点使用的数据本地存贮在该节点中

  调整产品系统

  本节描述对应用系统快速 容易地找出性能瓶颈 并决定纠正动作的方法 这种方法依赖于对Oracle服务器体系结构和特性的了解程度 在试图调整你的系统前 你应熟悉Oracle调整的内容

  为调整你已有的系统 遵从下列步骤

  调整操作系统的硬件和软件

  通过查询V $SESSION_WAIT视图 识别性能的瓶颈 这个动态性能视图列出了造成会话(session)等待的事件

  通过分析V $SESSION_WAIT中的数据 决定瓶颈的原因

  纠正存在的问题

  监控应用系统

  这主要是通过监控oracle的动态视图来完成

cha138/Article/program/Oracle/201311/17506

相关参考

知识大全 Oracle数据库SQL语句性能调整的基本原则

Oracle数据库SQL语句性能调整的基本原则  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  详

知识大全 系统优化中SQL的性能如何调整

系统优化中SQL的性能如何调整  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一问题的提出   

知识大全 测试sql语句性能

  有时候我们经常为我们的sql语句执行效率低下发愁反复优化后可还是得不到提高  那么你就用这条语句找出你sql到底是在哪里慢了  示例  SETSTATISTICSioON  &

知识大全 Oracle体系框架及SQL语句性能探讨

Oracle体系框架及SQL语句性能探讨  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  摘要基于

知识大全 oracle中怎么确定性能差的SQL语句

oracle中怎么确定性能差的SQL语句  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  前者很容

知识大全 oracle性能检测sql语句

  监控事例的等待  selecteventsum(decode(wait_Time))Prev  sum(decode(wait_Time))Currcount(*)Tot  fromv$sessi

知识大全 ORACLE性能初步调整

性能调优:ORACLE性能初步调整  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在UserSc

知识大全 Java极度性能调整

Java极度性能调整  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  有很多介绍基本的Java应用

知识大全 sql server 2008亿万数据性能优化

  根据设计惯例查询的时候主子表通过关键词字段关联查询查询语句如下  selecttopawordaqueryurlairankatitleabaiduurlaitrafficaitrafficbib

知识大全 调整 JavaTM I/O 性能

调整JavaTMI/O性能  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  调整JavaTMI/O