Параметризованная процедура и гарантированный план запроса

by Alexey Knyazev 30. января 2012 00:07
- Процедура стала работать медленнее, чем обычно?
- Запрос выполняется быстро, а процедура, в которой подобный запрос, работает очень долго?
- У процедуры неоптимальный план запроса?

Если ответ "Да" хоть на один из вопросов, то эта статья для вас. Я расскажу и покажу, как можно повлиять на работу процедуры и быть уверенным, что в кэше окажется ожидаемый план запроса (а значит никаких больше сюрпризов) для вашей процедуры.

Тема не нова, но если вы это читаете, то моё время потрачено не зря.

[Ещё]

Tags: , , , , ,

SQL Server

Грязное чтение и несогласованные данные

by Alexey Knyazev 14. января 2012 23:48
В одной из предыдущих заметок в своём блоге я писал о ряде сюрпризов, к которым нужно быть готовым при использовании "грязного чтения" (уровень изоляции READ UNCOMMITTED) - http://www.t-sql.ru/post/nolock.aspx.

А именно:
  • "Фантомные" записи, которых нет в БД
  • Чтение не всех записей из таблицы
  • Чтение одной и той же записи несколько раз
Сегодня я покажу ещё один неприятный момент - это чтение промежуточного состояния изменяемой строки, т.е. при изменении записи в одной атомарной операции:
update MyTable 
set a = b
  , b = a
В другой транзакции с уровнем изоляции READ UNCOMMITTED можно прочитать запись, когда значение поля a уже равно b, а поле b ещё не изменено.
[Ещё]

Tags: , , , ,

SQL Server