自顶向下的性能优化方法论
  系统优化是包括系统设计、开发、产品上线、平台优化的全过程,不同阶段的优化工作对全系统所带来的效益是不同的。理想的性能优化论应该采用自顶向下的优化方法,即在项目设计、开发和上线等各项目阶段,均全面贯彻性能优化思想。特别是从头就开始不仅考虑业务功能的实现,而且同时考虑性能和代价。
下图是Oracle公司总结的在不同阶段进行优化工作所带来的效益和代价变化图。
 
设计阶段囊括的优化相关工作包括:
  • 业务规则的优化设计;
  • 数据库体系结构的优化设计;
  • 数据库逻辑结构设计;
  • 数据库物理结构设计;
  • 应用系统的设计;
开发阶段囊括的优化相关工作包括:
  • 合理的索引策略;
  • 合理的访问路径;
  • 优化SQL语句的分析数;
  • 充分适用PL/SQL;
  • 减少锁冲突;
发布阶段能进行的优化工作主要包括:
  • 内存和CPU的优化和调整;
  • 磁盘I/O和物理结构的设计和调整;
  • 系统资源竞争的监测和调整;
  • 操作系统平台的优化;
-----------------------------------------------------------------------------------------------------------------------------------------------------
自底向上的性能优化方法论
  前面讲述的自顶向下的性能优化过程,是比较理想的优化方法论,即在项目设计、开发和上线等各项目阶段,均全面贯彻性能优化思想。特别是从头就开始不仅考虑业务功能的实现,而且同时考虑性能和代价。
  但是,咱们大多数系统都是在系统上线,甚至出现严重问题后才开始关注如何优化。此时,最为行之有效的方法就是自底向上,即从硬件&网络->操作系统->数据库->应用软件->系统架构->业务需求。这样的顺序来诊断和定位问题。
  毕竟越往下到硬件、网络带宽,越具有通用性,也越容易理解和下手;越往上到业务需求,越体现不同业务系统的特点,也越难理解和下手。
 
以下为Oracle公司提供的自底向上性能优化过程:
  1. 检查系统的利用率
  2. 检查等待事件
  3. 检查物理I/O
  4. 确定范围——系统级、模块机、用户级?!
  5. 确定最消耗资源的SQL,STATSPACK/AWR报告、Top Session in OEM
  6. 分析执行计划 explain plan
  7. 分析访问的对象(size/cardinality)
  8. 分析连接、访问方式
  9. 找出相关问题
  10. 确定解决方案
  11. 测试解决方案
  12. 生产环境实施解决方案
  13. 分析结果
根据oracle的经验,大多数系统的性能问题还是出在应用方面。如果能拿出详细的应用优化方案,特别是优化前后的对比数据。那便是极好的了。
 
应用优化不一定需要全面了解所有模块,只需了解最消耗资源的模块,以及这些模块的数据库设计和应用SQL就可以了。甚至可以不深入理解业务功能和SQL功能,关键会分析执行计划、数据分布、如何建立索引、如何优化表连接就可以了。总之,按照上述自底向上的方法论,就能诊断出很多性能问题。
 

品味性能之道<三>:方法论的更多相关文章

  1. 品味性能之道<九>:利用Loadrunner编写socket性能测试脚本简述

            一.概述         Loadrunner拥有极为丰富的工具箱,供予我们制造出各种奇妙魔法的能力.其中就有此次要讨论的socket套接字操作.     二.socket概述     ...

  2. 品味性能之道<十一>:JAVA中switch和if性能比较

    通常而言大家普遍的认知里switch case的效率高于if else.根据我的理解而言switch的查找类似于二叉树,if则是线性查找.按照此逻辑推理对于对比条件数目大于3时switch更优,并且对 ...

  3. 品味性能之道<十>:Oracle Hint

    Hint 是Oracle 提供的一种SQL语法,它允许用户在SQL语句中插入相关的语法,从而影响SQL的执行方式. 因为Hint的特殊作用,所以对于开发人员不应该在代码中使用它,Hint 更像是Ora ...

  4. 品味性能之道<八>:Loadrunner关联技巧与字符处理

    一.概述       Loadrunner作为HP出品的性能测试工具,拥有太多奇妙魔法甜点供予性能测试人员享用,其中吃起来比较有嚼劲的那就是关联了.当然在关联之后我们还需要一些简单的字符处理,用以生成 ...

  5. 品味性能之道<七>:索引基础

    一.索引概述      索引(index),它是数据库必不可少的一部分.它其实很简单呐!很好理解.      索引好比如一本书的目录,一张地图,一个写字楼里挂在大堂墙上的公司名录,一个地铁站的出口指示 ...

  6. 品味性能之道<六>:图形化SQL分析工具

         在上一章里,重点分享了命令行SQL分析工具的使用方法.在本章将重点分享PL/SQL的SQL分析工具. 一.如何打开PL/SQL执行计划      开启PL/SQL这工具,推荐如下方法: 点击 ...

  7. 品味性能之道<五>:SQL分析工具

    一.SQL语句到底是怎么执行的? 想了解SQL语句到底是怎么执行的,那就需要进行SQL语句执行计划分析. 那什么是SQL语句执行计划呢? 就是Oracle服务器执行SQL语句的过程.例如确定是否使用索 ...

  8. 品味性能之道<四>:管理重于技术

      一.性能优化中的角色分工 (1).老外的角色分工         在oracle性能优化方法论中,将IT系统中不同角色需要承担的性能优化工作罗列如下. 各司其职的角色分工 业务分析人员 1.业务需 ...

  9. 品味性能之道<二>:性能工程师可以具备的专业素养

          性能工程师可以具备的专业素养 程序语言原理,包括:C.C++.java及jvm.ASP,因为建站大部分外围应用和中间件都是JAVA编写,大部分的电商平台采用的ASP编写,底层核心系统是C/ ...

随机推荐

  1. python list unicode转中文显示

    [u'\u773c', u'\u8179\u90e8', u'\u4e94\u5b98', u'\u53e3\u8154', u'\u8179\u90e8', u'\u53e3\u8154'] str ...

  2. Zabbix监控系统端口

    参考网站: https://www.cnblogs.com/nulige/p/7072019.html

  3. 34. CentOS-6.3安装配置Apache2.2.6

    安装说明 安装环境:CentOS-6.3安装方式:源码编译安装 软件:httpd-2.2.6.tar.gz  | pcre-8.32.tar.gz | apr-1.4.6.tar.gz | apr-u ...

  4. PCI Simple Communications Controller

    PCI Simple Communications Controller Intel Management Engine Interface (MEI)

  5. tensorflow笔记之学习率设置

    在使用梯度下降最小化损失函数时,如果学习率过大会导致问题不能收敛到最优解,学习率过小,虽然可以收敛到最优解,但是需要的迭代次数会大大增加,在Tensorflow中,可以用指数衰减法设置学习率,tf.t ...

  6. TCP/IP知识总结(TCP/IP协议族读书笔记三)

    接下来,总结传输层的两大协议UDP和TCP. 一.UDP(用户数据报协议) 讲UDP之间,先了解两个概念:有连接和无连接. 有连接:通信之前,通信双方必须建立一条通道: 无连接:不需要建立通道,发送方 ...

  7. Functional Java 学习笔记

    Functional Java Functional Java是一个在Java语言中实现函数型编程范式的类库. 从接口上看,该类库似乎与Haskell语言关系密切,接口的方法名很多来自该语言. < ...

  8. 更新日志(建议升级到2017.1.18a) && 更新程序的方法

    更新程序的步骤: 1,在控制面板里点击备份当前数据库文件到磁盘,把当天获取的信息从内存写到磁盘/存储卡.2,下载最新版的源码 wget -O "infopi.zip" " ...

  9. JDBC连接数据库创建连接对象

    1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lang.Class类的静态方法forName(String  classN ...

  10. C#实现支持单点登录的一个存储用户信息的类

    网上有很多介绍单点登录的文章,但多为架构设计以及概念性文章,而本文将介绍单点登录的具体具体实现 利用哈希表,作为保存登录用户的队列        private static Hashtable m_ ...