全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

MySQL批量插入数据为什么比逐个插入效率高?

发布时间:2023-10-11 22:57:36
发布人:xqq

一、MySQL批量插入数据为什么比逐个插入效率高

数据库的一个插入动作,包含了连接,传输,执行,提交/回滚 等等的动作,在 执行的时候可能还会遇到锁表,等待等等,所以,批量插比逐个插效率高,是大部分情况,而不是绝对情况。

大部分情况下,批量插和逐个插,在执行层面,耗时接近;而不用多次连接数据库,在数据传输层面,也是一次性传输效率高(网络传输和这个模型类似,也有很多前置后置过程),而提交,也是只发起了一次,因而显得效率高。

在特殊情况下,比如插入的数据是业务表,每行的数据量较大,且该表访问频繁,那么,插入1条的时候可能不会锁表,而插入10000行的时候,会遇到锁表的情况。如果并发插入,甚至发生死锁。这个时候,就要根据经验分析,调整每个批次的量,以避免影响使用。

举个例子:

begin:

insert into ( (‘a’) , (‘b’) …);

commit;

这样批量提交和

insert into(‘a’) ;

insert into (‘b’);

看上去也不需要多久,你看看非编译型的语言php,js几乎都不需要多久,你10w行sql对应其他代码的parser,你想想一个10wjs需要编译很久吗?也不需要很久。

延伸阅读:

二、什么是Memory引擎

Memory引擎是Mysql的内存引擎,在实现上,Memory存储引擎不同于Innodb这种组织索引结构(索引即是数据,即数据存放在主键索引上),而是将索引和数据分开存储。索引采用Hash的形式,存放主键id和指向数据的指针,而数据则按插入顺序存放。我们称这种数据组织方式为堆组织方式。

#it技术干货

相关文章

怎样在MySQL表中存储树形结构数据?

怎样在MySQL表中存储树形结构数据?

2023-10-11
redis似乎并没有“事务”,那些用到“事务”的人在做什么?

redis似乎并没有“事务”,那些用到“事务”的人在做什么?

2023-10-11
mysql inner join为什么不走索引?

mysql inner join为什么不走索引?

2023-10-11
mysql的MEMORY引擎为什么没有redis的应用广泛?

mysql的MEMORY引擎为什么没有redis的应用广泛?

2023-10-11

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取