insert的不同场景性能比较

简介: 关于Insert的问题,可能在一些场景中会有完全不同的期望和结果,在日常工作使用的库中,需要表在Logging模式,必要时需要一些索引 但在数据迁移中,可能为了提高速度,索引就需要考虑重建了。

关于Insert的问题,可能在一些场景中会有完全不同的期望和结果,在日常工作使用的库中,需要表在Logging模式,必要时需要一些索引

但在数据迁移中,可能为了提高速度,索引就需要考虑重建了。

我做了一些场景的测试,并且做了详细的数据比对。

第一种场景:table在nologging模式下。并且表中没有索引,

在插入不同数据量的时候,生成的redo和响应时间都有一定的幅度提升。

比如插入13240331条记录时,响应时间为63秒,生成323219520bytes(300多M)的redo.

nologging+no index
sec:misec inserted rows redo generated
00.10 25862 635692
00.12 51723 1231620
00.18 103444 2461540
00.33 206885 4922516
00.67 413766 9840892
02.19 827527 19697976
09.90 1655048 40128988
15.68 3310089 80470212
33.89 6620170 161501892
63.28 13240331 323219520

第二种场景:table在logging模式下,表中没有索引

  logging+no index  
00.10 25862 635616
00.10 51723 1231620
00.17 103444 2461480
00.35 206885 4930208
00.68 413766 9841248
01.69 827527 19692980
06.94 1655048 40117876
16.66 3310089 80428640
41.23 6620170 161690412
72.47 13240331 323049996

 

总结:可以看到两者基本上没有任何变化

image

第三种场景:表在nologging模式,表中有主键,主键对应的索引处于logging模式

  nologging+index(unique index) logging  
00.22 25862 1381736
00.32 51723 2733468
00.44 103444 5431700
01.15 206885 10872316
03.25 413766 21777088
07.69 827527 43521600
16.33 1655048 90658812
41.71 3310089 183135576
82.40 6620170 366262424
190.50 13240331 731534236

 

可能直接看不太明显,如果有一个图标就更清晰了。左边的部分是采用logging,没有索引的场景,可以看到已经有了成倍的变化。可见在有索引的时候对于insert来说,会产生大量的redo,响应时间也成倍提高。

image

第四种场景,表采用nologging模式,表中无索引,使用append模式插入数据。

  nologging+no index+append  
00.14 25862 635632
00.14 51723 1231560
00.16 103444 2461480
00.33 206885 4922516
00.64 413766 9840848
01.52 827527 19697592
11.30 1655048 40165208
19.18 3310089 80450796
46.26 6620170 160910172
76.66 13240331 322991832

总结:可以看到在没有索引的情况下,nologging+append模式和nologging基本没有区别。

image

第五种场景:表处于nologging模式,表中有索引,处于Nologging模式。采用append插入数据。

可以看到采用index的logging和nologging模式,两者也没有明显的变化

image

目录
相关文章
|
JavaScript Java 应用服务中间件
使用 Docker 高效搭建本地开发环境(详细教程)
使用 Docker 高效搭建本地开发环境(详细教程)
15205 0
使用 Docker 高效搭建本地开发环境(详细教程)
|
数据采集 测试技术 数据安全/隐私保护
Playwright测试中避免使用no-wait-for-timeout的原因
在Web应用自动化测试中,Playwright作为首选框架,其稳定性至关重要。不当使用`no-wait-for-timeout`会导致测试结果不稳定、不符合真实用户体验且难以调试。推荐采用显式等待策略和合理设置超时时间,结合代理IP技术提高测试成功率和数据多样性。示例代码展示了如何在Playwright中配置代理IP进行数据抓取及分类统计。遵循这些最佳实践可确保测试既可靠又贴近实际用户场景。
699 4
Playwright测试中避免使用no-wait-for-timeout的原因
|
Java 开发者 C++
|
中间件 关系型数据库 MySQL
Windows 安装 Seata 1.6.1 并配置开机自启
Windows 安装 Seata 1.6.1 并配置开机自启
|
Web App开发 算法
软件破解初级实例教程(附工具附图)
最近在群里总是看到很多新朋友在问: 1、“新手怎么学破解啊?”(这是标准的伸手党,baidu google其实很好用) 2、“哎呀XX大牛,我什么基础都没有啊我不会汇编,不会C更不会C++还不会…………总之高手会的我都不会,我能学么?”(明确的告诉你,你能!你不和唐僧一样罗嗦的话你一定能。
11257 1
|
消息中间件 Java 数据库连接
50分布式电商项目 - JMS
50分布式电商项目 - JMS
69 0
|
存储 关系型数据库 MySQL
详解 Mysql 分布式事务 XA(跨数据库事务)
详解 Mysql 分布式事务 XA(跨数据库事务)
|
机器学习/深度学习
机器学习:浅析从感知机到多层感知机
机器学习:浅析从感知机到多层感知机
192 0
机器学习:浅析从感知机到多层感知机
|
JSON Java 程序员
jackson学习之十(终篇):springboot整合(配置类)
在springboot应用中,编码实现Jackson工具类的实例化和配置
655 0
jackson学习之十(终篇):springboot整合(配置类)
|
机器学习/深度学习 人工智能 大数据
红遍AI圈的fast.ai课程上新啦!亲自跟着Jeremy一起上课是种什么体验?
红遍AI圈的fast.ai课程上新啦!亲自跟着Jeremy一起上课是种什么体验?
553 0