广告
返回顶部
首页 > 资讯 > 数据库 >Oracle 性能优化-trigger问题
  • 227
分享到

Oracle 性能优化-trigger问题

2024-04-02 19:04:59 227人浏览 安东尼
摘要

Oracle 性能优化-trigger问题 问题现象 : 谓词通过唯一性索引,更新一条记录,耗时很长; 通过 AWR 查看 TOP sql ,这个UPDATE  SQ

Oracle 性能优化-trigger问题

问题现象 :

谓词通过唯一性索引,更新一条记录,耗时很长;

通过 AWR 查看 TOP sql ,这个UPDATE  SQL 语句逻辑读,物理读等都 非常高

初步怀疑执行计划出现变化, index unique scan 变成 table access full ,但是通过 DBA_HIST_SQL_PLAN 发现近期执行计划并没有改变;

通过 10046 查看 SQL 执行计划,显示这个更新语句耗时,逻辑读,物理读等都 非常低

问题原因 :

触发器导致的;

更新语句 A 执行前,触发了 trigger B ,其中 trigger B 内部执行较慢,导致 A 一直在等待;

由于 trigger B 执行过程中占用大量的资源,在 AWR 中会将 trigger 消耗的资源也加到 update 语句上,有时可能会干扰问题诊断;

问题结论:

当发现某个语句执行突然变慢了,执行时间,逻辑读,物理读等突然飙升,

在排查数据量,执行计划等都没有异常,可以查看是否存在不合理的触发器;

问题重现举例 :

---1 创建测试用户

SQL> create user C##chenjch identified by a;

SQL> grant connect,resource,dba to c##chenjch;

---2 创建测试表,索引并插入数据

SQL> create table test01(id number);

SQL> create table test02 as select * from dba_objects;

SQL>

begin

  for i in 1 .. 100000 loop

    insert into test01 values (i);

    commit;

  end loop;

end;

SQL> create unique index ui_test_id on test01(id); 

SQL> insert into test02 select * from test02; 

SQL> commit; 

/

/

......

select count(*) from test02;   ---2329536

---3 创建触发器

SQL>

create or replace trigger TG_TEST01_UPDATE

  BEFORE UPDATE ON TEST01

  for each row

begin

  insert into test02

    SELECT * FROM TEST02;

end;

---4 生成快照

SQL>

begin

  dbms_workload_repository.create_snapshot;

end;

SQL>

select SNAP_ID, BEGIN_INTERVAL_TIME, FLUSH_ELAPSED, SNAP_LEVEL

  from dba_hist_snapshot

 order by snap_id desc;

---5  update test01 通过唯一性索引,更新一条数据

SQL> set timing on

SQL> set autotrace on

SQL> alter session set tracefile_identifier='10046';

Session altered.

Elapsed: 00:00:00.00

SQL> ALTER SESSION SET EVENTS '10046 trace name context forever, level 12';

Session altered.

Elapsed: 00:00:00.03

---耗时19秒

SQL> update test01 set id=1000000000 where id=1;

1 row updated.

Elapsed: 00:00:19.49

Execution Plan

----------------------------------------------------------

Plan hash value: xxxxx

--------------------------------------------------------------------------------

| Id  | Operation          | Name       | Rows  | Bytes | Cost (%CPU)| Time

--------------------------------------------------------------------------------

|   0 | UPDATE STATEMENT   |            |     1 |    13 |     1   (0)| 00:00:01

|   1 |  UPDATE            | TEST01     |       |       |            |

|*  2 |   INDEX UNIQUE SCAN| UI_TEST_ID |     1 |    13 |     1   (0)| 00:00:01

--------------------------------------------------------------------------------

Predicate InfORMation (identified by operation id):

---------------------------------------------------

   2 - access("ID"=1)

Statistics

----------------------------------------------------------

        637  recursive calls

     351598  db block gets

     103565  consistent gets

      38393  physical reads

  374300700  redo size

        858  bytes sent via SQL*Net to client

        962  bytes received via SQL*Net from client

          3  SQL*Net roundtrips to/from client

        102  sorts (memory)

          0  sorts (disk)

          1  rows processed

SQL> ALTER SESSION SET EVENTS '10046 trace name context off';

Session altered.

Elapsed: 00:00:00.01

SQL> select value from v$diag_info where name='Default Trace File';

VALUE

--------------------------------------------------------------------------------

/u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_56542_10046.trc

Elapsed: 00:00:00.06

SQL> @?/rdbms/admin/awrrpt.sql

AWR显示update语句消耗资源很高

  Oracle 性能优化-trigger问题

select * from table(dbms_xplan.display_cursor('afqfknn3nwwpw'));

Oracle 性能优化-trigger问题 

10046 显示update语句消耗的资源很少;

Oracle 性能优化-trigger问题 

欢迎关注我的微信公众号"IT小Chen",共同学习,共同成长!!!

Oracle 性能优化-trigger问题

Oracle 性能优化-trigger问题


您可能感兴趣的文档:

--结束END--

本文标题: Oracle 性能优化-trigger问题

本文链接: https://www.lsjlt.com/news/48920.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • Oracle 性能优化-trigger问题
    Oracle 性能优化-trigger问题 问题现象 : 谓词通过唯一性索引,更新一条记录,耗时很长; 通过 AWR 查看 TOP SQL ,这个UPDATE  SQ...
    99+
    2022-10-18
  • oracle 性能优化
    索引的说明 索引是与表相关的一个可选结构,在逻辑上和物理上都独立于表的数据,索引能优化查询,不能优化DML操作,Oracle自动维护索引,频繁的DML操作反而会引起大量的索引维护。 通常,为检索表数据...
    99+
    2022-10-18
  • victoriaMetrics代理性能优化问题解析
    目录起因总结后续起因 最近有做一个Prometheus metrics代理的一个小项目,暂称为prom-proxy,目的是为了解析特定的指标(如容器、traefik、istio等指标...
    99+
    2022-11-13
  • Oracle 学习之性能优化(六)访问路径
      访问路径是指Oracle找到用户需要的数据的方法,这些方法很少,包括:声名狼藉的全表扫描--人们不惜一切视图避免的(曲解的)访问路径。各种类型的索引扫描--这是人们感觉良好的访问路径(多数情况...
    99+
    2022-10-18
  • Oracle性能优化-SQL优化(案例四)
    Oracle 性能优化 -SQL 优化 ( 案例四 ) 环境: DB:Oracle 11.2.0.1.0 问题: ERP 薪资发放节点计算时间耗时 较长,需要15 分钟左右; ...
    99+
    2022-10-18
  • Oracle性能优化-SQL优化(案例一)
    Oracle 性能优化 -SQL 优化 ( 案例一 ) 环境: OS:Red Hat Enterprise Linux AS release 4 DB:Oracle 10.2.0.1.0 ...
    99+
    2022-10-18
  • Mysql索引性能优化问题解决方案
    mysql 创建的优化就是加索引,可是有时候会遇到加索引都没法达到想要的效果的情况, 加上了所以,却还是搜索的全数据,原因是sql EXPLAIN SELECT cs.sid, ...
    99+
    2022-05-11
    Mysql 索引 性能优化
  • Android性能优化之ANR问题定位分析
    目录前言1 ANR原因总结1.1 KeyDispatchTimeout1.2 BroadCastTimeout1.3 ServiceTimeout1.4 ContentProvide...
    99+
    2022-11-13
  • victoriaMetrics代理性能优化问题怎么解决
    这篇文章主要介绍了victoriaMetrics代理性能优化问题怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇victoriaMetrics代理性能优化问题怎么解决文章都会有所收获,下面我们一起来看看吧...
    99+
    2023-06-29
  • Oracle AWR性能优化一例
    有一个批处理程序运行超过24小时仍然不能完成,采集了程序运行期间的AWR报告如下。 由上可以看到,该系统为AIX的单实例数据库,采样时长1319.96 分钟,DB time 1532.15分钟。 看一下TO...
    99+
    2022-10-18
  • Oracle 学习之性能优化(八)优化器
       我们知道,在sql语句解析的过程中,有一个过程叫优化。Oracle中有一个叫优化器的组件,专门来处理sql的优化。在考虑查询条件和对象引用的许多相关因素后,优化器能确定出执行SQL语句最有效...
    99+
    2022-10-18
  • 【oracle性能优化】- 使用AWR定位oracle性能瓶颈
    1 AWR简介AWR(全称Automatic Workload Repository)是Oracle 10g版本推出的新特性,随数据库一起被安装的性能收集和分析工具。AWR可以收集场景运行期间的各方面性能数...
    99+
    2022-10-18
  • 优化你的数据库性能有哪些问题
    这篇文章将为大家详细讲解有关优化你的数据库性能有哪些问题,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。  在优化你的数据库时,你可能没有用到这些细节的优点。...
    99+
    2022-10-18
  • 聊聊Flare应用前后端性能优化问题
    目录写在前面应用性能问题分析对于我不适用的功能前端架构中的问题后端架构中的问题针对应用进行改进调整前端实现调整后端实现图标资源优化容器镜像的优化额外的优化最后两周前,在给颜值在线的&...
    99+
    2022-11-13
  • vue性能优化之cdn引入vue-Router的问题
    目录cdn引入vue-Router问题vue引入外部cdn报错 'XXX is not defined' 及事件处理解决办法cdn引入vue-Router问...
    99+
    2022-11-13
    vue性能优化 cdn引入vue-Router vue cdn引入
  • Flare应用前后端性能优化问题分析
    本篇内容主要讲解“Flare应用前后端性能优化问题分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Flare应用前后端性能优化问题分析”吧!写在前面在聊 flare 之前,我想先聊聊 flam...
    99+
    2023-06-29
  • Oracle性能问题排查自动化脚本怎么写
    小编给大家分享一下Oracle性能问题排查自动化脚本怎么写,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!进入 Oracle Pe...
    99+
    2022-10-18
  • Oracle 的sql优化提高性能
    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引...
    99+
    2022-10-18
  • Oracle 性能优化 之 游标及 SQL
    一、游标 我们要先说一下游标这个概念。       从 Oracle 数据库管理员...
    99+
    2022-10-18
  • oracle基础~linux整体性能优化
      包括三方面 1 sysctl.conf //扩大文件句柄数 fs.aio-max-nr = 1048576 fs.file-max = 6815744 // 扩大共享内存段 影响SGA kernel.shmmax = 429496729...
    99+
    2019-01-08
    oracle基础~linux整体性能优化 数据库入门 数据库基础教程 数据库 mysql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作