Для многих остается актуальной проблема выбора СУБД для 1С - Postgresql или MS SQL. Давайте рассмотрим, как оптимизировать обе. Каждая СУБД вендора имеет как собственные рекомендации по настройке, так и рекомендации фирмы 1С. В зависимости от конфигурации серверов, оборудования и нагрузки, зависящей от количества пользователей, шаги оптимизации СУБД под 1С могут меняться.
Настройка PostgreSQL под 1С
Опыт работы баз 1С на PostgreSQL показал, что 1С и PostgreSQL оптимально функционируют на linux, поэтому лучше использовать именно эту операционную систему. Однако важно учитывать, что настройки по умолчанию при установке PostgreSQL используются для запуска сервера СУБД. Не стоит предпринимать попытки промышленной эксплуатации. После запуска начинаем оптимизацию PostgreSQL под 1С:
- Отключаем Energy Saving и ставим запрет на своппинг разделяемой памяти.
- Настраиваем параметры сервера СУБД, используя рекомендации по настройке на сайте 1С или вендора.
- В типовых рекомендациях 1С предлагается отключать HyperThreading, но тестирование на серверах, с включенной SMT показало другие результаты.
По умолчанию рекомендуется установка shared_buffers в RAM/4, однако пример Sql Server показывает, что чем больше выделено под него памяти, тем лучше производительность (если сброс страниц в файл подкачки сброшен). Значит, чем больше страниц данных находится в оперативной памяти, тем происходит меньше обращений к диску.
Тогда возникает резонный вопрос: почему кэш такой маленький? Объясняется это просто: если большой shared_buffers, тогда часть неиспользуемых страниц сохраняется на диск. Тогда как можно отследить момент прекращения сброса и нормализации показателя параметра? Для выхода на оптимальный shared_buffers, его значение нужно ежедневно поднимать на продуктиве с определенным шагом прироста и внимательно смотреть, когда начнется сброс на диск страниц и увеличится своп.
На «большой параметр» отрицательно влияет работа с многочисленными мелкими страницами, имеющими по умолчанию размер 8 Кб. Работа с ними увеличивает расходы. Как этот момент оптимизировать под 1С? В postgreSQL 9.4 есть новый параметр huge_pages, который включается только в Linux. Страницы с размером 2048 kB включаются по умолчанию. Дополнительно нужно поддержку данных страниц включить в ОС. Оптимизировав структуру хранения таким образом, можно добиться большего shared_buffers.
work_mem = RAM/32..64 или 32 MB..128 MB задает объем памяти, который будет использоваться только для внутренних операций объединения, сортировки и пр. Когда этот объем будет превышен, сервер задействует временные файлы на диске, а это определенно снизит скорость обработки запросов. Этот параметр используется при выполнении операторов: ORDER BY, DISTINCT, соединения слиянием и др.
Дополнительно посчитать этот параметр можно так: (общая память shared_buffers – память использующаяся для других программ) / количество активных соединений. Как уменьшить полученное значение? Придется следить за числом создаваемых временных файлов. Эту статистику по их количеству и размеру можно получить из pg_stat_database.
effective_cache_size = RAM - shared_buffers: этот параметр подскажет какой выбрать способ получения данных: просмотр полный или сканирование по индексу. Если значение параметра высокое, нужно использовать сканирование по индексу. Однако сервер не учитывает, что при выполнении запроса данные остаются в памяти, и следующему запросу не нужно поднимать их с диска.
Установка PostgreSQL
Процесс установки 1С на PostgreSQL для Windows не сложен. При запуске установочного пакета указывается кодировка UTF-8. Это единственный нюанс, о котором нужно помнить. Установка на ОС linux более интересна. Для преодоления возникших затруднений рассмотрим в качестве примера запуск работы PostgreSQL на Ubuntu 16.04 х64.
Установка дистрибутивов 1С для PostgreSQL
Начинаем со скачивания указанной позицию дистрибутива PostgreSQL.
Затем выкладываем на сервер PostgreSQL. Установщик СУБД PostgreSQL распаковываем командой:
tar -xvf postgresql-9.4.2-1.1C_amd64_deb.tar.bz2
Перед установкой дистрибутива проверяем систему на наличие необходимой локали (ru_RU.UTF-8 по умолчанию).

Если система изначально ставилась с другим языком, чтобы поставить русский создаем новые локали:
locale-gen ru_RU
update-locale LANG=ru_RU.UTF8
dpkg-reconfigure locale
Если есть необходимая локаль, ставим ее по умолчанию:
locale –a
nano /etc/default/locale
Заменяем на LANG=ru_RU.UTF-8
Делаем перезагрузку и ставим пакеты для нашей PostgreSQL:
apt-get install libxslt1.1 ssl-cert
Версия PostgreSQL пакета 9.4.2-1.1C взаимосвязана с пакетом libicu48. В репозитории необходимой версии уже нет, поэтому придется ее скачать дополнительно. Помещаем ее в тот каталог, где у нас хранятся скачанные файлы PostgreSQL. Переходим в каталог с файлами и производим установку командами:
cd <Путь к папке с файлами>
dpkg -i libicu48_4.8.1.1-3ubuntu0.6_amd64.deb
dpkg -i libpq5_9.4.2-1.1C_amd64.deb
dpkg -i postgresql-client-common_154.1.1C_all.deb
dpkg -i postgresql-common_154.1.1C_all.deb
dpkg -i postgresql-client-9.4_9.4.2-1.1C_amd64.deb
dpkg -i postgresql-9.4_9.4.2-1.1C_amd64.deb
dpkg -i postgresql-contrib-9.4_9.4.2-1.1C_amd64.deb
Мы все выполнили и установили дистрибутив СУБД PostgreSQL.
Установка дистрибутивов PostgreSQL-Pro
Чтобы установить сервер, выполняем команды в последовательности:
sudo sh -c 'echo "deb http:// 1c.postgrespro.ru/deb/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/postgrespro-1c.list'
wget --quiet -O - http:// 1c.postgrespro.ru/keys/GPG-KEY-POSTGRESPRO-1C-92 | sudo apt-key add - && sudo apt-get update
sudo apt-get install postgresql-pro-1c-9.
Чтобы получить доступ к серверу, в файле pg_hba.conf редактируем параметры:
сd <Путь до каталога pg_hba.conf>
cp pg_hba.conf pg_hba.conf.old
bash -c "echo 'local all postgres trust' > pg_hba.conf"
bash -c "echo 'host all all all md5' >> pg_hba.conf"
Файл будет иметь следующую структуру.

Файл документирован достаточно подробно, но на английском языке. Давайте ознакомимся вкратце с наиболее важными параметрами:
TYPE
- Local - подключение локальное через unix;
- Host - по TCP/IP;
- Hostssl - SSL-подключение (шифрованное) по TCP/IP;
- Hostnossl подключение по TCP/IP нешифрованное.
METHOD
- trust - допуск без аутентификации;
- reject - отказ без аутентификации;
- password запрос открытым текстом пароля;
- md5 запрос пароля MD5;
- ldap имя и пароль проверяются через сервер LDAP;
- radius имя и пароль проверяются через сервер RADIUS;
- pam имя и пароль проверяются через службу подключаемых модулей.
Если нужна более подробная, детализированная информация, посмотреть ее можно в документации к PostgreSQL.
Следующий и последний шаг - запуск сервера:
root@NODE2:/home/asd# service --status-all |grep postgres
[ - ] postgresql
root@NODE2:/home/asd# service postgresql start
root@NODE2:/home/asd# service --status-all |grep postgres
[ + ] postgresql
После окончания установки настройте конфигурационный файл сервера postgresql.conf, в соответствии со спецификой работы PostgreSQL, конфигурации сервера 1С и сервера Ubuntu.
Звоните нашим специалистам, если вам нужна помощь и поддержка при переходе на PostgreSQL или оставьте заявку в форме ниже.