2020-03-22-Oracle_性能优化

Category

  • 1.性能优化
      • 1.1语句共享性
        • 1.1.1SQL语句的执行过程
        • 1.1.2硬解析,软解析
        • 1.1.3绑定变量
        • 1.1.4全表扫描与数据增长的关系
        • 1.1.5优化经验
        • 1.1.6优化器
        • 1.1.7什么是统计信息
        • 1.1.8如何搜集统计信息
        • 1.1.9如何提高排序性能
      • 1.2高级性能工具
        • 1.2.1支撑工具的底层视图
        • 1.2.2等待事件
        • 1.2.3statspack工具和ASH工具
        • 1.2.4AWR
          • 1.2.4.1AWRAWR的启用
          • 1.2.4.2快照
          • 1.2.4.3模拟tx锁,利用AWR和ADDM定位问题
    • 面试问题: AWR中的DB TIME是什么? DB CPU time高:前台调用session非常忙(前台访问的会话多) 反之:非空闲等待事件多(例如锁) ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200322134421983.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjE2MTY3MA==,size_16,color_FFFFFF,t_70) DB CPU占整个DB time的5%左右,所以说明非空闲等待事件多 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200322134642870.png)
        • 1.2.5ADDM
        • 1.2.6sql tuning advisor/sql access advisor
          • 1.2.6.1sql tuning advisor
      • 1.3绑定变量
        • 1.3.1使用绑定变量的性能提升

1.性能优化

1.1语句共享性

2020-03-22-Oracle_性能优化_第1张图片
不合理的大表全表扫描:合理使用索引技术
语句共享性不好:应用绑定变量实现

参考:https://blog.csdn.net/weixin_42161670/article/details/90760935

2020-03-22-Oracle_性能优化_第2张图片

1.1.1SQL语句的执行过程

2020-03-22-Oracle_性能优化_第3张图片

1.1.2硬解析,软解析

第一次执行的sql是硬解析
在共享池里存储执行计划,第二次再执行时是软解析

1.1.3绑定变量

2020-03-22-Oracle_性能优化_第4张图片
2020-03-22-Oracle_性能优化_第5张图片
将此参数设置为FALSE,让数据库中所有涉及常量的地方全都变成变量
破坏数据库的方法:将此参数设为FALSE

1.1.4全表扫描与数据增长的关系

2020-03-22-Oracle_性能优化_第6张图片

1.1.5优化经验

根据脚本查询数据库的哪些sql需要优化

不完全,仅供参考在这里插入图片描述

1.1.6优化器

2020-03-22-Oracle_性能优化_第7张图片
2020-03-22-Oracle_性能优化_第8张图片
2020-03-22-Oracle_性能优化_第9张图片
2020-03-22-Oracle_性能优化_第10张图片
设置优化器模式
alter system set optimizer_mode=all_rows scope=both;

优化器模式,默认all rows
2020-03-22-Oracle_性能优化_第11张图片

1.1.7什么是统计信息

2020-03-22-Oracle_性能优化_第12张图片
2020-03-22-Oracle_性能优化_第13张图片

统计信息和优化器的关系
2020-03-22-Oracle_性能优化_第14张图片

1.1.8如何搜集统计信息

2020-03-22-Oracle_性能优化_第15张图片

2020-03-22-Oracle_性能优化_第16张图片
2020-03-22-Oracle_性能优化_第17张图片
2020-03-22-Oracle_性能优化_第18张图片
2020-03-22-Oracle_性能优化_第19张图片

1.1.9如何提高排序性能

2020-03-22-Oracle_性能优化_第20张图片
2020-03-22-Oracle_性能优化_第21张图片
小表作为驱动表放后边,能提高查询性能
2020-03-22-Oracle_性能优化_第22张图片
2020-03-22-Oracle_性能优化_第23张图片
2020-03-22-Oracle_性能优化_第24张图片
2020-03-22-Oracle_性能优化_第25张图片

2020-03-22-Oracle_性能优化_第26张图片

1.2高级性能工具

1.2.1支撑工具的底层视图

2020-03-22-Oracle_性能优化_第27张图片

1.2.2等待事件

2020-03-22-Oracle_性能优化_第28张图片

1.2.3statspack工具和ASH工具

2020-03-22-Oracle_性能优化_第29张图片
2020-03-22-Oracle_性能优化_第30张图片

1.2.4AWR

2020-03-22-Oracle_性能优化_第31张图片

1.2.4.1AWRAWR的启用

建议该参数为typical
2020-03-22-Oracle_性能优化_第32张图片
2020-03-22-Oracle_性能优化_第33张图片
2020-03-22-Oracle_性能优化_第34张图片

1.2.4.2快照

快照时间不建议修改
2020-03-22-Oracle_性能优化_第35张图片
在这里插入图片描述

1.2.4.3模拟tx锁,利用AWR和ADDM定位问题

AWR报告生成过程

1.两个session同时修改同一表的同一值,不提交,出现锁等待
2.DBA session 手动生成快照
SQL>exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();
3.执行脚本 
SQL>@$ORACLE/HOME/rdbms/admin/awrrpt.sql
# 脚本路径 cd $ORACLE_HOME/rdbms/admin/awrrpt.sql
------
# 产生整个数据库的AWR报告,运行脚本awrrpt.sql。
 #   @$ORACLE_HOME/rdbms/admin/awrrpt.sql 
------
# 产生某个实例的AWR报告,运行脚本awrrpti.sql。
   # @$ORACLE_HOME/rdbms/admin/awrrpti.sql 
------
# 产生某条SQL语句的AWR报告,运行脚本awrsqrpt.sql。
   # @$ORACLE_HOME/rdbms/admin/awrsqrpt.sql 


Enter value for report_type: html
Enter value for num_days:1
Enter value for begin_snap:1268  (snap id)
Enter value for forend_snap:1269 (snap id) #把有问题的时间段的呢日用包含在两次快照id间
Enter value for report_name:/home/oracle/awr20200322.html
4.awr存储的路径:计算机/文件系统/home/oracle/awr20200322.html 将该文件复制到windows系统,并双击该文件,使用浏览器打开

如何看AWR报告
报表头部分
2020-03-22-Oracle_性能优化_第36张图片
负载减档
现在已经不重视了
2020-03-22-Oracle_性能优化_第37张图片
实例的效率及命中率
最重要的部分:首要的等待事件
2020-03-22-Oracle_性能优化_第38张图片
详细的等待事件
2020-03-22-Oracle_性能优化_第39张图片
SQL语句部分
2020-03-22-Oracle_性能优化_第40张图片
2020-03-22-Oracle_性能优化_第41张图片

2020-03-22-Oracle_性能优化_第42张图片

面试问题:
AWR中的DB TIME是什么?
DB CPU time高:前台调用session非常忙(前台访问的会话多)
反之:非空闲等待事件多(例如锁)
2020-03-22-Oracle_性能优化_第43张图片
DB CPU占整个DB time的5%左右,所以说明非空闲等待事件多
2020-03-22-Oracle_性能优化_第44张图片

ADDM

运行ADDM
SQL> @$ORACLE_HOME/rdbms/admin/addmrpt.sql
2020-03-22-Oracle_性能优化_第45张图片
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
但ADDM不太好用,有tx的情况下,说没问题,因此需要再手动生成一次快照
在这里插入图片描述
执行ADDM脚本

在这里插入图片描述
在这里插入图片描述

发现问题
2020-03-22-Oracle_性能优化_第46张图片

1.2.5ADDM

2020-03-22-Oracle_性能优化_第47张图片

1.2.6sql tuning advisor/sql access advisor

2020-03-22-Oracle_性能优化_第48张图片

1.2.6.1sql tuning advisor

sql tuning advisor:让数据库给我这条sql语句执行意见

大表:5万条记录
小表:1千条记录
set autot on
随便写一个sql语句
在这里插入图片描述
创建优化任务
sql语句部分需要替换
2020-03-22-Oracle_性能优化_第49张图片
2020-03-22-Oracle_性能优化_第50张图片

在这里插入代码片

set
给了三个建议:
小表没分析
大表没分析
index
2020-03-22-Oracle_性能优化_第51张图片
在这里插入图片描述

1.3绑定变量

1.3.1使用绑定变量的性能提升

2020-03-22-Oracle_性能优化_第52张图片
当前内存中的sql语句
在这里插入图片描述
解析了1000次

再进行一次共享池清空
在这里插入图片描述
时间:0.29秒钟,效率提高
2020-03-22-Oracle_性能优化_第53张图片
在这里插入图片描述
只解析了一次
2020-03-22-Oracle_性能优化_第54张图片

sqlloader
物化视图

非关系型数据库
redex mangoDB 配置,安装

全栈的
Mysql:主从复制,什么分离
Oracle:高可用,稳定

你可能感兴趣的:(oracle,#,oracle_note)