专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

ORACLE 性能分析及优化 day01 oracle性能参数优化

ins518 2024-10-22 14:44:14 技术文章 10 ℃ 0 评论

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

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


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

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绑定变量执行性能的影响可以忽略不计,所以根据系统来决定是否绑定变量。


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

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表