侯圣文:基于Oracle的航空运输大数据管理

第二届大数据世界论坛”(BDWF 2012)在北京召开,国际航空运输协会高级数据架构师侯胜文就对航空结算系统基于Oracle的数据架构优化做了主题演讲《航空运输大数据管理》介绍了关于大数据的最重要的特点是,传统的数据处理工具或存储管理技术不能充分处理它。因此,在竞争激烈的行业划分中,所有这些数据是如何转为可利用的知识产权,已成为行业领导者和落伍者之间的关键区分。分析工具和具有分析技能的人,将成为推动世界经济向前发展的主要动力。

航空结算系统数据库优化概述

航空结算系统提供了航空公司与代理人结算的统一方式,更快捷。3天一结算,达到了世界第一的地位。在这个主题中,侯圣文紧密围绕航空结算系统后台数 据库的性能调优工作展开。首先分析了Oracle数据库性能对航空结算系统的影响因素,进而发现了系统架构存在的问题及其他性能瓶颈;然后根据Oracle数据库性能优化方向对系统进行调整和测试;进而总结出一套行之有效的数据库优化步骤和方法。从应用设计角度、操作系统层面以及数据库层面分别 对系统性能调优策略进行了分析,找出了产生系统性能瓶颈的原因,最终给出航空结算系统的性能优化实施步骤。

航空结算系统数据库优化方向

航空计算系统分为两块,航空结算系统后台数据库体系结构结合了OLTP与OLAP类型,原有OLTP和OLAP混合部署的数据库进行分库处理,从数据库的安全性和均衡压力方 面,OLTP部分采用了Oracle RAC技术构建,优化了SQL代码、内存使用率、数据访问优化、物理存储优化,提升了系统整体的吞吐量。具体优化分为以下几个方面:

1、原有OLTP和OLAP混合部署的数据库进行分库处理

2、优势:独享处理资源、互不干扰

3、OLTP部分采用Oracle RAC技术构建

4、应用程序设计优化——最有效途径

5、SQL代码优化

6、内存使用优化

7、数据访问优化

8、物理存储优化

9、系统整体吞吐量优化

数据库性能评估及影响因素分析

谈到数据库的性能评估,常用的一些指标包括系统吞吐量(更大的读写性能)、用户响应时间、数据库命中率、CPU使用情况、内存使用情况、磁盘I/O和数据加载时间。

侯圣文进一步分析了数据库性能评估,从数据库性能评估及影响因素的角度出发,对系统进行了全面地分析,找到了系统存在的主要瓶颈,并确定了优化方向,将 原有系统分为OLTP和OLAP两种不同类型的数据库,从各自的优化特点出发给出了有真对性的优化方法和实践。建立有效的监控和预防体系结构,深入研究 OLTP和OLAP类型数据库的优化调整方法,规范化数据库设计。

数据库性能评估指标有以下几方面

1.系统吞吐量

2.用户响应时间

3.数据库命中率

4.CPU使用情况

5.内存使用情况

6.磁盘I/O

7.数据加载时间

影响数据库性能的因素有,应用程序设计、应用程序SQL编码、Hint的乱用、CBO优化器模式的选择、适时使用绑定变量。优化时要根据数据库的设计,针对OLTP与OLAP系统,分别优化。最后就是优化内存的使用率,数据的加载情况和网络流量。

整个航空结算系统中具体的优化实践

通过一以下几个方面来优化你的数据库,从而达到全面优化的效果。

1、应用程序设计优化

首先要建立有效地表设计,这是优化数据库的基础,只有表的设计简单有效,才能够达到以后优化的效果。引入分区表技术,充分使用CPU资源。使用并行特性完成CTAS,使用并行特性完成索引创建有效的应用程序设计,制定SQL编写规范限制动态SQL。

2、应用程序SQL代码优化

SQL代码的优化要根据你的目标来进行,有计划地进行。使用索引技术,反响索引会降低索引块的争用,使用函数索引来提高复杂计算的效率。索引重建,减少碎片。保证数据的批量提交,尽量避免反复提交,最好是做完某一个任务提交一次。使用Hint调整执行计划——OLAP。

3、数据库设计优化

首先来说OLTP数据库,要以密集型事务,以短事务以及小的查询为主。采用Cache技术、B-tree索引技术与绑定变量,使用长事务、大查询。采用分区技术、并行技术与适当考虑使用位图索引。

4、数据安全性和可用性优化

使用Oracle RAC技术架构,拥有高可用性、高性能、按需扩充。Data Guard灾备技术结构,物理Data Guard、逻辑Data Guard。

5、内存使用率优化

Oracle内存分配策略实践OLTP预留:20、SGA:64、PGA:16 OLAP预留:20、SGA:40、PGA:40基于成本的优化器CBO定期对数据库进行数据统计分析。

6、数据访问优化

本地管理的表空间,自动跟踪表空间里的空闲块,可管理区大小,减少碎片,位图管理方式减少了回滚段信息生成,增加Oracle块大小,OLAP——数据块增加一倍,可以有效改善读写性能改进50%。

7、数据加载操作优化

SQL*Loader Direct Path,创建格式化的数据块,直接写入,避免数据库内核的I/O,远高于Conventional Path模式,使用外部表完成大量数据移迁移,实现查询数据库以外文件中的数据,方便卸载和迁移。

8、数据加载操作优化

SAME原则(Stripe And Mirror Everything),条带化以便增加吞吐量,使用镜像来提升磁盘的容错能力。使用裸设备,消除文件系统的系统开销,可增加20%的性能提升,使用ASM(自动存储管理),规划归档日志所需磁盘空间。

9、网络流量优化

使用物化视图复制数据,借助物化视图日志减少跨库更新的网络流量,使用远程过程调用,由本地应用程序调用的远程存储过程,减少客户端与服务器端的网络通讯量。

10、数据分开处理原则

首先使用分区技术,改善查询性能、改进数据库的可用性,分区设置nologging减少大型事务的影响,exchange partition提高系统可用性。其次使用临时表技术,用于改进复杂事物的处理速度,最后权衡性能优点和空间成本。

11、自动工作负载存储库

你需要生成AWR性能诊断报告,使原有的statspack升级,自动化运行工具,AWR性能诊断报告内容,关注Top 5等待事件,消耗资源的SQL语句 — “运行时间”和“运行频度”,给出系统一段时间内运行状况,最后要进行健康检查。

12、从吞吐量角度提升数据库整体性能

尽量保证在内存中完成数据库操作,利用磁盘缓存进一步提升吞吐量,分散磁盘I/O,使用比较大的数据库Block Size,控制临时表空间的使用,提升系统CPU性能。

数据库命中率优化对比

上面为没有经过优化的,下面为经过优化的

系统CPU使用情况优化对比

上面为未经优化的,下面为优化后的

总结

数据库性能优化是一个系统化循序渐进的过程结合本次成功的优化实践经验,侯圣文最后给出了可供参考的数据库优化步骤和方法。对系统进行全面分析,找到主要瓶颈,确定优化方向,原系统分拆为OLTP和OLAP两种不同类型的数据库,针对OLTP和OLAP系统分别优化,总结数据库优化步骤和方法。