Запрос каждую минуту - не очень большая нагрузка. У меня есть служба Windows, которая делает следующее:
Управляет расписанием сессий VoIP, запускает их, завершает их, начинает записи, заканчивает записи, очищает место записи на диске записи, отображает сообщения OSD. Каждая из этих задач находится в своем собственном потоке с таймером и выполняет свой запрос примерно каждые 4 секунды. В базе данных содержится более 100 000 записей и 100 пользователей веб-приложения, которые одновременно обращаются к одной и той же базе данных. Он работает нормально и работает уже около 3 лет.
В зависимости от вашей структуры, могут быть лучшие варианты, но я не нашел ни одного на данный момент. Например, в .NET есть библиотека параллельных задач, которую я еще не использовал, и, как я слышал, здесь есть что предложить. В любом случае, я использовал подход № 1 в течение многих лет, и он никогда не делал меня неправильно.
Когда вы думаете об этом, даже система, основанная на событиях, находится где-то в цикле с некоторыми указателями на функции. Вопрос в том, управляете ли вы этим вручную или нет, и как оно работает. Нагрузка на дб должна быть незначительной.