一尘不染

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

mysql

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


阅读 56

收藏
2022-10-08

共1个答案

一尘不染

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

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

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

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

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

2022-10-08