[英]MySQL insert/update records very slow
我发现mysql更新记录非常慢。
我有一个逻辑,如果记录存在,它将更新,否则将插入。 但是源数据库的总记录有14k行,并且它仅在几秒钟内成功地插入了每一行,因此,它非常慢,我怎样才能让1分钟插入14k行? 顺便说一句,我正在使用C#
foreach (row in rows)
checkrecords(row); // if exist update, else create.
问候,MH
如果存在,可能是问题的根源。 确保在检查记录中是否使用唯一索引。
尝试设置值:
innodb_flush_log_at_trx_commit=2
innodb_flush_method=O_DIRECT (for non-windows machine)
innodb_buffer_pool_size=25GB (currently it is close to 21GB)
innodb_doublewrite=0
innodb_support_xa=0
innodb_thread_concurrency=0...1000 (try different values, beginning with 200)
参考文献:
MySQL文档,用于描述不同的变量。
希望能帮助到你...
重组查询并确保正确设置了索引。
将要更新的行加载到临时表中。 然后执行插入/更新为:
insert into t(. . .)
select . . .
from temptable tt
on duplicate key update col1 = values(col1), . . .;
确保将要检查记录是否存在的条件组合到唯一索引中。 因此,如果要查找三列的组合,请确保在t(col1, col2, col3)
上具有唯一索引。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.