“LOAD DATA ... REPLACE INTO TABLE”优于“UPDATE table_name SET”的优势

问题描述

我猜以前的开发人员读到 LOAD DATA 对于批量加载数据更快。这在 MySQL 手册中有说明,并且经常在类似这样的网站上重复。

然后他们做了一个天真的假设,即 LOAD DATA 对所有事情都更快,甚至是单行更新。

我很确定开发人员从未自己测量过性能。

除了批量加载文件中已经存在的数据之外,将 LOAD DATA 用于任何其他内容是非常不寻常的。我永远不会将它用于单行更新。

如果我站在你的立场上,我会更改该代码以使用传统的 UPDATE。不要遭受线程同步问题的困扰

解决方法

我继承了一个系统,其中对 MySQL 表的所有更新(甚至是单行/记录)都不是使用UPDATE table_name SET. 相反,它们是通过以下方式完成的:

  1. 将现有表导出到 CSV(文本)文件。
  2. 修改 CSV 文件中的相应行。
  3. 使用 重新加载 CSV 文件LOAD DATA ... REPLACE INTO TABLE

这是我第一次看到这种更新表记录的方法,我想知道这样做的合理性是什么。

顺便说一句,由于更新时需要锁定 CSV 文件,这种方案会导致大量线程同步问题。

我将不胜感激有关使用LOAD DATA ... REPLACE INTO TABLE而不是UPDATE table_name SET.

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...