Редактировать:
Моя проблема больше не является проблемой: я повторил свои тесты производительности и сделал фатальную глупую ошибку: я забыл x1000, чтобы получить секунды из миллисекунд: /
Извините за это, ребята.
Для информации:
- Я выполняю около 1900 обновлений в секунду с моего компьютера на сервер базы данных в локальной сети.
- 3.200 обновлений в секунду, если программы находятся на той же машине, что и БД.
- 3.500 обновлений в секунду с моего ПК на сервере базы данных. Я не воссоздаю и заново не открываю новый SQLConnection.
- 5.800 обновлений в секунду с пакетным текстом.
Для моих 10.000 строк, если это займет 5 секунд, это нормально для моих программ. Извините, что беспокою вас.
На самом деле я использую хранимую процедуру SQL для создания строки в моей базе данных, чтобы избежать SQL-инъекций. В C # у меня есть следующий метод:
public void InsertUser(string userCode)
{
using (SqlConnection sqlConnection = new SqlConnection(this.connectionString))
{
SqlCommand sqlCommand = new SqlCommand("InsertUser", sqlConnection);
sqlCommand.CommandType = System.Data.CommandType.StoredProcedure;
sqlCommand.Parameters.Add(new SqlParameter("@UserCode", userCode));
sqlConnection.Open();
sqlCommand.ExecuteNonQuery();///0.2 seconds !ERROR HERE! 0.2ms here,NOT 0.2sec!!!
}
}
Прекрасно просыпается, когда мне нужно вставить один или два ряда. Но если мне нужно создать 1.000 пользователей, 10.000 продуктов и 5000 питомцев, это не лучшее решение: я потеряю огромное количество времени на транспорте в сети.
Я верю, без регистрации, что я могу использовать только ограниченное количество обратных вызовов. Поэтому я не хочу звонить 10.000 раз:
sqlCommand.BeginExecuteNonQuery()
Другим способом будет создание пакетного текста, но существует риск внедрения SQL-кода (и это некрасиво).
Существует ли объект 'SqlCommandList', который управляет этим в .Net? Как сделать большую запись в базе данных? Какой хороший образец для этого?