Из того, что я прочитал, по-видимому, существуют незначительные преимущества в производительности с использованием хранимых процедур, а просто для создания команд на C# и их прямого вызова в коде программы, по крайней мере, когда речь заходит о машинах, которые используют серверную программу и движок db (и когда процедуры просты). Большинство людей, похоже, считают, что это «проблема предпочтений», и добавить несколько других незначительных преимуществ, чтобы оправдать их дело.Выполняют ли хранимые процедуры SQL Server лучше в сетевых кластерах?
Однако, я не мог найти никакой информации, является преимуществом хранимой процедуры, когда механизм базы данных расположен на отдельной физической машине из основного приложения.
Если я не ошибаюсь, на ферме серверов не будет ли выгружать обработку на некоторые потоки процессора из основного серверного приложения, а будет ли первичная обработка на процессоре сервера db-сервера? Или это уже сделано на процессоре db engine в любом случае, когда библиотеки C# «строят» информацию для процесса обработки db?
В частности, у меня есть длительная транзакция, в которой я мог бы выполнять несколько вызовов в транзакционном блоке C#, но я подозреваю, что сохраненный процесс фактически имеет огромное преимущество в производительности за счет сокращения сетевых вызовов на движок db, а также гарантировать, что обработка не выполняется на основном серверном приложении.
Это правда?
В этом случае «длительная транзакция», вероятно, будет включать в себя полдюжины таблиц и потребует условной обработки. Для меня, похоже, это будет иметь значительное увеличение производительности (меньше сетевых вызовов и гарантированной обработки, выполняемых на другой физической машине), если движок db находится на другой машине. – Lammy
Тогда есть часть обслуживания. Где хранится TSQL в C#, находится ли он в скомпилированном коде? обновление хранимой процедуры в SQL Server будет намного проще, чем сбор/компиляция/выпуск кода. – Greg