Batch update million records in prd DB
Yi Sun <yinan81@gmail.com>
From: Yi Sun <yinan81@gmail.com>
To: pgsql-general@lists.postgresql.org
Date: 2021-02-24T13:01:24Z
Lists: pgsql-general
Hello,
Now need to update several million records in a table in prd DB, if can use
batch update 1000 records and commit each time, if it will affect prd
application like below sample script please?
Sample script:
DO $MAIN$
DECLARE
affect_count integer;
chunk_size CONSTANT integer :=1000;
sleep_sec CONSTANT numeric :=0.1;
BEGIN
loop
exit when affect_count=0;
UPDATE tbl a
SET name = ''
WHERE a.id IN (SELECT id
FROM tbl b
WHERE name IS NULL
LIMIT chunk_size);
GET DIAGNOSTICS affect_count = ROW_COUNT;
commit;
PERFORM pg_sleep(sleep_sec);
end loop;
END;
$MAIN$;
Thanks and best regards