и не очень понимаю, как его вылечить.
Я выполняю в восьми потоках семь тысяч пар запросов вида update t set new_id = random() where id=:v ; update t set id = new_id where id=:v. По id, разумеется, есть индекс.
Пять тысяч отрабатывают быстро, меньше 100 мс на пару запросов. А потом начинается тупняк: второй запрос из пары выполняется минут по десять. И это надолго, оставшиеся две тысячи выполняются несколько часов — вместо предсказанных 4 минут.
Из-за чего это может быть?
Как минимум, тут могут быть конфликты старых и новых значений. Ну и индекс по id, который обновляется -- это тяжело. Особенно, если он помечен уникальным.
уточните, что с оперативной памятью? Что с вакумом?
глупый вопрос но один раз такое видел (не в постгресе) в потоках точно разный random seed?
Обсуждают сегодня