Приложение I. Настройка Postgres Pro для решений

Вы можете установить и использовать Postgres Pro с решениями в клиент/серверной модели.

Убедитесь, что в вашей системе установлена русская локаль (например, ru_RU.UTF-8 в системах Linux) и она является активной локалью пользователя, создающего кластер БД. Например, в ОС Debian выполните следующие действия:

sudo dpkg-reconfigure locales # Выберите создаваемую локаль ru_RU.UTF-8
export LANG="ru_RU.UTF-8"
/opt/pgpro/std-12/bin/pg-setup initdb

Подробности можно найти в соответствующих разделах документации 1C и вашей ОС.

Для оптимальной производительности и стабильности измените следующие параметры в конфигурационном файле postgresql.conf сервера Postgres Pro:

  1. Увеличьте максимально возможное число одновременных подключений к серверу баз данных до 1000. Решения могут открывать большое количество соединений, даже если все они не нужны, так что рекомендуется разрешить на сервере не менее 500 подключений.

    max_connections = 1000
  2. Чтобы временные таблицы работали корректно, измените следующие параметры:

    • Увеличьте размер буфера для временных таблиц:

      temp_buffers = 32MB
    • Увеличьте число допустимых в одной транзакции блокировок таблиц или индексов до 256:

      max_locks_per_transaction = 256

      Обычно решения 1C используют множество временных таблиц. Такие таблицы в большом количестве используются каждым обслуживающим процессом. Закрывая соединение, Postgres Pro пытается удалить все временные таблицы в одной транзакции, при этом транзакция может запрашивать множество блокировок. Если число блокировок превысит значение max_locks_per_transaction, транзакция прервётся и оставит за собой множество потерянных временных таблиц.

  3. Включите экранирование символом обратной косой черты для всех строк и выключите предупреждение об использовании этого символа:

    standard_conforming_strings = off
    escape_string_warning = off
  4. Задайте параметр effective_cache_size равным минимум половине объёма ОЗУ, доступного в системе. Эффективность оптимизатора запросов Postgres Pro зависит от выделенного ему объёма ОЗУ.

  5. Оптимизируйте планирование запросов с помощью расширения plantuner:

    • Добавьте plantuner в переменную shared_preload_libraries:

      shared_preload_libraries = 'plantuner'
    • Настройте оптимизатор Postgres Pro для улучшенного планирования запросов с недавно созданными пустыми таблицами:

      plantuner.fix_empty_table = 'on'

F.28. mchar

The mchar module provides additional data types for compatibility with Microsoft SQL Server (MS SQL).

F.28.1. Overview

This module has been designed to improve 1C Enterprise support, most popular Russian CRM and ERP system.

It implements types MCHAR and MVARCHAR, which are bug-to-bug compatible with MS SQL CHAR and VARCHAR respectively. Additionally, these types use the ICU library for comparison and case conversion, so their behavior is identical across different operating systems.

Postgres Pro also includes citext extension which provides types similar to MCHAR. But this extension doesn't emulate MS-SQL behavior concerning end-of-value whitespace.

Differences from Postgres Pro standard CHAR and VARCHAR are:

  • Case insensitive comparison

  • Handling of the whitespace at the end of string

  • These types are always stored as two-byte unicode value regardless of database encoding.

F.28.2. Additional types

  • mchar — analog of the MS SQL char type

  • mvarchar — analog of the MS SQL varchar type

F.28.3. MCHAR and MVARCHAR features

  • Defines length(str) function

  • Defines substr(str, pos[, length]) function

  • Defines || operator, which would be applied to concatenate any (mchar and mvarchar) arguments

  • Defines set of operators: <, <=, =, >=, > for case-insensitive comparison (ICU)

  • Defines set of operators: &<, &<=, &=, &>=, &> to case-sensitive comparison (ICU)

  • Implicit cast between mchar and mvarchar types

  • B-tree and Hash-index support

  • The LIKE [ESCAPE] operator support

  • The SIMILAR TO [ESCAPE] operator support

  • The ~ operator (POSIX regexp) support

  • Index support for the LIKE operator

F.28.4. Authors


      Oleg Bartunov 
      Teodor Sigaev