【问题标题】:Performance issue of ON DUPLICATE KEY UPDATE in mysql bulk Updatemysql批量更新中ON DUPLICATE KEY UPDATE的性能问题
【发布时间】:2018-03-27 10:44:56
【问题描述】:

由于 Mysql 不提供任何批量更新查询,但我们使用 ON DUPLICATE KEY UPDATE 的功能。当我们批量更新时使用以下查询是否很好,如果不是,那么使用以下查询的性能问题是什么?有没有其他方法可以在 MySQL 中批量更新

INSERT into fruits(id, value) VALUES
         (1, 'apple'), (2, 'orange'), (3, 'peach'),
         (4, 'apple'), (5, 'orange'), (6, 'peach'),
         (7, 'apple'), (8, 'orange'), (9, 'peach'), (10, 'apple')
   ON DUPLICATE KEY UPDATE value = VALUES(value);

【问题讨论】:

  • 您说您在某种程度上对性能“感到困惑”,但没有提供该性能的示例以及您的两个示例如何影响它。此外,很难使用您使用的示例来衡量任何有意义的事情。投票结束时“不清楚你在问什么”
  • @Vorsprung 我已经改变了问题的上下文。但是,您仍然可以选择关闭问题。

标签: mysql database performance provisioned-iops


【解决方案1】:

聪明的把戏。让我们知道它是否比 10 个 UPDATE 语句快。我怀疑是——到服务器的往返次数减少了 9 次;对解析器的调用减少了 9 次;等等

REPLACE,但很可能效率较低,因为它是

DELETE all rows that match any UNIQUE index; and
INSERT the row(s) given.

IODKU 是有效的

if row exists (based on any UNIQUE key)
    then do "update"
    else do "insert"

检查该行是否存在的工作将必要的块拉入缓存,从而为更新或插入准备好东西。

【讨论】:

    猜你喜欢
    • 2011-06-29
    • 1970-01-01
    • 2011-08-09
    • 2018-01-13
    • 1970-01-01
    • 1970-01-01
    • 2019-02-12
    • 2014-06-23
    • 1970-01-01
    相关资源
    最近更新 更多