Соединения не являются поточно-ориентированными. Если несколько пользователей делятся соединением, это звучит как вызов мне неприятностей.
Базы данных имеют ограничение на количество одновременных соединений, которые они могут принимать. И одновременные пользователи накладывают дополнительное бремя на разработчиков, чтобы определить надлежащую изоляцию между транзакциями. Вы должны сбалансировать отзывчивость с точностью; проведите исследование по изоляции и кислоте.
Если вы должны держать соединение открытым, единственный способ увеличить количество пользователей - это дублировать базу данных. Это создает свои собственные головные боли для обеспечения синхронизации данных между всеми экземплярами.
Вы должны держать соединения открытыми, только если вам необходимо: открыть соединение, выполнить операцию и закрыть соединение.
Ситуация с корзиной покупок интересная. Вместо того, чтобы держать соединение открытым все время, для среднего уровня был бы другой подход - установить сеанс и построить транзакцию на среднем уровне. Сохраняется в базе данных только после завершения полной транзакции, когда пользователь нажимает кнопку «купить».