Запрос данных во время их вставки: можем ли мы использовать кэширование? - PullRequest
0 голосов
/ 12 апреля 2009

Мы создаем приложение, которое требует ежедневной вставки приблизительно 1,5 миллионов строк данных в таблицу. У нас 16 столов. Мы отслеживаем 3-дневные исторические данные, включая данные текущего дня.

Приложение выполнено с использованием C #; на стороне сервера мы запускаем exe, который заполняет таблицы данных в часы рынка (4,5 часа), и мы обновляем 16 таблиц каждые 5 секунд.

На стороне клиента приложение получает пользовательские запросы, которые требуют самых последних вставленных данных (за последние 5 секунд) и историческую точку, которая может быть сегодня или раньше, и строит их каким-либо образом.

У нас серьезная проблема с производительностью, поскольку один запрос может занять 1 секунду или более, что слишком много. Вопрос в том, что для сегодняшних данных, которые вставляются во время выполнения, можем ли мы использовать кэширование вместо того, чтобы обращаться к базе данных каждый раз, когда мы хотим получить что-то из сегодняшних данных? Будет ли это более эффективным? И если так, как мы можем это сделать? P.S на один день данные примерно 300 МБ, и у нас достаточно оперативной памяти

1 Ответ

0 голосов
/ 12 апреля 2009

Сохраните копию данных вместе с датой и временем, которое вы использовали для получения данных. В следующий раз получите только новые данные, что минимизирует объем данных, которые вы отправляете по сети.

Если все запросы выполняются в операции, то это занимает 1 секунду, возможно, проблема, с которой вы сталкиваетесь, заключается в том, что пользовательский интерфейс зависает. Если это так, не делайте этого в потоке пользовательского интерфейса.

Обновление (на основе комментариев): код, который вы запускаете в обработчиках событий элементов управления, выполняется в потоке пользовательского интерфейса, что приводит к зависанию пользовательского интерфейса. Нет единственного способа запустить его в отдельном потоке, я предлагаю BackGroundWorker для этого сценария. Посмотрите приведенный сообществом пример в конце.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...