Karol, if you worry about database size after update, i could suggest to split huge update by few smaller, each in own transaction and garbage collect between passes. I.e. something like
update t set ... where id between 0 and N; commit; select count(*) from t where id between 0 and N; commit; update t set ... where id between N+1 and 2*N; commit; select count(*) from t where id between N+1 and 2*N; commit; ... Regards, Vlad