【发布时间】:2019-04-11 01:39:15
【问题描述】:
我正在处理 AWS (RDS m4.large) 上的一个非常大(59 亿行)的表,并且在将数据获取到可以有效处理和查询的点时遇到了一些麻烦。
数据从记录的开头开始有一个以秒为单位的时间变量(类型:bigint),但我希望能够在每日级别(即 GROUP BY 天)汇总数据。
我通过简单地创建一个天列开始这个过程,并通过将秒转换为天来更新表格以填充天字段:
ALTER TABLE tbl
ADD COLUMN day INTEGER;
UPDATE tbl
SET day=tbl.eventtime/86400+1;
它在测试环境中运行良好(90 天记录的前 10 天),但可能出乎意料的是,它在完整的 50 亿行数据集上运行得不是很好。
在尝试了几次这个过程后,我意识到我之前创建的索引大大减慢了这个过程(更新查询从未完成)。我已经删除了所有索引并再次尝试更新。 20 小时后,查询仍在运行,我想知道这种方法是否非常不适合我正在处理的数据量。
我意识到另一种方法是以秒为单位的时间转换为某种 postgres 时间戳类型 - 但我不熟悉时间戳,不知道从哪里开始。
对这么大的表执行更新可行吗?是否有一种不同的方法可以更有效地将第二分辨率数据获取到可以按天汇总的程度?
如果需要任何其他信息,请告诉我。
【问题讨论】:
标签: postgresql amazon-web-services amazon-rds large-data