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

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

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

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

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

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

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


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

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

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


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

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


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


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


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


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



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

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


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



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

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

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

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

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



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

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

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

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

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


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

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

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

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


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


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


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

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


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

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


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

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


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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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


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

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

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

aleks222

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

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


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