新疆软件开发

本站首页 软件开发 成功案例 公司新闻 公司简介 客服中心 软件技术 网站建设
  您现在的位置: 新疆二域软件开发公司 >> 开发语言 >> 文章正文

软件开发过程中的性能设计

         性能问题应该从系统设计时期开始考虑,并延续到系统的生命期终止之时。
具有可伸缩性的系统是指当系统的负载增加一倍,系统需要的资源也同样增加一倍。说起来简单,但在现实环境中确难以做到。由于管理并发用户的开销的增长、锁事务的增长、一致性读负载的增加、操作系统负载的增加、低效的SQL或索引设计导致的过高的I/O等等因素,会导致系统资源的消耗的增长远大于一倍。
破坏可伸缩性的因素:

1.低效的应用程序设计、实施和配置

2.硬件部分的规模不合适

3.软件部分的限制

4.硬件部分的限制  

系统的结构可分为硬件和软件两部分:

硬件部分包括:CPU、内存、I/O子系统和网络模块。

软件部分包括:管理用户接口、实现商业逻辑、管理用户请求和资源分配、管理数据和事务。  

在设计系统时,应该考虑以下几个问题:

系统将支持多少用户?

用户的交互方式是什么?

用户所处的位置?

网络的速度怎样?

用户将访问多少数据?有多少数据是只读访问?

用户对响应时间的要求?

用户是否需要24小时服务?

是否所有的修改需要实时完成?  

应用程序设计原则:

设计简单性原则:

1.如果表的设计复杂到没有人能够完全的理解,那么表的设计可能是比较差的。

2.如果SQL语句过长以致于优化程序无法优化该语句,那么SQL语句的设计、事务和表的设计一定存在问题。

3.如果表的相同列上被重复索引,那么索引的设计可能是有问题的。

4.如果提交的查询没有限定,以致无法迅速的将结果返回给在线用户,那么用户接口或事务的设计是有问题的。

5.如果数据库的调用被许多层软件从应用逻辑中抽象出来,那么,软件开发的方法可能存在问题。

数据建模:应当注意,不要在非核心数据单元上花费过多的时间。

表和索引的设计:选择合适的列进行索引、选择索引类型、注意索引的代价、关注索引中列的顺序。

一个表上如果有3个索引,那么当进行INSERT/UPDATE/DELETE操作时,会比不带索引的表慢大约10倍。

组合索引中,选择性高的列在前查询时需要的I/O更少。选择性低的列在前,有助于代排序操作的查询。

SQL执行效率:

数据库连接管理:应避免没有必要的过多连接。

数据库游标管理:使用cursor和绑定变量,尽量避免硬分析,较少软分析。

硬分析:sql语句第一次提交,并在共享池中无法找到。

软分析:sql语句第一次提交,但是可以在共享池中找到相同的语句。  

实施新的应用程序:

切换方式包括两种:Big Bang Approach(所有用户一次性转移到新的系统上)和Trickle Approach(用户分多次转移到新的系统上)。

性能清单列表:

1.设置MAXINSTANCES, MAXDATAFILES,MAXLOGFILES,MAXLOGMEMBERS和 MAXLOGHISTORY的值高于预期值。避免系统的增长导致必须重建控制文件。


2.设置BLOCK SIZE和优化模式与开发环境中相同。如果测试环境中的所有SQL语句的执行计划都是正确的,可以测试环境中的统计信息导入到正式库中。


3.尽量少修改初始化参数。除了SGA的组成部分和归档目录的设置,其他初始化参数尽量保持默认值,可以为以后性能优化留下一定的余地。


4.通过设置数据库对象的存储参数来管理BLOCK的争用。


5.所有的sql语句应该被优化。


6.验证中间层软件和程序采用高效的方式连接数据库。


7.验证sql语句有效的利用游标。


8.确认所有方案的对象从开发环境移植到了产品数据库中。


9.一旦完成系统的切换,建立数据库和操作系统统计信息的基线。


10.发现最先出现的瓶颈。

 

作者:未知 | 文章来源:未知 | 更新时间:2008-2-29 15:15:24

  • 上一篇文章:

  • 下一篇文章:

  • 相关文章:
    java性能优化的一些见解
    提高DataGridView性能的方法
    组件式软件系统分析与设计
    软件技术
    · 开发语言
    · Java技术
    · .Net技术
    · 数据库开发
    最新文章  
    ·搜集整理的asp.net的验证方
    ·各种FOR循环结构的整理
    ·软件项目开发中应该考虑那
    ·搜集整理的javascript sel
    ·软件开发中项目经理有那些
    ·学习如何在Lambda表达式进
    ·C++基础知识:结构体数据的
    ·C#实现短信发送程序的例子
    ·sun最近修补了一部分java的
    ·rss定制的另外一种实现方式
    ·delphi实现利用arp欺骗来实
    ·基础学习:基于WF的流程框
    ·网络编程中怎样得知一次数
    ·如何逆序输出单链表?
    ·软件开发过程中的性能设计
    关于我们 | 软件开发 | 下载试用 | 客服中心 | 联系我们 | 友情链接 | 网站地图 | 新疆电子地图 | RSS订阅
    版权所有 © 2016 新疆二域软件开发网 www.k8w.net All Rights Reserved 新ICP备14003571号
    新疆软件开发总机:0991-4842803、4811639.
    客服QQ:596589785 ;地址:新疆乌鲁木齐北京中路华联大厦A-5C 邮编:830000