Тонкая настройка postgresql для 1с 8.3 windows. Устанавливаем PostgreSQL. Для чего это надо

1 Ноя 2012 Преимущества использования свободно распространяемого программного обеспечения очевидны. К сожалению, очевидны и недостатки - нет официальной поддержки, зачастую документация противоречива, неполна и разбросана по разным источникам. Эта статья поможет разобраться с процессом установки PosgreSQL для "1С:Предприятие 8", избежав подводные камни, которые не описаны в официальной документации.

Необходимые компоненты для установки

СУБД PostgreSQL распространяется бесплатно и входит в комплект поставки сервера приложений "1С". Сервер приложений "1С:Предприятие 8" поставляется в двух вариантах: 32-разрядный и 64-разрядный. Postgre может работать с обоими.

Итак, имеем на руках дистрибутивы:

  • Postgre: postgresql-9_1_2-1_1Cx64.zip, любезно предоставленный фирмой "1С".
  • Дистрибутив сервера приложений "1С:Предприятие" для Windows x64, версии 8.2.16.368.

Казалось бы, чего проще - запусти и установится. Легко! Но установка в стандартном режиме даст одно небольшое ограничение: кластер у нас будут лежать в папке "Program Files". Не всем это понравится. Рассмотрим два варианта установки, простой и расширенный.

Статья разбита на 5 разделов:

1) Установка сервера 1C.

2) Установка PostgreSQL в стандартном виде, достаточном для запуска 1С без дополнительных настроек.

3) Установка PostgreSQL с выбором папки хранения кластера.

4) Создание новой информационной базы 1С.

5) Указание папки хранения файлов базы данных на сервере СУБД.

Перед установкой обязательно прочитайте всю статью целиком!

Установка сервера приложений 1С

Запускаем setup.exe из папки с дистрибутивом сервера 1С.

В том случае, если вы установите сервер приложений не как сервис, нужно будет вручную его запускать каждый раз. Требуется такой вариант редко. Устанавливаем как службу (сервис), и решаем, под каким пользователем он будет запускаться. Из соображений безопасности лучше создать отдельного пользователя USR1CV82, а не разрешать сервису работать под полными правами.

После установки сервера приложений система предложит установить драйвер ключа защиты HASP. Соглашаемся:

Дожидаемся сообщения:

Если сообщение будет другим, в системе, скорее всего, остались "хвосты" от предыдущих установок драйверов HASP. Удаляйте их все, и пробуйте заново.

Готово, сервер приложений "1С:Предприятие 8" мы установили успешно.

Установка PostgreSQL в стандартном виде, достаточном для запуска 1С без дополнительных настроек

Запускаем "postgresql-9.1.2-1.1C(x64).msi"

Опции установки можно не менять, 1С работать будет. Далее.

Postgre, как и сервер 1С, может сам создать пользователя, под которым будете запускаться служба. Обращаю ваше внимание на то, что если указать учетную запись с правами администратора, то служба корректно работать не будет. Обязательно создавайте нового пользователя.

Следующее окно установки.

Инициализируем кластер. Если у нас сервер баз данных и сервер приложений 1С находятся на разных компьютерах, тогда устанавливаем галочку «Поодерживать подсоединения с любых IP», иначе не трогаем. Обязательно указываем кодировку UTF8. Создаем суперпользователя СУБД. Далее…

Для начальной работы нам ничего дополнительного не нужно, снимаем галочку, завершаем установку.

Результат наших усилий - готовый к работе PostgreSQL. Если нас устраивает, что базы будут лежать в Program Files\PostgreSQL\9.1.2-1.1C\data - заканчиваем на этом, раскрываем базы и наслаждаемся процессом. Однако, чаще все-таки базы данных "лежат" на специально предназначенных для этого дисковых массивах, а не на системном диске. Для того, чтобы настроить расположение данных, перед установкой прочитайте следующий раздел.

Установка Postgre с выбором места хранения кластера

Приступаем к установки Postgre и выполняем все шаги до тех пор, пока нам не предложат инициализировать кластер:

Снимаем галочку "Инициализировать кластер базы данных" и нажимаем "Далее".

Да, уверены.

Снимаем галочку "По выходу запустить Stack Builder" и завершаем установку.

1. Необходимо выдать полные права на папку в которую мы установили PostgreSQL, обычно это C:\Program Files\PostgreSQL

2. Из под админских прав запускаем cmd. Если это делаете в win7, то запускаем от Администратора.

3. Создаем папку где будет храниться кластер. Например d:\postgredata.

md d:\postgredata

4. Проводим инициализацию кластера вручную с указанием пути где он будет находиться.

“C:\Program Files\PostgreSQL\9.1.2-1.1C\bin\initdb.exe” -D d:\postgredata --locale=Russian_Russia --encoding=UTF8 -U postgres

5. Удаляем службу PostgreSQL, которая была установлена в ходе установки.

sc delete pgsql-9.1.2-1.1C-x64

Где pgsql-9.1.2-1.1C-x64 - Это название службы. Если не знаете название точно, можно посмотреть свойствах службы “PostgreSQL Database Server…” (Пуск – Панель управления – Администрирование – Службы)

6. Создаем новый сервис с указанием нашего кластера

“C:\Program Files\PostgreSQL\9.1.2-1.1C\bin\pg_ctl” register -N pgsql -U postgresql -P пароль -D d:/postgredata

7. Теперь заходим в службы. Пуск – Панель управления – Администрирование – Службы и стартуем нашу службу.

Создание новой базы данных 1С на сервере с PostgreSQL

Есть несколько вариантов создания базы данных. Можно попробовать создавать базу через pgAdmin3, консоль администрирования серверов 1С. Но тут вы столкнетесь с массой непонятных вопросов и кучей ошибок, ответы на которые будете долго искать. Оставьте это для специалистов. Наша задача получить работоспособную базу с минимальными усилиями. Опишем самый простой путь добиться этого.

Запускаем клиент 1С.

Нажимаем "Добавить...".

Придумываем название базы, указываем "На сервере 1С:Предприятия", далее.

Кластер серверов 1С:Предприятия – localhost, если мы создаем базу на том же компьютере, где установлен сервер 1С, или имя сервера приложений 1С, если на другом.

Имя информационной базы в кластере - в дальнейшем это название будет указываться при подключении с других компьютеров.

Тип СУБД – Выбираем PostgreSQL.

Сервер баз данных - указываем название сервера PostgreSQL. Если создаем базу на сервере, так же указываем localhost.

Имя базы данных – с таким название будет создана база в PostgreSQL.

Пользователь, пароль – имя пользователя, которого мы указывали как суперпользователя при установке PostgreSQL. Обязательно поднимаем галочку "Создать базу данных в случае ее отсутствия".

Возникает вопрос - а где база будет храниться физически? В папке Base указанного кластера. А если мы не хотим, чтоб она лежала там, где лежат все базы? Тут пока ничего поделать нельзя, просто создаем базу и двигаемся дальше. Далее…

Указание папки хранения базы данных

Итак, мы создали базу. В большинстве случаев на этом установка заканчивается. Однако, если баз много, и есть несколько дисковых массивов для разных групп баз, нужно указать, где физически должны располагаться базы. Чтобы сделать это, запускаем pgAdmin3 из Пуск – Программы – PostgreSQL. Подключаемся к нашему серверу.

При первом подключении Postgre попросит пароль для пользователя postgres (которого мы создавали при установке).

Создаем новый TableSpace, это будет та папка, в которой будут храниться наши базы.

Указали место хранения файлов базы. Ок.

Теперь открываем свойства уже созданной ранее базы данных, размещение которой мы хотим изменить.

Меняем свойство Tablespace. После нажатия "ОК" файлы базы данных будут автоматически перемещены. Готово! Надеемся, что статья была вам полезна. Если это так - оставляйте комментарии, делитесь ссылками на эту страницу. Спасибо!

Вопросу, какая же СУБД - Postgresql или MS SQL для 1С является наиболее оптимальной, посвящено множество статей. В этой статье мы рассмотрим шаги оптимизации обоих. Каждая СУБД вендора имеет как собственные рекомендации по настройке, так и рекомендации фирмы 1С. Следует отметить, что в зависимости от оборудования, конфигурации серверов и количества пользователей, задающих разную нагрузку, детали процесса оптимизации СУБД под 1С и реализации рекомендаций могут меняться.

Настройка PostgreSQL под 1С

Опыт эксплуатации баз 1С на PostgreSQL показал, что наибольшей производительности и оптимальной работы 1С и PostgreSQL удалось добиться на linux, поэтому желательно использовать именно ее. Но вне зависимости от операционной системы, важно помнить, что настройки, указанные по умолчанию при установке PostgreSQL, предназначены только для запуска сервера СУБД. Ни о какой промышленной эксплуатации речи идти не может! Следующим шагом после запуска станет оптимизация PostgreSQL под 1С:

  • Для начала отключаем Energy Saving (в противном случае могут непредсказуемо вырасти задержки ответов из БД) и запрещаем своппинг разделяемой памяти.
  • Настраиваем основные параметры сервера СУБД (рекомендации по настройке описаны достаточно подробно, как на официальном сайте вендора, так и компанией 1С, поэтому остановимся только на самых важных).
  • В типовых рекомендациях компании 1С предлагается отключать механизмы HyperThreading. Но тестирование Postgres-pro на серверах, с включенной SMT (simultaneous multi threading), показало другие результаты .
Установка параметра 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 или 32MB..128MB Задает объем памяти для каждой сессии, который будет использоваться для внутренних операций сортировки, объединения и пр., прежде чем будут задействованы временные файлы. При превышении этого объема, сервер будет использовать временные файлы на диске, что может существенно снизить скорость обработки запросов. Данный параметр используется при выполнении операторов: ORDER BY, DISTINCT, соединения слиянием и пр.
  • Посчитать дополнительно данный параметр можно следующим образом: (Общая память shared_buffers – память на другие программы) / число активных соединений. Это значение можно уменьшать, следя за количеством создаваемых временных файлов. Такую статистику по размеру и количеству временных файлов можно получить из системного представления pg_stat_database.
  • effective_cache_size = RAM - shared_buffers основная задача этого параметра подсказать оптимизатору запроса, какой способ получения данных выбрать: полный просмотр или сканирование по индексу. Чем выше значение параметра, тем больше вероятность использования сканирования по индексу. При этом сервер не учитывает, что данные при выполнении запроса могут оставаться в памяти, и следующему запросу не надо их поднимать с диска.
  • Установка PostgreSQL

    Установка 1С на PostgreSQL под Windows – достаточно простой процесс. При запуске установочного пакета необходимо указать кодировку UTF-8. По сути, это единственный интересный нюанс и еще какая-то настройка PostgreSQL для 1С 8.3 из-под Windows не потребуется. Установка и настройка PostgreSQL для 1С на ОС linux может вызвать ряд затруднений. Для их преодоления в качестве примера рассмотрим запуск работы (используя дистрибутивы ведущего российского вендора PostgreSQL-Pro и компании 1С) PostgreSQL на сервере Ubuntu 16.04 х64

    Установка дистрибутивов 1С для СУБД PostgreSQL

    1.Скачиваем указанную позицию дистрибутива СУБД PostgreSQL:

    2.Выкладываем PostgreSQL на сервер;

    3.Распаковать установщик СУБД PostgreSQL можно командой:

    tar -xvf postgresql-9.4.2-1.1C_amd64_deb.tar.bz2

    4.Перед установкой дистрибутива СУБД PostgreSQL проверим наличие в системе необходимой локали (по умолчанию ru_RU.UTF-8):


    5.Если система, с которой будет работать PostgreSQL, ставилась с языком отличным от русского, необходимо создать новые локали:

    locale-gen ru_RU update-locale LANG=ru_RU.UTF8 dpkg-reconfigure locales

    6.Если необходимая локаль все же имеется, устанавливаем ее по умолчанию:

    locale –a nano /etc/default/locale Заменяем содержимое на LANG=ru_RU.UTF-8

    7.После перезагрузки, установим необходимые пакеты для нашей версии PostgreSQL:

    apt-get install libxslt1.1 ssl-cert

    8.Версия PostgreSQL пакета 9.4.2-1.1C связана с пакетом libicu версии libicu48. В репозитории нужной версии уже нет, ее можно скачать ;

    9.Скачиваем и помещаем в каталог, где хранятся скачанные файлы для PostgreSQL;

    10.Перейдя в каталог с файлами 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

    11.Готово. Дистрибутив СУБД 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.4

    Для доступа к серверу редактируем параметры в файле 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"

    Сам файл имеет следующую структуру:


    Файл хорошо документирован, но на английском языке. Кратко рассмотрим основные параметры:

    • Local локальное подключение только через unix
    • Host подключение по TCP/IP
    • Hostssl шифрованное SSL-подключение по TCP/IP (сервер должен быть собран с поддержкой SSL, также требуется установить параметр ssl)
    • Hostnossl нешифрованное подключение по TCP/IP
    • 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.

    Оптимизация 1С под MS SQL Server

    Устанавливаем последние обновления для SQL Sever.

    Операционная система резервирует место и забивает его нулями, что занимает достаточно много времени при следующих событиях:

    • Создание базы данных;
    • Добавление файлов данных, журнал транзакций, к существующей базе данных;
    • Увеличение размера существующего файла (в том числе Autogrow-операций);
    • Восстанавливаем базы данных или группы файлов.

    Решается данная проблема добавлением роли (под которой запущен сервер) к пункту локальной политики безопасности «Выполнение задач по обслуживанию томов».

    При возможности необходимо разнести базу TempDB (особенно интенсивно она используется в режиме управляемых блокировок RCSI) и журнал транзакций на разные диски.

    На сервере, где работает SQL сервер, режим энергосбережения должен быть установлен в «Высокая производительность».

    В папке с файлами БД не должно быть сжатия.

    На вкладке «Память» для сервера устанавливаем минимальную планку в размере 50% от общего объема памяти. Максимальную рассчитываем по одной из формул:

    • Максимальная память = Общий объем – размер по ОС – размер под 1С (Если он есть, предварительно замерив счетчиками используемую память) или
    • Максимальная память = Общий объем – (1024* Общий объем/16384).

    Ограничиваем параметр DOP «Max degree of parallelism» и ставим его в значение «1».

    Актуализируем статистику по расписанию. Начиная с SQL Server 2008, обновление статистики вызывает перекомпиляцию запросов и, соответственно, очищает процедурный кэш, поэтому отдельную процедуру по очистке процедурного кэша выполнять не надо.

    Периодически проводим реиндексацию таблицы и дефрагментацию индексов.

    Устанавливаем правильную политику резервирования. Если вам не надо восстанавливаться на последний момент времени к краху системы, а последние минут 5 или больше для вашего бизнеса не критичны, то установите модель восстановления в «Простая». Этим вы ускорите в разы скорость при записи. Главное, чтобы дифференцированный бекап успевал выполняться за указанное время.

    Добиваемся улучшения при работе с TempDB при вводе/выводе посредством создания дополнительных файлов данных. Если логических процессоров меньше 8, рекомендуется создать файл данных для каждого логического процессора. Если логических процессоров больше 8, рекомендуется создать 8 файлов данных и, увеличивая на один при кратности 4, обязательно оценить нагрузку на TempDB.

    Хотя интернет уже переполнен статьями о «правильной» настройке связки PostgreSQL и 1C 8.2, для подводных камней всегда остается место. При сравнении производительности СУБД PostgreSQL на разных ОС, показатели различаются в разы. Самая большую обиду принесла любимая Ubuntu (человечность). После долгих дней и ночей проведенных за консолью этой ОС, она разочаровала окончательно.

    Тормоза PostgreSQL в Ubuntu Server. Что с ними делать? Сколько раз можно наступать на грабли?

    Итак, что имеем: игрушку IBM x3650 M4 c двумя процессорами, 32 GB оперативки, массив RAID 10 из 6-и дисков общим объемом ~900GB. Являясь сторонником опенсорсного ПО и немалый опыт работы с системами а-ля Debian и производные, решил выбрать в качестве операционки самую «человечную» из них - Ubuntu Server x64. Как потом оказалось - это была первая моя ошибка.

    С СУБД знаком не понаслышке но, имею пока еще малый опыт работы именно на Linux платформу. Поэтому, если где-то ошибся, прошу пинать строго советами. Не один я такой все-таки.

    Наконец 1С выпустила свежую сборку PostgreSQL под Debian/Ubuntu которая работает почти «из коробки».

    Процес установки упростился до дюжины консольных комманд.

    Admin@srv1c:~# sudo su

    1. Увеличиваем максимальный размер сегмента памяти до 8Гб. Для менее мощных машин устанавливают от 64Мб до половины объема оперативки.

    Root@srv1c:~# echo "kernel.shmmax=8589934592" >>/etc/sysctl.conf root@srv1c:~# sysctl -p

    2. Генерируем русскую локаль и задаем переменную среды LANG, именно с ней будет работать скрипт инициализации базы данных.

    Root@srv1c:~# locale-gen en_US ru_RU ru_RU.UTF-8 root@srv1c:~# export LANG="ru_RU.UTF-8"

    3.Устанавливаем необходимые зависимисти.

    Root@srv1c:~# apt-get install libssl0.9.8 ssl-cert postgresql-common libossp-uuid16 libxslt1.1

    4. Берем с сайта users.v8.1c.ru архив с PostgreSQL 9.1.2 для 64-битных DEB-систем, распаковываем и устанавливаем нужные компоненты. Нужных и не нужных компонентов в архиве много, для того что бы все заработало достаточно postgresql, postgresql-client и postgresql-contrib.

    Root@srv1c:~# tar zxf postgresql_9_1_2_deb_x86_64_tar.gz

    5. Установка пакетов:

    Root@srv1c:~# cd ./postgres root@srv1c:~# dpkg -i postgresql-9.1_9.1.2-1.1C_amd64.deb libpq5_9.1.2-1.1C_amd64.deb postgresql-client-9.1_9.1.2-1.1C_amd64.deb postgresql-contrib-9.1_9.1.2-1.1C_amd64.deb

    6. После установки нужно еще немного подправить конфигурационный файл, как не странно будучи поставленным в пакете 1с он содержит не правильные настройки для обработки экранирующих символов, и при создании базы 1с выдает ошибки “syntax error at or near “SECOND” at character 127″ или “syntax error at or near “SECOND” at character 227″. Исправляем в файле /etc/postgresql/9.1/main/postgresql.conf следующие параметры.

    Root@srv1c:~# nano /etc/postgresql/9.1/main/postgresql.conf

    Backslash_quote = on escape_string_warning = off standart_conforming_strings = off
    И закрываем с сохранением: Ctrl+x, Y

    7. Перезапускаем сервис.

    Root@srv1c:~# service postgresql restart

    8.Меняем пароль для пользователя postgres – это тот пароль который мы будем задавать при создании базы данных.

    Root@srv1c:~# su postgres postgres@srv1c:/root$ cd ~ postgres@srv1c:~$ psql -U postgres -c "alter user postgres with password "ваш пароль";" postgres@srv1c:~$ exit

    9. Отключаем обновление для пакетов 1с-овского PostgreSQL.

    Root@srv1c:~# echo "libpq5" hold | dpkg --set-selections root@srv1c:~# echo "postgresql-9.1" hold | dpkg --set-selections root@srv1c:~# echo "postgresql-client-9.1" hold | dpkg --set-selections root@srv1c:~# echo "postgresql-contrib-9.1" hold | dpkg --set-selections

    10. Перезапускаем службу и проверяем, запустился ли PostgreSQL:

    Root@srv1c:~# service postgresql restart root@srv1c:~# netstat -atn|grep 5432

    Ответ должен быть примерно таким:

    Tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN

    Tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN

    Здесь установка PostgreSQL закончена можно считать законченной.

    При сравнении скорости работы связки 1C 8.2.16 + PostgeSQL 9.1.2 были обнаружены жуткие тормоза под Ubuntu Server 12.04. Тест от Гилёва «TPC_1С_GILV» в Ubuntu в среднем показал 10-14 баллов, что обусловлено тестовой базой, которая не задействует управляемые блокировки. Для сравнения, на менее мощную систему с четырехядерным процессором i5, 8GB оперативки, под Win 2k8 и IBM DB2 тот же тест показал 52 попугая. Проведение документов за месяц занимало в трое меньше времени на младшую машину. Аналогичные результаты получены и с PostgreSQL. Некоторые коллеги отзываются о результатах на CentOS при аналогичных параметрах. Так на CentOS получают по тому же тесту 56-62 балла а на чистую Debian - от 54 балла. Во всех тестах использовались идентичные настройки PG с отключенным fsync. В Ubuntu проверялись ext4, в CentOS LVM+ext3.

    На всех платоформах ничего не ставилось кроме PG и 1C. На Ubuntu проверялись несколько версий PG, от Etersoft, собранная вручную с патчами от 1С и сборка от 1С, под CentOS использовалась версия Etersoft.

    Есть какие-то варианты улучшения производительности в Ubuntu?

    Я уже готовлю систему под CentOS. О результатах тестирования отпишусь в новой статье.

    Как вы уже поняли речь, пойдет о тюнинге 1С в клиент-серверном варианте. Выбор в пользу именно такого варианта был сделан т.к. количество пользователей, работающих с 1С небольшое и использование платного MS SQL было бы просто экономически не целесообразно, а настройка PostgreSQL довольна проста и возможна практически из коробки.

    Если у вас проблема с медленной работой 1С, то на 99% это проблема не с самой 1С, а это проблема в не правильной настройке СУБД, вот собственно о б этом и пойдет речь, как правильно настроить СУБД PostgreSQL для быстрой работы 1С.

    И так начнем для настройки PostgreSQL мы будем использовать pgAdmin на мой взгляд он очень удобен в настройке. Для начала сделаем копии конфигурационных файлов Postgresql.conf и pg_hba.conf они находиться:

    C:\Program Files\PostgreSQL\9.2.х-1.1C\data

    Это поможет вам быстро вернуть все в рабочее состояние если в друг что-то пойдёт не так.

    postgresql.conf – это файл конфигурации СУБД PostgreSQL который мы в основном и будим править.

    pg_hba.conf – это файл настройки доступа к СУБД, данный файл если вы в нем не чего не меняли по умолчанию правильный, но в нем можно допивать дополнительные настройки доступности.

    Отрываем настройки конфигурации (Postgresql.conf) и там нам интересны следующие параметры:

    shared_buffers – этот параметр определяет количество совместного кэша страниц СУБД. Рассчитывается примерно, делим всю доступную память на 4.

    effective_cache_size – это параметр отвечает за оценку размера кэша файловой системы. Рассчитывается 32гб – shared_buffers = effective_cache_size.

    temp_buffers – Этот параметр размера буфера для временных страниц, я оставляю по умолчанию равное 256 мб.

    bgwrite_delay – время пропусков между циклами фоновой записи на диск. Процесс отвечает за синхронизацию страниц, большое значение этого параметра приведет к возрастанию нагрузки, а маленькое приведет к полной загрузке одного из ядер.

    synchronous_commit = off - данный параметр ВЫКлючает синхронизацию с диском. Данный параметр дает значительный прирост в производительности.

    autovacuum = on – это сбор мусора, также обязательно рекомендую включать настройки автовакума они тоже значительно помогут ускроить работу вашей 1С.

    autovacuum_max_workers = 5 – максимальное количество параллельно запущенных процессов уборки.

    autovacuum_naptime = 20s – минимальный интервал, реже которого autovacuum не будет запускаться.

    После чего применяем настройки и перезагружаем конфигурацию сервера СУБД.

    Но вот думаю эти настройки уже позволят вам значительно ускорить работу 1С. Для более тонкой настройки работы связки PostgreSQL и 1С нужен более полный анализ и возможно модернизация сервера.

    СУБД PostgreSQL весьма популярна среди пользователей, и причина тому — достойное качество при полной бесплатности. Высокая популярность привела к тому, что задачи на тему прямого доступа к базе PostgreSQL из 1С встречаются достаточно часто. Именно о том, как этот доступ организовать и поговорим ниже.

    Подготовка

    В начале нужно сказать, что все испытания проводились на ОС Windows 7 (64-bit) и Windows 10 (64-bit), а подключения производились к серверу PostgreSQL (64-bit) 9.4.2-1.1C.

    Первое, что нам потребуется это установленный драйвер psqlODBC. Установить его можно либо при помощи приложения Stack Builder (которое устанавливается вместе с PostgreSQL):

    Либо посетив страничку , на которой представлено множество версий нашего драйвера:


    Важно! Устанавливать нужно именно psqlODBC (32 bit).

    С драйвером psqlODBC (64 bit) мне не удалось подключиться к базе данных ни одним способом, ни в одной ОС. Весьма вероятно, что причина этого в моих кривых руках, но что есть, то и пишу.

    Так или иначе, после установки правильной версии драйвера у нас есть несколько способов получения данных.

    Подключение внешнего источника данных

    Подключение базы PostgreSQL в качестве внешнего источника данных является простым и наглядным. Создаем новый внешний источник данных и добавить новую таблицу:


    Затем указываем строку подключения примерно такова вида:

    Driver={PostgreSQL Unicode};Server=host ;Port=port ;Database=db_name ;Uid=user ;Pwd=password ;STMT=utf8


    И в результате получаем список таблиц:


    Отмечу, что при создании внешнего источника данных у меня не получилось использовать пользовательские источники данных, о которых ниже.

    Подключение при помощи ADODB

    Подключение к базе PostgreSQL и выполнение различных запросов при помощи библиотеки ADOdb выглядит приблизительно так:

    &НаКлиенте Процедура ЗапросКPostgreSQL(Команда) АДОСоединение = Новый COMОбъект("ADODB.CONNECTION"); АДОСоединение.Provider = "MSDASQL.1"; АДОСоединение.ConnectionString = "Driver={PostgreSQL Unicode};Server=localhost;Port=5432;Database=test;Uid=postgres;Pwd=123456;STMT=utf8"; Попытка АДОСоединение.Open(); Исключение Возврат; КонецПопытки; АДОНаборЗаписей = Новый COMОбъект("ADODB.RecordSet"); АДОКоманда = Новый COMОбъект("ADODB.Command"); Попытка АДОКоманда.ActiveConnection = АДОСоединение; АДОКоманда.CommandText = "SELECT * FROM ""table"";"; АДОНаборЗаписей = АДОКоманда.Execute(); Исключение Возврат; КонецПопытки; КонецПроцедуры

    &НаКлиенте

    Процедура ЗапросКPostgreSQL(Команда)

    АДОСоединение= Новый COMОбъект("ADODB.CONNECTION" ) ;

    АДОСоединение. Provider= "MSDASQL.1" ;

    АДОСоединение. ConnectionString= "Driver={PostgreSQL Unicode};Server=localhost;Port=5432;Database=test;Uid=postgres;Pwd=123456;STMT=utf8" ;

    Попытка

    АДОСоединение. Open() ;

    Исключение

    Возврат;

    КонецПопытки;

    АДОНаборЗаписей= Новый COMОбъект("ADODB.RecordSet" ) ;

    АДОКоманда= Новый COMОбъект("ADODB.Command" ) ;

    Попытка

    АДОКоманда. ActiveConnection= АДОСоединение;

    АДОКоманда. CommandText= "SELECT * FROM " "table" ";" ;

    АДОНаборЗаписей= АДОКоманда. Execute() ;

    Исключение

    Возврат;

    КонецПопытки;

    КонецПроцедуры

    При этом есть возможность использовать пользовательский источник данных, который нужно сначала создать. Сделать это можно при помощи приложения ODBC Data Sources (32 бита), которое находится в панели управления (а в Windows 10 в папке «Администрирование» на панели управления). Важно использовать именно 32-х битную версию, так как каждая версия видит только «свои» драйверы. Если же, по какой-либо причине, на панели управления нет этого приложения, то его можно запустить напрямую, оно находится по адресу \Windows\SysWOW64\odbcad32.exe.