每天更新3000万条记录表中3-4列的最佳方式



我有一个表,它有大约2500万至3000万行和15列。它们大多是静态的或得到实时更新。但对于一些列(3到4),我每天从hdfs获取一次数据并进行更新,这意味着这些列必须每天更新一次。

我试着从hdfs输出创建一个新表,并在主表上进行联接,但这似乎需要很长时间。我试着对它进行批量更新,但这也花了太长时间。

最好的方法是什么?

我使用postgres作为我的数据库

提高更新/插入查询性能的最佳方法是使用批量插入/更新

请看下面的帖子,这将帮助你:

MySQL批量插入或更新

拆分更新查询是否可以提高性能

我会尝试使用CREATE table AS创建一个新表。。。命令,在新表和使用批处理数据创建的表之间使用联接,而不是更新旧表。

http://www.postgresql.org/docs/9.4/static/sql-createtableas.html

如果你把它放在一个事务中,你可以把它放进一个函数中,然后你可以重命名表来切换它们,或者删除旧表并重命名新表。

我见过这种策略像批处理作业的时钟一样工作的过程(创建新表比更新旧表更快)。

您需要测试它,看看它是否适合您的表,还需要查看您拥有的索引。

祝你好运!

注意:您还必须将索引和约束作为创建表添加到新表中,因为不会包括它们。

最新更新