2015-10-20 6 views
1

Реферирования следующего примера: http://www.r-bloggers.com/a-shiny-example-sap-hana-r-and-shiny/Хорошо ли использовать odbcClose (канал) после загрузки таблиц SQL?

В следующем примере, они бегут odbcClose(ch) после того, как они получают таблицы, которые они хотят. Хорошо ли использовать odbcClose(channel) после загрузки таблиц в рабочее пространство? Должно ли что-то другое быть сделано при использовании SQL-соединения в приложении Shiny?

library("shiny") 
library("RODBC") 

ch<-odbcConnect("HANA_TK",uid="SYSTEM",pwd="manager") 
odbcQuery(ch,"SELECT table_name from SYS.CS_TABLES_ where schema_name = 'SFLIGHT'") 
tables<-sqlGetResults(ch) 
**odbcClose(ch)** 

shinyUI(pageWithSidebar(

    headerPanel("SAP HANA and R using Shiny"), 

    sidebarPanel(
    selectInput("Table", "Choose a table:", 
       choices = tables$TABLE_NAME), 
    numericInput("Records", "Number of Records to view:", 10) 
), 

    mainPanel(
    tableOutput("view") 
) 
)) 

ответ

2

У меня еще не возникло проблем, если я оставлю их открытыми. Я думаю, что R в конечном итоге закрывает любые неиспользуемые соединения.

Я не уверен, есть ли системное преимущество, но у меня появилась привычка как можно скорее закрыть мои каналы.

Когда мой системный администратор должен выполнять определенные задачи, ему может потребоваться закрыть сервер, и он пытается сделать так, чтобы это не делалось, если кто-то сейчас обращается к данным. Открытое соединение кажется ему, как будто кто-то обращается к данным, и поэтому он ждет, пока соединение не будет закрыто, чтобы отключить сервер. Если я оставил безрассудное открытое соединение, он, возможно, никогда не почувствует, что он может выполнить свое обслуживание.

Так, анекдотом профессиональной любезности, я закрываю свои связи, как только смогу.