Я запрашиваю свою базу данных, используя Gorm, а затем использую c.JSON из gin для компоновки структур в json.
Это большой запрос с не таким большим результатом (<100k), и у меняпроблема со временем (6-10 секунд), чтобы упорядочить данные. </p>
Я не знаю, с чего начать, чтобы решить проблему.
[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,8 с ..!Для меньшего запроса нет большой разницы, но я не понимаю, почему это происходит.
Код перехода для одного из маршрутов довольно прост и аналогичен для всех маршрутов:
var alertList []AlertJson
dbInstance.Debug().Raw("SELECT big query").Scan(&alertList)
c.JSON(http.StatusOK, gin.H{"alerts": alertList})
10,2 секунды для второго запроса с 7583 стрелками на маршал мне кажутся довольно безумными.