Хорошая ли идея повторно использовать ADO.NET командные объекты?

StackOverflow https://stackoverflow.com/questions/1341788

  •  20-09-2019
  •  | 
  •  

Вопрос

Я работаю над .NET-программой, которая выполняет произвольные скрипты для базы данных.

Когда коллега начал писать код доступа к базе данных, он просто предоставил один объект command остальной части приложения, который используется повторно (настройка CommandText/Type, вызывающий ExecuteNonQuery() и т.д.) для каждого утверждения.

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

Однако вот о чем меня интересует, так это:будет ли это также снижать скорость выполнения, если каждый оператор отличается от предыдущего (не только разные параметры, но и совершенно другой оператор)?Я не смог легко найти ответ на этот вопрос в документации.

Кстати, используемая СУБД - Oracle, но я предполагаю, что этот вопрос на самом деле не относится к конкретной базе данных.

P.S.Я знаю, что разоблачаю то же самое Command объект не является потокобезопасным, но здесь это не проблема.

Это было полезно?

Решение

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

Другие советы

Снижение производительности обычно происходит при установлении соединения с базой данных, но ADO.NET здесь в помощь создается пул соединений.

Если вы хотите избежать повторного разбора инструкций каждый раз, вы можете поместить их в хранимые процедуры.

Я предполагаю, что ваш коллега просто использует какой-то старый подход, который он унаследовал от работы на других платформах, где повторное использование командного объекта действительно имело значение.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top