2010-08-03 14 views
5

Sto usando R per leggere alcuni dati da un database MySQL utilizzando il pacchetto RODBC. I dati vengono quindi elaborati e alcuni risultati vengono inviati al database. Il problema è che il server chiude la connessione dopo circa un minuto a causa di inattività, che è il tempo necessario per elaborare i dati localmente. È un server condiviso, quindi l'host non eseguirà il timeout.MySQL odbc timeout from R

Penso che ci sono due possibilità per aggirare questo 1) aprire una connessione prima di ogni transazione database e chiudere subito dopo 2) Inviare qualche piccola comando 'ping' al server ogni 30 secondi o giù di lì per lasciare che il il server sa che sono ancora lì.

Posso implementare il primo abbastanza facilmente, ma sembra piuttosto lento aprire e chiudere costantemente le connessioni. Qualcuno conosce un comando efficiente per il secondo? O un modo migliore del tutto?

risposta

4

La prima soluzione è quella che preferisco. È davvero difficile fare il secondo con un programma a thread singolo come R. Se R è occupato nell'esecuzione dell'analisi, non c'è modo di gestire il ping. A meno che non si stiano facendo centinaia di letture/scritture, il metodo di apertura e chiusura della connessione non dovrebbe introdurre una quantità eccessiva di spese generali.

+0

Finalmente sono andato con # 1, ci sono un numero grande o lettura/scrittura, ma immagino 'è quello che è' – stotastic