我在尝试检索存储在RDS amazon实例中的一小部分数据库表时遇到问题。
使用R,从EC2实例,我使用dplyr包将多个数据帧导出到RDS数据库。这是通过运行循环,将数据附加到存储在RDS实例中的大表(200 GiB)来完成的:
dbWriteTable(conn, value = df, name = "oco2v8", append = TRUE)
然后,我打开一个postgresql连接,创建一个tbl,然后进行一些过滤:
conn1 = dbConnect(PostgreSQL(),
host="XXXXXXXXXXXXXXXXX.amazonaws.com",
port=5432,
user="XXXX",
password="XXXXX",
dbname="oco2v8")
oco2data <- tbl(conn1, my_table_name)
filtered <- filter(oco2data, latitude > 92 & latitude < 98 & longitude > 34 & longitude < 40 & xco2_quality_flag == 0)
过滤所需的时间比预期的要长,通常是几分钟。当我使用collect()命令将子集数据导入我的R环境时,更大的问题就开始了。
my_df <- filtered %>% collect()
长时间后,该命令最终完成了工作,但我不明白为什么它非常慢,因为子集数据大约为600kb。
RDS实例规范如下:
- 类型:db.t2.medium,Micro Instance - Current Generation
- 记忆:4 GiB
- CPU虚拟核心数:2个vCPU
- EBS优化:没有
- 网络性能:中等
- EC2和RDS实例都托管在美国东部(俄亥俄州)地区。
我试图将内存和网络性能提高到最高,将多AZ参数更改为是,通过psql命令行工作并通过我的本地计算机工作 - 没有解决问题。此外,我尝试更改连接到RDS实例的EC2实例的规范。
这种表现不佳的原因是什么?
有人有通过EC2使用RDS实例的经验吗?
collect()命令有替代方法吗?
非常感谢任何帮助!
谢谢,
DOR