У меня есть база данных SQL Server 2008, и я использую C # 4.0 с настройкой классов Linq to Entities для взаимодействия с базой данных.
Существует таблица, которая индексируется в столбце DateTime, где значением является время вставки строки. Несколько новых строк добавляются в секунду (~ 20), и мне нужно эффективно вытянуть их в память, чтобы я мог отобразить их в графическом интерфейсе. Для простоты давайте просто скажем, что мне нужно показать 50 последних строк в списке, отображаемом через WPF.
Я обеспокоен тем, что опрос нагрузки может повлиять на базу данных, и время, которое потребуется для обработки новых результатов, вынуждает меня стать медленным потребителем (застревание за отставанием). Я надеялся на несколько советов по подходу. Те, которые я рассматриваю, являются:
- Опрос базы данных в тесном цикле (~ 1 результат на запрос)
- Опрашивать базу данных каждую секунду (~ 20 результатов на запрос)
- Создать триггер базы данных для вставок и связать его с событием в C # ( SqlDependency )
У меня также есть несколько вариантов доступа;
- Выбор таблицы Linq-to-Entities
- Необработанный SQL-запрос
- Хранимая процедура Linq-to-Entities
Если бы вы могли пролить свет на плюсы и минусы или предложить какой-то другой способ, я бы с удовольствием его услышал.
Процесс, который добавляет строки в таблицу, не находится под моим контролем, я хочу только прочитать строки, которые никогда не нужно изменять или добавлять. Самые важные вещи - не перегружать SQL Server, поддерживать графический интерфейс в актуальном состоянии, быстро реагировать и использовать как можно меньше памяти ... вы знаете, основы;)
Спасибо!