deadlock detected
postgres_1 | 2021-10-19 09:05:59.127 UTC [245] DETAIL: Process 245 waits for ShareLock on transaction 1156; blocked by process 241. а это как дебажить? подскажите?
Слушайте, да прекратите вы, наконец, отправлять по три запроса в одном вызове! Вы не умеете это отлавливать, зачем вы продолжаете это делать? (А так -- ну, включить логирование запросов, если непонятно, за что они друг друга так).
ок, буду тогда в одну транзакцию по 3 - 4 запроса, так наверное лучше )
postgres_1 | 2021-10-19 09:46:43.797 UTC [300] ERROR: deadlock detected postgres_1 | 2021-10-19 09:46:43.797 UTC [300] DETAIL: Process 300 waits for ShareLock on transaction 1198; blocked by process 296. postgres_1 | Process 296 waits for ShareLock on transaction 1208; blocked by process 300. postgres_1 | Process 300: INSERT INTO cookies (....) SELECT ... FROM tmp_cookie_data ON CONFLICT ON CONSTRAINT cookie_data_uniq DO update set group_id=EXCLUDED.group_id, file_id=EXCLUDED.file_id, browser=EXCLUDED.browser, expire=EXCLUDED.expire, created_at=EXCLUDED.created_at, updated_at=EXCLUDED.updated_at; не спасло, все равно дедлоки
1) Это и не должно было спасти. Я просто говорю, что вы не умеете разделять то, что вызываете в одном вызове вашэй библиотеки. Ну, так прекратите. 2) Он -- это кто? Posgres? Разуеется. Каждый коннэкт выполняется параллельно с остальными. Прекратить можно заблокировав всё в начале транзакцыи, до чтения.
В любом случае -- ну, включайте log_statement. Там видно будет, какие запросы пролетели, заодно и их история -- из каких файлов получились эти значения.
А вообще -- если реально у вас несколько подобных загрузок параллельно идут -- то ничего удивительного в дедлоках нет. Попробуйте сериализовать как-то.
Туплю, кстати. Попробуйте отсортировать данные в INSERT по какому-нибудь глобально-стабильному (т.е. одинаковому по сортировке для параллельных INSERT) критэрию?
в итоге если интересрно, то у меня оказалась параллельная вставка из за чего и происходили дедлоки, я просто воткнул мьютекс внутри транзакции на вставку и все сразу стало ок ) спасибо )
Обсуждают сегодня