Published on

November 6, 2019

Распространенные ошибки в SQL Server и как их избежать

Вы когда-нибудь сталкивались с ужасными историями о SQL Server? Знаете, те ситуации, когда вы натыкаетесь на код, который заставляет вас смеяться, плакать и сомневаться в рассудке разработчиков, которые его создали? Мы все были там.

В этом блоге мы рассмотрим некоторые распространенные ошибки в SQL Server и обсудим, как их избежать. Погрузимся в это!

Кошмар с триггерами

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

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

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

Перебор с NOLOCK

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

Представьте систему, в которой каждая хранимая процедура начинается с оператора “SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED”, и каждая ссылка на таблицу сопровождается подсказкой NOLOCK. Такой подход не только влияет на сеанс, но и вводит ненужные риски.

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

Урок, извлеченный из этого: Избегайте использования NOLOCK в качестве кнопки “ускорения”. Вместо этого тщательно рассмотрите уровень изоляции, необходимый для каждого запроса, и используйте NOLOCK с осторожностью, если вообще используете.

Вывод

Разработка SQL Server может быть сложной, и ошибки неизбежны. Однако, изучая распространенные проблемы и следуя bewt практикам, мы можем избежать ненужной сложности и улучшить производительность и поддерживаемость нашего кода.

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

Следите за нашими будущими блог-постами, где мы будем делиться еще больше советов и трюков по SQL Server!

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.