Mysql批量插入数据时,多少条最好

1.首先需要确认mysql服务器上的限制

sql大小的限制

>show variables like '%max_allowed_packet%%'
+--------------------------+------------+
| Variable_name            | Value      |
+--------------------------+------------+
max_allowed_packet	1073741824
slave_max_allowed_packet	1073741824

换算1073741824字节=1073MB

也就是说sql大小的限制是1073MB

2.获取批量插入时候单条数据的大小

根据表结构来定

CREATE TABLE `delta24_tempdata_merge` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `merge_type` varchar(30) NOT NULL DEFAULT '',
  `val` varchar(200) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`),
  KEY `merge_type` (`merge_type`)
) ENGINE=InnoDB AUTO_INCREMENT=685347 DEFAULT CHARSET=utf8mb4;

varchar(200):代表200个字符,纯英文的话=200个字节,全中文的话=200+4=800字节
varchar(30):代表30个字符=30个字节
int(11):代表11字节
估算一行数据=200+30+11=240字节

3.估算极限情况

服务器端sql大小限制是1073MB
我们刚才计算出一行数据是240字节,1MB的数据量对应的话是(10241024)/240=4369条,防止溢出的话保守4000条数据
那么理论最大值=1000
4000=4百万条记录一次
这样一次发1G的sql文件过去,大概4百万条记录,mysql服务端的压力是非常大的

4.优化保守情况

为了防止内存溢出及不影响别的sql执行,建议取最大sql大小的一半作为最优批量计算条件
1073MB/2=500MB左右
1MB最多发1000条数据,那么500MB=500*4000=2百万条记录一次

posted @   SpecialSpeculator  阅读(2637)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
历史上的今天:
2022-02-07 宽带计费
2022-02-07 namp扫描端口
2022-02-07 Keepalived
2021-02-07 异步编程CompletableFuture
点击右上角即可分享
微信分享提示