系统性能(predictable performance)是否可预测

关于可预测的系统性能(predictable performance)

上周看Oracle 在美国三藩Openworld的视频,其中Oracle中间件研发的老大Thomas Kuian提到了可预测的系统性能。看看现在的技术发展,再想想以前自己做项目的经历,真有一种忆苦思甜的感觉。

记得刚毕业那会儿,9798年左右大型的业务系统还都是基于C/S(客户端/服务器)架构来设计,前端工具一般是delphipowerbuilderVC等工具来实现,后端是Oraclesybaseinformix等数据库系统。客户端的数量一般都是固定的,至少是可预测的,网络的性能不高。记得在几个大的应用系统中,系统刚上线时效率还不错,至少客户能接受,但随着时间的流逝,系统的效率也跟着流逝,一般一年后,系统的效率就难以忍受了,为了达到现在称之为“可预测的性能”,我们想尽了各种办法,现在归纳起来,可以从以下几个着眼点来看:

一、减少数据库I/O的访问量:具体方法分为架构层面和调优层面,架构层面如将历史数据和当前数据分离,当前业务系统只保留最近一段时间的数据,最典型的一次经历是为了保证系统的效率,我们将客户的核心系统表分成了366个分区,每天的数据都单独存放于一个分区上,这样可以保证系统每次只访问当天的数据,目前这个系统已经运行了10多年,虽然业务量已经翻了几倍,但系统性能仍然可预测。调优层面主要是建索引,优化数据库统计值,优化SQL语句,这种方法一般只能解决燃眉之急,不能从根本上解决问题,除非是程序员犯了一些非常低级的错误。在openworld 2008的大会上,Oracle还推出了HP Oracle Database Machine的硬件产品,可以在存储器层上增加处理功能,来进一步降低大型系统的IO,这也不失是一种解决大型系统效率的方法,有兴趣的同事可以到Oracle技术网站查看。

二、减少客户端和服务器端的网络交互和网络流量:具体做法为:

1.      充分利用存储过程,考虑到数据库服务器的强大处理能力,将数据处理全部通过存储过程由数据库来处理,客户端只取计算结果。

2.      利用客户端的存储功能:一般客户端都是基于windows操作系统,可以存储数据,为了节省网络资源,我们可以将一些经常用到而变化非常小,但存储容量较大(耗费网络资源)的数据(例如一些套打表格的格式)一次性下载到客户端目录或者注册表,然后由客户端在本地调用,这样既节省了网络带宽又加快了系统响应速度。

3.      自己维护客户端缓存:当时还没有内存数据库的概念,为了减少客户端和服务器端的交互,可以自己在客户端维护一块内存,将系统经常访问的数据一次性从数据库取到客户端,由客户端来维护其读写操作,目前有些集成商还在采用该技术来保证系统的性能。

三、避免锁竞争:这基本上是经验性的东西,如事务尽量小,数据库尽量利用行级锁等。本人一直认为Oracle数据库目前处于领先位置,与其针对数据库读操作采用undo tablespace技术而不是读锁,从而保证了系统处理大并发时的稳定性有很大关系。

这些方法当时确时起到了非常好的效果。但它们就像中药里面的偏方一样,不具有普适性,很多都是依靠程序员自己的经验和悟性,而且很难广为使用。随着技术的发展,系统建设进入三层架构时代,原来C/S架构时代的很多假设都被打破,如网络带宽大大增加,客户业务逻辑都基本整合在应用服务器层,客户端的数量不可预测,如何在互联网时代保证系统性能的可预测性,我们将在下一篇接着聊。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16312004/viewspace-475210/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/16312004/viewspace-475210/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值