如何从 dbconnect 数据库加速 collect()
How to speed up collect() from a dbconnect database
我正在从 amazonaws 服务器上的 odbc 驱动程序读取 tables。
我在 64 位 windows 计算机上使用 R 4.0.0。
在家工作并使用公司的 VPN,所以我的网速约为 17 Mbps 下载。
我用这条语句连接到数据库
con <- dbConnect(odbc::odbc(), "databasename", timeout = 10)
并且我使用此语句访问 table
case_tbl <- tbl(con, dbplyr::in_schema("fhv_owner", "案例"))
案例<-收集(case_tbl)
table 有 500K 行和 60 列,所以它并不大,但下载大约需要 2 分钟。
如果我的网速慢,有时需要 30 分钟。
有什么办法可以加快速度吗?也许用 data.table 而不是 dplyr?
我尝试过滤我选择的列,但有时我需要更多列并且必须重新运行。
也许我只是需要为更快的互联网付费。
谢谢,
詹妮弗
因为你不在这里做任何数据操作data.table
不会帮助你加快这个过程。
为确保延迟是由于您的互联网连接速度引起的并且与 dbplyr
无关,请直接使用 DBI
:
library(DBI)
con <- dbConnect(odbc::odbc(), "databasename", timeout = 10)
system.time({case_tbl <- dbGetQuery(con, "SELECT * FROM fhv_owner.case")})
根据您的用例和数据库系统,将 odbc::odbc()
替换为 RPostgres::Postgres()
可能是有意义的(如果您有一个 postgres 数据库,否则还有其他软件包...) .这至少对我帮助很大!
我正在从 amazonaws 服务器上的 odbc 驱动程序读取 tables。 我在 64 位 windows 计算机上使用 R 4.0.0。 在家工作并使用公司的 VPN,所以我的网速约为 17 Mbps 下载。
我用这条语句连接到数据库 con <- dbConnect(odbc::odbc(), "databasename", timeout = 10)
并且我使用此语句访问 table case_tbl <- tbl(con, dbplyr::in_schema("fhv_owner", "案例")) 案例<-收集(case_tbl)
table 有 500K 行和 60 列,所以它并不大,但下载大约需要 2 分钟。 如果我的网速慢,有时需要 30 分钟。
有什么办法可以加快速度吗?也许用 data.table 而不是 dplyr?
我尝试过滤我选择的列,但有时我需要更多列并且必须重新运行。
也许我只是需要为更快的互联网付费。
谢谢, 詹妮弗
因为你不在这里做任何数据操作data.table
不会帮助你加快这个过程。
为确保延迟是由于您的互联网连接速度引起的并且与 dbplyr
无关,请直接使用 DBI
:
library(DBI)
con <- dbConnect(odbc::odbc(), "databasename", timeout = 10)
system.time({case_tbl <- dbGetQuery(con, "SELECT * FROM fhv_owner.case")})
根据您的用例和数据库系统,将 odbc::odbc()
替换为 RPostgres::Postgres()
可能是有意义的(如果您有一个 postgres 数据库,否则还有其他软件包...) .这至少对我帮助很大!