The shared predicate lock table tracks locks on
max_pred_locks_per_transaction * (max_connections + max_prepared_transactions) objects (e.g., tables); hence, no more than this many distinct objects can be locked at any one time. This parameter controls the average number of object locks allocated for 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 generally been sufficient in testing, 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.
- psycopg2 out of shared memory and hints of increase max_pred_locks_per_transaction
- pg_dump: [archiver (db)] query failed: ERROR: out of shared memory
- pg_restore: processing data for table "public.planet_osm_line" out of memory
- Lock Contention is high in GCC/Clang for Postgres
- Postgresql doesn't use memory for caching