Я новичок в R, но я заинтересован в использовании Shiny для создания динамических диаграмм с использованием данных, хранящихся в базе данных SQL Server. Чтобы включить интерактивность, я хочу собрать необработанные данные из базы данных и выполнить вычисления в пределах R
, а не суммировать данные базы данных.R: Ужасно медленная производительность чтения с использованием RODBC и SQL Server
Я могу подключиться к базе данных с помощью RODBC
, выполнить запрос и получить результаты в data.frame
. Однако время чтения в R
примерно на 12 раз больше, чем тот же запрос, выполненный в SQL Server Management Studio (SSMS). SSMS занимает ~ 600 мс, тогда как R
занимает около 7,6 секунды. Мой вопрос заключается в том, что я делаю что-то неправильно или R
просто очень медленно с доступом к базе данных? И если да, есть ли более быстрые альтернативы (например, запись вывода базы данных в файл и чтение файла)?
Некоторая информация о запросе, который может помочь: запрос извлекает около 250 тыс. Строк с 4 столбцами. Первый столбец - это дата, а остальные три - числовые значения. Машина работает R
и SSMS - это высокопроизводительная рабочая станция Win 7 с 32 ГБ памяти. R
команда, я бегу это:
system.time(df <- sqlQuery(cn, query))
, которая возвращает:
user system elapsed
7.17 0.01 7.58
Интересно, что кажется, что передача данных из SQL в моей машине быстро, но R
занят делать вещи внутри в течение нескольких секунд, прежде чем вернуть data.frame
. Я вижу это, потому что использование сети всплескивается в первую секунду и почти сразу возвращается к нулю. Затем несколько секунд спустя возвращается R
data.frame
.
Довольно точно, что это было так медленно, мы оценили его некоторое время назад и решили пойти другим путем, используя RODBC, это просто способ замедлить, за исключением очень простых запросов. – Hansi