我使用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-900ms,虽然很慢,但可以分别进行优化。问题是服务器的响应时间分别为7.9秒和10.8秒!对于较小的查询,没有太大的区别,但我不明白为什么会发生这种情况。
其中一条路线的go代码非常简单,所有路线的go代码都很相似:
var alertList []AlertJson
dbInstance.Debug().Raw("SELECT big query").Scan(&alertList)
c.JSON(http.StatusOK, gin.H{"alerts": alertList}) 10.2秒用于第二个查询,有7583行要编组,这在我看来是相当疯狂的。
发布于 2019-07-04 22:37:50
我的服务器提供商有很大的延迟,事实上,就像peter提到的那样,10秒确实是我接收数据的延迟。
https://stackoverflow.com/questions/56855368
复制相似问题