Потому что стоимость открытия, аутентификации и авторизации доступа к базе данных довольно высока. Вот почему обычно все используют пул соединений с базами данных. Соединения все еще открыты, в то время как обработчики запросов получают доступное уже открытое соединение из пула. Когда кто-то закрывает соединение, то на самом деле происходит то, что соединение освобождается для использования другими.
Чтобы ответить ...
почему эти языки нельзя просто отбросить
какие соединения этот запрос открыт?
Есть ли законные причины для
почему вы можете держать его открытым?
Соединения могут оставаться открытыми после завершения запроса и использования в других целях. Например, асинхронное обновление данных. Но я с вами, в 90% случаев, когда запрос завершен, открытые соединения должны быть возвращены обратно в пул. В зависимости от используемой веб-платформы (Spring, DJANGO, ...) этот тип поведения можно настроить или, по крайней мере, реализовать с минимальными усилиями.