Message to administrator
Имя:
Email:
Message:
Sign In
Username:
Password:

Donation  •  Journal  •  About  •  Advertisement  •  Place ads banner  •  Send content  •  Timeline  •  Translate  •  Featured  •  Message to admin Guests: 9    Members: 0 Авторизация Sign In   Sign Up 
Scientific Poke Method
RULVEN
Search  
Blackball iMag | интернет-журнал
RSS-лента
Share link:
Catalogue


Home » Software development » Microsoft SQL Server » Производительность хранимых процедур

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


Added: Пн 27.12.2010 • Sergeant
Source: source
Views: 1127
Comments: 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



Comments

Чтобы добавить видео с YouTube, нужно написать [@youtube=xxxxx] , где xxxxx – ID видео.


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

Новое
15 интересных салатов со свежими огурцами 09:11
15 интересных салатов со свежими огурцами
Зал короля Артура оказался неолитическим загоном для скота Пн 18.11.2024
Зал короля Артура оказался неолитическим загоном для скота
15 действительно вкусных салатов с крабовыми палочками Сб 16.11.2024
15 действительно вкусных салатов с крабовыми палочками
Почему W-образные моторы уходят в прошлое, если они были лучше V-образных Ср 13.11.2024
Почему W-образные моторы уходят в прошлое, если они были лучше V-образных
Когда устал от алгоритмов: Ревью кода на собеседовании Вт 12.11.2024
Когда устал от алгоритмов: Ревью кода на собеседовании
Вирусы на Android: подробное руководство по обеспечению безопасности Пн 11.11.2024
Вирусы на Android: подробное руководство по обеспечению безопасности
Пн 11.11.2024
10 не самых очевидных причин, чтобы уволиться
Искусственный мозг против квантового компьютера: кто возьмет верх? Вс 10.11.2024
Искусственный мозг против квантового компьютера: кто возьмет верх?
10 лучших салатов с кукурузой Сб 09.11.2024
10 лучших салатов с кукурузой
10 вкусных салатов с фасолью, которые хочется готовить снова и снова Сб 02.11.2024
10 вкусных салатов с фасолью, которые хочется готовить снова и снова
Books
Blazor in Action Вт 04.06.2024
Blazor in Action
Год: 2022
Security for Containers and Kubernetes Вт 28.05.2024
Security for Containers and Kubernetes
Год: 2023
Designing Data-Intensive Applications Вт 14.05.2024
Designing Data-Intensive Applications
Год: 2017
Fundamentals of Software Architecture Вт 07.05.2024
Fundamentals of Software Architecture
Год: 2020
Разработано на основе BlackNight CMS
Release v.2024-11-16
© 2000–2024 Blackball
Design & programming:
AboutAdvertising
Visitors
Web-site performed by Sergey Drozdov
BlackballAdvertisingStatsПоддержка
MusicPlaylistsCinemaVideoGamesAudioDownloadsMagazinePicturesHumorForumWebsite journalSend contentFeatured