数据的两种处理方式 OLAP、OLTP

1、整体介绍

数据处理大致可以分成两大类:

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

    1、OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。
    2、OLTP 系统强调数据库内存效率,强调内存各种指标的命令率,强调绑定变量,强调并发操作;
    3、业务类系统主要供基层人员使用,进行一线业务操作

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

    1、OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
    2、OLAP 系统则强调数据分析,强调SQL执行市场,强调磁盘I/O,强调分区等
    3、数据分析的目标则是探索并挖掘数据价值,作为企业高层进行决策的参考

2、对比介绍

  • 2、1 联机事务处理

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

        CPU出现瓶颈常表现在逻辑读总量计算性函数或者是过程上 逻 辑 读 总 量 = 单 个 语 句 的 逻 辑 读 ∗ 执 行 次 数 逻辑读总量={单个语句的逻辑读}*{执行次数} =所以当执行次数非常多时会给CPU带来很大的压力,

        下面是几个概念的解释:

        1、数据块(Oracle Data Blocks

        简称为“块”,是Oracle最小的存储单位,Oracle数据存放在“块”中。一个块占用一定的磁盘空间。特别注意的是,这里的“块”是Oracle的“数据块”,不是操作系统的“块”。Oracle每次请求数据的时候,都是以块为单位。

        2、物理读

        数据库读写的单位是数据块。当用户最终得到的结果可能只是某个数据块中的几行或几列。当一个查询语句被执行时,服务器进程会将相关的数据块从数据文件中写入内存(buffer cache)。这就叫做物理读。每读取一个数据块,即是一次物理读。

        3、SCN(系统修订号)

        简单理解SCN就是一个数字,是用来做标记的:
        具体一点来说:Oracle中的SCN(system change number)和我们的北京时间的意义是相同的,SCN是Oracle中的时间号。为什么Oracle不用时间来界定呢?我在北京时间8:00的时候执行一条DML语句,然后修改机器上的时间为7:00,再执行一条DML语句。如果用机器上的时间区分的话,那Oracle根本区分不出来这两条DML语句的执行顺序——而这一点对于Oracle是很重要的。所以它采用自己产生的SCN来区分所有操作的先后顺序。

        4、逻辑读

        有时用户需要的并不是整个数据块,而是其中的几行或几列。从buffer cache中提取行的过程,便是逻辑读。
        而其中逻辑读又分成两种:即时读(current read)和一致性读(consistent read)。

        1、即时读:即时读就是读取数据块当前的最新数据。任何时候在buffer cache中都只有一份当前数据块。即时读通常发生在对数据进行修改,删除操作时。这时,进程会给数据加上行级锁,并且标识数据为“脏数据”。

        2、一致性读:
        一致性读就是为了保证数据的一致性。在Buffer Cache中的数据块上都会有最后一次修改数据块时的SCN
        如果一个事务需要修改数据块中数据,会先在回滚段中保存一份修改前数据和SCN的数据块,然后再更新Buffer Cache中的数据块的数据及其SCN,并标识其为“脏”数据。
        当其他进程读取数据块时,会先比较数据块上的SCN和自己的SCN。如果数据块上的SCN小于等于进程本身的SCN,则直接读取数据块上的数据;
        如果数据块上的SCN大于进程本身的SCN,则会从回滚段中找出修改前的数据块读取数据。通常,普通查询都是一致性读。
        综上所述,逻辑读的原理和过程比较复杂。逻辑读的单位并不能简单的认为是个块。

      • 2、磁盘子系统

        磁盘子系统在OLTP环境中,它的承载能力一般取决于它的IOPS处理能力. 因为在OLTP环境中,磁盘物理读一般都是db file sequential read,也就是单块读,但是这个读的次数非常频繁。如果频繁到磁盘子系统都不能承载其IOPS的时候,就会出现大的性能问题。

        几个概念的解释:

        1、子系统:

        子系统是一种模型元素,它具有包(其中可包含其他模型元素)和类(其具有行为)的语义。子系统的行为由它所包含的类或其他子系统提供。子系统实现一个或多个接口,这些接口定义子系统可以执行的行为。更多…

        2、磁盘子系统:
        对于应用服务器,磁盘子系统可以被看成是一个硬盘服务器。应用服务器使用诸如 SCSI这样的标准I/O技术连接到磁盘子系统的端口,从而可以使用磁盘子系统提供的存储能力。磁盘子系统的内部结构对应用服务器完全隐蔽,应用服务器仅看到磁盘子系统向它提供的硬盘。更多…

        转自: https://blog.csdn.net/tianlesoftware/article/details/6199816

        3、IOPS(Input/Output Operations Per Second)

        IOPS即每秒进行读写操作的次数,是一个用于计算机存储设备(如硬盘(HDD)、固态硬盘(SSD)或存储区域网络(SAN))性能测试的量测方式,和其他性能测试一样,存储设备制造商提出的IOPS不保证就是实际应用下的性能。

    优化方式:

    • Cache技术

      Cache决定了很多语句不需要从磁盘子系统获得数据,所以,Web cache与Oracle data buffer对OLTP系统是很重要的。

    • B-tree索引技术

      在索引使用方面,语句越简单越好,这样执行计划也稳定,而且一定要使用绑定变量,减少语句解析,尽量减少表关联,尽量减少分布式事务,基本不使用分区技术、MV技术、并行技术及位图索引。因为并发量很高,批量更新时要分批快速提交,以避免阻塞的发生。

      OLTP 系统是一个数据块变化非常频繁,SQL 语句提交非常频繁的系统。 对于数据块来说,应尽可能让数据块保存在内存当中,对于SQL来说,尽可能使用变量绑定技术来达到SQL重用,减少物理I/O 和重复的SQL 解析,从而极大的改善数据库的性能。

      这里影响性能除了绑定变量,还有可能是热快(hot block)。 当一个块被多个用户同时读取时,Oracle 为了维护数据的一致性,需要使用Latch来串行化用户的操作。当一个用户获得了latch后,其他用户就只能等待,获取这个数据块的用户越多,等待就越明显。 这就是热快的问题。 这种热快可能是数据块,也可能是回滚端块。 对于数据块来讲,通常是数据库的数据分布不均匀导致,如果是索引的数据块,可以考虑创建反向索引来达到重新分布数据的目的,对于回滚段数据块,可以适当多增加几个回滚段来避免这种争用。

  • 2、2 联机分析处理

    • 联机分析处理OLAP是一种软件技术,它使分析人员能够迅速、一致、交互地从各个方面观察信息,以达到深入理解数据的目的。它具有FASMI(Fast Analysis of Shared Multidimensional Information),即共享多维信息的快速分析的特征。其中F是快速性(Fast),指系统能在数秒内对用户的多数分析要求做出反应;A是可分析性(Analysis),指用户无需编程就可以定义新的专门计算,将其作为分析的一部 分,并以用户所希望的方式给出报告;M是多维性(Multidimensional),指提供对数据分析的多维视图和分析;I是信息性(Information),指能及时获得信息,并且管理大容量信息。更多…

      在业务系统中,我们通常使用的是OLTP数据存储,例如MySQL,PostgreSQL等。上述关系数据库系统擅长事务处理,能够很好的支持频繁数据插入和修改。一旦需要计算的数据量过大,例如数千万甚至数十亿条,或者需要进行非常复杂的计算,此时OLTP数据库系统便力不从心了。这个时候,我们便需要OLAP系统来进行处理。

      其他的请点击更多…查看,百度百科说的很详细了。

      从 功 能 角 度 来 看 , O L T P 负 责 基 本 业 务 的 正 常 运 转 , 而 业 务 数 据 积 累 时 所 产 生 的 价 值 信 息 , \color{red}{从功能角度来看,OLTP负责基本业务的正常运转,而业务数据积累时所产生的价值信息,} OLTP,
      则 被 O L A P 不 断 呈 现 , 企 业 高 层 通 过 参 考 这 些 信 息 会 不 断 调 整 经 营 方 针 , \color{red}{则被OLAP不断呈现,企业高层通过参考这些信息会不断调整经营方针,} OLAP
      也 会 促 进 基 础 业 务 的 不 断 优 化 , 这 是 O L T P 与 O L A P 最 根 本 的 区 别 \color{red}{也会促进基础业务的不断优化,这是OLTP与OLAP最根本的区别} OLTPOLAP

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OLAP(联机分析处理)。 什么是联机分析处理OLAP) 联机分析处理 (OLAP) 的概念最早是由关系数据库之父E.F.Codd于1993年提出的,他同时提出了关于OLAP的12条准则。 OLAP的提出引起了很大的反响,OLAP作为一类产品同联机事务处理 (OLTP) 明显区分开来。 当今的数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP (On-Line Analytical Processing)。OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。 OLAP数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。 下表列出了OLTPOLAP之间的比较。 OLTPOLAP用户操作人员,低层管理人员决策人员,高级管理人员功能日常操作处理分析决策DB 设计面向应用面向主题数据当前的, 最新的细节的, 二维的分立的历史的, 聚集的, 多维的集成的, 统一的存取读/写数十条记录读上百万条记录工作单位简单的事务复杂的查询用户数上千个上百个DB 大小100MB-GB100GB-TB OLAP是使分析人员、管理人员或执行人员能够从多角度对信息进行快速、一致、交互地存取,从而获得对数据的更深入了解的一类软件技术。 OLAP的目标是满足决策支持或者满足在多维环境下特定的查询和报表需求,它的技术核心是"维"这个概念。 “维”是人们观察客观世界的角度,是一种高层次的类型划分。“维”一般包含着层次关系,这种层次关系有时会相当复杂。通过把一个实体的多 项重要的属性定义为多个维(dimension),使用户能对不同维上的数据进行比较。因此OLAP也可以说是多维数据分析工具的集合。 OLAP的基本多维分析操作有钻取(roll up和drill down)、切片(slice)和切块(dice)、以及旋转(pivot)、drill across、drill through等。 ·钻取是改变维的层次,变换分析的粒度。它包括向上钻取(roll up)和向下钻取(drill down)。roll up是在某一维上将低层次的细节数据 概括到高层次的汇总数据,或者减少维数;而drill down则相反,它从汇总数据深入到细节数据进行观察或增加新维。 ·切片和切块是在一部分维上选定值后,关心度量数据在剩余维上的分布。如果剩余的维只有两个,则是切片;如果有三个,则是切块。 ·旋转是变换维的方向,即在表格中重新安排维的放置(例如行列互换)。 OLAP有多种实现方法,根据存储数据的方式不同可以分为ROLAP、MOLAP、HOLAP

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值