我有一个NodeJS应用程序,它需要从RDS Postgres中传输数据,对数据执行一些相对昂贵的CPU操作,并将其插入另一个数据库。我已经将CPU密集型部分卸载到AWS Lambda中,这样节点应用程序将获得一批行,并立即将它们传递给Lambda进行处理。瓶颈似乎是从Postgres接收数据的速度。
为了利用到数据库的多个连接,我有一个算法,它可以有效地跨越排序的id,从而可以维护多个并发连接。例如:1个连接获取ids 1-100,第二个连接获取ids 101-200等,然后当第一个返回时,可能获取ids 1001-1100。这是相对标准的做法吗?有没有一种更快的方法来提取数据进行处理?
只要我低于数据库的最大连接数,添加更多的并发应用程序(可能是从中传输数据)是否有好处?应用程序和RDS都在VPC中,RDS的CPU利用率达到30%左右,内存达到60%。

最佳答案

将Postgres数据库转储到CSV文件中或直接导出到平面文件中,将平面文件拆分后转储到S3中,然后让工作人员自己处理每一批文件可能要快得多。
从Postgres流式传输数据(特别是如果你要处理数百万个项目)将需要大量的IO和很长的时间。

10-05 22:48
查看更多