[20161003]触发器与redo.txt

简介: [20161003]触发器与redo.txt --对于触发器,我个人认为对于dba是最讨厌的东西,它使得维护变得困难,不小心就陷入陷阱里面. --我曾经跟开发讲过建立一个触发器相当于给表建立一个索引.
[20161003]触发器与redo.txt

--对于触发器,我个人认为对于dba是最讨厌的东西,它使得维护变得困难,不小心就陷入陷阱里面.
--我曾经跟开发讲过建立一个触发器相当于给表建立一个索引.除非万不得以不要建立触发器.
--昨天看了一个例子,重复作者的测试来说明问题:

http://orasql.org/2016/09/22/how-even-empty-trigger-increases-redo-generation/

1.环境:

SCOTT@test01p> @ ver1
PORT_STRING          VERSION    BANNER                                                                       CON_ID
-------------------- ---------- ---------------------------------------------------------------------------- ------
IBMPC/WIN_NT64-9.1.0 12.1.0.1.0 Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production      0

set feed on;
-- simple table:
create table xt_curr1 as select level a,level b from dual connect by level<=1e4;
-- same table but with empty trigger:
create table xt_curr2 as select level a,level b from dual connect by level<=1e4;
create or replace trigger tr_xt_curr2 before update on xt_curr2 for each row
begin
  null;
end;
/

set autot trace stat;
update xt_curr1 set b=a;
--commit;
set autot off;

set autot trace stat;
update xt_curr2 set b=a;
--commit;
set autot off;
set feed off

drop table xt_curr1 purge;
drop table xt_curr2 purge;

2.测试结果:


update xt_curr1 set b=a;

Statistics
----------------------------------------------------------
          8  recursive calls
        142  db block gets
         30  consistent gets
         18  physical reads
     960068  redo size
        862  bytes sent via SQL*Net to client
        824  bytes received via SQL*Net from client
          3  SQL*Net roundtrips to/from client
          3  sorts (memory)
          0  sorts (disk)
      10000  rows processed

update xt_curr2 set b=a;
Statistics
----------------------------------------------------------
         10  recursive calls
      20386  db block gets
         40  consistent gets
         19  physical reads
    4731300  redo size
        862  bytes sent via SQL*Net to client
        824  bytes received via SQL*Net from client
          3  SQL*Net roundtrips to/from client
          3  sorts (memory)
          0  sorts (disk)
      10000  rows processed

update xt_curr2 set b=a;

--可以发现即使是NULL的操作,也会导致redo增加不少.
目录
相关文章
|
Java 关系型数据库 数据库连接
SpringBoot(八)之JdbcTemplate
在 application.properties 或 application.yml 文件中配置数据库连接信息。
595 0
|
XML 设计模式 Java
Spring高手之路1——深入理解与实现IOC依赖查找与依赖注入
本文通过详细的代码示例,详细解析了Spring框架中IOC的两种核心实现方式:依赖查找和依赖注入。我们通过创建基本的IOC依赖查找实例,详解了如何在实践中运用这两种手段,并在三层架构中体验其使用方式。同时,我们也深度对比了依赖查找与依赖注入的优缺点和应用场景,为读者在面试中解答相关问题提供了参考。
794 1
Spring高手之路1——深入理解与实现IOC依赖查找与依赖注入
|
算法 Java 调度
线程的挂起和唤醒
线程的挂起和唤醒
|
弹性计算 运维 安全
ECS使用体验--云服务器的初体验
这是一篇第一次使用阿里云服务器的体验文章,主要是记录自己在第一次使用阿里云服务器时遇到的问题和心得体会。
ECS使用体验--云服务器的初体验
|
机器学习/深度学习 传感器 算法
基于多级适应方法的无人机(UAV)在发动机输出情况下的导航和路径规划附Matlab代码
基于多级适应方法的无人机(UAV)在发动机输出情况下的导航和路径规划附Matlab代码
|
算法 测试技术 容器
记一次性能压测
水平扩容无法增加集群QPS的一个疑难杂症的排查。
2285 0
|
4天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1112 2
|
3天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
584 11
|
13天前
|
人工智能 运维 安全

热门文章

最新文章