If you start a read-only transaction, you can retrieve a snapshot of the database at the moment the transaction started. Other users can update records in the relation you are using, but your transaction retrieves the records as they existed at the time the transaction started. Any changes that other users make and commit during the transaction are invisible to you. A read-only transaction lets you read data without incurring the overhead of record locking. You cannot modify, store, or erase records or execute data definition statements in a read-only transaction.