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条数据
那么理论最大值=10004000=4百万条记录一次
这样一次发1G的sql文件过去,大概4百万条记录,mysql服务端的压力是非常大的
4.优化保守情况
为了防止内存溢出及不影响别的sql执行,建议取最大sql大小的一半作为最优批量计算条件
1073MB/2=500MB左右
1MB最多发1000条数据,那么500MB=500*4000=2百万条记录一次
原创:做时间的朋友
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享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