В Go метод ExecContext используется для выполнения SQL-запросов с поддержкой контекста (context.Context). Контекст позволяет управлять временем выполнения запроса, отменой операции и передачей метаданных.
Когда стоит прокидывать контекст в БД в ExecContext, а когда не стоит?
В Go метод ExecContext используется для выполнения SQL-запросов с поддержкой контекста (context.Context). Контекст позволяет управлять временем выполнения запроса, отменой операции и передачей метаданных.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
В Go метод ExecContext используется для выполнения SQL-запросов с поддержкой контекста (context.Context). Контекст позволяет управлять временем выполнения запроса, отменой операции и передачей метаданных.
Стоит прокидывать контекст в ExecContext, когда:
- Нужно контролировать таймауты или дедлайны выполнения запроса.
- Требуется возможность отмены операции (например, при отмене HTTP-запроса).
- Необходимо передавать метаданные (например, трассировку или аутентификацию) через контекст.
Не стоит использовать ExecContext, если:
- Запрос очень простой и не требует контроля времени выполнения.
- Контекст не используется в вызывающем коде, и нет необходимости в отмене или таймаутах.
Пример:
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
_, err := db.ExecContext(ctx, "UPDATE users SET active = ? WHERE id = ?", true, userID)
if err != nil {
// обработка ошибки
}
Таким образом, прокидывание контекста полезно для управления жизненным циклом запроса и улучшения контроля над выполнением операций с БД.