gocql Query.Get() против Query.GetRelease()

Что Query.Release() делает за кулисами? Что это значит «вернуть запрос обратно в пул»? Когда следует использовать Query.Get() и когда Query.GetRelease()?


person user1142902    schedule 27.09.2018    source источник


Ответы (1)


Как вы заметили в документах https://godoc.org/github.com/gocql/gocql#Query. Release действительно выпускает запрос обратно в пул. Его следует использовать, когда вы больше не хотите использовать конкретный рассматриваемый запрос.

Невыпущенный запрос можно использовать повторно, если вы хотите сделать его более производительным, поскольку вам не нужно выполнять какую-либо инициализацию, которая всегда происходит при создании запроса.

Когда именно каждый из них следует использовать, конечно, зависит от вашего случая, но общий принцип такой же, как указано выше. Обычно вы ставите defer q.Release() сразу после создания запроса, но это зависит от вашего конкретного варианта использования.

Что касается gocqlx.GetRelease(), он делает это для вас под капотом, чтобы обеспечить очень удобный и безопасный способ запроса и получения результата без необходимости обрабатывать очистку.

person Henrik Johansson    schedule 28.09.2018