OLAP和OLTP在Oracle中的作用是什么?

分类:编程技术 时间:2024-02-20 15:27 浏览:0 评论:0
0
本期小编就给大家讲讲OLAP和OLTP在Oracle中的作用。文章内容丰富,从专业角度进行了分析和描述。希望您能通过阅读本文有所收获。


什么是OLTP

OLTP也叫Online TransactionProcessing(在线事务处理),代表了一种事务性很强的系统,一般来说他们是所有高度可用的在线系统,专注于小交易和小查询。在评估他们的系统时,他们通常会查看每秒执行的事务和执行 SQL 的数量。在这样的系统中,单个数据库往往每秒处理数百或数千个Transaction,而Select语句的执行量为每秒数千甚至数万。典型的OLTP系统有电子商务系统、银行、证券等,比如美国eBay的商业数据库,就是一个非常典型的OLTP数据库。

OLTP 系统中最常见的瓶颈是 CPU 和磁盘子系统。

(1)CPU瓶颈往往体现在逻辑读取总量和计算函数或进程上。逻辑读总量等于单条语句的逻辑读数乘以执行次数。如果单个语句的执行速度很快,但是执行次数非常多,也可能会导致逻辑读总量很大。设计方法和优化方法是减少单个语句的逻辑读取,或者减少其执行次数。另外,一些计算函数的频繁使用,如自定义函数、解码等,也会消耗大量的CPU时间,导致系统负载增加。正确的设计方法或者优化方法需要尽可能避免计算过程,比如将计算结果保存到统计表就是一个很好的方法。

(2) 在OLTP环境中,磁盘子系统的承载能力一般取决于其IOPS处理能力。因为在OLTP环境中,物理磁盘读取一般都是db file顺序读取,即Single block读取,但是读取次数非常频繁。如果磁盘子系统无法频繁处理其 IOPS,则会出现重大性能问题。

OLTP比较常用的设计和优化方法是Cache技术和B树索引技术。 Cache决定了很多语句不需要从磁盘子系统获取数据。因此,Web缓存和Oracle数据缓冲区对于OLTP系统来说非常重要。非常重要。另外,在索引使用方面,语句越简单越好,这样执行计划稳定,必须使用绑定变量。减少语句解析,尽量减少表关联,尽量减少分布式事务,基本不使用分区技术,中压技术hnology、并行技术和位图索引。由于并发量非常高,批量更新必须分批快速提交,避免阻塞。

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

除了绑定变量之外,这里的性能还可能受到热块的影响。当一个块被多个用户同时读取时,Oracle需要使用Latch来序列化用户的操作,以保持数据的一致性。当一个用户获得了latch后,其他用户只能等待。用户获取该数据块的次数越多,等待的情况就越明显。这是热量和速度的问题。这个热块m可以是数据块或回滚结束块。对于数据块来说,通常是数据库中数据分布不均匀造成的。如果是索引数据块,可以考虑创建反向块来达到数据重新分布的目的。对于回滚段数据块,可以适当多加几个。回滚段以避免这种争用。

什么是OLAP

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

磁盘子系统的吞吐量通常取决于磁盘的数量。此时Cache为b基本上无效。数据库的读写类型基本都是db文件分散读和直接路径读/写。 。尽量使用更多的磁盘和更大的带宽,例如4Gb光纤接口。

在OLAP系统中,经常会用到分区技术和并行技术。

分区技术在OLAP系统中的重要性主要体现在数据库管理上。例如,可以通过分区交换实现数据库加载,通过备份分区表空间实现备份,通过分区删除数据等。至于分区对性能的影响,它可以使一些大表的扫描速度非常快(只扫描单个分区)。另外,如果分区与并行性结合起来,可以使整个表的扫描变得非常快。总之,分区的主要作用是管理方便。并不能绝对保证查询性能的提升浪漫。有时分区会提高性能,有时会降低性能。

除了将并行技术与分区技术相结合之外,在Oracle 10g中,还与RAC相结合,实现了多个节点的同时扫描。效果也很好。一个任务,比如select的全表扫描,可以均匀的处理。分布到多个RAC节点。

在OLAP系统中,不需要使用绑定(BIND)变量,因为整个系统的执行量很小,分析时间相对于执行时间可以忽略不计,而且错误执行计划是可以避免的。 。然而,位图索引和物化视图可以在 OLAP 中广泛使用。对于大额交易,尽量优化速度。不需要像OLTP那样快速提交,甚至刻意放慢执行速度。

绑定变量的真正用途是在 OLTP 系统中。该系统通常具有这样的特点:连续的数量rrent用户规模大,用户请求非常密集,这些请求的SQL请求大部分都可以被复用。的。

对于OLAP系统,大多数时候,报表作业都在数据库上运行,数据库执行的基本是聚合SQL操作,例如group by。这时,将优化器模式设置为all_rows就合适了。对于一些分页操作较多的网站数据库,设置为first_rows会比较好。但有时候对于OLAP系统,当我们有分页的时候,我们可以考虑在每条SQL中使用hint。例如:

Select /*+first_rows(10) */ a.* from table a;

分离设计和优化

特别注意设计时,比如在高可用的OLTP环境中,不要盲目使用OLAP技术。

比如分区技术中,假设没有大规模使用partition关键字,而是使用其他字段作为where条件,那么如果是本地索引,就得多个索引斯卡nned,性能会变得更差。要低。如果是全局索引,就失去了分区的意义。

并行技术也是如此。一般在完成大型任务时使用。例如,在现实生活中,翻译一本书时,可以先安排多个人翻译不同的章节,这样可以提高翻译的效率。翻译速度高。如果你只是翻译一本书的一页,没有必要指派不同的人翻译不同的行然后将它们组合起来,因为一个人可能已经在分配的时间内完成了翻译。

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

对于OLAP系统来说,内存优化的空间很小。提高CPU处理速度和磁盘I/O速度是提高数据库性能最直接的方法。当然,这也意味着系统成本的增加。 。

例如,我们需要聚合数亿、数十亿的数据。在内存中操作如此海量的数据是很困难的,而且也没有必要,因为数据速度很快。很少被重用,缓存没有意义,而且还会造成相当大的物理I/O。所以这类系统的瓶颈往往是磁盘I/O。

对于OLAP系统来说,SQL的优化非常重要,因为它的数据量很大,全表扫描和索引的性能差异非常大。

以上是小编给大家分享的关于OLAP和OLAP的功能Oracle 中的 OLTP。如果你正好有类似的疑惑,不妨参考上面的分析来了解一下。如果您想了解更多相关知识,请关注行业资讯频道。

1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > OLAP和OLTP在Oracle中的作用是什么?

用户评论