В начале разработки нашего приложения мы довольно сильно использовали SQLDependency для кэширования результатов db, пока уведомления не сообщили нашему приложению, чтобы получить новую копию.
Во время тестирования мы заметили, что производительность sql db забивалась службой уведомлений sqldependency. Мы уменьшили количество таблиц, которые мы использовали sqldependency, и заметили большой прирост производительности. Итак, мы думали, что мы просто закончили использовать его, и мы двинулись дальше. Теперь мы сводим всего к нескольким таблицам.
Позже мы обнаружили, что мы не можем уменьшить уровень доступа к безопасности для имени пользователя, которое установит зависимость. Мы могли бы иметь более одной строки соединения для каждого db (один для зависимости и один для остальной части приложения), но с множественным зеркалированием db и db, это боль (из точки зрения администратора и разработки приложения sql db)
В этот момент мы просто подумываем о том, чтобы полностью отказаться от SQLDependency на основе следующей логики:
- Нам не нужно "мгновенное" уведомление о том, что данные были изменены. Если бы мы знали в течение 1 секунды, это было бы достаточно быстро.
- С небольшим повторным факторингом мы можем получить его до 1 таблицы и опросить эту таблицу раз в секунду.
Кто-нибудь видит недостаток в этой логике?
Будет ли опрос одной таблицы раз в секунду вызывать более или менее нагрузку на db, чем SQLDependency?
У кого-то была проблема с производительностью с SQLDependency?