从查询到c.JSON的速度非常慢

时间:2019-07-02 15:06:13

标签: postgresql go gin-gonic

我正在使用Gorm查询数据库,然后使用gin的c.JSON将结构封送为json。

这是一个很大的查询,没有太多结果(<100k),并且我需要花费6-10秒的时间来整理数据。

我不知道从哪里开始解决问题。

    [2019-07-02 14:41:04]  [946.63ms]   SELECT  big slow query
    [62861 rows affected or returned ]
    [GIN] 2019/07/02 - 14:41:11 | 200 |   7.92347114s |  ip | GET      /api/date/2019-05-30


    [2019-07-02 14:40:44]  [660.47ms]   SELECT big slow query
    [7583 rows affected or returned ]
    [GIN] 2019/07/02 - 14:40:54 | 200 | 10.841096216s |  ip | GET      /api/dailies

    [2019-07-02 14:43:49]  [154.13ms]   SELECT simple query
    [11 rows affected or returned ]
    [GIN] 2019/07/02 - 14:43:49 | 200 |  158.256792ms |  ip | GET      /api/dailycount

如您所见,查询1和2在600-900毫秒内解决了,虽然速度很慢,但可以单独进行优化。 问题是服务器的响应需要7.9和10.8s ..! 对于较小的查询,没有太大的区别,但是我不明白为什么会这样。

其中一条路线的go代码非常简单,并且与所有路线相似:

    var alertList []AlertJson
    dbInstance.Debug().Raw("SELECT big query").Scan(&alertList)
    c.JSON(http.StatusOK, gin.H{"alerts": alertList}) 

10.2秒用于第二个查询,具有7583行进,对我来说似乎很疯狂。

1 个答案:

答案 0 :(得分:0)

服务器提供商存在巨大的滞后,实际上10秒钟确实是我收到彼得所提到的数据的延迟。