防止来自RStudio的持久性数据库连接。

问题描述 投票:1回答:1

我有一个Redshift数据库,我在一个从Jupyter Notebooks证实的Docker Image里面运行RStudio。

我添加了ODBC驱动,并安装了 odbc 包作为旋转Docker实例的命令的一部分。

我担心的是,我最终会与数据库有太多的开放连接。

我担心有很多长期的连接,因为它们可能会锁定我的表。我看了 odbc 和 RPostgreSQL 的文档,我没有看到任何关于超时或清除所有连接的方法。

我如何防止从 RStudio 到 PostgreSQL 有太多的长期连接?

r postgresql docker odbc rstudio
1个回答
1
投票

我的偏好和解决方案一直是使用的是 pool 包来管理连接。我不需要一个大的 "池子 "来受益于它的一个功能:超时重新连接。

使用起来很简单。与其他大多数 DBI 驱动程序,你不需要 library(pool),开盘时参考一下就可以了。

如果你原来的开机号是。

library(DBI)
con <- dbConnect(odbc::odbc(), driver = "ODBC Driver 17 for SQL Server",
                 server = "somehost,1433", uid = "someuser", pwd = "secret",
                 database = "umptysquat")

那就改用:

con <- pool::dbPool(odbc::odbc(), driver = "ODBC Driver 17 for SQL Server",
                    server = "somehost,1433", uid = "someuser", pwd = "secret",
                    database = "umptysquat", minSize = 1, maxSize = 5)

(将有意义的数字替换为 minSizemaxSize). 从这里开始。DBI::dbGetQuery(con, "select 1 as a") 工作,就像它是真实的一样。对我来说,真正的好处之一是,当连接关闭时(由于任何原因,包括超时和我的ssh隧道中断),池连接在下一次查询时自动重新连接。

大多数功能都能正常工作,尽管偶尔(我现在无法回忆或重现)我不得不做了 library(pool);library(odbc) 的一些DBI功能。又想不起来了,可能是一些不相关的东西。加载它们一般不会有问题(如果可以避免的话,我只是希望不要附加太多的包)。

© www.soinside.com 2019 - 2024. All rights reserved.