我正在使用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行进,对我来说似乎很疯狂。
答案 0 :(得分:0)
服务器提供商存在巨大的滞后,实际上10秒钟确实是我收到彼得所提到的数据的延迟。