Параллельные вызовы базы данных с помощью RODBC - PullRequest
1 голос
/ 23 ноября 2011

Я работаю с фрагментами данных панели с примерно 3 * 10 ^ 6 строками и 11 столбцами.Эти данные хранятся в базе данных SQL (данные, которые я использую, являются подмножеством еще большего набора данных).Я хочу обрабатывать порции данных (каждую дату отдельно) без одновременного импорта всей вещи, но операции, которые мне нужно выполнить с каждым порцией, требуют больших вычислительных ресурсов, поэтому я хотел бы использовать foreach пакет.

Однако у меня возникают некоторые проблемы с параллельным выполнением вызова sql.Если я сделаю простой вызов, такой как (sqlQuery(channel, "select 1")), я могу выполнить его параллельно.Если я сделаю более сложное утверждение, я получу ошибки SIGPIPE.Кто-нибудь еще сталкивался с подобными проблемами?

1 Ответ

1 голос
/ 23 ноября 2011

Вы не сказали нам, какую базу данных вы использовали.На SQLServer, связанном с RODBC, если вы успешно сделали это с помощью транзакций.

channel = odbcConnect(database)
odbcSetAutoCommit(channel,FALSE)
# Make requests here
odbcEndTran(channel,TRUE) 

Я не уверен, что это также поможет, когда у вас есть только запрос на чтение, как в вашем случае, но это может стоитьпопробовать, потому что это всего лишь два дополнительных строки.Я спросил о сервере, потому что транзакции хорошо работают с MSSqlServer под ODBC, и у меня были смешанные результаты с другими (но я не старался).

...