Закрыть соединение с БД в Slick 3.0
Я использую Slick 3.x с Play 2.3.9 без play-slick, потому что play-slick не поддерживает эту комбинацию. Я читаю
И упомянул, что соединение с базой данных должно быть закрыто явно, т.е.
def delete(id: Long): Future[Int] =
try db.run(filterQuery(id).delete)
finally db.close
Нужно ли явно закрывать соединение, как указано в статье? Будет db.close
закрывает соединение и пул? Потому что, OTH, примеры в документе Slick 3.0 явно не закрывали соединение. Я мог бы неправильно понять документ. Спасибо
2 ответа
db.close закрывает пул соединений. Вы, вероятно, не хотите этого делать. То, как он записан в БД, скорее всего, закроется до обработки запроса к базе данных.
db.close не закрывает связи или заявления. Это было сделано автоматически для вас в предложении db.run()
Я проверил список процессов MySQL, show processlist
и обнаружил, что приложение не подключалось больше, чем было указано в настройках приложения, и продолжало принимать запросы больше, чем допустимые подключения к базе данных. Это показывает, что после каждого запроса соединение БД возвращается в пул в пределах db.run(...)
и db.close не требуется.