加载RData比再次查询数据库需要更长的时间

时间:2015-07-13 22:44:41

标签: sql-server r rstudio-server rdata

我在256GB RAM服务器上运行RStudio Server,在另一台服务器上运行MS-SQL-Server 2012。该数据库包含的数据允许我构建一个包含约1亿个节点和约1.5亿个边缘的图形。

我有时间从这些数据构建此图表需要多长时间:

  • 第一个SELECT查询=〜22M行= 12分钟= df1(dataframe1)
  • 第二次SELECT查询=〜30M行= 8分钟= df2
  • 第3次SELECT查询=〜32M行= 8分钟= df3
  • 第四个SELECT查询=〜63M行= 70分钟= df4
  • edges = rbind(df1, df2, df3, df4) = 6分钟
  • mygraph = graph.data.frame(edges) = 30分钟

所以两个多小时。由于我的数据非常稳定,我想通过将mygraph保存到磁盘可以加快速度。但是当我试图加载它时,它就不会。经过4个小时的等待,我放弃了,认为出了问题。

所以我重新启动服务器,删除我的.rstudio文件夹并重新开始,这次以RData和RDS格式保存每个SQL查询和edges数据帧的数据帧(save()和{每次{1}},saveRDS()。每次保存后,我都会计算五个数据帧的compress = FALSEload()次。 readRDS()load()几乎相同的时间:

  • df1 = 1.1 GB文件= 1分钟
  • df2 = 1.4 GB文件= 2分钟
  • df3 = 1.7 GB文件= 6分钟
  • df4 = 3.1 GB文件= 13分钟
  • edges = 6.8 GB文件= 21分钟

足够好,我想。但是今天当我开始一个新的会话并试图readRDS()对它进行一些修改时,我又感觉到有些事情是错的。等待加载20分钟后,我放弃了。内存,磁盘和CPU不应该是问题,因为我是唯一使用此服务器的人。我已经重新启动了服务器并删除了我的.rstudio文件夹,认为可能在那里挂了我的会话,但数据帧仍然无法加载。虽然load(df1)正在运行,但load()显示没有磁盘活动,这是我从iotop获得的

ps

我不知道下一步该尝试什么。对我来说,加载RData文件所花费的时间比查询位于不同服务器上的SQL数据库要长。即使它确实如此,那么为什么在保存数据帧后我计时ps -C rsession -o %cpu,%mem,cmd %CPU %MEM CMD 99.5 0.3 /usr/lib/rstudio-server/bin/rsession -u myusernameload()时这么快?

这是我第一次在StackOverflow上问一些东西,很抱歉,如果我忘记提及一些对你很重要的东西来回答这个问题。如果我这样做,请告诉我。

编辑:布兰登在评论中要求的一些其他信息。 OS是CentOS 7.数据帧包含前两列中的边缘列表(col1 = node1; col2 = node2)和边缘属性的两个附加列。所有列都是字符串,长度在5到14个字符之间。我还在原始帖子中添加了每个数据帧的大致行数。谢谢!

0 个答案:

没有答案