|
Какой уровень изоляции выбрать для процедуры?
|
|||
---|---|---|---|
#18+
Есть процедура, которая в дедлоке выбирается жертвой: в ней есть селект из таблицы которая апдейтится другой процедурой. Хотел поставить на селект with(nolock), но решил пойти другим путем. Какой уровень изоляции поставить лучше для процедуры, чтобы он отработал только в ней после выхода снова вернулся предыдущий READ COMMITTED: SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED SET TRANSACTION ISOLATION LEVEL SNAPSHOT; ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 11:50 |
|
Какой уровень изоляции выбрать для процедуры?
|
|||
---|---|---|---|
#18+
Если в процедуре задать уровень изоляции, то он действует только для контекста выполнения этой процедуры, после ее завершения будет уровень изоляции, который был до запуска процедуры. Что касается дедлока - для начала я бы включил для БД READ_COMMITTED_SNAPSHOT. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 12:21 |
|
Какой уровень изоляции выбрать для процедуры?
|
|||
---|---|---|---|
#18+
Ролг Хупин, если выбор в качестве жертвы для этой процедуры недопустим, то можно установить для сеанса SET DEADLOCK_PRIORITY HIGH. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 12:33 |
|
Какой уровень изоляции выбрать для процедуры?
|
|||
---|---|---|---|
#18+
Владислав Колосов Ролг Хупин, если выбор в качестве жертвы для этой процедуры недопустим, то можно установить для сеанса SET DEADLOCK_PRIORITY HIGH. он-то допустим, но я думал использовать уровень изоляции, чтобы вызов процедуры не становился жертвой из-за селекта, т.е. чтобы селект выбирал, скажем предыдущие коммитнутые записи ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 13:05 |
|
Какой уровень изоляции выбрать для процедуры?
|
|||
---|---|---|---|
#18+
Ролг Хупин, ну так deadlock - это часть нормальной работы, если он нежелателен или нельзя отложить выполнение "на потом", то надо или повышать приоритет дэдлока или писать повторное выполнение кода при помощи TRY CATCH. Где-то примеры попадались, может даже и в справке. Или у Бен-Гана, уже не помню. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 16:14 |
|
Какой уровень изоляции выбрать для процедуры?
|
|||
---|---|---|---|
#18+
https://www.brentozar.com/archive/2021/05/free-video-deadlocks-lets-do-one-understand-it-and-fix-it/ ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2021, 17:03 |
|
Какой уровень изоляции выбрать для процедуры?
|
|||
---|---|---|---|
#18+
Владислав Колосов Ролг Хупин, ну так deadlock - это часть нормальной работы, если он нежелателен или нельзя отложить выполнение "на потом", то надо или повышать приоритет дэдлока или писать повторное выполнение кода при помощи TRY CATCH. Где-то примеры попадались, может даже и в справке. Или у Бен-Гана, уже не помню. т.е. когда случаются дедлоки и сервер сам выбирает жертву, снимает транзакцию -- это нормально? Разве не нужно пытаться убрать дедлок, чтобы это два запроса(процедуры) могли нормально выполняться? Мне кажется нужно, по крайней мере в случае, если Reader-Writer дедлок ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2021, 11:50 |
|
Какой уровень изоляции выбрать для процедуры?
|
|||
---|---|---|---|
#18+
Ролг Хупин Владислав Колосов Ролг Хупин, ну так deadlock - это часть нормальной работы, если он нежелателен или нельзя отложить выполнение "на потом", то надо или повышать приоритет дэдлока или писать повторное выполнение кода при помощи TRY CATCH. Где-то примеры попадались, может даже и в справке. Или у Бен-Гана, уже не помню. т.е. когда случаются дедлоки и сервер сам выбирает жертву, снимает транзакцию -- это нормально? Разве не нужно пытаться убрать дедлок, чтобы это два запроса(процедуры) могли нормально выполняться? Мне кажется нужно, по крайней мере в случае, если Reader-Writer дедлок То, что "можно убрать" - deadlock-ом не назовут. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2021, 16:47 |
|
Какой уровень изоляции выбрать для процедуры?
|
|||
---|---|---|---|
#18+
aleks222 Ролг Хупин пропущено... т.е. когда случаются дедлоки и сервер сам выбирает жертву, снимает транзакцию -- это нормально? Разве не нужно пытаться убрать дедлок, чтобы это два запроса(процедуры) могли нормально выполняться? Мне кажется нужно, по крайней мере в случае, если Reader-Writer дедлок То, что "можно убрать" - deadlock-ом не назовут. Не понял, можно чуть подробнее? Например, есть дедлок , так пишет Xevent и показывает кто начал, кто жертва. Написано, что update-select дедлок. Если я сделаю селект with(nolock) - дедлок уходит. Вот есть дедлок, котрый можно вот так убрать. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2021, 17:17 |
|
Какой уровень изоляции выбрать для процедуры?
|
|||
---|---|---|---|
#18+
Ролг Хупин aleks222 пропущено... То, что "можно убрать" - deadlock-ом не назовут. Не понял, можно чуть подробнее? Например, есть дедлок , так пишет Xevent и показывает кто начал, кто жертва. Написано, что update-select дедлок. Если я сделаю селект with(nolock) - дедлок уходит. Вот есть дедлок, котрый можно вот так убрать. Что толку тебе объяснять прописные истины? MS SQL сервер гарантирует "корректность результатов" транзакции. Для этого он накладывает блокировки. Если тебе пофиг на корректность результатов - не накладывай блокировки. Еcли не пофиг - ничо, окромя дедлока, не получается. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2021, 13:28 |
|
Какой уровень изоляции выбрать для процедуры?
|
|||
---|---|---|---|
#18+
aleks222 Ролг Хупин пропущено... Не понял, можно чуть подробнее? Например, есть дедлок , так пишет Xevent и показывает кто начал, кто жертва. Написано, что update-select дедлок. Если я сделаю селект with(nolock) - дедлок уходит. Вот есть дедлок, котрый можно вот так убрать. Что толку тебе объяснять прописные истины? MS SQL сервер гарантирует "корректность результатов" транзакции. Для этого он накладывает блокировки. Если тебе пофиг на корректность результатов - не накладывай блокировки. Еcли не пофиг - ничо, окромя дедлока, не получается. "Что толку тебе объяснять прописные истины?" о, конечно, толку нет гуру объяснять мне .Не утруждайте себя. Несмотря на то, что написали в общем-то фигню или не дописали снова. Гуру должен расслабляться. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2021, 14:58 |
|
Какой уровень изоляции выбрать для процедуры?
|
|||
---|---|---|---|
#18+
Ролг Хупин aleks222 пропущено... Что толку тебе объяснять прописные истины? MS SQL сервер гарантирует "корректность результатов" транзакции. Для этого он накладывает блокировки. Если тебе пофиг на корректность результатов - не накладывай блокировки. Еcли не пофиг - ничо, окромя дедлока, не получается. "Что толку тебе объяснять прописные истины?" о, конечно, толку нет гуру объяснять мне .Не утруждайте себя. Несмотря на то, что написали в общем-то фигню или не дописали снова. Гуру должен расслабляться. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2021, 15:38 |
|
Какой уровень изоляции выбрать для процедуры?
|
|||
---|---|---|---|
#18+
Гавриленко Сергей Алексеевич Ролг Хупин пропущено... "Что толку тебе объяснять прописные истины?" о, конечно, толку нет гуру объяснять мне .Не утруждайте себя. Несмотря на то, что написали в общем-то фигню или не дописали снова. Гуру должен расслабляться. да, вот я и пытаюсь (как написнао выше) изменить уровен изоляции в процедуре, чтобы ее селект не провоцировал дедлок и не становился жертвой. Если чтение будет тех записей, которые уже готовы к чтеию - меня это устроит, не нао ничего ждать и т.д. С этим и связан вопрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2021, 15:44 |
|
Какой уровень изоляции выбрать для процедуры?
|
|||
---|---|---|---|
#18+
Всемирно известные сферические дедлоки в вакууме убираются исключительно квадратно-гнездовыми способами. Показывайте запросы и граф, хорош из пустого в порожнее переливать. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2021, 15:55 |
|
Какой уровень изоляции выбрать для процедуры?
|
|||
---|---|---|---|
#18+
Ролг Хупин Если чтение будет тех записей, которые уже готовы к чтеию - меня это устроит, не нао ничего ждать и т.д. С этим и связан вопрос. С такими подходом - лучше сразу в управдомы переквалифицироваться. - "Готов?" - "Всегда готов!" (с) пионеры PS. Откель сервер должон знать, что там в голове горе-программиста "готово"? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2021, 16:30 |
|
Какой уровень изоляции выбрать для процедуры?
|
|||
---|---|---|---|
#18+
aleks222 Ролг Хупин Если чтение будет тех записей, которые уже готовы к чтеию - меня это устроит, не нао ничего ждать и т.д. С этим и связан вопрос. С такими подходом - лучше сразу в управдомы переквалифицироваться. - "Готов?" - "Всегда готов!" (с) пионеры PS. Откель сервер должон знать, что там в голове горе-программиста "готово"? Что за бредни? Из ваших странных ответов создается устойчивое впечтление, что вы готовы, т.е. в нетрезвом состоянии. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2021, 19:34 |
|
Какой уровень изоляции выбрать для процедуры?
|
|||
---|---|---|---|
#18+
Ролг Хупин, надо понять причину возникновения взаимоблокировки. Иногда это можно решить индексом, но держать индекс ради устранения взаимоисключений - нонсенс, это место для хранения и накладные расходы на каждое изменение, особенно пагубно при массовых изменениях. Если это последствия транскрипции запроса - надо переписать запрос. Если это следствие коллизий функций программы, то взаимоблокировка - корректное техническое состояние. В этом случае можно или создать "бутылочное горло" для строго последовательного выполнения функций (это можно рекомендовать в некоторых случаях) либо создать redo код, как я писал выше. PS изменением уровня изоляции взаимоблокировки не лечат. Назначение уровня изоляции состоит в поддержании требуемой степени достоверности данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2021, 20:38 |
|
Какой уровень изоляции выбрать для процедуры?
|
|||
---|---|---|---|
#18+
aleks222 MS SQL сервер гарантирует "корректность результатов" транзакции. Для этого он накладывает блокировки. лишние. при чтении лишние блокировки накладывает. отсюда и дедлоки на пустом месте aleks222 Если тебе пофиг на корректность результатов - не накладывай блокировки. Еcли не пофиг - ничо, окромя дедлока, не получается. глупости. rcsi без блокировок дает консистентный набор ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2021, 22:04 |
|
Какой уровень изоляции выбрать для процедуры?
|
|||
---|---|---|---|
#18+
Владислав Колосов PS изменением уровня изоляции взаимоблокировки не лечат. Назначение уровня изоляции состоит в поддержании требуемой степени достоверности данных. лечат. собственно потому и добавили rcsi и snapshot. сточки зрения достоверности они ничего чего бы не было у блокировочных уровней не принесли. имено лечить дедлоки, увеличить параллельность добавили. у azure sql уже по дефолту ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2021, 22:12 |
|
Какой уровень изоляции выбрать для процедуры?
|
|||
---|---|---|---|
#18+
H5N1 aleks222 MS SQL сервер гарантирует "корректность результатов" транзакции. Для этого он накладывает блокировки. лишние. при чтении лишние блокировки накладывает. отсюда и дедлоки на пустом месте aleks222 Если тебе пофиг на корректность результатов - не накладывай блокировки. Еcли не пофиг - ничо, окромя дедлока, не получается. глупости. rcsi без блокировок дает консистентный набор З.Ы. В целом, прошу холивар про rcsi-блокировки не разводить. Дедлоки зачастую успешно лечатся и без пушки по воробьям. Гораздо хуже они лечатся без графов. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2021, 23:42 |
|
Какой уровень изоляции выбрать для процедуры?
|
|||
---|---|---|---|
#18+
H5N1 aleks222 MS SQL сервер гарантирует "корректность результатов" транзакции. Для этого он накладывает блокировки. лишние. при чтении лишние блокировки накладывает. отсюда и дедлоки на пустом месте aleks222 Если тебе пофиг на корректность результатов - не накладывай блокировки. Еcли не пофиг - ничо, окромя дедлока, не получается. глупости. rcsi без блокировок дает консистентный набор "Лишние", говоришь? А мужики то в мелкософте и не знают. "Глупости", говоришь? Дык никто ж не мешает тредстартеру включить rcsi и умыться слезами. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2021, 07:05 |
|
Какой уровень изоляции выбрать для процедуры?
|
|||
---|---|---|---|
#18+
Я совсем не разбираюсь в MS SQL, и мне показалось что ТС беспокоится про дедлок в читаюшем селекте. Разве чтение может блокироваться? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2021, 07:28 |
|
Какой уровень изоляции выбрать для процедуры?
|
|||
---|---|---|---|
#18+
НеофитSQL, Shared блокировки накладываются. Но, конечно, без графа это все разговоры ни о чем. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2021, 07:43 |
|
Какой уровень изоляции выбрать для процедуры?
|
|||
---|---|---|---|
#18+
Ennor Tiegael НеофитSQL, Shared блокировки накладываются. Но, конечно, без графа это все разговоры ни о чем. Тредстартер с этим дедлоком носится уже пару месяцев. Несколько тем было. По материалам которых учебный курс по дедлокам можно написать. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2021, 08:07 |
|
Какой уровень изоляции выбрать для процедуры?
|
|||
---|---|---|---|
#18+
aleks222 "Лишние", говоришь? А мужики то в мелкософте и не знают. лишние. мужики знают, я оповестил. без меня фиг бы догадались версионность в мсскл завести aleks222 "Глупости", говоришь? Дык никто ж не мешает тредстартеру включить rcsi и умыться слезами. никто не мешает тредстартеру использовать rcsi лишь в некоторых транзакциях, а не врубать дфолтом на всю базу как в azure sql. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2021, 08:28 |
|
|
start [/forum/topic.php?fid=46&fpage=24&tid=1684703]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
26ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
others: | 8ms |
total: | 132ms |
0 / 0 |