Ответ
Для дебага медленной работы БД в Go можно использовать:
- Логирование запросов с помощью
database/sql:
db.SetConnMaxLifetime(0)
db.SetMaxIdleConns(50)
db.SetMaxOpenConns(50)
db.SetConnMaxIdleTime(time.Hour)
- EXPLAIN ANALYZE для анализа запросов:
rows, err := db.Query("EXPLAIN ANALYZE SELECT * FROM users WHERE age > $1", 30)
- pprof для профилирования:
import _ "net/http/pprof"
go func() {
log.Println(http.ListenAndServe("localhost:6060", nil))
}()
-
Метрики через Prometheus или OpenTelemetry.
-
Кэширование частых запросов (Redis, Memcached).
Ключевые моменты:
- Проверяйте индексы
- Избегайте N+1 запросов
- Оптимизируйте сложные JOIN
- Мониторьте нагрузку на соединения