在一个插入MySQL中插入多行
我已经使用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
有些人可以指出一个关于批量插入效率的基准或任何想法如何解决为什么这在某一点上反效果.我必须在报告中给出坚实的理由.我会非常感谢任何小小的暗示或想法.感谢名单