INSERT INTO ... SELECT ... vs在MySQL中转储/加载文件

时间:2010-05-07 17:15:50

标签: mysql database

使用INSERT INTO foo ... SELECT FROM bar JOIN baz ...样式插入语句与使用相同的SELECT语句将(bar,baz)转储到文件,然后通过加载文件插入foo有什么含义?

在我的搞乱中,我没有看到巨大的差异。我认为前者会使用更多的内存,但运行的机器有8GB的RAM,我甚至从未看到它已经过了一半。

我没有看到任何巨大的(或长期的)性能影响吗?两者的优点/缺点?

编辑:此加载过程自行发生。当时没有其他任何东西在查询数据库,所以锁定表并不是什么大不了的事,纯粹的速度是。

2 个答案:

答案 0 :(得分:0)

dump-and-load的一个优点是它不会锁定您选择的表。如果选择运行很长时间,这可能相当重要。

答案 1 :(得分:0)

问题是并发用户。 INSERT-SELECT应该持有锁以保证重复并防止复制时的任何更改。在INSERT之前,文件方法可以进行更改。如果这很重要取决于你如何定义FK以及你为此做了什么。您可能希望没有锁,因此请使用文件。