第2章 性能设计和开发
oracle方法论
性能问题通常是某种资源用光导致的,需要避免资源争用,减少停机时间。
理解投资成本
新的cpu、内存和更大的磁盘空间往往能够解决问题,但并非长远之计。有时还会失效。
程序应该尽可能的达到线性增长的目的,即系统性能随着数据量增长而线性衰减。
完全线性是不可能的,我们应该尽量使其线性变换。
以下问题会破坏性能的线性减弱:
(1)应用设计、执行、配置不合理
设计方面,如用户设计不合理、事务设计不合理导致锁和并行问题、连接管理设计差造成响应时间过长等
执行方面,如生产环境下i/o策略不合理、生产环境相对测试环境生成了更多执行计划、内存没有及时释放、硬件容量不对等
系统结构
包括软件结构和硬件结构
硬件主要是cpu、内存、i/o、网络四部分,一般是负责一项任务
软件一般都有多项任务,通常分为:管理用户界面、实现业务逻辑、管理用户请求和资源分配、管理数据和事务
系统需要提供给多少用户?
如果通常是一个人,不需要考虑并发冲突等问题,尽量提高响应时间
如果是可预知的用户数量,如某个公司,需要尽可能保证数据的可靠性,要考虑尽快释放连接
如果是网络环境,用户数不可预知,则要添加额外的机制确保系统组件不超过限额。
用户的交互方法是什么
用户在哪儿
网速多快
用户需要多少数据,多少是只读的
用户响应时间要求多少
需要24小时服务吗
是否允许异步执行
数据库多大
应用设计的原则
简单
数据建模
sql的执行效率
应该包括如下特点:
(1)良好的数据库链接管理
数据库连接是非常昂贵的,对于基于网络的应用,应该将数据库链接池保存,而不是为每个用户重建
(2)良好的游标使用和管理
解析是分析sql语句,生成执行计划的过程,有很多动作,如同义词检查、安全性检查、执行计划生成、将共享结构放入共享池等。分为两类:
硬解析:第一次执行,在共享池中找不到。很耗资源,需要执行解析的所有动作
软解析:共享池中有匹配的记录。但软解析也不是理想的,因为还需要句法检查和安全性检查。
解析应该越少越好
应用的执行
开发环境和语言的选择很大程度上影响应用。有以下规则:
(1)选择适合于软件的开发环境,不要让它限制了性能。
………………
经常使用的本地缓存内容有:
sysdate
当前用户名
税率、本地化信息等重复的应用变量
本地序列
缓存设计需要注意条件改变,如今天缓存的日期,到了第二天就变为不合法了
应用开发的趋势
当前应用开发中java替代c和c++,以及面向对象技术的发展影响了schema设计。
由于java是描述性语言,执行相似的逻辑时比C语言等汇编语言慢。随着客户端应用的普及,就需要更强大的CPU为客户端和中间件服务,更高效的编码。
关系型存储方式相对于面向对象的方式更加高效灵活。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26451536/viewspace-750877/ ,如需转载,请注明出处,否则将追究法律责任。