Question

In postgresql, for queries like INSERT/UPDATE/DELETE, a WAL record with required information about the tuples is created in the WAL buffer, before doing the required changes in the data buffer. Is it the same for UTILITY statements? I see an option, wal_level, to reduce the WAL entries for certain queries as in case of, create and drop table within a transaction itself. But what happens otherwise? Are the UTILITY statements logged? If so, what is the XLog record structure of those records? Thanks in advance

Was it helpful?

Solution

wal_level is not specific to "certain queries". It changes the overall information written into a WAL record (e.g. to support a hot-standby).

Even non-transactional statements are logged e.g. create database or nextval().

The only statements that are not logged are statements dealing unlogged tables (and - currently - hash indexes).

The Write-Ahead-Log is not for managing transactions, it's for managing durability.

Licensed under: CC-BY-SA with attribution
Not affiliated with dba.stackexchange
scroll top