"christian.echerer@manroland-web.com" <christian.echerer@manroland-web.com> wrote:
> I didn´t understand the HINT:
> You might need to increase max_pred_locks_per_transaction.
That is a configuration setting in postgresql.conf which controls
how much shared memory is reserved at start-up to hold information
on the predicate locks required to make serializable transactions
work.
> What is the reason for the error, that the shared memory ran out,
> or that the number of predicate locks is too small?
The shared memory reserved at start-up for predicate lock
information was too small.
> If i increase max_pred_locks_per_transaction i get probably even
> faster an "out of shared memory" error.
No.
> What is the best way to fix the problem?
Increase max_pred_locks_per_transaction. If you are using
serializable transactions this usually needs to be increased to see
optimal performance. The optimal setting depends on data structure
and the nature of the workload. Increases to 10 or 20 times the
default value are not unusual.
Be sure to review the "for optimal performance" suggestions at the
bottom of this section of the documentation:
http://www.postgresql.org/docs/9.3/interactive/transaction-iso.html#XACT-SERIALIZABLE
If you can declare some transactions which will not be modifying
data as READ ONLY you will probably reduce the number of predicate
locks required.
--
Kevin Grittner
EDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company