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最根本的区别} 也会促进基础业务的不断优化,这是OLTP与OLAP最根本的区别
-