max_pred_locks_per_transaction

Type: integer
Default: 64
Min: 10
Max: 2147483647
Context: postmaster
Restart: true

The shared predicate lock table has space for max_pred_locks_per_transaction objects (e.g., tables) per server process or prepared transaction; hence, no more than this many distinct objects can be locked at any one time. This parameter limits the average number of object locks used by each transaction; individual transactions can lock more objects as long as the locks of all transactions fit in the lock table. This is not the number of rows that can be locked; that value is unlimited. The default, 64, has historically proven sufficient, but you might need to raise this value if you have clients that touch many different tables in a single serializable transaction. This parameter can only be set at server start.

Recommendations

Raise if you have a lot of tables and are seeing some transactions fail, but modestly as a larger transaction table is expensive.

Comments