Подтвердить что ты не робот

Недостаток хранимых процедур

Хотел бы получить список преимуществ и недостатков использования хранимых процедур. Основное преимущество SPs, по-видимому, предварительно скомпилировано и абстракция данных из приложения. Дайте мне свои мысли....

4b9b3361

Ответ 1

Исправление: будут ли они предварительно скомпилированы, зависит от базы данных. Например, в SQL Server это не так. Хранимые процедуры и параметризованный SQL скомпилируются перед запуском. Хранимая процедура иногда может повторно использовать план выполнения, если соответствующий существует... но поэтому может параметризовать SQL.

Изменить: Здесь MSDN говорит об этом:

SQL Server 2000 и SQL Server версии 7.0 содержат ряд изменений в обработке операторов, которые расширяют многие преимущества производительности хранимых процедур для всех операторов SQL. SQL Server 2000 и SQL Server 7.0 не сохраняют частично скомпилированный план хранимых процедур при их создании. Хранимая процедура компилируется во время выполнения, как и любая другая инструкция Transact-SQL. SQL Server 2000 и SQL Server 7.0 сохраняют планы выполнения для всех операторов SQL в кэше процедур, а не только планы выполнения хранимых процедур.

Ответ 2

Преимущества. Предоставляет "открытый интерфейс" для базы данных (другой уровень абстракции).

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

Недостатки. Не может быть лучшим местом для сложной логики. Однако, следуя идее, что сложная логика принадлежит коде приложения, а не хранимым процедурам, хранимая процедура становится просто CRUD-операциями (каждая таблица имеет процедуры "Создать", "Читать", "Обновить" и "Удалить" ). В этом случае хранимые процедуры не добавляют никакого значения в приложение, они только усложняют обслуживание и становятся ненужными.

Запросы сгруппированы вместе, поэтому сложнее увидеть контекст приложения, в котором они используются. Анализ влияния изменений длиннее, и выполнение изменений также более продолжительное.

Поэтому: используйте хранимые процедуры для инкапсуляции сложных запросов (сложные объединения, сложные, где предложения,...). Но не используйте хранимую процедуру для сложного приложения/домена/бизнес-логики и не используйте хранимые процедуры для CRUD. Поэтому хранимые процедуры должны использоваться в меньшем числе случаев, а не быть стандартным инструментом для всех запросов в приложении.

Групповой код (включая запросы) для достижения "функциональной сплоченности" вместо группировки с помощью инструмента/технологии. Чтобы позволить администратору баз данных оптимизировать базу данных на основе того, как она запрашивается, используйте профилировщик.

Ответ 3

Используя SP, вы также избегаете предоставления пользователям прямого доступа к таблицам. Весь доступ можно контролировать с помощью SP.

Ответ 4

Недостатки

  • Рефакторинг сложнее. Переименование или изменение, где хранимая процедура может вызвать плохой эффект.

  • Тестирование хранимой процедуры модуля требует помощи кода вне БД

Преимущество

  • Вам не нужно развертывать, чтобы внести изменения.
  • Быстрее
  • Легче развернуть систему

Ответ 5

С текущими библиотеками framework.Net 3.5 я бы использовал Linq для выполнения большинства операций с базой данных. Там могут быть места, где SP имеет больше смысла. Но Linq также имеет право запускать SP.

По теме недостатков SP, посмотрите следующую ссылку - интересный анализ. Также проверьте комментарии в блоге.

http://www.spoiledtechie.com/post/Whats-up-with-Stored-Procedures-these-days.aspx

Ответ 6

Преимущество: Хранимые процедуры могут использоваться для обеспечения целостности данных и обеспечения соблюдения политики базы данных, не полагаясь на внешнюю программу.

Недостаток: может сделать отладку более сложной. Также может быть чувствительным к удалению во время операций копирования, если это не сделано правильно.

Ответ 8

Другим недостатком является контроль версий, поскольку некоторые из бизнес-логики теперь находятся в стороне базы данных. Можете ли вы легко вернуться к v1 (год назад) из v2 (сейчас)?

Возможное решение - это версия имен хранимых процедур. Но теперь база данных беспорядок со старыми и новыми хранимыми процедурами.

Ответ 9

Недостатки

  • Контроль источника может быть болью.
  • Отладка сложна.
  • Если у вас много функций в proc, это упростит обмен между различными системами баз данных. Это также создает больше работы, если вы хотите поддерживать разные системы баз данных.
  • Разработка хранимых процедур может быть довольно специализированной задачей, особенно по мере того, как они становятся более сложными.

Ответ 10

Только несколько причин я использую хранимые процедуры исключительно при создании приложений:

  • Хранимые процедуры могут быть интерфейсом между вашим приложением и базой данных. Таким образом, сервер, на котором находится база данных, которая обычно более мощная, чем настольная машина, может использоваться для выполнения более сложных процедур.
  • Если вам нужно изменить структуру базы данных, вы можете сделать это, не нарушая ваше приложение, если хранимые процедуры используются в качестве интерфейса.
  • Когда вы пишете, хранимые процедуры содержат предварительно скомпилированный и предварительно протестированный SQL.
  • Легче выполнять сложные операции с хранимыми процедурами, чем с SQL, сгенерированным клиентом или графическим интерфейсом.

Ответ 11

Преимущество: администратор базы данных может добавить поведение, которое не имеет значения для приложения. Например, сохранение даты изменения для каждой строки.

Ответ 12

Преимущество: ваш код, связанный с базой данных, скорее всего, будет написан сотрудниками, которые заинтересованы в работе с базами данных и умеют работать.

Ответ 13

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

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

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

Ответ 14

Преимущество: команда операций имеет крючок для контроля или устранения проблем в производстве.

Ответ 15

Преимущества: SP используются для извлечения множества операторов sql. Недостатки: отладка сложна.

Ответ 16

Еще одно преимущество может быть в крупных корпоративных средах, где у вас может быть несколько клиентских приложений и сред (например, веб-приложений, настольных компьютеров и инструментов для распространения на разных ОС), которые используют базу данных. Для некоторых бизнес-правил изменения могут быть внесены в базу данных, и это будет эффективно во всех средах.

Ответ 17

Преимущества -

  • Организован в одном месте (не посыпается по всему коду)
  • Гораздо быстрее, чем динамические запросы

Ответ 18

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

Ответ 19

простой ответ будет следующим: adv: это самая мощная структура для инкапсуляции T-SQL-кодов.    он не ограничен SELECT и поддерживает все коды DML.    он обеспечивает получение входных данных и непосредственное возвращение выходов.

dis: невозможно вызвать его в SELECT, поэтому вы не можете запустить его для    несколько записей.

Ответ 20

-Advantages хранимой процедуры

  • Многоразовый и прозрачный для любого приложения.
  • Secure.
  • Сократите трафик данных между приложением и сервером базы данных.
  • Повысить производительность приложения.

-Disadvantages Хранимой процедуры.

  • Большое количество логических операций увеличивает загрузку процессора.
  • Сложно отлаживать.
  • Нелегко разрабатывать и поддерживать.
  • Не предназначен для разработки сложной или гибкой бизнес-логики.