С 7.7 Postgresql
Используются базы на основе DBF-файлов в 7.7, собственный формат 1CD с версии 8.0 или СУБД Microsoft SQL Server на любой из этих версий. Кроме того, с версии 8.1 хранение данных возможно в PostgreSQL и IBM DB2, а с версии 8.2 добавилась и Oracle. Платформа имеет свой внутренний язык. Что интересно, многие разработчики программного обеспечения понимают это и, например, восьмая версия «1С:Предприятия» умеет изначально работать с PostgreSQL. Но как быть тем, у кого версия 7.7? Не для них ли написана эта статья? Для тех программных продуктов, которые «не знают».
- Исходные данные Мы имеем уже написанное гарантийное письмо в Etersoft, присланные ссылки.
- Инструкция по установке и настройке связки Windows 2008 R2 (PostgreSQL. Установка PostgreSQL.
Содержание:. Введение Сервер postgresql настроен по предыдущей статье —. Основные моменты по ускорению работы базы там приведены.
Они существенно увеличивают производительность по сравнению с настройками по-умолчанию. В большинстве случаев этого бывает достаточно. Если нет — то у вас уже не типичный случай и надо разбираться более детально. Проблема, с которой столкнулся я, кроется в особенности работы postgresql и отсутствии оптимизации 1С для работы с этой бд. База данных postgresql, в отличие от mssql, не умеет распараллеливать выполнение одного запроса не несколько ядер процессора. Даже если у вас очень высокопроизводительный сервер с большим числом ядер, вы можете попасть в ситуацию, когда какой-то тяжелый запрос будет очень сильно тормозить, нагружая только одно ядро. Остальные мощности процессора будут простаивать при этом.
Увеличение ресурсов сервера никак не поможет вам ускорить работу базы. Она будет всегда спотыкаться на этом запросе. Параллельное выполнение запросов на нескольких ядрах в postgresql Я использовал версию postgresql 9.6. Если верить новости — в ней добавлена поддержка распараллеливания запросов. Я стал пробовать на практике это распараллеливание. Информации в интернете, к моему сожалению, не так много.
Вроде проблема популярная, много где видел вопросов на эту тему. Например, вот тут обсуждают тему использования нескольких ядер процессора для выполнения запроса —. Наиболее популярные рекомендации, это изменить запросы и логику работы приложения с БД, чтобы не попадать в ситуацию, когда возникает один большой запрос, который невозможно разбить и обработать параллельно на нескольких ядрах. Пример такого подхода есть на хабре —. У меня нет ни должных знаний sql, ни тем более 1С, чтобы на уровне приложения что-то менять. Стал разбираться с возможностями postgresql.
Вопрос: this application requires a java runtime environment 1. 0_22 - что это за ошибка такая.
Есть несколько параметров, которые как раз отвечают за параллельную обработку запросов: maxworkerprocesses = 16 maxparallelworkerspergather = 8 minparallelrelationsize = 0 paralleltuplecost = 0.05 parallelsetupcost = 1000 Их необходимо подбирать под свое количество ядер. В данном случае настройки представлены для 16-ти ядерной системы. Далее необходимо применить скрипт на базе 1С, который позволит оптимизатору постгреса использовать параллельную обработку тех запросов 1С где участвуют текстовые поля (большинство запросов), путём изменения определений функций. Текст скрипта очень длинный, поэтому не привожу его здесь, чтобы не нагружать статью. Качаем его с сайта —. Запрос необходимо выполнить в базе, которую использует 1С. Для этого можно воспользоваться либо программой pgAdmin, либо напрямую подключиться к базе, через консоль сервера.
Опишу второй вариант в подробностях. Подключаемся к серверу с postgresql по ssh. Архив 3д.
Заходим под юзером postgres: # su postgres Переходим в домашний каталог пользователя: # cd Создаем файл с запросом, который будем выполнять. В данном случае можете сразу скопировать файл, который скачали ранее, либо создайте вручную и скопируйте в него текст запроса. # touch postgre.sql Если будете копировать готовый файл, убедитесь, что у пользователя postgres есть доступ к этому файлу.
Подключаемся к серверу бд: # psql -U postgres Подключаемся к нужной базе данных: connect base1c Выполняем sql запрос из файла: i postgre.sql Все, можно идти проверять. Мы должны были увеличить быстродействие 1С запросов в базе postgresql, разрешив использовать параллельную обработку некоторых запросов. В моем случае это не дало никакого прироста по проблемным запросам. Сама база в целом работала нормально, но спотыкалась на определенных запросах.
Разбираемся дальше. Логирование sql запросов в postgresql Для того, чтобы разобраться, что же конкретно у нас тормозит, надо посмотреть на сами запросы. Для этого нам нужно включить логирование запросов к базе данных. Запросов будет очень много, нам не нужны все подряд.
Сделаем ограничение на логирование только тех запросов, которые выполняются дольше, чем 3 секунды. Для этого рисуем следующие параметры в конфиге БД: logdestination = 'syslog' syslogfacility = 'LOCAL0' syslogident = 'postgres' logmindurationstatement = 3000 # 3000 мс = 3 секунды logduration = off logstatement = 'none' И добавляем описание канала для логов LOCAL0 в конфиг rsyslog в файле /etc/rsyslog.conf, в самый конец: LOCAL0./var/log/postgresql/sql.log Если оставить настройки rsyslog в таком виде, то лог запросов будет писаться не только в файл /var/log/postgresql/sql.log, но и в messages, и в syslog.
Я не люблю спамить в системные логи, поэтому отключим запись sql логов туда. Добавляем в описание этих лог файлов значение LOCAL0.none. Должно получиться примерно так:.;auth,authpriv.none; LOCAL0.none -/var/log/syslog.=info;.=notice;.=warn; auth,authpriv.none; cron,daemon.none; mail,news.none; LOCAL0.none -/var/log/messages Перезапускаем postgresql и rsyslog: # systemctl restart postgresql # systemctl restart rsyslog Идем в базу 1С и вызываем свой запрос, который тормозит. Если его выполнение занимает больше, чем 3 секунды, вы увидите текст запроса в лог файле. Можете подольше попользоваться базой, чтобы собрать список запросов для анализа. Запросы 1С настолько громоздкие, что даже просто скопировать их из лога и обработать непростая задача. Воспользуемся для этого специальной программой.
С 7.7 Postgresql Vs
Здравствуйте, на данный момент что-то сдвинулось с точки по распараллевиванию? Если да можете дополнить статью в каком направлении копать для оптимизации кода 1с? Пробовал выполнять запросы не из терминала а через саму 1с впринципе всё нормально прирост производительности очень высок, только переписывать практически все типовые вещи вообще не вариант т.к. Потом невозможно будет нормально обновляться. Я к чему клоню есть такая вещь как «custom mods to PostgreSQL» вот только инфы гугль мало пока даёт.
С 7.7 Postgresql Date
Поробуйте поискать может моды проще будет написать чем мучать типовую Постгри? Просто наткнулся в гугле на статью о PargreSQL ребята на уровне не языка, а на уровне платформы Постгри заставляли работать так базу данных как им хотелось. Мне интересна тема показалась именно для типовых конфигураций, но куда копать дальше не знаю. Можно же сами запросы которая Платформа 1с использует прооптимизировать т.е. Например делает временную таблицу а мы хватаем на уровне платформы Постгри этот запрос и создаем таблицы в памяти а не на диске.
С 7.7 Postgresql Data
И таких примеров много можно привести. Теже ядра ЦП задействовать.