医院信息系统软硬件性能优化方案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
[背景] (2)
[目标] (2)
[性能分析] (2)
[优化内容和步骤] (2)
[结果检验和日常核查] (4)
[注明] (4)
[背景]
随着医院业务量的增长和所使用信息系统模块的增加,数据库容量增长很快,三级医院保留半年的数据情况下,可以达到25G-30G,且使用模块和接口的数量也在增加,现象是速度明显放慢,操作人员使用不顺畅,影响了窗口正常工作,带来软件性能低下的评价。
硬件方案设计时要考虑承载能力和生命周期;对性能问题的考虑应贯穿于开发阶段的全过程,不应只在出现问题时才考虑性能问题。
[目标]
性能调节的目的是通过将网络流通、磁盘I/O 和CPU 时间减到最小,使每个查询的响应时间最短并最大限度地提高整个数据库服务器的吞吐量。
最终通过对性能分析,制定相应的编程规范,引导开发工作,提高产品质量。
[性能分析]
分析对象:
一、服务器
1、处理器:峰值在85%以下
2、缓存、内存:达到一个稳定值
3、磁盘:检测磁盘错误信息和磁盘空间大小(!!)
4、网络:跟踪网络流量
二、数据库
三、应用程序
分析手段方式:
1、性能跟踪器:发现服务器性能瓶颈
2、检查数据库(使用dbcc工具):是否是数据库对象错误引起
3、SQL SERVER Profiler:跟踪软件后台脚本性能,通过统计分析语句问题
4、主业务程序单元运行调试
5、其他跟踪分析工具
[优化内容和步骤]
一、硬件配置
1、硬件性能降低原因
(1)资源不足,并且需要附加或升级的组件;局部硬件存在瓶颈
(2)资源共享工作负载不平均,需要平衡。
(3)资源出现故障,需要替换。
(4)资源不正确,需要更改配置设置。
2、解决办法(升级的量级待定?)
(1)服务器升级硬件配置或增加服务器,更改软件配置
(2)升级网络设备,或更改逻辑结构
(3)客户端升级硬件配置
二、软件优化
1、配置优化
1)负荷分摊:不同系统的数据库分开配置服务器。坚持将决策支持和联机事务处理(OLTP) 查询混在一起
2)服务配置:
(1)命名管道与TCP/IP的使用;
(2)SQL Server 内存分配设置
(3)最大化吞吐量:是否需要配置连接数量
(4)配置虚拟内存:配置合适的值,SQL Server最多能利用2GB虚拟内存,当给SQL
Server分配的虚拟内存多于可用的物理内存时,会降低SQL的性能
(5)使用哪种类型的磁盘硬件,如 RAID(独立磁盘冗余阵列)设备。
(6)如何将数据放置在磁盘上:怎样放置文件组
(7)如何适当设置数据库的所有配置参数以使数据库很好地运行:例如简单日志等
3)缩减数据库:导出数据到历史库、年表,收缩数据库;尽可能减少日表数据和正式库数据4)优化tempdb 性能,合理配置文件增长比,初始化大小防止频繁扩展。对于日志文件放到单独的磁盘上,定期清理日志文件。
2、程序优化
1)适当修改索引:针对我们程序读写特点,增加或减少索引,通过跟踪执行计划分析。
2)重建索引
3)优化处理流程,单元处理流程,和业务处理流程
4)修改SQL语句:
(1)能用表的就不用试图,视图中多用静态表
(2)无须用年表的就不要关联年表
(3)多表关联时可以考虑分步骤关联
(4)只在必要时才使用游标
(5)不要使用SELECT *
(6)不要给“性别”列创建索引
(7)使用适当的事务,尽可能简短
(8)不要使用INSERT导入大批的数据
(9)在细节表中插入纪录时,不要在主表执行SELECT MAX(ID)
(10)尽量不要使用TEXT数据类型
(11)tempdb的使用规范:
i. 尽量避免使用distinct、order by、group by、having、join、cumpute,因为这些语
句会加重tempdb的负担。
ii. 避免频繁创建和删除临时表,减少系统表资源的消耗。
iii.在新建临时表时,如果一次性插入数据量很大,那么可以使用select into代替create
table,避免log,提高速度;如果数据量不大,为了缓和系统表的资源,建议先create
table,然后insert。
iv. 如果临时表的数据量较大,需要建立索引,那么应该将创建临时表和建立索引的
过程放在单独一个子存储过程中,这样才能保证系统能够很好的使用到该临时表的
索引。
v. 如果使用到了临时表,在存储过程的最后务必将所有的临时表显式删除
vi. 慎用大的临时表与其他大表的连接查询和修改,减低系统表负担,因为这种操作
会在一条语句中多次使用tempdb的系统表。
(12)用exists替代in ,可以提高查询的效率
(13)通过使用存储过程,可以将网络往返减到最小,存储过程中使用SET NOCOUNT 可以减少返回给客户端的消息操作;使用小结果集返回;
(14)使用Prepared Execution 来执行参数化SQL 语句增加速度
(15)单个存储过程中处理分支不宜过多!
5)修改前台处理过程
(1)避免重复执行的程序:窗体、数据等,增加利用率
(2)减少频繁和数据库进行交互
三、管理优化
我们在讨论软硬件优化的同时,医院管理上也要配合计算机来实现性能优化。通过规范使用时间和权限减少系统负担;建立完善的跟踪机制,能提供完整的资料和快速定位客户端,便于问题跟踪。
[结果检验和日常核查]
对优化后的结果进行检验,证明优化的有效性和程度,为下一次优化提供参考数据。
对数据库性能跟踪应该定期执行,积累日常数据,防范于未然。
[注明]
附:
一、性能跟踪计数器的可接受值
资
源
对象\计数器建议的阈值注释
磁盘Physical Disk\% Free Space Logical Disk\% Free Space
15%
磁Physical Disk\\% Disk Time 90%