Лучший способ создания записей в базе данных SQL Server для удовлетворения требований к производительности - PullRequest
1 голос
/ 12 апреля 2011

В настоящее время я разрабатываю систему баз данных для хранения данных результатов с компьютера.Данные поступают с компьютера через соединение Ethernet с приложением C #, которое анализирует данные и создает записи для данных в базе данных.Наши расчеты показывают, что нам нужно создавать не менее 12000 записей в секунду, чтобы не отставать от машины.Эти записи распределены по примерно десяти таблицам.

Мои первоначальные тесты дают нам не более 1800 записей в секунду на одну таблицу.Мой код на C # выглядит следующим образом:

 SqlCommand command = new SqlCommand ("insert tablename (column names) values (values)", connection);
 command.ExecuteNonQuery ();

, что я признаю, является наивной попыткой.

Мои вопросы:

  1. Возможна ли эта скорость создания записи и
  2. Какой лучший метод для достижения требуемой нормы?

База данных: SQL Server 2008

Язык: C # 2.0

1 Ответ

2 голосов
/ 12 апреля 2011

Если данные поступают слишком быстро для загрузки в базу данных «в режиме реального времени», то:

  • Обновите, получите лучшее аппаратное и программное обеспечение. Конечно, новая установка может все еще быть недостаточно быстрой (и сможете ли вы ее протестировать, прежде чем раскошелиться на $$?)
  • Defer. Пусть C # (или что-то еще, если C # не достаточно быстро) направит данные в отформатированный файл (с разделителями-запятыми, XML и т. Д.) Где-нибудь, и периодически его закрывает, запускает новый файл, и SQL загружает данные, найденные в «последний» файл.
  • SQL 2008 R2 имеет функцию «Stream Insight», которая может быть применимой здесь, хотя я бы определенно назвал ее расширенной темой.

Имейте в виду, что 12000 строк со скоростью 1 байт в секунду немного меньше 1 ГБ в день ... если у вас есть 100 байтов в строке, это чуть меньше 100 ГБ в день и 30 ТБ в месяц. Ты уверен в этих числах?

...