Shiny + SQLite - 为什么Shiny非常慢?

时间:2015-08-01 06:56:24

标签: r sqlite shiny

我们已经开发了几个月的Shiny应用程序。但是,当我们的Shiny应用程序尝试加载大量数据时,非常慢。我们甚至使用reactive函数来重用数据。但是,当我们请求不同的数据集时,它仍然像以前一样缓慢。

我们有一个日志文件,它显示Shiny每次从我们的数据库加载至少 30.12672秒或52.24799秒。

Shiny如此缓慢的原因是什么?是服务器还是数据库?我们可以做些什么来加快速度?

我们正在使用SQLite数据库。这是让Shiny变慢的原因吗?

如果是这样,我们应该采用哪些其他类型的数据库系统来处理大量数据集?卡桑德拉? HBase的? Apache Spark?

修改

对于instace,

query <- "SELECT
    s.timestamp,
    s.particle_concentration as `PM2.5`,
    n.code as site
    FROM speckdata AS s

    LEFT JOIN nodes AS n
    ON n.nid = s.nid
    AND n.datatype = 'speck'

    WHERE strftime('%Y', s.localdate) = 'YEAR'
"

# Match the pattern and replace it.
dataQuery <- sub("YEAR", as.character(year), query)

# Store the result in data1.
data = dbGetQuery(DB, dataQuery)

if(nrow(data) > 0) {

    # Convert timestamp to date and bind it to the data.
    data$date <- as.POSIXct(as.numeric(as.character(data$timestamp)), origin="1970-01-01", tz="GMT")
}


    # Chosen to group the data in one panel.
    timePlot(
        data,
        pollutant = c(species, condition),
        avg.time = avg_time,
        lwd = 2,
        lty = 1,
        name.pol = c(species_text_value, condition_text_value),
        type = "site",
        group = TRUE,
        auto.text = FALSE
    )

Shiny中的速度非常慢。

但是当我们使用SQLite管理器查询数据集时,4719282行只需 1.9秒

enter image description here

1 个答案:

答案 0 :(得分:1)

我建议直接从数据库中测试SQLite查询的性能。如果这是您的慢点,您将需要优化查询以提高其效率。在我能够进一步提供帮助之前,最好知道性能问题的确切位置。