Web*_*wer 7 mysql update replace csv
我继承了一个系统,其中对 MySQL 表的所有更新(甚至是单行/记录)都不是使用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 进行任何操作都是非常不寻常的。我永远不会将它用于单行更新。
如果我处于你的立场,我会更改该代码以使用传统的更新。不用担心线程同步问题。