SQL批量新增数据

      自上周完成任务后还没安排新的任务,烦(qie)躁(xi)。
      今天打算安排两篇博客,这是第一篇,另一个是由这个再做的索引案例

一:前期准备
1、使用的还是之前的数据库,采用CopySQLTableData表、HierarchyDepartment表 :
在这里插入图片描述
2、我需要对表CopySQLTableData进行批量新增

二:实践

1、先测试新增9条,就执行速度来说,感觉上过了3s,也就是1秒3条,(这个比例可以去具体理解)这里我们也打开了两个按钮,后边看下具体情况
咱可爱的七仔大军准备出击,加上永远18的我们在这里插入图片描述

在这里插入图片描述

--批量数据
--循环添加数据
declare @i int --声明一个变量
set @i=1     --给变量赋值(初始化)
while @i<10   --循环插入
begin
	insert into CopySQLTableData ([Name],Sex,Age,CreationTime,Remark)
	values ('长江'+convert(varchar,@i)+'号',0,18,GETDATE(),'SQL批量新增-第一轮');
set @i=@i+1
end

GO

2、先看下执行计划,这里9条insert语句平摊了开销,这很容易理解
在这里插入图片描述
3、我们主要看的是这I/O、CPU的开销
在这里插入图片描述
4、再看下另一个 客户端统计信息。这我们需要知道并容易理解的是这三个,其他无意义,也有不懂的…,18呢是insert的9条加@i的赋值;9呢就是insert的影响;再下边的19我估计是18+9+@i初始化;最后的3,应是三次握手(有误请指正![一本正经.jpg])
另外,这个查询试验1的表头,表示第一次执行的数据,假如我把之前的代码再执行一次,会有查询试验2,数据上也有对比,下边再看吧
在这里插入图片描述
5、闲话也聊完了,看下结果吧
在这里插入图片描述
三:测试完,进行正式的大批量循环insert,这次我们添加百万
在这里插入图片描述
1、执行了42分钟,我还是等不下了…我都要困了
在这里插入图片描述
这执行的,CPU占比都到16-17了(I7-9750H,6核心12线程),停止后只有0.1-0.3的占比…这等数据量的做法平常还是不要随便弄了,(期间我切换到数据库都有十几秒的卡顿)
让我们看下这次执行insert了多少数据吧

…有点小奔溃,才1.5k???有没有搞错(平均一秒2条的速度了…[泪奔.gif])

2、寻找问题
看下执行的客户端
在这里插入图片描述
蓝色的是执行COUNT函数的,红色的就是我们新增的数据了,还是是在不敢相信才这么点,I/O效率太低了,得安排个高效率的做法
3、看下数据添加进入的时间
在这里插入图片描述
可以看到,刚开始的速度还是可以的,一秒insert了10来条数据,但是18秒又少了
在这里插入图片描述
以至于到后期的一分钟不如前2秒insert的条数,理论不应该这样啊,
4、是数据库限制了什么东西了么??
在这里插入图片描述
在这里插入图片描述
也不知道是不是这一块的问题,,有大佬路过的帮忙看看[拜托拜托][拜托拜托]

四、寻找新方法
待续…意外的问题,我得去解决下,再补充了[狗头保命]
索引的博客也延迟到百万数据正式新增进去后再写了

加油ヾ(◍°∇°◍)ノ゙

在这里插入图片描述

这是一个失败的方法,但是一篇成功的博客,让我认识到了理论与实践的差距
实践是检验真理的唯一标准  !!!!

猜你喜欢

转载自blog.csdn.net/qq_44471040/article/details/108706169