“LOAD DATA ... REPLACE INTO TABLE”相对于“UPDATE table_name SET”的优点

Web*_*wer 7 mysql update replace csv

我继承了一个系统,其中对 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

Bil*_*win 4

我猜以前的开发人员读过“LOAD DATA 对于批量加载数据来说更快”。MySQL 手册中对此进行了说明,并且在像本网站这样的网站上经常重复这一点。

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

我非常确定开发人员从未亲自测量过性能。

除了批量加载文件中已有的数据之外,使用 LOAD DATA 进行任何操作都是非常不寻常的。我永远不会将它用于单行更新。

如果我处于你的立场,我会更改该代码以使用传统的更新。不用担心线程同步问题。