On Sat, 17 Jun 2006, paolo romano wrote:

* Reduced I/O Activity: during transaction processing: current workloads are typically dominated by reads (rather than updates)... and reads give rise to multixacts (if there are at least two transactions reading the same page or if an explicit lock request is performed through heap_lock_tuple). And (long) transactions can read a lot of tuples, which directly translates into (long) multixact logging sooner or later. To accurately estimate the possible performance gain one should perform some profiling, but at first glance ISTM that there are good potentialities.

Read-only transactions don't acquire shared locks. And updating transcations emit WAL records anyway; the additional I/O caused by multixact records is negligable.

Also, multixacts are only used when two transactions hold a shared lock on the same row.

* Reduced Recovery Time: because of shorter logs & less data structures to rebuild... and reducing recovery time helps improving system availability so should not be overlooked.

I doubt the multixact stuff makes much difference compared to all other WAL traffic.

In fact, logging the multixact stuff could be skipped when no two-phase transactions are involved. The problem is, you don't know if a transaction is one phase or two phase before you see COMMIT or PREPARE TRANSACTION.

- Heikki

---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?

              http://www.postgresql.org/docs/faq

Reply via email to