数据库学习笔记(6)----- 关于Oracle的OLTP和OLAP(2019/3/1)

数据库学习笔记(6)----- 关于oracle的OLTP和OLAP(2019/3/1)

Oracle和MySQL不同,Oracle是没有存储引擎的概念,有的就只有是OLTP(Online Transaction Processing)联机事务处理和OLAP(OnLine Analytical Processing)联机分析处理。

对于Oracle来说,它的本身是不允许脏读注1存在的,这就导致了它的操作都具有事务性。

OLTP:传统关系型数据库的主要应用,OLTP主要强调:
1、数据库内存效率;
2、强调内存各种指标的命令率;
3、强调绑定变量;
4、强调并发操作。

一般来说,OLTP主要用于日常的数据库的操作行为,例如:查询、更改等,一般用于电信、银行、保险等数据量大、数据存储安全、数据并发程度高的行业。

OLAP:数据仓库系统的主要应用,OLAP主要强调:
1、OLAP强调数据分析;
2、强调SQL执行市场;
3、强调磁盘I/O;
4、强调分区等。

一般来说,OLAP主要为复杂的分析操作,决策等方面提供支持,并且提供直观易懂的查询结果。

具体区别情况如下:
在这里插入图片描述在OLTP中,最容易出现性能瓶颈的地方在于CPU1和磁盘子系统2
1、CPU的瓶颈期常表现在逻辑读总量与计算性函数或者是过程上,所谓的逻辑读总量,就是这条语句的执行时间*执行次数,虽然这条语句的执行时间很短,但是,次数一多,便会导致逻辑读总量增大。同时,自定义函数和Decode等函数方法的频繁使用,也需要消耗大量的CPU的时间。
2、磁盘子系统在OLTP环境中,它的承载能力一般取决于它的IOPS处理能力。 因为在OLTP环境中,磁盘物理读一般都是db file sequential read,也就是单块读,但是这个读的次数非常频繁。如果频繁到磁盘子系统都不能承载其IOPS的时候,就会出现大的性能问题。

一般来说,OLTP性能优化方法为Cache技术和B-Tree索引技术,Cache决定了很多语句不需要从磁盘子系统获得数据,而索引则是越简单越好,这样的执行计划比较稳定,一定要使用绑定变量,减少语句解析,尽量减少表关联,尽量减少分布式事务,基本不使用分区技术、MV技术、并行技术及位图索引。因为并发量很高,批量更新时要分批快速提交,以避免阻塞的发生。

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

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

在OLAP中,常使用分区技术以及并行技术,考核的标准就是磁盘子系统的吞吐量(一般按照MB/S):
1、磁盘子系统的吞吐量则往往取决于磁盘的个数,这个时候,Cache基本是没有效果的。
2、分区技术在OLAP系统中的重要性主要体现在数据库管理上,比如数据库加载,可以通过分区交换的方式实现,备份可以通过备份分区表空间实现,删除数据可以通过分区进行删除,至于分区在性能上的影响,它可以使得一些大表的扫描变得很快(只扫描单个分区)。另外,如果分区结合并行的话,也可以使得整个表的扫描会变得很快。总之,分区主要的功能是管理上的方便性,它并不能绝对保证查询性能的提高,有时候分区会带来性能上的提高,有时候会降低(这个问题就比较玄学了)。

陆陆续续写了好几天,才总算把这一段给写完,脑细胞在燃烧…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值