One giant UPDATE holds row locks and produces dead rows all at once. A loop that updates an id range per batch keeps each transaction small.