更新或插入一个包含6000万条目的mysql数据库

时间:2017-05-01 00:51:16

标签: mysql database optimization

我有一个mysql数据库,其中有一个包含大约6000万个条目的表,主键是“x'”。我有一个数据集(csv文件),它也有大约6000万条目。该数据集还具有索引' x。对于关键词' x'的值对于mysql表和数据集都是通用的,mysql表中的相应条目只是通过增量更新为计数器变量。要插入数据集中的新数据。

一个简单的串行执行,我们尝试更新条目(如果存在)或者插入大约需要8个小时才能完成。我该怎么做才能提高整个程序的速度?

1 个答案:

答案 0 :(得分:0)

计划A:IODKU,正如@Rogue建议的那样。

B计划:两个平方;它们可能运行得更快,因为8小时的一部分会在发生崩溃时收集大量的撤消信息。 normalization section接近这两个查询。

计划C:使用其中一个表中的PRIMARY KEY遍历这对表,以IODKU的形式,例如1000行。查看我的Chunking代码(并将其从DELETE改为IODKU)。

在B和C计划中,启用autocommit,这样就不会构建庞大的重做日志。

计划D:在将两个表与JOIN合并时构建新表。用原子

完成
RENAME TABLE real TO old,
             new TO real;
DROP TABLE old;   -- when happy with the result.

计划E:计划{+ 1}}

的D +分块