Наилучший способ создания записей в базе данных SQL Server в соответствии с требованиями к производительности

#performance #sql-server-2008

#Производительность #sql-server-2008

Вопрос:

В настоящее время я разрабатываю систему баз данных для хранения результирующих данных с компьютера. Данные поступают с компьютера через 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:

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

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

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

Комментарии:

1. Спасибо за это. Я очень уверен в цифрах. По нашим оценкам, около 2 ГБ в рабочий день, система обычно будет работать только в рабочее время.