What is the purpose of a transaction? How long can a transaction in PostgreSQL be? What is transaction isolation? Should we avoid table locks? What do transactions have to do with VACUUM?