我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Oracle中OLAP 与 OLTP的作用是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Oracle中OLAP 与 OLTP的作用是什么

这期内容当中小编将会给大家带来有关Oracle中OLAP 与 OLTP的作用是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

 

什么是OLTP

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

OLTP系统最容易出现瓶颈的地方就是CPU与磁盘子系统。

(1)CPU出现瓶颈常表现在逻辑读总量与计算性函数或者是过程上,逻辑读总量等于单个语句的逻辑读乘以执行次数,如果单个语句执行速度虽然很快,但是执行次数非常多,那么,也可能会导致很大的逻辑读总量。设计的方法与优化的方法就是减少单个语句的逻辑读,或者是减少它们的执行次数。另外,一些计算型的函数,如自定义函数、decode等的频繁使用,也会消耗大量的CPU时间,造成系统的负载升高,正确的设计方法或者是优化方法,需要尽量避免计算过程,如保存计算结果到统计表就是一个好的方法。

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

OLTP比较常用的设计与优化方式为Cache技术与B-tree索引技术,Cache决定了很多语句不需要从磁盘子系统获得数据,所以,Web cache与Oracle data buffer对OLTP系统是很重要的。另外,在索引使用方面,语句越简单越好,这样执行计划也稳定,而且一定要使用绑定变量,减少语句解析,尽量减少表关联,尽量减少分布式事务,基本不使用分区技术、MV技术、并行技术及位图索引。因为并发量很高,批量更新时要分批快速提交,以避免阻塞的发生。

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

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

什么是OLAP

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

磁盘子系统的吞吐量则往往取决于磁盘的个数,这个时候,Cache基本是没有效果的,数据库的读写类型基本上是db file scattered read与direct path read/write。应尽量采用个数比较多的磁盘以及比较大的带宽,如4Gb的光纤接口。

在OLAP系统中,常使用分区技术、并行技术。

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

并行技术除了与分区技术结合外,在Oracle 10g中,与RAC结合实现多节点的同时扫描,效果也非常不错,可把一个任务,如select的全表扫描,平均地分派到多个RAC的节点上去。

在OLAP系统中,不需要使用绑定(BIND)变量,因为整个系统的执行量很小,分析时间对于执行时间来说,可以忽略,而且可避免出现错误的执行计划。但是OLAP中可以大量使用位图索引,物化视图,对于大的事务,尽量寻求速度上的优化,没有必要像OLTP要求快速提交,甚至要刻意减慢执行的速度。

绑定变量真正的用途是在OLTP系统中,这个系统通常有这样的特点,用户并发数很大,用户的请求十分密集,并且这些请求的SQL 大多数是可以重复使用的。

对于OLAP系统来说,绝大多数时候数据库上运行着的是报表作业,执行基本上是聚合类的SQL 操作,比如group by,这时候,把优化器模式设置为all_rows是恰当的。 而对于一些分页操作比较多的网站类数据库,设置为first_rows会更好一些。 但有时候对于OLAP 系统,我们又有分页的情况下,我们可以考虑在每条SQL 中用hint。 如:

Select  a.* from table a;

分开设计与优化

在设计上要特别注意,如在高可用的OLTP环境中,不要盲目地把OLAP的技术拿过来用。

如分区技术,假设不是大范围地使用分区关键字,而采用其它的字段作为where条件,那么,如果是本地索引,将不得不扫描多个索引,而性能变得更为低下。如果是全局索引,又失去分区的意义。

并行技术也是如此,一般在完成大型任务时才使用,如在实际生活中,翻译一本书,可以先安排多个人,每个人翻译不同的章节,这样可以提高翻译速度。如果只是翻译一页书,也去分配不同的人翻译不同的行,再组合起来,就没必要了,因为在分配工作的时间里,一个人或许早就翻译完了。

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

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

比如我们要对几亿条或者几十亿条数据进行聚合处理,这种海量的数据,全部放在内存中操作是很难的,同时也没有必要,因为这些数据快很少重用,缓存起来也没有实际意义,而且还会造成物理I/O相当大。 所以这种系统的瓶颈往往是磁盘I/O上面的。

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

上述就是小编为大家分享的Oracle中OLAP 与 OLTP的作用是什么了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Oracle中OLAP 与 OLTP的作用是什么

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

oltp和olap的概念是什么

OLTP(在线事务处理)和OLAP(在线分析处理)是数据处理领域中常用的两个概念。OLTP是指用于处理实时事务的数据库和系统。它主要用于处理日常的业务操作,例如银行交易、在线购物、航空订票等。OLTP系统对数据的读写操作要求高并且需要保证事
2023-10-12

DB、DW、DM、ODS、OLAP、OLTP和BI的概念是什么

DB、DW、DM、ODS、OLAP、OLTP和BI的概念是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。今天特地查了一些官方解释和很多优秀的博客文章,将关于数仓方面的一些名
2023-06-19

oracle中exists的作用是什么

在Oracle中,EXISTS是一个用于判断子查询是否返回任何行的关键字。它返回一个布尔值,即如果子查询返回至少一行,则返回TRUE;否则返回FALSE。在使用EXISTS时,常见的用法是将其与主查询中的条件进行关联,以便根据子查询的结果来
2023-08-30

oracle中decimal的作用是什么

在Oracle中,decimal是一种数值数据类型,用于存储精确的小数值。它是一种固定精度的数据类型,即具有固定的小数位数和总位数。decimal常用于需要精确计算和存储小数值的情况,例如金融应用、科学计算、货币计算等。与其他浮点数类型相比
2023-08-31

oracle中substr的作用是什么

在Oracle中,SUBSTR函数用于获取一个字符串的子字符串。它的作用是从一个字符串中截取指定长度的子字符串。SUBSTR函数通常使用以下语法:SUBSTR(string, start_position, length)其中:- stri
2023-10-11

oracle中default的作用是什么

在Oracle数据库中,DEFAULT关键字用于为列指定默认值。当向表中插入数据时,如果没有为该列指定值,那么将使用默认值。这样可以确保在插入数据时,即使没有为某些列提供值,也能保证数据的完整性和准确性。默认值可以是一个固定的值,也可以是一
oracle中default的作用是什么
2024-04-20

oracle中escape的作用是什么

在Oracle中,escape是一个用于转义特殊字符的关键字。当在字符串中使用特殊字符时,可以使用escape来告诉Oracle该特殊字符应该被当作普通字符处理,而不是具有特殊含义。这可以防止特殊字符被误解或误用,确保字符串的正确性和完整性
oracle中escape的作用是什么
2024-04-09

oracle中connect的作用是什么

在Oracle数据库中,CONNECT权限用于允许用户连接到数据库实例并登录到数据库。具有CONNECT权限的用户可以使用用户名和密码通过数据库客户端工具(如SQL*Plus、SQL Developer等)或通过应用程序与数据库进行通信。C
oracle中connect的作用是什么
2024-04-09

oracle中dbms_job的作用是什么

DBMS_JOB 是 Oracle 数据库中的一个 PL/SQL 包,用于管理后台作业任务。它允许用户在数据库中创建、调度和管理作业任务,这些作业任务可以在数据库运行时自动执行。通过使用 DBMS_JOB,用户可以在特定时间或事件触发时执行
oracle中dbms_job的作用是什么
2024-04-09

oracle中timestampdiff的作用是什么

在Oracle中,TIMESTAMPDIFF函数用于计算两个日期或时间戳之间的差异。具体来说,该函数计算两个时间戳或日期之间的时间差,并以特定的时间单位(如天、小时、分钟等)返回差异值。可以使用TIMESTAMPDIFF函数来确定两个日期或
oracle中timestampdiff的作用是什么
2024-04-09

oracle中analyze的作用是什么

在Oracle数据库中,ANALYZE命令用于收集表和索引的统计信息,以便优化查询执行计划。通过分析表和索引的统计信息,Oracle数据库可以更好地估计数据的分布和选择合适的执行计划,从而提高查询性能。ANALYZE命令可以收集表的数据分布
oracle中analyze的作用是什么
2024-04-09

oracle中sequence的作用是什么

在Oracle数据库中,Sequence(序列)是一种用于生成唯一数字值的数据库对象。它被广泛用于为表的主键字段生成唯一标识,也可以用于生成其他需要唯一数字值的场景。Sequence的主要作用如下:生成唯一的主键值:Sequence可以用
oracle中sequence的作用是什么
2024-04-09

oracle中substring的作用是什么

在Oracle中,SUBSTRING函数用于从一个字符串中提取子字符串。它的作用是根据指定的起始位置和长度,从一个字符串中截取部分字符串。SUBSTRING函数的语法如下:SUBSTRING(string, start_position
oracle中substring的作用是什么
2024-04-09

oracle中level的作用是什么

在Oracle中,LEVEL是一个伪列,用于表示查询结果中每行在查询结果集中的层次结构深度。通常在使用CONNECT BY子句进行递归查询时会涉及到使用LEVEL来判断每个节点的深度,从而实现树形结构的查询。LEVEL的作用是帮助我们确定每
oracle中level的作用是什么
2024-03-15

oracle中charindex的作用是什么

在Oracle数据库中,没有直接的Charindex函数。但是可以使用INSTR函数来实现类似的功能。INSTR函数返回一个子字符串在另一个字符串中第一次出现的位置。其语法为:INSTR(string, substring [, star
oracle中charindex的作用是什么
2024-04-15

oracle中fetch的作用是什么

在Oracle数据库中,FETCH用于从游标中检索下一行数据。FETCH语句通常与OPEN和CLOSE语句一起使用,前者用于打开游标并检索数据,后者用于关闭游标。FETCH语句可以根据需要反复调用,以便逐行检索游标中的数据。FETCH语句通
oracle中fetch的作用是什么
2024-04-09

oracle中systimestamp的作用是什么

在Oracle数据库中,SYSTIMESTAMP函数返回当前的日期和时间,包括时区信息。它返回一个时间戳数据类型,包含了当前的日期和时间,精确到毫秒。SYSTIMESTAMP函数通常用于获取当前时间,用于记录或比较时间戳信息。由于包含了时
oracle中systimestamp的作用是什么
2024-04-09

oracle中unpivot的作用是什么

在Oracle中,UNPIVOT操作用于将行数据转换为列数据。它的作用是将表中的列转换为行,并且为每个转换的行创建一个新的列来标识原始列的值。具体来说,UNPIVOT操作可以用来执行以下任务:逆转数据结构:将具有相同特征的列(例如,不同月
oracle中unpivot的作用是什么
2024-04-09

编程热搜

目录