Какие преимущества хранения сессий в бд?
Преимущество простое, если сайт высоконагруженный, то у него может быть несколько бакендов на разных серверах, на которые балансируется нагрузка. И если хранить сессии в файлах, то юзера будет разлогинивать при переключении сервера.
Еще удобно связывать сессию с конкретным юзером в БД. Можно вводить ограничения типа "нельзя быть залогиненым с двух браузеров", удобно для онлайн игр.
Или дать функционал "Разлогинить меня на всех устройствах".
И еще наверняка куча вариантов.
Сессию в базе хранят на тот случай, если там есть что-то ценное.
Например, есть конструктор сайтов или социальная сеть. И пользователь может кое-что сделать ещё до регистрации, например, создать пост или профиль свой заполнить. Можно все его временные данные сериализовать и поместить в базу, чаще всего JSON в NoSQL.
В обычную сессию тоже можно сохранить, но обычно пространство для хранения сессий регулярно чистят и тогда данные потеряются.
Сохранять в базу стоит только тогда, когда пользователь сделал что-то. Для каждого пользователя выделять место в базе бессмысленно.
Когда пользователь авторизуется, временные данные переносят на постоянное место хранения.
Регулярно область сессий неавторизованных пользователей чистят, но гуманно, то есть не очень активно, с большим интервалом хранения. 
Я обычно с другим сталкивался - данные из базы выгружают в сессию, чтобы меньше нагружать базу.
Вот схема: https://toster.ru/answer?answer_id=645494