Производительность для чтения файлов и вставки содержимого в базу данных - PullRequest
0 голосов
/ 10 мая 2011

Я занимаюсь разработкой системы, которая работает не в режиме реального времени, но существует промежуточный автономный сервер между компьютерами конечных пользователей и базой данных. Идея состоит в том, что вместо того, чтобы обременять сервер базы данных каждый раз, когда пользователь отправляет что-либо, служба Windows на компьютере базы данных регулярно сканирует сервер ретрансляции и обновляет базу данных, удаляя временные файлы в блоке ретрансляции.

Существует сценарий, когда клиентское программное обеспечение, установленное на тысячах компьютеров, отправляет информацию практически одновременно. Справедливо следующее:

  • Вышеуказанный сценарий не будет происходить часто, но может происходить раз в две недели.
  • Для каждой машины на сервере ретрансляции записывается 24 байта данных (4 КБ на диске), которые мы хотим затем собрать и обновить базу данных. Поэтому, хотя пока неплохо, если пользовательская база пока составляет всего несколько тысяч, они могут составить миллионы сверхурочных.

Я думал о пакетной операции, которая одновременно собирает только 15 000 - 20 000 файлов и запускается каждый раз (можно изменить из app.config). Проблема заключается в том, что если база пользователей вырастет до нескольких миллионов, это займет несколько дней. Да, это не обязательно должна быть информация в режиме реального времени, но ожидание в течение нескольких дней, пока все данные не попадут в базу данных, также не идеально.

Я думаю, что всегда будет узкое место, если блок реле забит, но есть ли более эффективные способы повышения производительности и передачи данных в разумные сроки (день, две вершины)?

С уважением, F.

1 Ответ

0 голосов
/ 10 мая 2011

Я думаю, вы могли бы подумать, что во избежание забивания диска только один поток читает файлы, а затем перекладывает обработку на несколько потоков для записи в базу данных и возвращает потоку диска, чтобы удалить файлы после фиксации.Количество потоков БД может быть «изменяемым из app.config», чтобы найти наилучшее значение для вашей конфигурации оборудования.

Только мои 2 цента, чтобы заставить вас задуматься.

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