Сообщение администратору
Имя:
Почта:
Сообщение:
Вход на сайт
Логин:
Пароль:

Статистика
Поделиться
Поддержка  •  Дневник  •  О сайте  •  Реклама  •  Поставить баннер  •  Прислать  •  Хроника  •  Translate  •  Рекомендованное  •  Написать администратору OpenToWork Гости: 17    Участники: 2 Авторизация Авторизация   Регистрация 
Метод Научного Тыка
RULVEN
Поиск  
Blackball iMag | интернет-журнал
RSS-лента
Поделиться ссылкой:
Каталог

Статьи
Anonymous • Сб 17.09.2005 04:47

Начало » Разработка ПО » Microsoft SQL Server » Производительность хранимых процедур

Производительность хранимых процедур


Добавлено: Пн 27.12.2010 • Sergeant
Источник: источник
Просмотров: 1139
Комментарии: 0


По умолчанию каждый раз после выполнения хранимой процедуры сервер посылает клиентскому приложению сообщение о количестве строк, обработанных процедурой. Это информация очень редко нужна для клиента. Если отключить эту серверную функцию, то можно уменьшить сетевой трафик между сервером и клиентом, увеличить производительность запроса на сервере.
Есть два основных способа отключить функцию. Чтобы сделать это на уровне хранимых процедур необходимо добавить в начало кода процедуры команду SET NOCOUNT ON. Чтобы отключить функцию на уровне сервера необходимо выполнить следующий код:
SP_CONFIGURE 'user options', 512
RECONFIGURE
Это отключение затронет все транзакции на вашем сервере. Однако есть программы, которым нужна информация о количестве обработанных строк, иначе работать они не смогут. В этом случае лучше использовать SET NOCOUNT ON в ваших процедурах, а не отключать функцию посылки сообщения на уровне всего сервера.

Хранимые процедуры могут принимать множество параметров. Но если некоторые из них необязательны, то количество используемых параметров меняется при каждом запуске процедуры. Есть два способа разрешить эту проблему.
- Если вы хотите разработать ваш запрос как можно быстрее, и производительность приложения вас не волнует, то тогда можете писать подобные хранимые процедуры как обычно, не обращая внимания на количество передаваемых параметров. Проблема в том, что возможно вам придется выполнять запросы, объединять таблицы которые на основе переданных параметров объединять не надо.
- Второй способ займет больше времени на разработку, но сможет поднять производительность ваших процедур. Надо включить проверки типа IF...ELSE в ваш код процедуры, создать раздельные запросы для всех возможных комбинаций передаваемых параметров. Тогда вы можете быть уверены в эффективности выполнения процедуры в любом случае.

Если вы создаете хранимую процедуру, которая запускается не из базы Master, то не используйте в ее имени префикс "sp_". Это специальный префикс, зарезервированный для системных процедур. Хотя применение этого префикса не запрещено и ваша процедура с таким именем будет работать, это может сказаться на скорости вызова процедуры. Дело в том, что SQL сервер любую процедуру с префиксом "sp_" пытается найти в базе данных Master. А так как она не там, то происходит задержка вызова. Когда сервер не находит процедуру в базе Master, он пытается найти ее в текущей, предполагая что владелец объекта "dbo". Чтобы таких задержек не возникало - не используйте префикс "sp_" для ваших процедур.

Для выполнения строки запроса Transact-SQL используйте sp_executesql вместо команды EXECUTE. Sp_executesql имеет ряд преимуществ. Во-первых, поддерживает подстановку параметров, что дает возможность гибко работать с кодом. Во-вторых, создает планы исполнения, которые можно использовать повторно. Sp_executesql исполняет строку запроса в своем собственном пакете - сервер компилирует код в отдельный план исполнения.



Мне нравится 0   Мне не нравится 0



Сейчас читают:
Участников (0) и гостей (0)




Комментарии: 0
Нет ни одного комментария.

Новое
OWASP: что это такое и что нужно знать веб-разработчикам 2 дня назад, 11:44
OWASP: что это такое и что нужно знать веб-разработчикам
Система визуализации и мониторинга. Grafana + Prometheus 3 дня назад, 09:07
Система визуализации и мониторинга. Grafana + Prometheus
От имени реальных HR: Squid Werewolf маскируются под рекрутеров крупных компаний 3 дня назад, 03:16
От имени реальных HR: Squid Werewolf маскируются под рекрутеров крупных компаний
Айтишники отправляют детей учиться на плотников и электриков. Они уверены, что ИИ уничтожит интеллектуальный труд Пн 10.03.2025
Айтишники отправляют детей учиться на плотников и электриков. Они уверены, что ИИ уничтожит интеллектуальный труд
Ретроконсоль Sega Master System II: что внутри винтажной приставки? Пн 10.03.2025
Ретроконсоль Sega Master System II: что внутри винтажной приставки?
Обиженный программист «заминировал» IT-системы энергетического гиганта Пн 10.03.2025
Обиженный программист «заминировал» IT-системы энергетического гиганта
Алгоритмы голодания: ИИ отбирает хлеб у 76 миллионов фрилансеров Пн 10.03.2025
Алгоритмы голодания: ИИ отбирает хлеб у 76 миллионов фрилансеров
Внешний аккумулятор restore: hello, world! – быстрая зарядка на пляже Вс 09.03.2025
Внешний аккумулятор restore: hello, world! – быстрая зарядка на пляже
Как компании контролируют удалённо работающих сотрудников Сб 08.03.2025
Как компании контролируют удалённо работающих сотрудников
Вайб-кодинг: программисты нашли способ зарабатывать, ничего не делая? Пт 07.03.2025
Вайб-кодинг: программисты нашли способ зарабатывать, ничего не делая?
Книги
Fundamentals of Enterprise Architecture 3 дня назад, 10:04
Fundamentals of Enterprise Architecture
Год: 2024
Pro .NET Memory Management, Second Edition Вт 04.03.2025
Pro .NET Memory Management, Second Edition
Год: 2024
Micro Frontends in Action Вт 18.02.2025
Micro Frontends in Action
Год: 2020
Разработано на основе BlackNight CMS
Release v.2025-03-14
© 2000–2025 Blackball
Дизайн & программирование:
О сайтеРеклама
PULS.LV Professional rating system
Visitors
Web-site performed by Sergey Drozdov
BlackballРекламаСтатистикаПоддержка
МузыкаПлейлистыКиноВидеоИгрыАудиоПрограммыСтатьиКартинкиЮморФорумДневник сайтаПрислать контентРекомендованное
Complete your gift to make an impact
Buy Me A Coffee
Если вам понравился этот сайт и вы хотите меня поддержать, вы можете купить мне кофе. Спасибо!