You can install and use PostgreSQL with 1C solutions in a client/server model.
Make sure that the Russian locale (such as ru_RU.UTF-8 on Linux systems) is installed and that it is the active
locale of the user who creates the database cluster.
For example, for Debian systems do the following:
sudo dpkg-reconfigure locales # Choose locale ru_RU.UTF-8 to generate export LANG="ru_RU.UTF-8" /opt/pgpro/1c-17/bin/pg-setup initdb
For more details, see related sections of the documentation for your operating system and for 1C.
Also, for optimal performance and stability, modify the following settings in the postgresql.conf configuration file of PostgreSQL server:
Increase the maximum number of allowed concurrent connections to the database server, up to 1000 connections. 1C solutions can open a large number of connections, even if not all of them are used, so it is recommended to allow not less than 500 connections.
max_connections = 1000
To ensure that temporary tables are handled correctly, modify the following parameters:
Increase the buffer size for temporary tables:
temp_buffers = 32MB
Increase the number of allowed locks of tables or indexes per transaction to 256:
max_locks_per_transaction = 256
Typically, 1C solutions use a lot of temporary tables. Every backend process usually contains multiple temporary tables. When closing a connection, PostgreSQL tries to drop all temporary tables in a single transaction, so this transaction may use a lot of locks. If the number of locks exceeds the max_locks_per_transaction value, the transaction will fail, leaving multiple orphaned temporary tables.
Enable backslash escapes in all strings, and switch off the warning about using the backslash escape symbol:
standard_conforming_strings = off escape_string_warning = off
Set the effective_cache_size parameter to at least half of RAM
available on the system. PostgreSQL query optimizer performance
depends on the amount of allocated RAM.
To use the logical replication mechanism of the
dbcopies_decoding
module, wal_level must be
set to logical.
Optimize query planning using plantuner extension, as follows:
Add plantuner to the shared_preload_libraries variable:
shared_preload_libraries = 'plantuner'
Tune PostgreSQL optimizer to improve planning for recently created empty tables:
plantuner.fix_empty_table = 'on'