|
deadlock victim при операции SELECT
|
|||
---|---|---|---|
#18+
подключаюсь к БД и делаю единственный запрос: SELECT * FROM t; получаю: Transaction (Process ID ХХХ) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction БД удаленная у заказчика и собрать логи, графы пока проблематично, но интересует главный вопрос: как теоретически возможен DEADLOCK для SELECT-операции? Кто-нибудь может привести пример, чтобы можно было у себя повторить? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2021, 22:56 |
|
deadlock victim при операции SELECT
|
|||
---|---|---|---|
#18+
victorov1, это легко гуглится, пробовали? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2021, 23:00 |
|
deadlock victim при операции SELECT
|
|||
---|---|---|---|
#18+
конечно читал, но там только теоретически рассуждения о том, что да, такое возможно... а мне нужен бы конкретный пример, чтобы мог у себя повторить и проанализировать вот примера я не нашел, как именно UPDATE/INSERT может в паре с SELECT в другом процессе спровоцировать deadlock ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2021, 23:06 |
|
deadlock victim при операции SELECT
|
|||
---|---|---|---|
#18+
victorov1, Код: sql 1. 2. 3. 4.
последовательно выполнить: Код: sql 1. 2. 3.
Код: sql 1. 2. 3.
Код: sql 1. 2.
Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2021, 23:22 |
|
deadlock victim при операции SELECT
|
|||
---|---|---|---|
#18+
так это не то... повторюсь - в моей сессии только лишь только: SELECT * FROM t go и больше ничего! как такая сессия может спровоцировать deadlock? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2021, 23:32 |
|
deadlock victim при операции SELECT
|
|||
---|---|---|---|
#18+
victorov1 конечно читал, но там только теоретически рассуждения о том, что да, такое возможно... а мне нужен бы конкретный пример, чтобы мог у себя повторить и проанализировать вот примера я не нашел, как именно UPDATE/INSERT может в паре с SELECT в другом процессе спровоцировать deadlock на ваш вопрос victorov1но интересует главный вопрос: как теоретически возможен DEADLOCK для SELECT-операции? (выделение авторское) там есть ответ: 1 SELECT queries take shared locks on the rows they analyze. Shared locks may conflict exclusive locks from update/delete/insert statements . Two SELECT statements are not going to deadlock, but a SELECT can deadlock with an UPDATE. When such deadlock occurs, the SELECT is usually the victim as it did not perform any update so is always going to loose the draw. 2you are getting the deadlocks because SELECT and UPDATE (or other) operations deadlocking each other, not SELECT vs SELECT. You will have to look at all your queries touching that table and create proper covering indexes for those queries and that will solve your problems. Good covering indexes is the preferred solution rather than using WITH (NOLOCK) table hints. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2021, 23:57 |
|
deadlock victim при операции SELECT
|
|||
---|---|---|---|
#18+
victorov1, граф что ли покажите тогда. у вас вторая транзакция тогда точно помимо обычного select без подсказок использовала dml ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 01:58 |
|
deadlock victim при операции SELECT
|
|||
---|---|---|---|
#18+
victorov1 так это не то... повторюсь - в моей сессии только лишь только: SELECT * FROM t go и больше ничего! как такая сессия может спровоцировать deadlock? Так это в твоей сессии select. Чаво в другой сессии - ты не показываешь. А там update. ВашЪ КО. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 06:14 |
|
deadlock victim при операции SELECT
|
|||
---|---|---|---|
#18+
Конечно дедлок возможен, т.к. чтение тоже накладывает мягкую блокировку для транзакционной чистоты данных. А если попробовать SELECT * from MyTable WITH(NOLOCK) ? Может уменьшить проблему. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 12:06 |
|
deadlock victim при операции SELECT
|
|||
---|---|---|---|
#18+
L_argo мягкую блокировку S = Shared ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 12:15 |
|
deadlock victim при операции SELECT
|
|||
---|---|---|---|
#18+
victorov1 как теоретически возможен DEADLOCK для SELECT-операции? LOCK_ESCALATION и другими способами, ибо нефиг всю таблицу селектить . ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 16:40 |
|
|
start [/forum/topic.php?fid=46&fpage=9&tid=1684096]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
26ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 10ms |
total: | 131ms |
0 / 0 |