百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

关于Oracle数据库性能优化,你可能已经走了弯路!

mhr18 2024-09-13 20:36 30 浏览 0 评论

OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,以完成当前小事务处理为目的,例如银行交易系统和网购系统。

1.OLTP性能关注指标 OLTP

全称为联机事务处理(Online Transaction Processing),其特点是事务性非常高,一般都是高可用的在线系统,以小的事务以及小的查询为主,其每秒执行的Transaction以及Execute SQL的数量是其性能指标的主要指标。数据库每秒处理的Transaction达到几百以上,Select 语句的执行量每秒上千至万。典型的OLTP系统有电子商务系统和银行。

2.OLTP系统的瓶颈点

OLTP系统最容易出现瓶颈的地方就是CPU资源与IO资源。

(1) CPU资源主要消耗在逻辑读总量、自定义的函数或者存储过程上这样的系统中单个语句执行速度虽然很快,但是执行次数非常多,同样会导致很大的逻辑读总量。要减少单个语句的逻辑读,或者是减少执行次数。自定义函数、decode等的频繁使用,也会消耗大量的CPU资源用户这些调用的解析,要尽量避免调用自定义的函数和计算过程。

(2) 磁盘子系统在OLTP环境中,它的瓶颈取决于它的IOPS处理能力.

因为在OLTP环境中,磁盘物理读一般都是db file sequential read,也就是单块读,虽然数据量不大,但是操作非常次数非常频繁。超过磁盘的IOPS的时候系统比如面临IO的性能问题。

3.OLTP系统的优化策略

OLTP常用的设计与优化方式为:Cache技术、B-tree索引技术、绑定变量和热块争用处理

(1) Cache技术使得数据可以从内存获取,相对于从磁盘子系统获得数据有数量级上的响应优势,Oracle data buffer、应用服务器的buffer以及Web cache优化是提高OLTP系统的好对策。

(2) B-tree索引优先考虑。简洁语句格式,减少语句解析,尽量减少表关联,尽量减少分布式事务,基本不使用分区技术、物化视图技术、并行技术及位图索引。

(3) OLTP 系统的SQL语句提交非常频繁,所以数据库的变更也非常频繁。尽可能让数据块保存在内存当中,对于SQL来说,尽可能使用变量绑定技术来达到SQL 重用,减少物理I/O 和重复的SQL 解析。

(4) 注意热块问题争用。 当数据库有争用是,Oracle使用Latch来机制串行化用户的操作。Latch机制保证了数据库的数据一致性,但是Latch机制会导致用户等待,获取这个数据块的用户越多,Latch等待就越明显,当Latch数量分配不足时候,CPU就会进行频繁的SPIN,到达阀值以后,语句暂时进入休眠,就会导致CPU进行上下文切换(contex switch),这时候CPU要保存当前进程的运行时信息如堆栈、信号量等数据结构,引入后续进程的状态信息,处理完成后再切换回原来的进程。这将消耗巨大的CPU开销。这种热块争用可能是数据块,也可能是回滚端块。 对于数据块来讲,通常是数据库的数据分布不均匀导致,如果是索引的数据块,可以考虑创建反向索引来达到重新分布数据的目的,对于回滚段数据块,可以适当多增回滚段来减少这种争用。

二、OLAP系统的优化思路:

OLAP是数据仓库系统的主要应用,主要是统计分析业务,提供对历史数据进行多维度的统计分析,主要服务于决策支持。

1.OLAP系统性能关注指标

OLAP也叫DSS决策支持系统,等同于数据仓库。OLAP的业务操作往往非常复杂,执行语句虽然不多,但是单条语句的耗时长,读取数据量大,IO子系统的吞吐量(带宽)是重要考核标准。

2.OLAP系统的瓶颈点

OLAP操作往往对上百万甚至上亿条记录进行统计分析,数据读取量上GB甚至几十GB以上,受限于数据库内存,通过 Cache来缓存基本没有效果。

此时需要突破的瓶颈是IO子系统的吞吐量,而该吞吐量首先受限于磁盘的个数或者磁盘系统的阵列策略。

3.OLAP系统的优化策略

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

(1) 分区技术在OLAP系统中的获益主要体现在数据库管理上,分区主要的功能是管理上的方便性,它并不能绝对保证查询性能的提高,有时候分区会带来性能上的提高,有时候会降低。下列情况可以使得效率提升。如表分区可以减少表扫描的IO,结合并行的话,全表扫描的效率也提高。

(2) 并行技术如RAC中的多节点的同时扫描,把任务分布在多个RAC的节点。

(3) 由于Cache作用效果不大,OLAP在内存上可优化的余地很小,增加CPU 处理速度和磁盘I/O 速度或者数量,或者优化磁盘阵列都能直接的提高数据库性能,提高带宽等。但成本大,需要额外硬件投入。

三、针对Oracle性能优化,个人的一点建议:

1.分区技术要慎用,对分区索引有性能提高的促进。但是对不使用分区索引的语句时分区技术并无性能提高,甚至造成性能降低,如全局索引和本地索引。

2.并行技术适用于大型的任务时才有性能提高,小事务的并行计算甚至会导致性能下降,因为事务并行分配同样需要开销资源。

3.绑定变量的策略适用于OLTP系统,不适用于OLAP系统中。OLAP系统因为整个系统的语句执行数量很小,分析时间远远小于执行时间。OLTP系统通常用户并发数很大,用户的请求十分密集,通过使用绑定变量可以使得SQL实现重用。

4.为避免阻塞和死锁,不建议用在OLTP环境中使用位图索引。物化视图和触发器也类似,在DML频繁的OLTP系统上,很容易成为瓶颈,甚至是Library Cache等待;而位图索引适用在OLAP则可能会因为使用恰当而提高查询性能。OLTP注重的是快速提交处理,OLAP注重的是大吞吐处理。

5.对于OLAP系统,SQL语句逻辑优化贡献大,因为它的数据量很大,是否全表扫描和索引是否有效利用都将导致性能迥然不同。

相关推荐

Redis合集-使用benchmark性能测试

采用开源Redis的redis-benchmark工具进行压测,它是Redis官方的性能测试工具,可以有效地测试Redis服务的性能。本次测试使用Redis官方最新的代码进行编译,详情请参见Redis...

Java简历总被已读不回?面试挂到怀疑人生?这几点你可能真没做好

最近看了几十份简历,发现大部分人不是技术差,而是不会“卖自己”——一、简历死穴:你写的不是经验,是岗位说明书!反面教材:ד使用SpringBoot开发项目”ד负责用户模块功能实现”救命写法:...

redission YYDS(redission官网)

每天分享一个架构知识Redission是一个基于Redis的分布式Java锁框架,它提供了各种锁实现,包括可重入锁、公平锁、读写锁等。使用Redission可以方便地实现分布式锁。red...

从数据库行锁到分布式事务:电商库存防超卖的九重劫难与破局之道

2023年6月18日我们维护的电商平台在零点刚过3秒就遭遇了严重事故。监控大屏显示某爆款手机SKU_IPHONE13_PRO_MAX在库存仅剩500台时,订单系统却产生了1200笔有效订单。事故复盘发...

SpringBoot系列——实战11:接口幂等性的形而上思...

欢迎关注、点赞、收藏。幂等性不仅是一种技术需求,更是数字文明对确定性追求的体现。在充满不确定性的网络世界中,它为我们建立起可依赖的存在秩序,这或许正是技术哲学最深刻的价值所在。幂等性的本质困境在支付系...

如何优化系统架构设计缓解流量压力提升并发性能?Java实战分享

如何优化系统架构设计缓解流量压力提升并发性能?Java实战分享在高流量场景下。首先,我需要回忆一下常见的优化策略,比如负载均衡、缓存、数据库优化、微服务拆分这些。不过,可能还需要考虑用户的具体情况,比...

Java面试题: 项目开发中的有哪些成长?该如何回答

在Java面试中,当被问到“项目中的成长点”时,面试官不仅想了解你的技术能力,更希望看到你的问题解决能力、学习迭代意识以及对项目的深度思考。以下是回答的策略和示例,帮助你清晰、有说服力地展示成长点:一...

互联网大厂后端必看!Spring Boot 如何实现高并发抢券逻辑?

你有没有遇到过这样的情况?在电商大促时,系统上线了抢券活动,结果活动刚一开始,服务器就不堪重负,出现超卖、系统崩溃等问题。又或者用户疯狂点击抢券按钮,最后却被告知无券可抢,体验极差。作为互联网大厂的后...

每日一题 |10W QPS高并发限流方案设计(含真实代码)

面试场景还原面试官:“如果系统要承载10WQPS的高并发流量,你会如何设计限流方案?”你:“(稳住,我要从限流算法到分布式架构全盘分析)…”一、为什么需要限流?核心矛盾:系统资源(CPU/内存/数据...

Java面试题:服务雪崩如何解决?90%人栽了

服务雪崩是指微服务架构中,由于某个服务出现故障,导致故障在服务之间不断传递和扩散,最终造成整个系统崩溃的现象。以下是一些解决服务雪崩问题的常见方法:限流限制请求速率:通过限流算法(如令牌桶算法、漏桶算...

面试题官:高并发经验有吗,并发量多少,如何回复?

一、有实际高并发经验(建议结构)直接量化"在XX项目中,系统日活用户约XX万,核心接口峰值QPS达到XX,TPS处理能力为XX/秒。通过压力测试验证过XX并发线程下的稳定性。"技术方案...

瞬时流量高并发“保命指南”:这样做系统稳如泰山,老板跪求加薪

“系统崩了,用户骂了,年终奖飞了!”——这是多少程序员在瞬时大流量下的真实噩梦?双11秒杀、春运抢票、直播带货……每秒百万请求的冲击,你的代码扛得住吗?2025年了,为什么你的系统一遇高并发就“躺平”...

其实很多Java工程师不是能力不够,是没找到展示自己的正确姿势。

其实很多Java工程师不是能力不够,是没找到展示自己的正确姿势。比如上周有个小伙伴找我,五年经验但简历全是'参与系统设计''优化接口性能'这种空话。我就问他:你做的秒杀...

PHP技能评测(php等级考试)

公司出了一些自我评测的PHP题目,现将题目和答案记录于此,以方便记忆。1.魔术函数有哪些,分别在什么时候调用?__construct(),类的构造函数__destruct(),类的析构函数__cal...

你的简历在HR眼里是青铜还是王者?

你的简历在HR眼里是青铜还是王者?兄弟,简历投了100份没反应?面试总在第三轮被刷?别急着怀疑人生,你可能只是踩了这些"隐形求职雷"。帮3630+程序员改简历+面试指导和处理空窗期时间...

取消回复欢迎 发表评论: