【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中国十大杰出数据库工程师,有着多年金融企业数据库开发运维管理经验。