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


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

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


Добавлено: Пн 27.12.2010 • Sergeant
Источник: источник
Просмотров: 1114
Комментарии: 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



Комментарии

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


Комментарии: 0
Нет ни одного комментария.
RSS-лента
Поделиться ссылкой:
Подкроватный хостинг: жуткая практика домашних хостингов
Обзор ASUS GeForce RTX 4090 ROG Strix — Флагман с большой буквы Обзор ASUS GeForce RTX 4090 ROG Strix — Флагман с большой буквы

Новое
5 ошибок при разработке высоконагруженных сервисов 2 дня назад, 09:04
5 ошибок при разработке высоконагруженных сервисов
11 способов быстро и вкусно засолить скумбрию Сб 04.05.2024
11 способов быстро и вкусно засолить скумбрию
HDMI или Display Port: в чëм разница, и чем лучше выводить изображение на монитор Ср 01.05.2024
HDMI или Display Port: в чëм разница, и чем лучше выводить изображение на монитор
300+ вопросов по JavaScript на собеседовании Пн 29.04.2024
300+ вопросов по JavaScript на собеседовании
25 простых и вкусных маринадов для рыбы Сб 27.04.2024
25 простых и вкусных маринадов для рыбы
Ср 24.04.2024
6 самых мощных немецких автомобилей с двигателем V8
Минусы профессии программиста, что не нравится в работе Пн 22.04.2024
Минусы профессии программиста, что не нравится в работе
15 потрясающих соусов для свиных рёбрышек Сб 20.04.2024
15 потрясающих соусов для свиных рёбрышек
Soft skills: 18 самых важных навыков, которыми должен владеть каждый работник Ср 17.04.2024
Soft skills: 18 самых важных навыков, которыми должен владеть каждый работник
30 вопросов на собеседовании фронтенд разработчика Пн 15.04.2024
30 вопросов на собеседовании фронтенд разработчика
Книги
Fundamentals of Software Architecture вчера, 10:13
Fundamentals of Software Architecture
Год: 2020
Refactoring with C# Вт 23.04.2024
Refactoring with C#
Год: 2023
Building IoT Visualizations using Grafana Вт 09.04.2024
Building IoT Visualizations using Grafana
Год: 2022

Разработано на основе BlackNight CMS
Release v.2024-05-05
© 2000–2024 Blackball
Дизайн & программирование:
О сайтеРеклама
Visitors
Web-site performed by Sergey Drozdov
BlackballРекламаСтатистикаПоддержка | МузыкаПлейлистыКиноВидеоИгрыАудиоПрограммыСтатьиКартинкиЮморФорумДневник сайтаПрислать контент