问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

mysql大量数据插入慢的问题

发布网友 发布时间:2022-04-07 22:18

我来回答

2个回答

热心网友 时间:2022-04-07 23:48

这个是需要做一些设置的。主要设置 rewriteBatchedStatements参数。原理如下:

MySQL Jdbc驱动在默认情况下会无视executeBatch()语句,把我们期望批量执行的一组sql语句拆散,一条一条地发给MySQL数据库,直接造成较低的性能。

只有把rewriteBatchedStatements参数置为true, 驱动才会帮你批量执行SQL (jdbc:mysql://ip:port/db?rewriteBatchedStatements=true)。不过,驱动具体是怎么样批量执行的? 你是不是需要看一下内幕,才敢放心地使用这个选项? 下文会给出答案。

另外,有人说rewriteBatchedStatements只对INSERT有效,有人说它对UPDATE/DELETE也有效。为此我做了一些实验(详见下文),结论是: 这个选项对INSERT/UPDATE/DELETE都有效,只不过对INSERT它为会预先重排一下SQL语句。

注:本文使用的mysql驱动版本是5.1.12

实验记录:未打开rewriteBatchedStatements时

未打开rewriteBatchedStatements时,根据wireshark嗅探出的mysql报文可以看出,
batchDelete(10条记录) => 发送10次delete 请求
batchUpdate(10条记录) => 发送10次update 请求
batchInsert(10条记录) => 发送10次insert 请求

也就是说,batchXXX()的确不起作用

实验记录:打开了rewriteBatchedStatements后

打开rewriteBatchedStatements后,根据wireshark嗅探出的mysql报文可以看出

batchDelete(10条记录) => 发送一次请求,内容为”delete from t where id = 1; delete from t where id = 2; delete from t where id = 3; ….”
batchUpdate(10条记录) => 发送一次请求,内容为”update t set … where id = 1; update t set … where id = 2; update t set … where id = 3 …”
batchInsert(10条记录) => 发送一次请求,内容为”insert into t (…) values (…) , (…), (…)”

对delete和update,驱动所做的事就是把多条sql语句累积起来再一次性发出去;而对于insert,驱动则会把多条sql语句重写成一条风格很酷的sql语句,然后再发出去。 官方文档说,这种insert写法可以提高性能(”This is considerably faster (many times faster in some cases) than using separate single-row INSERT statements”)

一个注意事项

需要注意的是,即使rewriteBatchedStatements=true, batchDelete()和batchUpdate()也不一定会走批量: 当batchSize <= 3时,驱动会宁愿一条一条地执行SQL。所以,如果你想验证rewriteBatchedStatements在你的系统里是否已经生效,记得要使用较大的batch.

更多细节看这个帖子:
blog.yemou.net/article/query/info/tytfjhfascvhzxcyt397

热心网友 时间:2022-04-08 01:06

用第三方介质导入,速度比你执行insert语句快。比如用EXCEL或者ACCESS表格充当介质。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
三星R458什么时候有货? 高中物理皮带传动周期的比值 英雄联盟大厅有声音 进入游戏就没声音了怎么办 求解决 ,不要跟我说... lol进了游戏就没声音了怎么办 lol进游戏没声音出来就有声音修复方法_百 ... ...渗透探伤,硬度检测; 需要用到光谱仪吗? 使用光谱仪的价格需要另外计... 08年底买的三星R458笔记本电脑CPU是焊上的还是扣上的 长江沿岸五个开放城市是指哪些?要是限定1992年和不限定年份答案是否相 ... 三星r458型号的笔记本电脑的显卡可以换吗 洪亮平指导培养毕业硕士研究生 武汉城市面积的变化,请给出年份与相应数据 03版数据透视表怎么在数据字段内筛选 高中物理基础知识大全 辐射新维加斯僵尸工厂任务 商人梦到朋友请吃蒸熟的螃蟹 关于辐射新维加斯的问题 辐射新维加斯的问题,就是加入钢铁兄弟会的最后一个任务怎么做,要流程 什么样的山和海可以移动?(脑筋急转弯) 求辐射:新维加斯重置属性mod 脑筋急转弯及答案 只能一个人去做的事情是什么 《辐射4》和《辐射:新维加斯》有哪些不同之处? 脑筋急转弯(什么事早早晚都会败露?) 什么东西正着放比倒着放好?(脑筋急转弯) 脑筋急转弯:用椰子和西瓜打头哪一个比较痛? 辐射新维加斯卡斯兄弟会易卜森的任务怎么做 脑筋急转弯:历史上哪个人跑得最快 【脑筋急转弯】毛毛虫回到家,对爸爸说了一句话,爸爸即场晕倒,毛毛虫说了什么话? 羽毛球赛有哪些规则? 辐射新维加斯 大汗帮任务求助 一本书放在地上什么地方你跨不过去?脑筋急转弯? 辐射新维加斯跳过任务代码 高中物理重点知识点。 excel的数据透视表中,怎么不能进行筛选操作 高中物理怎么打好基础 修改可以用加号的符号吗? 葱油拌面没有糖可以用红糖吗 红糖可以做葱油拌面吗? 关于中国结的作文(结尾长) 中国结手链编法 结尾部分 中国结手链的结尾怎么弄? 招商仁和保险公司产品擎天柱3号怎么样,靠谱吗,一年保费多少钱?_百度... 小雨伞保险上的擎天柱3号怎么样? 招商仁和定寿产品擎天柱3号多少钱,怎么买?可以帮我分析下条款吗? 图片上面中国结手链结尾怎么编? 用银联商务的全民付易pos机刷自己的信用卡有没有问题。有什么安全的手机pos机推荐 中国结阅读答案 中国人喜欢中国结的原因是什么?中国结又象征着什么 三高的人能参加商业保险吗 葱油拌面要怎么做?好吃吗? 这个结怎么打? 怎样让小米10至尊一直显示超级闪充界面? 菜籽油能用来做葱油拌面吗?