Insert into select 与create table as的性能测试及create table

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 1. 文档说明 在工作中经常用insert into select 与 create table as语句来进行表单数据的复制;当复制表的数据量很小的时候两个语句的效率区别不大,但当表的数量级别达百万级以上的时候,就会有很明显的效率区别; 本文档也也分...

1. 文档说明

在工作中经常用insert into select create table as语句来进行表单数据的复制;当复制表的数据量很小的时候两个语句的效率区别不大,但当表的数量级别达百万级以上的时候,就会有很明显的效率区别;

本文档也也分成两个部分进行报表数度的测试;

一、 insert into select create table as的效率测试;

二、 create table as方法时性能的调优;

2. Insert into select create table as的性能测试

测试环境:ORACLE版本:10.2.0.2 PGA:1G SGA:1G 数据库:非归档模式

2.1 create tables as的测试,语句:Create Table zz_J_3ABSSI as Select * From J_3ABSSI

测试环境:表J_3ABSSI数据74万,该表没有索引;

执行时间:280S

2.2 Insert into select的测试,语句:

Truncate Table zz_J_3abssi;(先truncate表保留表的结构)

Insert Into zz_J_3abssi ("J_3ABSNR","J_3AHBSP","J_3ABSKZ","J_3AEBSP","WERKS","LIFNR","J_4KSCAT","MATNR","J_3ASIZE","MENGE","DABMG","IAMNG") Select "J_3ABSNR","J_3AHBSP","J_3ABSKZ","J_3AEBSP","WERKS","LIFNR","J_4KSCAT","MATNR","J_3ASIZE","MENGE","DABMG","IAMNG" From sapsr3."J_3ABSSI"

执行时间:1255S

2.2 总结:create table asinsert into select具有更好的性能越提升4倍以上;

原理分析:create table asddl语句,insert into selectdml语句,insert into select每一条记录的时候都会产生undoredo,整个过程相比create table as产生的redoundo相当多,因此整个过程会慢也是正常的;但是create table as使用的前提是目标表的结构不存在才能使用;

当有大量数据的时候不推荐使用Insert into as,因为该语句的插入的效率很慢;

2.3 延伸:网上有朋友在测试的时候增加了nologgingparallel参数,能够提升相应的执行效率;但是在实际中测试中,发现并没有实际效率的提高;

增加了nologging但是数据库还是会写日志,该参数只有在进行直接路径写的时候才有效,关于什么情况下数据库会运行直接路径写,请各位大神网上查询,应该会知道答案;

Parallel提高效率,小弟还没有想明白,请各位大婶帮忙回复;

3. create table as性能的提升

在确定了用create table as的方法进行复制数据的时候,提升该语句的效率成了继续研究的方法;

3.1 分析优化方法:

create table as的语句,该语句主要有两个步骤:

步骤一、读的过程:数据磁盘到sga,然后从sgapga(如果这个时候pga不够大,那么就会写到临时表空间,该步骤相当影响效率);

步骤二、写的过程:写redoundo

3.2 调优方法

a) 增加sgapga的大小,pga1g增大到3gsga1g增加到3g

b) 增加redo log的大小,从当前的50M每个增加到1G每个;

3.3 实验验证

a) 实验结果表明,增加redo log的大小影响速度不大,但还是有稍微的提升(不信的朋友可以测试)

b) 增加sgapga的大小,很明显的提升了整个复制的速度,效果粉吓人,整整提升了10倍;(这里不再贴测试截图,各位看官自己动手测试下,注意表的大小要大于PGA时效果比较显著)

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
SQL 测试技术 Go
SQLTest系列之INSERT语句测试
一款可以测试MSSQL Server的工具,这篇文章主要是分享下SQLTest之Insert语句测试。
6647 0
|
SQL 存储 测试技术
SQLTest系列之参数化INSERT语句测试
# 场景引入 上文说书到“SQLTest系列之INSERT语句简单测试”,于是,菜鸟想深入了解:“在现实业务场景中,实际的表数据不可能是完全一样的。所以,我们需要完全模拟实际场景,如何将表数据完全参数化的方式来INSERT到表中呢?”。带着问题来研究SQLTest,问题快速的迎刃而解。 # 环境准备 随着研究的深入,菜鸟了解到SQLTest的强大,SQLTest支持将一个存储过程的输出结果集
3057 0
CTAS和insert append的一个测试
该文章写于2004年,最近刚从以前的blog上迁移出来。 [@more@]8174上的一个测试,非归档模式: 代码: SQL> select * from v$version; BANNER -----------------------------------...
1003 0
|
SQL 测试技术 数据库
SQL注入测试平台 SQLol -3.INSERT注入测试
  访问首页的insert模块,http://127.0.0.1/sql/insert.php,开始对insert模块进行测试。 insert语句: INSERT INTO 【users】 (【username】, isadmin) VALUES (【'1'】, 【0】) 接收的参数可能拼接到上述语句中【】的任一个位置。
1257 0
|
Shell 测试技术
物化视图全量刷新与insert的redo生成量测试
之前的一篇博客中提到,物化视图的全量刷新也是一种高可用性的体现,但是性能如何呢,下面来简单的测试一下。 首先需要创建一个函数,这个函数会计算当前session下的一些指标信息。
869 0
|
9天前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
18 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
1月前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
167 7
Jmeter实现WebSocket协议的接口测试方法
|
1月前
|
JSON 移动开发 监控
快速上手|HTTP 接口功能自动化测试
HTTP接口功能测试对于确保Web应用和H5应用的数据正确性至关重要。这类测试主要针对后台HTTP接口,通过构造不同参数输入值并获取JSON格式的输出结果来进行验证。HTTP协议基于TCP连接,包括请求与响应模式。请求由请求行、消息报头和请求正文组成,响应则包含状态行、消息报头及响应正文。常用的请求方法有GET、POST等,而响应状态码如2xx代表成功。测试过程使用Python语言和pycurl模块调用接口,并通过断言机制比对实际与预期结果,确保功能正确性。
159 3
快速上手|HTTP 接口功能自动化测试