首页 / MYSQL / 在一个插入MySQL中插入多行
在一个插入MySQL中插入多行
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在一个插入MySQL中插入多行,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2113字,纯文字阅读大概需要4分钟。
内容图文
![在一个插入MySQL中插入多行](/upload/InfoBanner/zyjiaocheng/896/fb1bb76066b44ce495fd1bf9ee22d24f.jpg)
我已经使用python脚本使用多行插入方法在MySQL中进行了批量插入.我的测试csv文件只包含100,000行(真正的一行包含数百万行).
所以我执行批量插入.
通过使用unix time命令,结果看起来像
for 10 lines 100 lines 1000 lines
user 13.675 seconds user 11.948 seconds user 9.908 seconds
sys 0.192 seconds sys 0.076 seconds sys 0.080 seconds
for 10,000 lines 100,000 lines
user 11.672 seconds user 12.024 seconds
sys 0.072 seconds sys 0.079 seconds
为了使它更简单我添加用户sys和结果
10 rows 13.867 seconds
100 rows 12.024 seconds
1000 rows 9.988 seconds
10000 rows 11.744 seconds
100,000 rows 12.103 seconds
我试图弄清楚多行插入在500-1000行左右的主要原因是什么,它在500行以上1000线以上变得适得其反.我通过互联网搜索并找到了不同的答案.
有人提到它取决于
max_allowed_packet, bulk_insert_buffer_size, key_buffer_size .
我尝试这些参数,但无法看到任何效果.
我的问题是为什么批量插入在每个插入物500-1000行之间是最佳的,并且除了这个范围之外它的反生产率以及主要因素是什么.
我已经在使用这个设置了
max_allowed_packet=16M
还有一些参数.
Table Non_unique Key_name Seq_in_index Column_name
roy_table 0 PRIMARY 1 id
Collation Cardinality Sub_part Packed Null Index_type
A 100650 NULL NULL BTREE
有些人可以指出一个关于批量插入效率的基准或任何想法如何解决为什么这在某一点上反效果.我必须在报告中给出坚实的理由.我会非常感谢任何小小的暗示或想法.感谢名单
解决方法:
>经过的时间,而不是CPU时间更有趣.
>您正在测量客户端时间,而不是服务器时间.
>服务器上有许多因素导致大块“坏”:缓冲区,撤消日志,复制延迟等.
>解析时间是短块的主要开销(在服务器上).
>您尚未指定行大小;这对客户端,网络和服务器有一些影响.
>客户端和服务器之间有什么联系?插座? LAN? WAN?它们之间的延迟是多少?在WAN上,网络延迟可能会压倒所有其他考虑因素.
>`key_buffer_size仅适用于MyISAM;我希望你没有使用那个引擎.
>桌子上有没有索引?如果是这样,什么?例如,如果PRIMARY KEY是UUID,可能会产生巨大的影响.此外,UNIQUE键需要检查重复项. (同样,这是一个服务器任务.)
我的实验表明,在许多情况下,100-1000行的块接近最佳. (这恰好与你的发现有些一致,但这很巧合,因为我看了不同的时间.)
内容总结
以上是互联网集市为您收集整理的在一个插入MySQL中插入多行全部内容,希望文章能够帮你解决在一个插入MySQL中插入多行所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。