信息化 频道

从设计出发优化系统性能需要注意两点

  【IT168专稿】首届DTCC 2010数据库技术大会,4月在北京歌华开元大酒店盛大开幕,近700名中国数据库技术专业人士参加了此次技术盛会。

  在“数据管理、数据仓库、应用开发”专场中,国内某著名投行数据库主管 万正勇 就《从设计出发优化系统性能》作了精彩的主题报告 ,分享了与会的数据库爱好者。

  由于费用,性能等资源的限制,系统可靠性优化问题引起了广泛的重视.但更让企业CIO或者IT关注的是如何做出一些系统性的优化,用以来保障IT在未来的应用过程中更加简化。

  据万正勇介绍,最影响系统性能主要六大因素, 超级服务器 、SQL、超级存储存储、数据模型、优化的操作系统、系统架构等。而系统架构、数据模型、SQL等三个因素则成为最影响系统性能的因素。

  国内某著名投行数据库主管 万正勇

  万正勇认为,从性能出发的设计优化需要注意两方面:

  第一、OLTP设计优化

  采用Timesten内存数据库

  11倍到40倍的性能提高

  高可用性,高扩展性(复制)

  和oracle无缝集成,非常适合做前端事物处理和查询

  在电信金融行业广泛使用

  采用coherence,实现性能线性扩展

  比memcache可用性、可靠性高

  和oracle无缝集成,非常合适做事物处理

  添加删除节点无影响

  串行访问资源的解决方案

  减少对串行资源的共享访问,增加系统扩展性

  读写操作分散到多表进行

  采用sequence做PK(cache),不采用记录来做自增长的主键

  对多表的访问,严格采用一致的访问顺序

  高并发的解决方案

  采用中间件集群技术

  采用数据库集群

  减少资源共享

  采用缓存技术:Coherence,Webcache

  第二、查询报表设计优化

  控制访问的数据量

  提前进行数据汇总,用空间换时间

  采用程序处理,自动对新增数据进行汇总

  采用物化视图,自动进行汇总

  隔离新增数据

  适度的数据冗余(关联表,明细汇总,层级标示)

  机构部门编码采用固定格式,如10,1001,100101

  缓存访问结果,提高访问速度,降低资源消耗

  采用11g的query result cache自动缓存查询结果

  采用WebCache等软件自动缓存查询结果

  采用中间表、临时表人工缓存查询结果

  采用coherence做缓存,缓存复杂的查询或者计算

  控制业务需求

  拆分复杂的需求为多个功能模块

  控制业务需求的复杂度,尝试 say no

  整体考虑业务需求

  合适的索引(b-tree,bitmap)

  独立的报表查询系统

  合适的分区方式

  并行处理查询报表,控制并行度

  在sql一级设置并行,不要在表一级设置并行

  万正勇强调, 优化系统性能需要注意以下几个方面:

  简单的架构=高性能高扩展性

  优化的数据模型设计,适度冗余

  采用参数表定义参数,不使用硬编码

  专职开发DBA参与设计、开发

  详细全面完善的需求分析,有一定的前瞻性

  采用数据库功能保持数据完整性和一致性

  减少使用trigger,避免业务处理逻辑混乱

  简单的数据类型(number,varchar2,date)

  Web页面字符集和中间件保持一致,避免转码性能损失

  中间件字符集和数据库保持一致,避免转码性能损失

  采用自增长的sequence做主键,不要采用有明确含义字段做主键

  不要删除记录,只是修改状态,保留修改轨迹

  长时间的业务操作采用异步方式后台处理

  多层级的日志输出,方便调试优化

  限制并发连接数

  主要业务表增加修改创建时间戳字段,方便同步和比较

  用时间戳记录每个业务状态变化时间点

  万正勇简介:

  万正勇:国内某著名投资银行数据库主管,ITPUB金融行业版主,2006中国十大杰出数据库工程师,有着多年金融企业数据库开发运维管理经验。
 

0
相关文章