oracle性能优化求生指南_ORACLE 性能分析及优化 day01

运维小白一枚,最近工作中数据库宕机频发,工作之余,随手整理了个人对oracle性能分析思路,欢迎高手指教。

数据库是否存在性能问题,一般在系统设计就决定了,包含软件设计/数据库设计/硬件设计,其中任何一个环节有不当处理,都有可能导致系统的性能下降,而系统的性能在多数情况下又反映为数据库性能问题。

软件设计导致的性能问题,可简单归纳为架构设计/代码编写;作为随手笔记,今天简单总结下代码编写对数据库性能的影响:

710969e03f8d6f04bf25cd43a20fa2ff.png

1、SQL代码中加入Hint约束

系统上线运行多天,但某一天突然变慢,根据从用户端发出的SQL,发现在SQL代码中加入了Hint,类似于:select /*+ index(t1 ind_t1) */ col1,col2 from t1 where col1> ... and col1<...>

猜测开发在上线前压测阶段,发现sql选择索引比全表扫描效率高,才在sql中加入了这段Hint;但为什么会突然变慢?

通过比对原始SQL和去掉Hint的SQL执行计划比对,去掉Hint的SQL虽然全表扫描,但扫描的数据块远远小于原始SQL,原因找到了,近期数据在创建索引的列上的列值重复率会远远高于从前,因为ORACLE在选择索引后,读取了更多的索引块和数据块,导致了大量的I/O操作。

2、不必要的外连接操作

外连接执行过程对于性能来说非常昂贵,对于不必要的外连接,比如担心遗漏数据而刻意写的外连接SQL就需要避免使用

3、绑定变量的SQL

很多人觉得SQL的代码优化其中一条是绑定变量,事实上,这完全取决的你的系统,OLAP绑定变量执行性能的影响可以忽略不计,所以根据系统来决定是否绑定变量。

以上个人简单的认识,还请大牛多多交流赐教

61e01c65028c564bddabd6be45e3ec7c.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值