数据处理大致可以分成两大类: 联机事务处理 OLTP( on-line transactionprocessing)、 联机分析处理 OLAP( On-Line Analytical Processing)。
( 1) OLTP 是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。 OLTP 系统强调数据库内存效率,强调内存各种指标的命令率,强调绑定变量,强调并发操作;
( 2) OLAP 是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。 OLAP 系统则强调数据分析,强调 SQL 执行市场,强调磁盘 I/O,强调分区等。
一、什么是 OLTP
OLTP,也叫联机事务处理( Online Transaction Processing),表示事务性非常高的系统,一般都是高可用的在线系统,以小的事务以及小的查询为主,评估其系统的时候,一般看其每秒执行的 Transaction 以及Execute SQL 的数量。
OLTP 系统最容易出现瓶颈的地方就是 CPU 与磁盘子系统。
( 1) CPU 出现瓶颈常表现在逻辑读总量与计算性函数或者是过程上,逻辑读总量等于单个语句的逻辑读乘以执行次数,如果单个语句执行速度虽然很快,但是执行次数非常多,那么,也可能会导致很大的逻辑读总量。设计的方法与优化的方法就是减少单个语句的逻辑读,或者是减少它们的执行次数。另外,一些计算型的函数,如自定义函数、 decode 等的频繁使用,也会消耗大量的 CPU 时间,造成系统的负载升高,正确的设计方法或者是优化方法,需要尽量避免计算过程,如保存计算结果到统计表就是一个好的方法。
( 2) 磁盘子系统在 OLTP 环境中,它的承载能力一般取决于它的 IOPS 处理能力. 因为在 OLTP 环境中,磁盘物理读一般都是 db file sequential read,也就是单块读,但是这个读的次数非常频繁。
OLTP 比较常用的设计与优化方式为 Cache 技术与 B-tree 索引技术, Cache决定了很多语句不需要从磁盘子系统获得数据, 所以, Web cache 与 Oracle databuffer 对 OLTP 系统是很重要的。另外,在索引使用方面,语句越简单越好,这样执行计划也稳定,而且一定要使用绑定变量,减少语句解析,尽量减少表关联,尽量减少分布式事务,基本不使用分区技术、 MV 技术、并行技术及位图索引。
因为并发量很高, 批量更新时要分批快速提交,以避免阻塞的发生。
OLTP 系统是一个数据块变化非常频繁, SQL 语句提交非常频繁的系统。 对于数据块来说,应尽可能让数据块保存在内存当中,对于 SQL 来说, 尽可能使用变量绑定技术来达到 SQL 重用,减少物理 I/O 和重复的 SQL 解析,从而极大的改善数据库的性能。
这里影响性能除了绑定变量,还有可能是热快( hot block)。 当一个块被多个用户同时读取时, Oracle 为了维护数据的一致性,需要使用 Latch 来串行化用户的操作。当一个用户获得了 latch 后,其他用户就只能等待,获取这个数据块的用户越多,等待就越明显。 这就是热快的问题。 这种热快可能是数据块,也
可能是回滚端块。 对于数据块来讲,通常是数据库的数据分布不均匀导致,如果是索引的数据块,可以考虑创建反向所以来达到重新分布数据的目的,对于回滚段数据块,可以适当多增加几个回滚段来避免这种争用。
二、什么是 OLAP
OLAP,也叫联机分析处理( Online Analytical Processing)系统,有的时候也叫 DSS 决策支持系统,就是我们说的数据仓库。
在这样的系统中, 考核的标准往往是磁盘子系统的吞吐量(带宽),如能达到多少 MB/s 的流量
磁盘子系统的吞吐量则往往取决于磁盘的个数,这个时候, Cache 基本是没有效果的,数据库的读写类型基本上是 db file scattered read 与 direct pathread/write。应尽量采用个数比较多的磁盘以及比较大的带宽,如 4Gb 的光纤接口。
在 OLAP 系统中,常使用分区技术、并行技术
分区技术在 OLAP 系统中的重要性主要体现在数据库管理上,比如数据库加载,可以通过分区交换的方式实现,备份可以通过备份分区表空间实现,删除数据可以通过分区进行删除,至于分区在性能上的影响,它可以使得一些大表的扫描变得很快(只扫描单个分区)。 另外,如果分区结合并行的话,也可以使得整
个表的扫描会变得很快。 总之,分区主要的功能是管理上的方便性,它并不能绝对保证查询性能的提高,有时候分区会带来性能上的提高,有时候会降低。
在 OLAP 系统中,不需要使用绑定( BIND)变量,因为整个系统的执行量小,分析时间对于执行时间来说,可以忽略,而且可避免出现错误的执行计划。但是 OLAP 中可以大量使用位图索引,物化视图,对于大的事务,尽量寻求速
度上的优化,没有必要像 OLTP 要求快速提交,甚至要刻意减慢执行的速度。绑定变量真正的用途是在 OLTP 系统中,这个系统通常有这样的特点,用户并发数很大,用户的请求十分密集,并且这些请求的 SQL 大多数是可以重复使用的。
对于 OLAP 系统来说,绝大多数时候数据库上运行着的是报表作业, 执行基本上是聚合类的 SQL 操作,比如 group by,这时候, 把优化器模式设置为 all_rows是恰当的。 而对于一些分页操作比较多的网站类数据库,设置为 first_rows 会更好一些。 但有时候对于 OLAP 系统,我们又有分页的情况下,我们可以考虑在
每条 SQL 中用 hint。 如:Select /+first_rows(10) / a.* from table a;
三、分开设计与优化
如分区技术,假设不是大范围地使用分区关键字,而采用其它的字段作为where 条件,那么,如果是本地索引,将不得不扫描多个索引,而性能变得更为低下。如果是全局索引,又失去分区的意义。
并行技术也是如此,一般在完成大型任务时才使用,如在实际生活中,翻译一本书,可以先安排多个人,每个人翻译不同的章节,这样可以提高翻译速度。如果只是翻译一页书,也去分配不同的人翻译不同的行,再组合起来,就没必要了,因为在分配工作的时间里,一个人或许早就翻译完了。
位图索引也是一样,如果用在 OLTP 环境中,很容易造成阻塞与死锁。但是,在 OLAP 环境中,可能会因为其特有的特性,提高 OLAP 的查询速度。 MV 也是基本一样,包括触发器等,在 DML 频繁的 OLTP 系统上,很容易成为瓶颈,甚至是 Library Cache 等待,而在 OLAP 环境上,则可能会因为使用恰当而提高查询速度。
对于 OLAP 系统,在内存上可优化的余地很小, 增加 CPU 处理速度和磁盘I/O 速度是最直接的提高数据库性能的方法,当然这也意味着系统成本的增加。比如我们要对几亿条或者几十亿条数据进行聚合处理,这种海量的数据,全部放在内存中操作是很难的,同时也没有必要,因为这些数据快很少重用,缓存起来也没有实际意义,而且还会造成物理 I/O 相当大。 所以这种系统的瓶颈往往是磁盘 I/O 上面的。
<script type="text/javascript">
$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('<ul/>').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i <= lines; i++) {
$numbering.append($('<li/>').text(i));
};
$numbering.fadeIn(1700);
});
});
</script>
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
文章“基于Oracle的OLTP与OLAP数据库设计及实现”涉及了OLTP与OLAP系统设计的关键技术。首先,文章介绍了OLAP和OLTP的基本概念以及它们的不同应用点。OLTP系统由于需要处理大量的并发用户请求,因此在设计时更侧重于...
基于Oracle的OLTP与OLAP数据库内存设计和优化.pdf
作为Oracle数据库的一部分,Oracle OLAP与Oracle数据库的集成非常紧密,可以在同一数据库环境中同时管理OLTP和OLAP工作负载,简化了系统的管理和维护。 ### Oracle OLAP的应用场景 Oracle OLAP广泛应用于各种数据...
与 OLTP 相比,OLAP 技术有着明显的差异,如原始数据、细节性数据、当前值数据等。 基本概念 ------------ 在 OLAP 中,有一些基本概念需要了解: 1. 维(Dimension):是人们观察数据的特定角度,是考虑问题时的...
#### 1.1 ORACLE OLAP与OLTP介绍 ##### 1.1.1 什么是OLTP(在线事务处理) OLTP是指针对事务处理的场景而设计的数据库应用,主要面向业务操作层的应用程序。其特点是数据量小、并发度高、实时性要求高。例如银行...
Oracle技术的学习和应用包括但不限于OLTP与OLAP的基本概念、索引的深入理解、数据库的管理与优化等。 1.1 Oracle OLAP与OLTP介绍 1.1.1 什么是OLTP(在线事务处理):OLTP系统是一种数据库管理系统,用于管理数据...
##### 1.1 ORACLE OLAP与OLTP介绍 **1.1.1 什么是OLTP** OLTP(Online Transaction Processing,在线事务处理)是针对业务系统的日常运作而设计的一种数据处理方式。它主要关注的是实时性、响应速度以及事务的准确...
### ORACLE OLAP与OLTP介绍 #### 1.1.1 什么是OLTP OLTP(Online Transaction Processing,联机事务处理)是指那些能够实时响应用户请求的事务处理系统。这类系统主要处理大量的日常业务交易,如银行转账、订单...
基于Oracle的OLTP与OLAP数据库设计及实现 基于Oracle的OLTP与OLAP数据库设计及实现是关系型数据库管理系统中的重要组成部分。 在本文中,我们将介绍OLTP和OLAP数据库设计及实现的概念,并讨论基于Oracle的OLTP和...
本文将从Oracle基础知识开始,详细讲解包括OLTP与OLAP介绍、索引详解等在内的知识点。 1. Oracle基础知识: 1.1 ORACLE OLAP与OLTP介绍: 1.1.1 OLTP(Online Transaction Processing)即联机事务处理,它是一种...
### Oracle OLAP与OLTP介绍 OLTP(On-Line Transaction Processing,联机事务处理)是指在数据库上进行的实时数据处理,如金融交易、订单处理等。OLAP(On-Line Analytical Processing,联机分析处理)则是指用于...
#### 1.1 Oracle OLAP与OLTP介绍 ##### 1.1.1 什么是OLTP OLTP(Online Transaction Processing,在线事务处理)是一种面向事务的系统设计,主要用于处理大量实时发生的业务操作,如银行交易、订单处理等。其特点...
##### 1.1 ORACLE OLAP与OLTP介绍 **1.1.1 什么是OLTP** OLTP(Online Transaction Processing),即联机事务处理,主要用于传统的数据库应用程序。它是一种能够快速响应用户需求、支持大量并发用户的事务处理方式...
该手册涵盖了 Oracle 的基础知识、OLAP 与 OLTP 介绍、索引详解、并行技术等多方面的内容。 Oracle 基础知识是学习 Oracle 的基础,包括什么是 Oracle、Oracle 的历史、Oracle 的特点等。学习 Oracle 基础知识可以...
Oracle OLAP,全称为Oracle在线分析处理,是Oracle数据库系统中的一个重要组件,专门用于支持复杂的商业智能和数据分析。本讲座将深入探讨Oracle OLAP技术及其在数据仓库和商业智能解决方案中的应用。 首先,OLAP...
##### 1.1 ORACLE OLAP与OLTP介绍 **1.1.1 什么是OLTP** OLTP(Online Transaction Processing,在线事务处理)是面向事务的应用程序的主要形式。这类系统通常用于支持业务流程中的日常操作,如订单录入、库存管理...
#### 二、OLAP与OLTP的区别 - **OLAP(联机分析处理)**:主要用于数据分析和报表生成,支持复杂的查询和聚合操作,适用于决策支持系统。 - **OLTP(联机事务处理)**:主要用于日常业务操作,如订单录入、库存管理...
【OLTP与OLAP业务系统的Oracle优化思路】 Oracle数据库在OLTP(联机事务处理)和OLAP(联机分析处理)系统中的优化策略各有侧重,主要体现在对系统特性的理解和针对不同业务需求的调整。 1. **数据库业务类型分类*...