OLAP与OLTP介绍

简介:

 联机分析处理 (OLAP) 的概念最早是由关系数据库之父E.F.Codd于1993年提出的,他同时提出了关于OLAP的12条准则。OLAP的提出引起了很大的反响,OLAP作为一类产品同联机事务处理 (OLTP) 明显区分开来。 
      当今的数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。下表列出了OLTP与OLAP之间的比较。

diyblPic
 
 
区别OLTP还是OLAP

在数据库的设计中,就算完全掌握了以上的方法,但是,在不同的数据库类型上,使用起来也是大有差别的,这就需要设计者弄清楚自己的业务类型。如果没有正确地识别自己的业务类型,就盲目地开始设计数据库,或者是盲目地寻求优化方法,则往往是把OLAP的方法使用在OLTP上,或者是把OLTP的方法使用在OLAP上。如果这样,很可能会适得其反。

什么是OLTP

OLTP,也叫联机事务处理(Online Transaction Processing),表示事务性非常高的系统,一般都是高可用的在线系统,以小的事务以及小的查询为主,评估其系统的时候,一般看其每秒执行的Transaction以及Execute SQL的数量。在这样的系统中,单个数据库每秒处理的Transaction往往超过几百个,或者是几千个,Select 语句的执行量每秒几千甚至几万个。典型的OLTP系统有电子商务系统、银行、证券等,如美国eBay的业务数据库,就是很典型的OLTP数据库。

注意:如果不特殊指定,本书中的高可用数据库都是指OLTP类型的数据库。

OLTP系统最容易出现瓶颈的地方就是CPU与磁盘子系统。

CPU出现瓶颈常表现在逻辑读总量与计算性函数或者是过程上,逻辑读总量等于单个语句的逻辑读乘以执行次数,如果单个语句执行速度虽然很快,但是执行次数非常多,那么,也可能会导致很大的逻辑读总量。设计的方法与优化的方法就是减少单个语句的逻辑读,或者是减少它们的执行次数。另外,一些计算型的函数,如自定义函数、decode等的频繁使用,也会消耗大量的CPU时间,造成系统的负载升高,正确的设计方法或者是优化方法,需要尽量避免计算过程,如保存计算结果到统计表就是一个好的方法。关于逻辑读与CPU处理能力的详细计算方法,在第12章还有详细介绍。

磁盘子系统在OLTP环境中,它的承载能力一般取决于它的IOPS处理能力,关于IOPS,在第2章中有详细介绍。因为在OLTP环境中,磁盘物理读一般都是db file sequential read,也就是单块读,但是这个读的次数非常频繁。如果频繁到磁盘子系统都不能承载其IOPS的时候,就会出现大的性能问题。另外,在第2章中,还会详细介绍存储子系统的IOPS承载力的计算问题。

OLTP比较常用的设计与优化方式为Cache技术与B-tree索引技术,Cache决定了很多语句不需要从磁盘子系统获得数据,所以,Web cache与Oracle data buffer对OLTP系统是很重要的。另外,在索引使用方面,语句越简单越好,这样执行计划也稳定,而且一定要使用绑定变量,减少语句解析,尽量减少表关联,尽量减少分布式事务,基本不使用分区技术、MV技术、并行技术及位图索引。因为并发量很高,批量更新时要分批快速提交,以避免阻塞的发生。

什么是OLAP

OLAP,也叫联机分析处理(Online Analytical Processing)系统,有的时候也叫DSS决策支持系统,就是我们说的数据仓库。在这样的系统中,语句的执行量不是考核标准,因为一条语句的执行时间可能会非常长,读取的数据也非常多。所以,在这样的系统中,考核的标准往往是磁盘子系统的吞吐量(带宽),如能达到多少MB/s的流量。

磁盘子系统的吞吐量则往往取决于磁盘的个数,这个时候,Cache基本是没有效果的,数据库的读写类型基本上是db file scattered read与direct path read/write。应尽量采用个数比较多的磁盘以及比较大的带宽,如4Gb的光纤接口。关于磁盘子系统的带宽承载量计算,在第2章也将有详细介绍。

在OLAP系统中,常使用分区技术、并行技术。如分区技术可以使得一些大表的扫描变得很快(只扫描单个分区),而且方便管理。另外,如果分区结合并行的话,也可以使得整个表的扫描会变得很快。并行技术除了与分区技术结合外,在Oracle 10g中,与RAC结合实现多节点的同时扫描,效果也非常不错,可把一个任务,如select的全表扫描,平均地分派到多个RAC的节点上去。

在OLAP系统中,不需要使用绑定(BIND)变量,因为整个系统的执行量很小,分析时间对于执行时间来说,可以忽略,而且可避免出现错误的执行计划。但是OLAP中可以大量使用位图索引,物化视图,对于大的事务,尽量寻求速度上的优化,没有必要像OLTP要求快速提交,甚至要刻意减慢执行的速度。

分开设计与优化

以上描述了OLTP与OLAP的特点,在设计上要特别注意,如在高可用的OLTP环境中,不要盲目地把OLAP的技术拿过来用。如分区技术,假设不是大范围地使用分区关键字,而采用其它的字段作为where条件,那么,如果是本地索引,将不得不扫描多个索引,而性能变得更为低下。如果是全局索引,又失去分区的意义。

并行技术也是如此,一般在完成大型任务时才使用,如在实际生活中,翻译一本书,可以先安排多个人,每个人翻译不同的章节,这样可以提高翻译速度。如果只是翻译一页书,也去分配不同的人翻译不同的行,再组合起来,就没必要了,因为在分配工作的时间里,一个人或许早就翻译完了。

位图索引也是一样,如果用在OLTP环境中,很容易造成阻塞与死锁。但是,在OLAP环境中,可能会因为其特有的特性,提高OLAP的查询速度。MV也是基本一样,包括触发器等,在DML频繁的OLTP系统上,很容易成为瓶颈,甚至是Library Cache等待,而在OLAP环境上,则可能会因为使用恰当而提高查询速度。




本文转自黄聪博客园博客,原文链接:http://www.cnblogs.com/huangcong/archive/2010/05/07/1729358.html,如需转载请自行联系原作者

相关实践学习
数据库实验室挑战任务-初级任务
本场景介绍如何开通属于你的免费云数据库,在RDS-MySQL中完成对学生成绩的详情查询,执行指定类型SQL。
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
相关文章
|
26天前
|
Cloud Native OLAP OLTP
在业务处理分析一体化的背景下,开发者如何平衡OLTP和OLAP数据库的技术需求与选型?
在业务处理分析一体化的背景下,开发者如何平衡OLTP和OLAP数据库的技术需求与选型?
123 4
|
3月前
|
SQL OLAP OLTP
【各种**问题系列】OLTP和OLAP是啥?
【1月更文挑战第26天】【各种**问题系列】OLTP和OLAP是啥?
|
6月前
|
存储 OLAP OLTP
分布式数据库的HTAP能统一OLTP和 OLAP吗?
分布式数据库的HTAP能统一OLTP和 OLAP吗?
97 0
|
11月前
|
存储 OLAP OLTP
【数据库架构】OLTP 和 OLAP 的区别
【数据库架构】OLTP 和 OLAP 的区别
|
11月前
|
存储 数据挖掘 OLAP
【数据库架构】OLTP 和 OLAP:实际比较
【数据库架构】OLTP 和 OLAP:实际比较
|
11月前
|
存储 SQL 数据挖掘
【数据管理】OLAP 与 OLTP:有什么区别?
【数据管理】OLAP 与 OLTP:有什么区别?
|
11月前
|
存储 分布式计算 安全
「技术选型」OLTP 和OLAP的异同
「技术选型」OLTP 和OLAP的异同
|
存储 消息中间件 缓存
「数据密集型系统搭建」原理篇|OLAP、OLTP,竟然是两个世界
本篇来聊聊OLAP与OLTP的区别以及它们各自的适用场景,以此话题为导引和大家聊聊技术视野与知识储备对于研发同学的重要性,站在事务处理与在线分析的角度分别论述下两个数据世界的底层构建逻辑。
517 0
「数据密集型系统搭建」原理篇|OLAP、OLTP,竟然是两个世界
|
数据挖掘 大数据 OLAP
Kudu入门_对比 _OLAP和OLTP|学习笔记
快速学习Kudu入门_对比 _OLAP和OLTP
135 0
Kudu入门_对比 _OLAP和OLTP|学习笔记
|
Oracle 关系型数据库 数据挖掘
摸鱼不如来了解--OLAP和OLTP的区别
OLAP(On-Line Analytical Processing)联机分析处理
197 0