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


 
 
区别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,如需转载请自行联系原作者

OLAP与OLTP介绍相关推荐

  1. Oracle OLAP 与 OLTP 介绍

    数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing).联机分析处理OLAP(On-Line Analytical Processing).O ...

  2. 混合列压缩(HCC)在OLAP及OLTP场景中的测试

    作者:李敏,云和恩墨交付工程师. 2019年度 ACOUG活动启动啦!为了感恩和回馈一直支持社区工作的技术爱好者.会员.嘉宾和合作伙伴,2019年度,我们汇集了行业大咖最新的精彩主题跟大家分享,更有惊 ...

  3. OLAP与OLTP的区别

    一.概念介绍 OLTP概念 OLTP(online transaction processing),联机事务处理过程,也称为面向交易的处理过程,其基本特征是前台接收的用户数据可以立即传送到计算中心进行 ...

  4. OLAP和OLTP比较

    https://www.cnblogs.com/lingchen-liang/p/10690619.html OLTP与OLAP的介绍 数据处理大致可以分成两大类:联机事务处理OLTP(on-line ...

  5. OLAP与OLTP的区别?

    1. OLAP与OLTP的区别? OLTP(Online transaction processing):在线/联机事务处理.典型的OLTP类操作都比较简单,主要是对数据库中的数据进行增删改查,操作主 ...

  6. 常见的几个大数据名词:OLAP、OLTP、BI到底代表着什么?

    OLAP: 联机分析处理OLAP是一种软件技术,它使分析人员能够迅速.一致.交互地从各个方面观察信息,以达到深入理解数据的目的.它具有FASMI(Fast Analysis of Shared Mul ...

  7. OLAP和OLTP的区别(基础知识) 【转】

    联机分析处理 (OLAP) 的概念最早是由关系数据库之父E.F.Codd于1993年提出的,他同时提出了关于OLAP的12条准则.OLAP的提出引起了很大的反响,OLAP作为一类产品同联机事务处理 ( ...

  8. OLAP和OLTP的区别

    OLAP和OLTP的区别 OLAP: (Online transaction processing):在线/联机事务处理.典型的OLTP类操作都比较简单,主要是对数据库中的数据进行增删改查,操作主体一 ...

  9. OLAP和OLTP基本概念和主要区别

    OLAP和OLTP基本概念和主要区别 一,OLTP概念 OLTP的全称是On-line Transaction Processing,中文名称是联机事务处理.其特点是会有高并发且数据量级不大的查询,是 ...

最新文章

  1. android -------- Lint优化工具
  2. linux重装系统后 70-persistent-net.rules 不能删除解决
  3. SpringBoot中的Quartz应用
  4. 队列的基本操作_如果让你手写个栈和队列,你还会写吗?||CSDN博客精选
  5. Linux有趣指令(一)
  6. IntelliJ IDEA 如何设置编辑窗口的背景图片
  7. java用十字链表实现无向图_实验四:图的实现与应用
  8. 【Elasticsearch】 Kibana 里程碑插件的使用
  9. linux系统学习第六天
  10. 如何有效实现软件的需求管理(1)
  11. 大数据分析如何助力制造行业
  12. python如何设置画布开始位置_如何设置亚马逊站内广告?亚马逊自动广告手动广告都在什么位置?...
  13. php socket通信(tcp/udp)
  14. 春节7天新增病毒54万 钓鱼欺诈成最大威胁
  15. 鼎立MOS测试设备调试
  16. 【APP自动化测试】Python + Appium + 模拟器 +UiAutomatorViewer 实现APP自动化测试
  17. 单片机Fault故障常见应对办法
  18. sFTP 上传或下载文件与文件夹
  19. 【常识】气体单位%Vol、ppm、%LEL
  20. 8本必读关于人工智能伦理问题、社会价值及影响书籍推荐

热门文章

  1. 通达信指标能用c语言编写吗_翔博精选指标看长做短,引用周线数据(通达信公式 副图 源码 测试图)...
  2. uboot i2c 命令的读写测试
  3. 蓝桥杯真题 a组 java_2014蓝桥杯决赛A组第5题(java)
  4. 减少访问量_Lazada:唯一一个访问量明显着下降、出现负增长10%的玩家
  5. matlab Lasso回归
  6. FPGA之道(27)VHDL的操作符号
  7. Vivado之增量编译的实现
  8. Java基础-锁机制
  9. 分布式系统数据一致性解决方案
  10. 关于vmstat,top,ps aux查看的cpu占用率不一致的问题