oracle insert优化「建议收藏」

oracle insert优化「建议收藏」author:skatetime:2010/10/19insert优化要想提高insert的速度,首先要知道什么影响insert慢,在执行insert的过程中产生redo和undo,要想提高insert的速度,在充分利用系统资源的条件下就要尽量减少insert

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

author:skate
time:2010/10/19


insert优化

要想提高insert的速度,首先要知道什么影响insert慢,在执行insert的过程中产生redo和undo,要想提高insert的速度,在充分利用系统资源的条件下就要尽量减少insert产生的redo和undo,undo的大小没办法改变,但是我们可以改变redo的量。下面是提高insert方法。

1. 增加hint /*+ append */                                           –不用在高水位下查找可insert的空间,直接在高水位之上insert
2. 增加hint /*+ parallel(tab,4) */
   或者alter session enable/disable parallel dml;         —充分利用系统硬件资源
3. alter table tablename nologging/logging               —-关闭表的log服务,减少redo产生
4. 如果业务允许的话,可以先删除索引,insert之后再重建.   —减少在insert时维护索引的开销
5. 可以增加临时中间表                                                    —-减少此事务对undo的使用
6. 增大sort_area_size或PGA                                       —-增加排序空间,避免磁盘操作
7. 优化sql语句本身
8. pl/sql批处理                                                              —化整为零,把大事务变成零散的小事务

说明:tb_order_detail_his :7000W记录
      tb_order_detail     :2000W记录

优化前:
INSERT INTO /*+ append */  tablename_his
SELECT *  FROM  tablename  PARTITION (TB_ORDER_DE_WAREID40) WHERE ID NOT IN (
SELECT tcc.id FROM  tablename  PARTITION (TB_ORDER_DE_WAREID40) tcc , tablename_his  tcch WHERE tcc.id=tcch.id
)

在做数据归档时,需要做大数据量的insert,对于insert内容少还是可以胜任的,可当要把200多万的数据归档,2个小时都没有成功,
于是对其优化改造,利用append,parallel,分批处理,nologging方法,使这个200W的数据归档在15分钟就完成

优化后:


通过 mod(tcc.id,10)把内容分10部分提交归档

INSERT INTO /*+ append */ tablename_his
SELECT  *  FROM tablename PARTITION (TB_ORDER_DE_WAREID40) tcc  WHERE  NOT EXISTS (
SELECT /*+ parallel(tcch,7) parallel(tcc,7) */ tcch.id FROM tablename_his tcch WHERE tcc.id=tcch.id
) AND mod(tcc.id,10)=9

—–end—–

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/160947.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 软考之计算机病毒「建议收藏」

    软考之计算机病毒「建议收藏」在复习软考的时候,发现计算机病毒方面的知识在软件设计师教程这本书上没怎么介绍,但是这部分的内容还常考。所以把计算机病毒方面的知识总结了一下,下面我就来一一介绍一下这些病毒。 1、引导型病毒:引导型病毒隐藏在磁盘内,在系统文件启动前已经驻留在内存中。主要感染磁盘的引导区,影响软盘或硬盘的引导扇区 2、文件型病毒:通常感染执行文件(包括exe和com文件等)但也有些会感染其他可执行

  • 校准不好TOF相机就废了?

    校准不好TOF相机就废了?校准不好TOF相机就废了?原文:(143条消息)校准不好TOF相机就废了?_深度视觉小司机的博客-CSDN博客五种校准一、镜头校准二、温度校准三、非线性校准四、共偏校准五、逐像素校准六、结语校准不好TOF相机就废了?目前,手机相机的进化方向是多摄中加入3D技术,而3D技术的一个很重要的路线是TOF,各大手机厂商都有对应的机型。关于TOF相机的原理,之前已经有很多科普文章了,今天我们就来聊一聊对TOF相机很重要的校准标定。五种校准TOF相机可以产生距离信息即深度信息,而深度.

  • java线程池详解及五种线程池方法详解「建议收藏」

    java线程池详解及五种线程池方法详解「建议收藏」基础知识Executors创建线程池Java中创建线程池很简单,只需要调用Executors中相应的便捷方法即可,比如Executors.newFixedThreadPool(intnThreads),但是便捷不仅隐藏了复杂性,也为我们埋下了潜在的隐患(OOM,线程耗尽)。Executors创建线程池便捷方法列表:方法名 功能 newFixedThreadPool(intnThreads) 创建固定大小的线程池 newSingleThreadExecutor()

  • nick nack_coughing翻译

    nick nack_coughing翻译webrtc中fec的处理机制:获取一帧数据,拆分成多个rtp包,再封装成fec包(fec只有primayblock),发送到网络;之后根据rtp包生成相应数量的fec包(根据冗余度来生成对应数量的包),再发送到网络。需要注意的是:rtpred包和fecred包都是序号连续的。所以判断一个完整帧的依据依然可以使用:获取到首包,获取到尾包,中间包连续。但因为fec的加入,导致所有原始数据的rtp包无法连续(和纯nack不会这样)。所以针对带有fec包的丢包处理机制是这样的:如果一个完整帧里面丢了原始

  • 合成控制法(SyntheticControlMethod)及Stata实现[通俗易懂]

    合成控制法(SyntheticControlMethod)及Stata实现[通俗易懂]原文链接:https://www.lianxh.cn/news/9e1bb97a57041.html目录1.背景介绍 2.合成控制法原理 3.合成控制法的Stata实现 3.1命令安装 3.2语法格式 3.3加州控烟案例 3.4房产税对产业转移的影响:来自重庆和上海的经验证据 4.安慰剂检验 4.1安慰剂检验一 4.2安慰剂检验二 5.参考资料推文介绍合成控制方法及其Stata的实现命令。合成控制方法(Syntheti

  • css 去色_css按钮点击改变颜色

    css 去色_css按钮点击改变颜色有这么一个样式,可以在你实现无色和加色之间游刃有余。网站设计师在设计网页时,有时将一块图片设计成灰色,鼠标移上去,图片就有颜色。一般的逻辑是做两张图片,然后在鼠标上做图片切换事件。当然这种方法可以完美是实现, 不过有个小瑕疵,就是你要切一倍的图片(有色+无色)。下面介绍样式实现,可以减少一倍量的工作哦。//HTMLCSS.grayscaleimg{filter:g

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号