大量数据快速插入方法探究

快速插入千万级别的数据,无非就是nologging+parallel+append。

1环境搭建

构建一个千万级别的源表,向一个空表insert操作。

参考指标:insert动作完成的实际时间。SQL> drop table test_emp cascadeconstraints purge;

Table dropped.

SQL> create table test_emp as select *from emp;

Table created.

SQL> begin

2  for i in 1..10 loop

3  insert into test_emp select *from test_emp;   --批量dml,建议forall

4  end loop;

5  end;

6  /

PL/SQL procedure successfully completed.

SQL> select count(*) from test_emp;

COUNT(*)

----------

14336

SQL> begin

2  for i in 1..10 loop

3  insert into test_emp select *from test_emp;

4  end loop

5  ;

6  end;

7  /

PL/SQL procedure successfully completed.

SQL> select count(*) from test_emp;

COUNT(*)

----------

14680064            --1.5千万级别

2only appendSQL> set timing on

SQL> show timing

timing ON

SQL> insert /*+ append */ into test_goalselect * from test_emp;

14680064 rows created.

Elapsed: 00:00:20.72

没有关闭日志,所以时间是最长的。

3append+nologgingSQL> truncate table test_goal;

Table truncated.

Elapsed: 00:00:00.11

SQL> insert /*+ append */ into test_goalselect * from test_emp nologging;

14680064 rows created.

Elapsed: 00:00:04.82

发现日志对插入的影响很大,加nologging时间明显大幅缩短;当然这个表没有索引、约束等,这里暂不考究。

4append+nologging+parallelSQL> truncate table test_goal;

Table truncated.

Elapsed: 00:00:00.09

SQL> insert /*+ parallel(2) append */into test_goal select * from test_emp nologging;

14680064 rows created.

Elapsed: 00:00:02.86

这里在3的基础上加上并行,性能基本达到极限,1.5千万数据插入时间控制在3S左右。并行在服务器性能支持的情况下,可以加大并行参数。

oracle append parallel,大量数据快速插入方法探究[nologging+parallel+append]相关推荐

  1. oracle数据库速度测试,【原创】验证在Oracle数据库中操纵数据的各种方法的速度...

    机器配置:组装的PC SERVER,4AMD CPU,8G内存,4块SCSI硬盘.Oracle 10.2.0.4. 试验目的:在244上,对xxx_flow表进行复制.更新,验证在Oracle数据库中 ...

  2. Oracle新建的用户看不到表,Oracle 创建用户及数据表的方法

    Oracle 创建用户及数据表的方法 更新时间:2009年09月25日 23:13:29   作者: 刚开始学习oracle的朋友可以看下,这个是基础了. 一.概念 1. 数据库 (Database) ...

  3. oracle中有类似split的方法么,Oracle 实现拆分列数据的split()方法

    'one,two,three,four,five,six,seven,eight,nine,zero'as source_string from dual),-- 统计字符串中子串的个数,用 ','来 ...

  4. 海量点云数据快速读取方法

    最近阅读了一篇文章--<基于内存映射文件的海量点云数据快速读取方法>,文中介绍的方法能够极大地提升点云读取速率,这为我们读取数以千万的点云数据提供了方法. 通常情况下,在C++中读文件,使 ...

  5. 数据库数据快速插入的方法

    问题: 需要在mysql中造大量的数据. 方式: 一.insert 一条一条插入数据到数据库中. 不适合大量数据的插入. 二.LOAD DATA INFILE 方案 三.extend insert语句 ...

  6. PLSQL如何将千万数据快速插入到另一张表中_数据库设计中的 9 大常见错误

    作为数据库设计人员,当我们负责数据库项目时,在数据库设计以及把数据库部署到生产环境的过程中可能会遇到一些挑战. 其中一些问题不可避免,也无法控制.但是,其中相当一部分可以追溯到数据库设计本身的质量.我 ...

  7. oracle 如何添加数据文件,Oracle教程 误添加数据文件删除方法

    如果是在Oracle10g之前,删除一个表空间中的数据文件后,其文件在数据库数据字典中会仍然存在,除非你删除表空间,否则文件信息不会清除. 但是从Oracle10gR2开始,Oracle允许我们彻底删 ...

  8. Mysql5.7, 千万数据快速插入解决方案( JDBC方式, 百秒搞定!!!)

    最近在弄一件任务,要求测试一下从文本中读取数据,然后向mysql表中插入.要求用JDBC线程导入.要求效率. 环境说明: 数据量 : 10058624条  (大约一千零6万条数据,本地机器运行) 数据 ...

  9. 【DB笔试面试594】在Oracle中,关键字NOLOGGING、APPEND和PARALLEL提高DML性能方面有什么差别?...

    ♣题目部分 在Oracle中,关键字NOLOGGING.APPEND和PARALLEL提高DML性能方面有什么差别? ♣答案部分 众所周知,表模式(LOGGING/NOLOGGING).插入模式(AP ...

  10. MySQL快速插入亿级数据

    MySQL快速插入亿级数据 前言 通常我们会有这样的需求:构造数据,大批量插入数据库,以供后续处理.如果是几万几十万的数据那还好说,但如果是上千万上亿的数据,那么我们对速度的追求就更加迫切. 这里我们 ...

最新文章

  1. 记录一次http请求失败的问题分析
  2. jquery中在子窗口中获取父窗口的Input文本值
  3. redis的导入导出需要特别注意的地方
  4. Linux命令之du
  5. c# 获取方法所在的命名空间 类名 方法名
  6. autoencoder自编码器原理以及在mnist数据集上的实现
  7. linux精简版远程登录,Linux下如何定制SSH来简化远程访问
  8. LeetCode 97. 交错字符串(动态规划)
  9. iOS autoreleasePool 深入理解
  10. 709. To Lower Case
  11. VS2019详细安装教程
  12. 用StringUtil判断字符串非空的方法
  13. new一个对象的过程发生了什么
  14. GNU C Complier - GNU Compiler Collection - GCC
  15. python表情换头_教你用Python制作表情包,实现换脸技术!
  16. NO.3 微信第三方平台代创建小程序审核发布以及小程序信息(头像,名称,简介)修改 以及微信错误码 返回信息
  17. Balanced Array
  18. 用天文方法计算二十四节气
  19. 学习大数据需要什么基础?大数据要学哪些内容?
  20. java 与数据库连接失败_java链接不上数据库,怎么解决!

热门文章

  1. 经典贪吃蛇大战逆向_游戏内购
  2. 关于 socket收发数据一样 接收的数据是错误
  3. linux中目录权限777,Linux文件和目录的777、755、644权限解释
  4. 显示器3d测试软件,IPS显示屏/裸眼3D显示原理及3D应用
  5. 渗透测试 ( 10 ) --- 扫描 web目录、文件 (dirb、wfuzz、wpscan、nikto)
  6. 【前端学习】ES6语法 函数写法优化
  7. Selenium例1: Bing搜索
  8. 基于seq2seq自动生成小说
  9. 牛客网——B 遥远的记忆
  10. Windows系统如何关闭防火墙保姆式教程,超详细