powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Какой уровень изоляции выбрать для процедуры?
25 сообщений из 31, страница 1 из 2
Какой уровень изоляции выбрать для процедуры?
    #40070252
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть процедура, которая в дедлоке выбирается жертвой: в ней есть селект из таблицы которая апдейтится другой процедурой.

Хотел поставить на селект with(nolock), но решил пойти другим путем.
Какой уровень изоляции поставить лучше для процедуры, чтобы он отработал только в ней после выхода снова вернулся предыдущий
READ COMMITTED:

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SET TRANSACTION ISOLATION LEVEL SNAPSHOT;

?
...
Рейтинг: 0 / 0
Какой уровень изоляции выбрать для процедуры?
    #40070265
Тяп-ляп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если в процедуре задать уровень изоляции, то он действует только для контекста выполнения этой процедуры, после ее завершения будет уровень изоляции, который был до запуска процедуры.

Что касается дедлока - для начала я бы включил для БД READ_COMMITTED_SNAPSHOT.
...
Рейтинг: 0 / 0
Какой уровень изоляции выбрать для процедуры?
    #40070274
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,

если выбор в качестве жертвы для этой процедуры недопустим, то можно установить для сеанса SET DEADLOCK_PRIORITY HIGH.
...
Рейтинг: 0 / 0
Какой уровень изоляции выбрать для процедуры?
    #40070280
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
Ролг Хупин,

если выбор в качестве жертвы для этой процедуры недопустим, то можно установить для сеанса SET DEADLOCK_PRIORITY HIGH.


он-то допустим, но я думал использовать уровень изоляции, чтобы вызов процедуры не становился жертвой из-за селекта, т.е. чтобы селект выбирал, скажем предыдущие коммитнутые записи
...
Рейтинг: 0 / 0
Какой уровень изоляции выбрать для процедуры?
    #40070376
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,

ну так deadlock - это часть нормальной работы, если он нежелателен или нельзя отложить выполнение "на потом", то надо или повышать приоритет дэдлока или писать повторное выполнение кода при помощи TRY CATCH. Где-то примеры попадались, может даже и в справке. Или у Бен-Гана, уже не помню.
...
Рейтинг: 0 / 0
Какой уровень изоляции выбрать для процедуры?
    #40070396
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Какой уровень изоляции выбрать для процедуры?
    #40070510
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
Ролг Хупин,

ну так deadlock - это часть нормальной работы, если он нежелателен или нельзя отложить выполнение "на потом", то надо или повышать приоритет дэдлока или писать повторное выполнение кода при помощи TRY CATCH. Где-то примеры попадались, может даже и в справке. Или у Бен-Гана, уже не помню.


т.е. когда случаются дедлоки и сервер сам выбирает жертву, снимает транзакцию -- это нормально? Разве не нужно пытаться убрать дедлок, чтобы это два запроса(процедуры) могли нормально выполняться?
Мне кажется нужно, по крайней мере в случае, если Reader-Writer дедлок
...
Рейтинг: 0 / 0
Какой уровень изоляции выбрать для процедуры?
    #40070539
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
Владислав Колосов
Ролг Хупин,

ну так deadlock - это часть нормальной работы, если он нежелателен или нельзя отложить выполнение "на потом", то надо или повышать приоритет дэдлока или писать повторное выполнение кода при помощи TRY CATCH. Где-то примеры попадались, может даже и в справке. Или у Бен-Гана, уже не помню.


т.е. когда случаются дедлоки и сервер сам выбирает жертву, снимает транзакцию -- это нормально? Разве не нужно пытаться убрать дедлок, чтобы это два запроса(процедуры) могли нормально выполняться?
Мне кажется нужно, по крайней мере в случае, если Reader-Writer дедлок


То, что "можно убрать" - deadlock-ом не назовут.
...
Рейтинг: 0 / 0
Какой уровень изоляции выбрать для процедуры?
    #40070540
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222
Ролг Хупин
пропущено...


т.е. когда случаются дедлоки и сервер сам выбирает жертву, снимает транзакцию -- это нормально? Разве не нужно пытаться убрать дедлок, чтобы это два запроса(процедуры) могли нормально выполняться?
Мне кажется нужно, по крайней мере в случае, если Reader-Writer дедлок


То, что "можно убрать" - deadlock-ом не назовут.



Не понял, можно чуть подробнее?

Например, есть дедлок , так пишет Xevent и показывает кто начал, кто жертва. Написано, что update-select дедлок.
Если я сделаю селект with(nolock) - дедлок уходит.
Вот есть дедлок, котрый можно вот так убрать.
...
Рейтинг: 0 / 0
Какой уровень изоляции выбрать для процедуры?
    #40070620
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
aleks222
пропущено...


То, что "можно убрать" - deadlock-ом не назовут.



Не понял, можно чуть подробнее?

Например, есть дедлок , так пишет Xevent и показывает кто начал, кто жертва. Написано, что update-select дедлок.
Если я сделаю селект with(nolock) - дедлок уходит.
Вот есть дедлок, котрый можно вот так убрать.

Что толку тебе объяснять прописные истины?

MS SQL сервер гарантирует "корректность результатов" транзакции.
Для этого он накладывает блокировки.

Если тебе пофиг на корректность результатов - не накладывай блокировки.
Еcли не пофиг - ничо, окромя дедлока, не получается.
...
Рейтинг: 0 / 0
Какой уровень изоляции выбрать для процедуры?
    #40070631
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222
Ролг Хупин
пропущено...



Не понял, можно чуть подробнее?

Например, есть дедлок , так пишет Xevent и показывает кто начал, кто жертва. Написано, что update-select дедлок.
Если я сделаю селект with(nolock) - дедлок уходит.
Вот есть дедлок, котрый можно вот так убрать.

Что толку тебе объяснять прописные истины?

MS SQL сервер гарантирует "корректность результатов" транзакции.
Для этого он накладывает блокировки.

Если тебе пофиг на корректность результатов - не накладывай блокировки.
Еcли не пофиг - ничо, окромя дедлока, не получается.


"Что толку тебе объяснять прописные истины?"
о, конечно, толку нет гуру объяснять мне .Не утруждайте себя. Несмотря на то, что написали в общем-то фигню или не дописали снова.
Гуру должен расслабляться.
...
Рейтинг: 0 / 0
Какой уровень изоляции выбрать для процедуры?
    #40070635
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
aleks222
пропущено...

Что толку тебе объяснять прописные истины?

MS SQL сервер гарантирует "корректность результатов" транзакции.
Для этого он накладывает блокировки.

Если тебе пофиг на корректность результатов - не накладывай блокировки.
Еcли не пофиг - ничо, окромя дедлока, не получается.


"Что толку тебе объяснять прописные истины?"
о, конечно, толку нет гуру объяснять мне .Не утруждайте себя. Несмотря на то, что написали в общем-то фигню или не дописали снова.
Гуру должен расслабляться.
В принципе, сервер может выполнять все запросы последовательно для разрешения дедлоков. Только результат вам вряд ли понравится. И именно потому что разные способы разрешения дедлоков имеют разные побочные эффекты, эти способы должны выбирать вы, а не сервер.
...
Рейтинг: 0 / 0
Какой уровень изоляции выбрать для процедуры?
    #40070636
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей Алексеевич
Ролг Хупин
пропущено...


"Что толку тебе объяснять прописные истины?"
о, конечно, толку нет гуру объяснять мне .Не утруждайте себя. Несмотря на то, что написали в общем-то фигню или не дописали снова.
Гуру должен расслабляться.
В принципе, сервер может выполнять все запросы последовательно для разрешения дедлоков. Только результат вам вряд ли понравится. И именно потому что разные способы разрешения дедлоков имеют разные побочные эффекты, эти способы должны выбирать вы, а не сервер.


да, вот я и пытаюсь (как написнао выше) изменить уровен изоляции в процедуре, чтобы ее селект не провоцировал дедлок и не становился жертвой. Если чтение будет тех записей, которые уже готовы к чтеию - меня это устроит, не нао ничего ждать и т.д.
С этим и связан вопрос.
...
Рейтинг: 0 / 0
Какой уровень изоляции выбрать для процедуры?
    #40070637
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всемирно известные сферические дедлоки в вакууме убираются исключительно квадратно-гнездовыми способами.

Показывайте запросы и граф, хорош из пустого в порожнее переливать.
...
Рейтинг: 0 / 0
Какой уровень изоляции выбрать для процедуры?
    #40070638
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
Если чтение будет тех записей, которые уже готовы к чтеию - меня это устроит, не нао ничего ждать и т.д.
С этим и связан вопрос.


С такими подходом - лучше сразу в управдомы переквалифицироваться.
- "Готов?"
- "Всегда готов!" (с) пионеры

PS. Откель сервер должон знать, что там в голове горе-программиста "готово"?
...
Рейтинг: 0 / 0
Какой уровень изоляции выбрать для процедуры?
    #40070656
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222
Ролг Хупин
Если чтение будет тех записей, которые уже готовы к чтеию - меня это устроит, не нао ничего ждать и т.д.
С этим и связан вопрос.


С такими подходом - лучше сразу в управдомы переквалифицироваться.
- "Готов?"
- "Всегда готов!" (с) пионеры

PS. Откель сервер должон знать, что там в голове горе-программиста "готово"?


Что за бредни?
Из ваших странных ответов создается устойчивое впечтление, что вы готовы, т.е. в нетрезвом состоянии.
...
Рейтинг: 0 / 0
Какой уровень изоляции выбрать для процедуры?
    #40070663
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,

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

PS изменением уровня изоляции взаимоблокировки не лечат. Назначение уровня изоляции состоит в поддержании требуемой степени достоверности данных.
...
Рейтинг: 0 / 0
Какой уровень изоляции выбрать для процедуры?
    #40070676
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222

MS SQL сервер гарантирует "корректность результатов" транзакции.
Для этого он накладывает блокировки.

лишние. при чтении лишние блокировки накладывает. отсюда и дедлоки на пустом месте
aleks222

Если тебе пофиг на корректность результатов - не накладывай блокировки.
Еcли не пофиг - ничо, окромя дедлока, не получается.

глупости. rcsi без блокировок дает консистентный набор
...
Рейтинг: 0 / 0
Какой уровень изоляции выбрать для процедуры?
    #40070677
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов


PS изменением уровня изоляции взаимоблокировки не лечат. Назначение уровня изоляции состоит в поддержании требуемой степени достоверности данных.

лечат. собственно потому и добавили rcsi и snapshot. сточки зрения достоверности они ничего чего бы не было у блокировочных уровней не принесли. имено лечить дедлоки, увеличить параллельность добавили. у azure sql уже по дефолту
...
Рейтинг: 0 / 0
Какой уровень изоляции выбрать для процедуры?
    #40070686
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1
aleks222

MS SQL сервер гарантирует "корректность результатов" транзакции.
Для этого он накладывает блокировки.

лишние. при чтении лишние блокировки накладывает. отсюда и дедлоки на пустом месте
aleks222

Если тебе пофиг на корректность результатов - не накладывай блокировки.
Еcли не пофиг - ничо, окромя дедлока, не получается.

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

З.Ы. В целом, прошу холивар про rcsi-блокировки не разводить. Дедлоки зачастую успешно лечатся и без пушки по воробьям. Гораздо хуже они лечатся без графов.
...
Рейтинг: 0 / 0
Какой уровень изоляции выбрать для процедуры?
    #40070707
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1
aleks222

MS SQL сервер гарантирует "корректность результатов" транзакции.
Для этого он накладывает блокировки.

лишние. при чтении лишние блокировки накладывает. отсюда и дедлоки на пустом месте
aleks222

Если тебе пофиг на корректность результатов - не накладывай блокировки.
Еcли не пофиг - ничо, окромя дедлока, не получается.

глупости. rcsi без блокировок дает консистентный набор


"Лишние", говоришь?
А мужики то в мелкософте и не знают.

"Глупости", говоришь?
Дык никто ж не мешает тредстартеру включить rcsi и умыться слезами.
...
Рейтинг: 0 / 0
Какой уровень изоляции выбрать для процедуры?
    #40070709
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я совсем не разбираюсь в MS SQL, и мне показалось что ТС беспокоится про дедлок в читаюшем селекте.

Разве чтение может блокироваться?
...
Рейтинг: 0 / 0
Какой уровень изоляции выбрать для процедуры?
    #40070712
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL,

Shared блокировки накладываются.

Но, конечно, без графа это все разговоры ни о чем.
...
Рейтинг: 0 / 0
Какой уровень изоляции выбрать для процедуры?
    #40070716
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ennor Tiegael
НеофитSQL,

Shared блокировки накладываются.

Но, конечно, без графа это все разговоры ни о чем.


Тредстартер с этим дедлоком носится уже пару месяцев.
Несколько тем было.
По материалам которых учебный курс по дедлокам можно написать.
...
Рейтинг: 0 / 0
Какой уровень изоляции выбрать для процедуры?
    #40070717
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222

"Лишние", говоришь?
А мужики то в мелкософте и не знают.

лишние. мужики знают, я оповестил. без меня фиг бы догадались версионность в мсскл завести

aleks222

"Глупости", говоришь?
Дык никто ж не мешает тредстартеру включить rcsi и умыться слезами.

никто не мешает тредстартеру использовать rcsi лишь в некоторых транзакциях, а не врубать дфолтом на всю базу как в azure sql.
...
Рейтинг: 0 / 0
25 сообщений из 31, страница 1 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Какой уровень изоляции выбрать для процедуры?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]