我继承了一个系统,其中对 MySQL 表的所有更新(甚至是单行/记录)都不是使用UPDATE table_name SET. 相反,它们是通过以下方式完成的:
UPDATE table_name SET
LOAD DATA ... REPLACE INTO TABLE
这是我第一次看到这种更新表记录的方法,我想知道这样做的合理性是什么。
顺便说一句,由于更新时需要锁定 CSV 文件,这种方案会导致大量线程同步问题。
我将不胜感激有关使用LOAD DATA ... REPLACE INTO TABLE而不是UPDATE table_name SET.
我猜以前的开发人员读到 LOAD DATA 对于批量加载数据更快。这在 MySQL 手册中有说明,并且经常在类似这样的网站上重复。
然后他们做了一个天真的假设,即 LOAD DATA 对所有事情都更快,甚至是单行更新。
我很确定开发人员从未自己测量过性能。
除了批量加载文件中已经存在的数据之外,将 LOAD DATA 用于任何其他内容是非常不寻常的。我永远不会将它用于单行更新。
如果我站在你的立场上,我会更改该代码以使用传统的 UPDATE。不要遭受线程同步问题的困扰