kullanarak yavaş yavaş okuma performansı R için yeniyim ama bir SQL Server veritabanında saklanan verileri kullanarak dinamik grafikler oluşturmak için Shiny kullanmakla ilgileniyorum. Etkileşimi etkinleştirmek için veritabanından ham verileri getirmek ve veriyi özetlemek yerine R
içerisinde hesaplamalar yapmak istiyorum.R: RODBC & SQL Server
RODBC
kullanarak veritabanına bağlanabiliyorum, bir sorgu yürütebilir ve sonuçları bir data.frame
içinde alabilirsiniz. Ancak, R
'daki okuma zamanı, SQL Server Management Studio'da (SSMS) yürütülen aynı sorgudan yaklaşık 12x daha uzundur. SSMS, ~ 600 ms alır, oysa R
, yaklaşık 7.6 saniye sürer. Sorum şu: Yanlış bir şey yapıyorum veya R
veritabanı erişimi ile gerçekten yavaş mı? Ve eğer öyleyse, daha hızlı alternatifler var mı (ör. Veritabanı çıktısını bir dosyaya yazmak ve dosyayı okumak)?
Yardım isteyen sorgu hakkında bazı bilgiler: Sorgu, 4 sütunlu yaklaşık 250 K satırı alır. İlk sütun bir tarih ve diğer üç sayısal değerdir. R
ve SSMS'yi çalıştıran makine, 32 GB belleğe sahip son teknoloji Win 7 iş istasyonudur. Ben koşuyorum R
komut şöyledir: döndüren
system.time(df <- sqlQuery(cn, query))
: İlginç
user system elapsed
7.17 0.01 7.58
, benim makineye SQL veri aktarımı hızlı görünür, ama bu R
içten işlerle meşgul olduğu data.frame
'u geri göndermeden önce birkaç saniye için. Bunu görüyorum çünkü ağ kullanımı ilk saniyede yükseliyor ve hemen hemen 0'a dönüyor. Sonra birkaç saniye sonra, R
data.frame
geri dönüyor.
Oldukça bu kadar yavaş, bir süre sonra değerlendirdik ve RODBC kullanarak başka bir rotaya gitmeye karar verdik, bu çok basit sorgular dışında yavaşlamanın bir yoludur. – Hansi