繁体   English   中英

MySQL插入/更新记录非常慢

[英]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文档,用于描述不同的变量。

MySQL服务器设置调整

MySQL性能优化基础

希望能帮助到你...

请参阅为什么MySQL InnoDB插入这么慢?

资源

重组查询并确保正确设置了索引。

将要更新的行加载到临时表中。 然后执行插入/更新为:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM