[转帖]面向OLTP与OLAP系统的Oracle数据库优化方法差异的总结_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3633 | 回复: 0   主题: [转帖]面向OLTP与OLAP系统的Oracle数据库优化方法差异的总结        下一篇 
    本主题由 Administrator 于 2014-5-4 4:45:20 移动
zxl1990
注册用户
等级:上尉
经验:663
发帖:59
精华:1
注册:2012-12-19
状态:离线
发送短消息息给zxl1990 加好友    发送短消息息给zxl1990 发消息
发表于: IP:您无权察看 2012-12-19 14:19:43 | [全部帖] [楼主帖] 楼主

当前主流的应用软件系统从使用模式来说可以分为简单划分为两种,即联机事务处理系统和联机分析处理系统,本文简单就这两种类型的Oracle数据库应用的特点、性能关注点以及调整优化的策略进行总结和注意事项说明。简要概述如下。

一、 数据库业务类型分类

从数据库业务的使用模型来分类,数据处理的类型可以分成两大类:

联机事务处理OLTP(on-line transaction processing)

联机分析处理OLAP(On-Line Analytical Processing)。

OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,以完成当前小事务处理为目的,例如银行交易系统和网购系统。

OLAP是数据仓库系统的主要应用,主要是统计分析业务,提供对历史数据进行多维度的统计分析,主要服务于决策支持。

二、 系统特点

OLTP 系统关注的是数据库内存效率,需要优化内存的命令率,强调绑定变量,优化并发操作;OLAP 系统则偏重数据的统计分析,强调SQL执行市场,强调磁盘I/O,强调分区等。

OLTP与OLAP之间特点的比较如下:

对比项

OLTP
OLAP


用户规模

用户数量多,普通操作人员和基层管理人员为主

用户数量少,决策人员和高级管理人员为主

业务类型

面向应用为主的日常业务,写操作为主。

面向主题为主的统计分析业务,读操作为主。

数据对象

面对当前的最新数据,读写的记录数较少,实时更新操作,二维数据为主

面对历史数据,针对历史的数据进行操作,读写的数据记录较多,多维操作为主

业务规模

大量用户进行实时提交的小事务为特点

少量用户进行的复杂业务事物为特点

数据规模

数据库规模GB级别以上

数据库规模GB级别,甚至TB级别

三、 常见瓶颈问题 与优化策略


(一) OLTP系统



1. OLTP性能关注指标


OLTP,全称为联机事务处理(Online Transaction Processing),其特点是事务性非常高,一般都是高可用的在线系统,以小的事务以及小的查询为主,其每秒执行的Transaction以及Execute SQL的数量是其性能指标的主要指标。数据库每秒处理的Transaction达到几百以上,Select 语句的执行量每秒上千至万。典型的OLTP系统有电子商务系统和银行。

2. OLTP系统的瓶颈点


OLTP系统最容易出现瓶颈的地方就是CPU资源与IO资源。

(1) CPU资源主要消耗在逻辑读总量、自定义的函数或者存储过程上

这样的系统中单个语句执行速度虽然很快,但是执行次数非常多,同样会导致很大的逻辑读总量。要减少单个语句的逻辑读,或者是减少执行次数。自定义函数、decode等的频繁使用,也会消耗大量的CPU资源用户这些调用的解析,要尽量避免调用自定义的函数和计算过程。

(2) 磁盘子系统在OLTP环境中,它的瓶颈取决于它的IOPS处理能力.

因为在OLTP环境中,磁盘物理读一般都是db file sequential read,也就是单块读,虽然数据量不大,但是操作非常次数非常频繁。超过磁盘的IOPS的时候系统比如面临IO的性能问题。

3. OLTP系统的优化策略


OLTP常用的设计与优化方式为:Cache技术、B-tree索引技术、绑定变量和热块争用处理

(1) Cache技术使得数据可以从内存获取,相对于从磁盘子系统获得数据有数量级上的响应优势,Oracle data buffer、应用服务器的buffer以及Web cache优化是提高OLTP系统的好对策。

(2) B-tree索引优先考虑。简洁语句格式,减少语句解析,尽量减少表关联,尽量减少分布式事务,基本不使用分区技术、物化视图技术、并行技术及位图索引。

(3) OLTP 系统的SQL语句提交非常频繁,所以数据库的变更也非常频繁。尽可能让数据块保存在内存当中,对于SQL来说,尽可能使用变量绑定技术来达到SQL 重用,减少物理I/O 和重复的SQL 解析。 

(4) 注意热块问题争用。 当数据库有争用是,Oracle使用Latch来机制串行化用户的操作。Latch机制保证了数据库的数据一致性,但是Latch机制会导致用户等待,获取这个数据块的用户越多,Latch等待就越明显,当Latch数量分配不足时候,CPU就会进行频繁的SPIN,到达阀值以后,语句暂时进入休眠,就会导致CPU进行上下文切换(contex switch),这时候CPU要保存当前进程的运行时信息如堆栈、信号量等数据结构,引入后续进程的状态信息,处理完成后再切换回原来的进程。这将消耗巨大的CPU开销。这种热块争用可能是数据块,也可能是回滚端块。 对于数据块来讲,通常是数据库的数据分布不均匀导致,如果是索引的数据块,可以考虑创建反向索引来达到重新分布数据的目的,对于回滚段数据块,可以适当多增回滚段来减少这种争用。

(二) OLAP系统



1. OLAP系统性能关注指标


OLAP也叫DSS决策支持系统,等同于数据仓库。OLAP的业务操作往往非常复杂,执行语句虽然不多,但是单条语句的耗时长,读取数据量大,IO子系统的吞吐量(带宽)是重要考核标准。

2. OLAP系统的瓶颈点


OLAP操作往往对上百万甚至上亿条记录进行统计分析,数据读取量上GB甚至几十GB以上,受限于数据库内存,通过 Cache来缓存基本没有效果。

此时需要突破的瓶颈是IO子系统的吞吐量,而该吞吐量首先受限于磁盘的个数或者磁盘系统的阵列策略。

3. OLAP系统的优化策略


在OLAP系统中,常使用分区技术、并行技术。

(1) 分区技术在OLAP系统中的获益主要体现在数据库管理上,分区主要的功能是管理上的方便性,它并不能绝对保证查询性能的提高,有时候分区会带来性能上的提高,有时候会降低。下列情况可以使得效率提升。如表分区可以减少表扫描的IO,结合并行的话,全表扫描的效率也提高。

(2) 并行技术如RAC中的多节点的同时扫描,把任务分布在多个RAC的节点。

(3) 由于Cache作用效果不大,OLAP在内存上可优化的余地很小,增加CPU 处理速度和磁盘I/O 速度或者数量,或者优化磁盘阵列都能直接的提高数据库性能,提高带宽等。但成本大,需要额外硬件投入。

四、 其他注意事项:

(1) 分区技术要慎用,对分区索引有性能提高的促进。但是对不使用分区索引的语句时分区技术并无性能提高,甚至造成性能降低,如全局索引和本地索引。

(2) 并行技术适用于大型的任务时候才有性能提高,小事务的并行计算甚至会导致性能下降,因为事务并行分配同样需要开销资源。

(3) 绑定变量的策略适用于OLTP系统,不适用于OLAP系统中。OLAP系统因为整个系统的语句执行数量很小,分析时间远远小于执行时间。OLTP系统通常用户并发数很大,用户的请求十分密集,通过使用绑定变量可以使得SQL实现重用。

(4) 为避免阻塞和死锁,不建议用在OLTP环境中使用位图索引。物化视图和触发器也类似,在DML频繁的OLTP系统上,很容易成为瓶颈,甚至是Library Cache等待;而位图索引适用在OLAP则可能会因为使用恰当而提高查询性能。OLTP注重的是快速提交处理,OLAP注重的是大吞吐处理。

(5) 对于OLAP系统,SQL 语句逻辑优化贡献大,因为它的数据量很大,是否全表扫描和索引是否有效利用都将导致性能迥然不同。

该贴由system转至本版2014-5-4 4:45:20




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论