我有一个mysql数据库,其中有一个包含大约6000万个条目的表,主键是“x'”。我有一个数据集(csv文件),它也有大约6000万条目。该数据集还具有索引' x。对于关键词' x'的值对于mysql表和数据集都是通用的,mysql表中的相应条目只是通过增量更新为计数器变量。要插入数据集中的新数据。
一个简单的串行执行,我们尝试更新条目(如果存在)或者插入大约需要8个小时才能完成。我该怎么做才能提高整个程序的速度?
答案 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 +分块