PostgreSQL для 1С 8.3: ускоряем резервное копирование и восстановление для отдельной базы очень большого размера

Публикация № 956734

Администрирование - Производительность и оптимизация (HighLoad)

PostgreSQL копирование восстановление pg_dump pg_restore psql copy 1C

В этой статье разберем оптимизацию работы с моментальным снимком отдельной базы 1С в кластере PostgreSQL средствами pg_dump.exe, pg_restore.exe, psql.exe в среде Windows Server 2008,2012,2016. А также разберем проблемные ситуации и неожиданные ограничения при работе 1С в связке с PostgreSQL. Для Linux все аналогично.

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

Задача 1. Копирование базы 1С на лету во время работы пользователей с сохранением целостности с помощью команд
pg_dump.exe, psql.exe

Для этого в общем случае алгоритм следующий:

Шаг 1. Выгружаем с помощью pg_dump.exe все таблицы из базы данных, кроме данных таблицы config (т.е. для config выгружаем только ее схему)

Шаг 2. Выгружаем с помощью psql.exe данные таблицы public.config с помощью COPY WITH BINARY

 

Итак,

- Шаг 1. Выгружаем с помощью pg_dump.exe все таблицы из базы данных, кроме данных таблицы config (т.е. для config  выгружаем только ее схему):

"<путь к pg_dump>\pg_dump.exe" и далее параметры с комментариями

--host <ip адрес или имя хоста сервера>

--port <порт>

--username "postgres" – имя пользователя

--role "postgres" - роль

--no-password – не спрашивать пароль в пакетном режиме

--format directory – создавать архив в виде каталога для использования параметра --jobs. При этом каждая таблица копируется в отдельный файл в каталоге, что позволяет распараллелить процесс создания архива

--jobs=<количество параллельных потоков процессора> - подбирается примерно как <количество ядер процессора>*2, можно пробовать увеличение или уменьшение параметра, чтобы максимально загрузить систему, не мешая работе пользователей. Практически на каждый процесс запускается копирование одной таблицы из базы данных. Сколько процессов задействовано, столько таблиц и обрабатывается одновременно. С помощью этого параметра можно достигнуть ускорения резервного копирования в 4 раза и более в зависимости от мощности оборудования сервера.

--blobs – позволяет выгружать поля большого размера

--encoding UTF8 - кодировка

--verbose – включить подробное комментирование

--exclude-table-data=config - исключить из выгрузки данные таблицы config, т.е. выгрузить только ее схему (config содержит записи: конфигурация, конфигурации поставщиков, отличия основной конфигурации от конфигураций поставщиков). Это требуется, когда база находится на поддержке у двух и более конфигураций поставщика и (или) очень много изменений внесено в конфигурацию. При этом размер изменений основной конфигурации относительно конфигурации одного из поставщиков приближается к 1Гб, что является пределом для поля большого размера в PostgreSQL. А 1С хранит изменения только в одной из записей таблицы config. При небольшом размере конфигурации можно не использовать этот параметр. Но при критическом (если размер хотя бы одной записи таблицы public.config (конфигурации) после чтения и распаковки в стандартный поток вывода stdout превысит 1 Гб) pg_dump.exe завершится с ошибкой:

pg_dump: Ошибка выгрузки таблицы "config": сбой в PQgetResult().
pg_dump:  Сообщение  об ошибке с сервера: invalid memory alloc request size 11173708065
pg_dump: Выполнялась команда: COPY public.config (filename, creation, modified, attributes, datasize, binarydata) TO stdout;

Если используется --format custom, то архив выгружается в виде одного файла, и ошибка создания архива на таблице public.config обнаружится при выполнении команды pg_restore, что и есть самое неприятное:

pg_restore: обрабатываются данные таблицы "public._usersworkhistory" 
pg_restore: обрабатываются данные таблицы "public._yearoffset" 
pg_restore: обрабатываются данные таблицы "public.config" 
pg_restore: [внешний архиватор] не удалось прочитать входной файл: конец файла

(кроме того --format custom не позволит использовать --jobs - распараллеливание)

Наблюдается на больших конфигурациях KA 1.1-2.4, УПП 1.3, ERP 2.4.

--file "<имя каталога архива без таблицы config>"

"<имя базы данных>"

Шаг 2. Выгружаем с помощью psql.exe данные таблицы public.config с помощью COPY WITH BINARY:

md "<имя каталога архива только с таблицей config >" - создаем каталог для таблицы config

"<путь к psql>\psql.exe" – далее параметры

--host <ip адрес или имя хоста сервера>

--port <порт>

--username "postgres" – имя пользователя

--no-password – не спрашивать пароль в пакетном режиме

--command "COPY public.config TO '<имя каталога архива только с таблицей config с разделителями \\ для винды>' WITH BINARY;"

--dbname="<имя базы данных>"

 

Задача 2. Восстановление базы 1С в копию во время работы пользователей с сохранением целостности с помощью команд pg_restore.exe, psql.exe. Для этого в общем случае алгоритм следующий:

Шаг 0. Создаем пустую копию базы средствами pgAdmin.exe или с помощью psql.exe, dropdb, createdb.

Шаг 1. Загружаем с помощью pg_restore.exe все таблицы из архива базы данных, кроме данных таблицы config (т.е. для config  загружаем только ее схему)

Шаг 2. Загружаем с помощью psql.exe данные таблицы public.config с помощью COPY WITH BINARY

 

Шаг 0. Создаем пустую копию базы средствами pgAdmin.exe или с помощью psql.exe, dropdb, createdb.

Если база данных существует, мы должны сначала удалить ее из кластера с помощью команды DROP DATABASE "<имя базы данных>", а затем создать заново с помощью команды CREATE DATABASE "<имя базы данных>". Проще всего это сделать через pgAdmin, так как в нем есть запрос на удаление базы и образец запроса на создание базы. При удалении базы необходимо закрыть все соединения с базой, иначе база не будет удалена. Для Windows запрос на создание базы выглядит так:

 

CREATE DATABASE "<имя базы данных>"

WITH

OWNER = postgres

ENCODING = 'UTF8'

LC_COLLATE = 'Russian_Russia.1251'

LC_CTYPE = 'Russian_Russia.1251'

TABLESPACE = pg_default

CONNECTION LIMIT = -1;

 

Если мы время от времени хотим проверять, что база корректно достается из архива, то имеет cмысл автоматизировать шаг 0 в батнике командами psql, dropdb, createdb (добавлено по просьбам читателей):

 

0.1 Перед удалением закрываем все активные соединения с базой <имя базы данных>, кроме текущего:

"<путь к psql>\psql.exe" – далее параметры

--host <ip адрес или имя хоста сервера>

--port <порт>

--username "postgres" – имя пользователя

--dbname="<имя базы данных>"

--no-password – не спрашивать пароль в пакетном режиме

--command "SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pg_stat_activity.datname = '<имя базы данных>' AND pid <> pg_backend_pid();"

 

0.2 Удаляем базу <имя базы данных>, если она существует без подтверждения об удалении.
"<путь к dropdb>\dropdb.exe"

--host <ip адрес или имя хоста сервера>

--port <порт>

--username "postgres" – имя пользователя

--no-password – не спрашивать пароль в пакетном режиме

--if-exists - проверка существования базы

--echo - вывод команд SQL, которые выполнит postgreSQL при вызове

"<имя базы данных>

 

0.3 Создаем заново базу <имя базы данных> после удаления
"<путь к createdb>\createdb.exe"

--host <ip адрес или имя хоста сервера>

--port <порт>

--username "postgres" – имя пользователя

--no-password – не спрашивать пароль в пакетном режиме

--echo - вывод команд SQL, которые выполнит postgreSQL при вызове

--owner="postgres" - владелец базы

--encoding="UTF8" - кодировка

--locale="Russian_Russia.1251" - устанавливает одновременно параметры LC_COLLATE и LC_CTYPE для базы данных.

--tablespace="pg_default" - указывает табличное пространство, используемое по умолчанию.

"<имя базы данных>"

Теперь уже не нужно даже лезть в pgAdmin и там корячиться.

Шаг 1. Загружаем с помощью pg_restore.exe все таблицы из архива базы данных, кроме данных таблицы config (т.е. для config  загружаем только ее схему):

"<путь к pg_restore>\pg_restore.exe"

--host <ip адрес или имя хоста сервера>

--port <порт>

--username "postgres" – имя пользователя

--role "postgres" - роль

--no-password – не спрашивать пароль в пакетном режиме

--dbname "<имя базы данных в которую восстанавливаем>"

--jobs=<количество параллельных потоков процессора> - подбирается примерно как <количество ядер процессора>*2, можно пробовать увеличение или уменьшение параметра, чтобы максимально загрузить систему, не мешая работе пользователей. Практически на каждый процесс запускается восстановление одной таблицы базы данных. Сколько процессов задействовано, столько таблиц и индексов обрабатывается одновременно. С помощью этого параметра можно достигнуть ускорения восстановления базы в 2-3 раза и более в зависимости от мощности оборудования сервера.

--verbose – включить подробное комментирование

"<имя каталога архива без таблицы config>"

 

Шаг 2. Загружаем с помощью psql.exe данные таблицы public.config с помощью COPY WITH BINARY

"<путь к psql>\psql.exe" – далее параметры

--host <ip адрес или имя хоста сервера>

--port <порт>

--username "postgres" – имя пользователя

--dbname="<имя базы данных>"

--no-password – не спрашивать пароль в пакетном режиме

--command "\COPY public.config FROM '<имя каталога архива только с таблицей config с разделителями \\ для винды>' WITH BINARY;"

 

Обратите внимание на метакоманду \COPY вместо просто COPY.

\COPYоткрывает файл и передает содержимое на сервер, тогда как COPY сообщает серверу, что он сам открывает файл и читает его, что может быть проблематичным по разрешению или даже невозможно, если клиент и сервер работают на разных компьютерах без совместного доступа к файлам между ними.

Соответственно при использовании просто COPY может выскочить следующая ошибка:

Postgres ERROR: Permission denied (не удалось открыть файл для чтения)

Заметим, что архив базы может быть успешно восстановлен на последующих версиях  PostgreSQL. В моем случае, я переносил базу с сервера PostgreSQL 9.6 на PostgreSQL 10.3.

Все проходило гладко. Трудности теоретически могут возникнуть в команде  \COPY, т.к. она является платформо-зависимой.

На реальной базе размером 380 Гб за счет распараллеливания было достигнуто ускорение при работе pg_dump - в 4 раза, при работе pg_restore - в 2,5 раза, что весьма существенно, когда процесс занимает несколько часов.

 

Было: 2 часа на копирование, стало 0,5 часа на копирование; было 10 ч на восстановление, стало 4 ч на восстановление.

После перехода на более мощный сервер получили еще более существенные результаты:
Было: 2 часа на копирование, стало 0,5 часа на копирование; было 10 ч на восстановление, стало 1 ч  40 мин на восстановление. То есть количество ядер процессора и более быстрые диски при тех же параметрах дают значительное ускорение. Теперь чтобы скопировать и развернуть нашу огромную базу требуется всего 2 часа!

 

Ниже привожу примеры bat-файлов (качайте) для создания архивной копии базы данных DO_PROBA и восстановления в другую базу данных DO_PROBA_COPY. При этом в названии каталогов архива используется дата и время начала архивации и выводятся замеры времени на создание-восстановление. При восстановлении из вновь созданного архива необходимо каждый раз менять дату и время в bat-файле для восстановления (ее можно скопировать из имени каталога архива по образцу). Теперь будьте очень осторожны при восстановлении базы. По просьбам читателей и пользователей в bat-файлы добавлены команды автоматического удаления и создания восстанавливаемой базы в случае ее существования. Не ошибитесь в наименовании базы в команде SET ar_base_to=<Имя базы, куда восстанавливаем> !!! Иначе можно легко порушить существующие базы. 

СОВЕТ 1: периодически проверяйте (хотя бы раз в неделю) загрузку бэкапа в какую-нибудь тестовую базу и запускайте для проверки работоспособности режим конфигуратора 1С и рабочий режим. Тогда всегда будете уверены в своей архивной копии!

СОВЕТ 2: после отладки копирования и восстановления можно настроить Планировщик заданий (для Windows) на запуск нашего bat-файла по выбранному расписанию. Например, в 3:00 ночи ежедневно, пока никто из пользователей не работает.

 

*********

 

С 4 по 6 февраля 2019 года в стенах Московского государственного университета состоится конференция по PostgreSQL – PGConf.Russia 2019. Ежегодно она собирает более 500 разработчиков, администраторов баз данных и IT-менеджеров для обмена опытом и профессионального общения.

На этот раз PGConf.Russia будет особенной. Инфостарт совместно с Postgres Pro организует на конференции секцию «Postgres+1C». Мы приглашаем участников сообщества посетить PGConf и даже выступить в качестве докладчика.

Скачать файлы

Наименование Файл Версия Размер
PostgreSQL для 1С 8.3 ускоряем резервное копирование и восстановление для отдельной базы очень большого размера.:
.zip 1,67Kb
22.01.19
39
.zip 1,67Kb 39 Скачать

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. PbI4 1 04.12.18 23:40 Сейчас в теме
02.11.18 14:48

А ни у кого не случается иногда такая ошибка при ресторе?

pg_restore: обрабатываются данные таблицы "public._usersworkhistory"
pg_restore: обрабатываются данные таблицы "public._yearoffset"
pg_restore: обрабатываются данные таблицы "public.config"
pg_restore: [внешний архиватор] не удалось прочитать входной файл: конец файла


Причём всегда после конфига и иногда рестор отрабатывает без ошибки на том же самом дампе

месяц прошёл в старой теме (https://infostart.ru/article/rezervnoe-kopirovanie-i-vosstanovlenie-bazy-1s-sredstvami-postgresql-540298/), повторим - может есть адекватные ответчики, спасибо
user1276150; rboy; +2 1 Ответить
3. vsasav 464 05.12.18 09:31 Сейчас в теме
(1) Это и есть грабли, которые описаны в статье, когда pg_dump не может выгрузить public.config. Для этого и применяется команда COPY в статье.
Сам недавно наткнулся на них. Это означает - ваш архив базы - битый, но это вы не увидите, пока не используете pg_restore. Используйте мой вариант, когда отдельно выгружается public.config с помощью COPY WITH BINARY. Он будет работать всегда, т.к. конфигурация относительно редко меняется.
4. vsasav 464 05.12.18 10:57 Сейчас в теме
(1) Теперь можете свой -1 поменять на +1 ;)
2. frkbvfnjh 579 05.12.18 08:57 Сейчас в теме
Спасибо, много нового узнал! И главное описано очень понятно и детально.
5. starik-2005 2155 05.12.18 12:47 Сейчас в теме
+ просто за то, что кто-то пишет про постгри.
6. DonAlPatino 140 05.12.18 13:20 Сейчас в теме
Т.е. "просто" как в MS SQL бэкап во время работы пользователей на лету сделать нельзя? Это для всех версий postgress актуально?
8. vsasav 464 05.12.18 13:49 Сейчас в теме
(6) pg_dump - это и есть бэкап на лету (моментальный снимок), актуально для PostgreSQL 9.Х и выше
11. DonAlPatino 140 05.12.18 15:08 Сейчас в теме
(8) "просто" - это по одной кнопке все-таки (простите человек, испорченного MS), а не набором скриптов, с последовательной выгрузкой отдельных таблиц. Вот это "спотыкание" на отдельных таблиц - это стандартная ситуация или просто "временами бывает"?
12. starik-2005 2155 05.12.18 15:29 Сейчас в теме
(11)
"просто" - это по одной кнопке все-таки (простите человек, испорченного MS), а не набором скриптов
ИМХО, любой скрипт плавно превращается в одну кнопку. Не?
15. TODD22 19 05.12.18 18:02 Сейчас в теме
(12)после 3х дней гугла и чтения мануалов. Набор запчастей превращается в автомобиль после трех дней сборки. А хотелось бы взять готовый, сесть и поехать сразу.
Fox-trot; +1 Ответить
18. vsasav 464 05.12.18 21:45 Сейчас в теме
(11) Тут ничего не поделаешь: ограничение PostgreSQL на 1 Гб в длине поля типа binary по чтению в stdout. Аналогичные грабли мы нашли бы, думаю, и в MSSQL на 1С, если бы размер изменений конфигурации приблизился к 2 Гб, но на практике никто такого еще видимо не испытывал. Так что все впереди. PostgreSQL тут ни при чем. Это особенность реализации от 1С. Можно было бы не в одну запись пихать изменения, а в несколько. К счастью ошибка обходится с помощью COPY WiTH BINARY.
7. TarasovAV 05.12.18 13:38 Сейчас в теме
Т.е., если база небольшая, скажем до 500 МБ, то бэкапирование с помощью --format custom пройдет успешно? И при восстановлении не возникнет указанная ошибка?
9. vsasav 464 05.12.18 14:04 Сейчас в теме
--format custom пройдет успешно на базе любого размера, только если размер ни одной из записей таблицы public.config (конфигурация) после чтения и распаковки в стандартный поток вывода stdout не превысит 1 Гб, то же самое касается формата --format directory. Для небольших по объему размеров конфигураций - прокатит, но для больших в один самый неожиданный момент завершится с ошибкой, повторяюсь:

--exclude-table=config - исключить из выгрузки таблицу config. Это требуется, когда база находится на поддержке у двух и более конфигураций поставщика и (или) очень много изменений внесено в конфигурацию. При этом размер изменений основной конфигурации относительно конфигурации одного из поставщиков приближается к 1Гб, что является пределом для поля большого размера в PostgreSQL. А 1С хранит изменения только в одной из записей таблицы config. При небольшом размере конфигурации можно не использовать этот параметр. Но при критическом pg_dump.exe завершится с ошибкой:

pg_dump: Ошибка выгрузки таблицы "config": сбой в PQgetResult().
pg_dump: Сообщение об ошибке с сервера: invalid memory alloc request size 11173708065
pg_dump: Выполнялась команда: COPY public.config (filename, creation, modified, attributes, datasize, binarydata) TO stdout;

Если используется --format custom, то архив выгружается в виде одного файла, и ошибка создания архива на таблице public.config обнаружится при выполнении команды pg_restore, что и есть самое неприятное:

pg_restore: обрабатываются данные таблицы "public._usersworkhistory"
pg_restore: обрабатываются данные таблицы "public._yearoffset"
pg_restore: обрабатываются данные таблицы "public.config"
pg_restore: [внешний архиватор] не удалось прочитать входной файл: конец файла

(кроме того --format custom не позволит использовать --jobs - распараллеливание)

Наблюдается на больших конфигурациях KA 1.1-2.4, УПП 1.3, ERP 2.4.
teflon; DonAlPatino; A_Max; Fox-trot; neyasytyf; TarasovAV; +6 Ответить
20. DonAlPatino 140 06.12.18 10:21 Сейчас в теме
(9)Спасибо большое - вот теперь все понятно.
10. TarasovAV 05.12.18 14:10 Сейчас в теме
Спасибо за развернутый ответ.
13. neyasytyf 05.12.18 16:03 Сейчас в теме
Спасибо за третий шаг
Шаг 3. Загружаем с помощью psql.exe таблицу public.config с помощью COPY WITH BINARY


Сам делал через:
psql -c "COPY (select * from public.config where datasize < 629605263) TO '/var/lib/pgsql/arhiv/$filename.config'" db
Но потом необходимо cf подгружать.

Вместо --exclude-table можно использовать --exclude-table-data=config, тогда структура таблицы config выгрузится без данных, и можно в два шага выгружать.
A_Max; CSiER; Fox-trot; vsasav; +4 Ответить
14. vsasav 464 05.12.18 17:36 Сейчас в теме
(13) Да, про --exclude-table-data=config - ценное замечание. Пожалуй, откорректирую статью. Во всем должна быть минимизация.
A_Max; neyasytyf; +2 Ответить
62. alexbur 20 05.09.19 22:18 Сейчас в теме
(14), спасибо за статью. Очень ценно.
Подскажите, а можно предыдущий вариант, где был шаг 3 всё таки тоже изложить в статье? Дело в том, что в Postgres 9.1.Х на работает параметр --exclude-table-data=config. Он, похоже появился только в 9.3.Х. Но параметр --exclude-table работает.
17. vsasav 464 05.12.18 18:39 Сейчас в теме
(13) Минимизировал статью в соответствии с указанным выше замечанием. СПАСИБО !
19. neyasytyf 06.12.18 09:44 Сейчас в теме
(17) Ну тогда еще стоит упоминуть, что создать базу можно командой createdb из консоли. Так удобней в скриптах для восстановления делать, чтобы не использовать psql.
22. vsasav 464 06.12.18 12:42 Сейчас в теме
(19) Хорошо, тогда уж и dropdb для кучи для удаления базы. Приведу примеры в следующей модификации статьи.
25. vsasav 464 06.12.18 17:44 Сейчас в теме
Внимание!!! По просьбе (19) и к счастью для всех, кто хочет все одной кнопкой статья была доработана!!!

Теперь будьте очень осторожны при восстановлении базы. По просьбам читателей и пользователей в bat-файлы добавлены команды автоматического удаления и создания восстанавливаемой базы в случае ее существования. Не ошибитесь в наименовании базы в команде SET ar_base_to=<Имя базы, куда восстанавливаем> !!! Иначе можно легко порушить существующие базы.
53. user1032109 09.04.19 10:44 Сейчас в теме
(25)Подскажите, как можно с вами связаться?
16. Gavris 05.12.18 18:14 Сейчас в теме
Приветствую.
Побилась база 1с.
Есть бекап в виде выгрузки 1c из postgres 9.4 формат *.sql
Весит 100 гигов.
Обратно не загружается. Ввожу вот такую команду
"C:\Program Files\PostgresPro 1C\9.4\bin\psql.exe" -U postgres gef_restore < E:\BackUp\gef201811300311.sql

Выводит вот такое: http://joxi.ru/p27K7a9UoXZ332
Посоветуйте что можно сделать. Готов заплатить.
21. vsasav 464 06.12.18 12:22 Сейчас в теме
(16) В данном случае копия БД скорее всего не является целостной, т.к. использована сторонняя программа с неизвестной внутренней реализацией.
Необходимо для создания архива использовать pg_dump, pg_restore. Вот что написано в документации: https://postgrespro.ru/docs/postgresql/9.4/app-pgdump

pg_dump
Название
pg_dump -- выгрузить базу данных PostgreSQL в формате скрипта в файл или архив
Синтаксис
pg_dump [ параметр-подключения ...] [ параметр ...] [ база_данных ]

Описание
pg_dump это приложение для резервирования баз PostgreSQL. Оно создаёт согласованные копии, в том числе и на работающих базах данных. pg_dump не блокирует других пользователей базы, ни на чтение, ни на запись.

Приложение выводит данные либо в скрипты, либо в архивные форматы файлов. Скрипты представляют собой текстовые файлы, содержащие SQL-команды, необходимые для воссоздания базы данных до состояния на момент создания скрипта. Для восстановления из скрипта его содержимое можно передать утилите psql . Скрипты можно использовать для восстановления на других машинах, в том числе с иной архитектурой. Также скрипты с некоторыми изменениями можно использовать в других базах данных SQL.

Для восстановления из архивных форматов файлов используется утилита pg_restore. Эти форматы позволяют указывать pg_restore какие объекты базы данных восстановить, а также позволяют изменить порядок следования восстанавливаемых объектов. Архивные форматы файлов спроектированы так, чтобы их можно были переносить на другие платформы с другой архитектурой.

Применение архивных форматов в сочетании утилит pg_restore и pg_dump позволяет организовывать эффективный механизм архивации и переноса данных. pg_dump можно использовать для резервирования всей базы данных, а затем при применении pg_restore выбрать нужные объекты для восстановления. Наиболее гибкие форматы резервных файлов это "custom" (-Fc) и "directory" (-Fd). Они позволяют выбрать и изменить порядок объектов, поддерживают восстановление в несколько потоков, а также сжимаются по умолчанию. При этом формат "directory" единственный, позволяющий выгружать данные в несколько потоков.

Во время работы pg_dump следует обращать внимание на предупреждения, которые печатаются в стандартный поток ошибок, особенно ввиду рассмотренных далее ограничений.
23. starik-2005 2155 06.12.18 14:27 Сейчас в теме
(16)
Выводит вот такое: http://joxi.ru/p27K7a9UoXZ332
По всей видимости в таблице Документ242 в одном из полей содержится что-то в поле флд6173, что делает уникальный индекс неуникальным. Можно в скульной выгрузке найти скрипт создания таблицы и удалить из него команды создания индексов. Ну а потом уже в 1С ТиИ с реструктуризацией.
24. vsasav 464 06.12.18 15:27 Сейчас в теме
(23) Да, кроме копания в коде SQL ничего не остается. Скорее всего строка № 97413 таблицы документа 242 порушена, но я могу ошибаться, т.к. текст ошибки нечитабельный. Нужно искать по содержимому поля fld и пробовать удалять битые записи и связанные с ними записи других таблиц документа.
26. trdm 08.12.18 09:32 Сейчас в теме
(24)
Да, кроме копания в коде SQL ничего не остается.

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

(23) А сколько в архиве весит файло?
27. starik-2005 2155 08.12.18 21:03 Сейчас в теме
28. user1105457 10.12.18 11:16 Сейчас в теме
Огромное спасибо за статью!
Жаль не нашел её месяцем раньше, и вот почему.

Столкнулся тут недавно с проблемой выгрузки таблицы config после обновления релиза 112,5 конфигурации УПП 1.3 на платформе 8.3
Решил что таблица битая, нашёл и удалил строку на которой процесс дампа вылетал с ошибкой.
Теперь наткнулся на эту статью и понимаю что скорее всего удалил нужные данные.
У меня несколько вопросов.

1. Можно как-то найти теперь данные что были удалены ?
Есть дамп до обновления и текущая рабочая база.

2. Размер таблицы config до обновления - 671 MB, а после обновления он разрастается до 5939 MB. Мне одному кажется это странным ?

3. В чём профит использования формата выгрузки "directory" кроме возможности распараллеливания задачи?
Дампы делаются ночью и времени на их выполнение вполне хватает при использовании формата "custom". Важнее быстро восстановить бэкап и формат "custom" позволяет использовать распараллеливание задач при восстановлении.

Спасибо!
29. vsasav 464 10.12.18 13:39 Сейчас в теме
(28) 1. Вы удалили данные конфигурации поставщика, или изменений. Я проверял - все так и есть. Вернуть - маловероятно, т.к. следующее обновление создает уже другие записи с изменениями.

2. Я с той же проблемой тоже столкнулся месяц назад, пробовал удалять записи из config и проверять обновление, но вовремя остановился, т.к. следующее обновление пошло не совсем корректно. Странностей нет в таблице config: при обновлении подгружаются все изменения основной конфигурации от всех конфигураций поставщика, сама конфигурация поставщика.

3. Если не критично время создания архива, можно использовать формат "custom". Кроме параллельности создания архива "directory" лишь обеспечивает хранение каждой таблицы в отдельном файле, соответственно можно просматривать содержимое для каждой таблицы отдельно, не загружая в бд. Скорость распаковки в "directory" также выше, поскольку чтение и распаковка идет в несколько потоков. Но потом, после чтения время уходит на создание индексов - оно одинаково, что для "custom", что и для "directory"
44. ansh15 16.01.19 20:46 Сейчас в теме
(29)
Но потом, после чтения время уходит на создание индексов - оно одинаково, что для "custom", что и для "directory"

Надо подождать 11-ю версию(подтверждения ее работоспособности с 1С), там предусмотрено параллельное создание индексов.
30. user1105457 10.12.18 14:03 Сейчас в теме
1. Попутный вопрос. Насколько это критично и стоит ли заморачиваться с восстановлением ?
2. Спасибо за разъяснение.
3. Каждая таблица отдельно, но не с нормальными именами, а в виде номеров. Можно как-то вытащить соответствие этих номеров именам таблиц ?
С использованием формата "custom" распаковка тоже возможна в несколько потоков(собственно так и делаю).
Можно протестировать разницу, замерив скорость восстановления одной и той же базы из дампов разных форматов.
34. vsasav 464 10.12.18 18:26 Сейчас в теме
(30) 1. Конфигурацию уже обновляли? Если конфигурация обновляется и работает нормально, то не стоит заморачиваться.
3. Вероятно, можно, но зачем. На порченную таблицу все равно ругнется при восстановлении. Там уже будет нормальное наименование таблицы. Извлечь легко прямо в базу с помощью --table.
31. acanta 10.12.18 14:51 Сейчас в теме
Согласно чьей-то мудрости "Ничто очень хорошее или очень плохое не может длиться очень долго". Если бакап и восстановление действительно слишком долго делаются, то как оно должно работать? Репликация/зеркалирование? Настройка периферийной базы средствами 1С?:
33. vsasav 464 10.12.18 18:06 Сейчас в теме
(31) Вот что рекомендует фирма 1С (но это работает, насколько я понял, только для всего кластера целиком, а в нем может быть много разных довольно крупных баз):
настроить резервное копирование с помощью утилиты pg_basebackup:
https://www.postgresql.org/docs/9.4/static/app-pgbasebackup.html
Подробно о настройке можно прочитать: https://its.1c.ru/db/metod8dev#content:5947:hdoc
32. vsasav 464 10.12.18 17:58 Сейчас в теме
(30) 1. Конфигурацию уже обновляли? Если конфигурация обновляется и работает нормально, то не стоит заморачиваться.
3. Вероятно, можно, но зачем. На порченную таблицу все равно ругнется при восстановлении. Там уже будет нормальное наименование таблицы. Извлечь легко прямо в базу с помощью --table.
35. user1105457 11.12.18 06:31 Сейчас в теме
(32) 1. Попробовали обновить - не обновляется, пишет что не может сравнить, типа не с чем. Что можно сделать ?
36. vsasav 464 11.12.18 09:04 Сейчас в теме
(35) Снять конфигурацию с поддержки и снова установить на поддержку. Но нужен полный релиз поставщика (не обновление). Но это может занять много времени. Поэтому если сохранился старый cf-ник, который содержал конфигурации поставщика, и ваша конфигурация за этот месяц не менялась, то проще попробовать Загрузить конфигурацию из этого cf-ника и проверить работосбособность наката обновлений и самой базы (естественно на копии рабочей базы)
37. user1105457 11.12.18 09:32 Сейчас в теме
41. user619273_alevtina 30.12.18 18:26 Сейчас в теме
38. gni 17.12.18 11:00 Сейчас в теме
Здравствуйте!

А для родственной проблемы с индексацией есть какое-то решение (кроме снять/поставить на поддержку)?

Выходит такое сообщение при индексации:

reindexdb: переиндексировать базу данных "upp" не удалось: ОШИБКА: could not open relation with OID 8159083


Спасибо.
39. vsasav 464 17.12.18 13:29 Сейчас в теме
(38) Такая ошибка у меня на базе не возникала, так что ничем помочь не смогу.
42. XOCTEP 114 16.01.19 16:53 Сейчас в теме
(39) Добрый день!
Подскажите, УПП обновили на 114.1. После этого не смогли обновиться дальше, т.к. при попытке сравнения конфигурации с конфигурацией поставщика сразу же выпадает ошибка - "Недостаточно памяти для получения результата запроса к базе данных". У нас текущая связка ПГ-64бит и Сервер 1С 32бит.
Было испробовано много разных вариантов, но все без толку. Затем обнаружили, что перестали выполняться дампы ПГ с ошибкой "pg_dump: Error message from server: ERROR: invalid memory alloc request size ‎1117677223".

Теперь вроде как понятно, что это проблема с ПГ, НО остается такой вопрос - мы взяли эту базу и протестили ее на других серваках. Связка SQL и Сервер32, связка SQL и Сервер64 - работают без проблем. Связка PG64 + Сервер64 - тоже работает! Получается не работает только PG64 + Сервер32. У всех так? И при чем тут сервер 1С?
43. ansh15 16.01.19 20:26 Сейчас в теме
(42)
И при чем тут сервер 1С

Потому что ему, как клиентскому приложению(с точки зрения СУБД), и не хватает памяти для получения результата, получаемого от СУБД. 32-х разрядное приложение использует ограниченное адресное пространство
45. XOCTEP 114 16.01.19 22:23 Сейчас в теме
(43) т.е. переход на сервер64 должен решить эту проблему?
46. ansh15 20.01.19 12:02 Сейчас в теме
(45)
Связка PG64 + Сервер64 - тоже работает!

В Вашем случае - вполне возможно. В ряде случаев может помочь и установка 64-х разрядной клиентской части платформы 1С.
Поиск в сервисе публикации ошибок(1С) по фразе "недостаточно памяти" показывает, что при работе в конкретных конфигурациях также может возникать такая ошибка, например, из-за большого объема получаемых(загружаемых) данных.
По хорошему - все компоненты системы должны быть 64-х разрядными и самой памяти должно быть достаточно. Понятно, что это вопрос денег...
47. vsasav 464 21.01.19 10:10 Сейчас в теме
(42) Не успел ответить из-за сильной занятости. Ваш вариант Связка PG64 + Сервер1С 64 - только так будет работать. Рекомендации. Вся архитектура должна быть однозначно 64-х разрядная и как минимум 32 Гб памяти для компа, который сервер. (если у вас PG и Сервер 1С на одном физическом сервере, то желательно 48 Гб, но лучше разнести PG и Сервер 1С по разным физическим серверам, конечно если имеется финансовая возможность).
48. XOCTEP 114 21.01.19 13:55 Сейчас в теме
(47) и (46) - спасибо за ответы!
40. starik-2005 2155 17.12.18 13:36 Сейчас в теме
(38)
Выходит такое сообщение при индексации:
На просторах интернетов есть вот такой интересный тред...
49. mirco 73 29.01.19 22:32 Сейчас в теме
(0)
pg_dump could not stat file unknown error
И это при --exclude-table-data=public.config
Подскажите куда копать
50. mirco 73 30.01.19 11:18 Сейчас в теме
(49)
))))
Вопрос отменяется... Просто не заметил еще одну большую табличку.
51. user1032109 09.04.19 10:29 Сейчас в теме
--command "COPY public.config TO '<имя каталога архива только с таблицей config с разделителями \\ для винды>' WITH BINARY;"
Кто может объяснить параметры?
52. user1032109 09.04.19 10:29 Сейчас в теме
--command "COPY public.config TO '<имя каталога архива только с таблицей config с разделителями \\ для винды>' WITH BINARY;"

Объясните пожалуйста параметры??
<имя каталога архива только с таблицей config с разделителями \\ для винды>
56. vsasav 464 09.04.19 20:01 Сейчас в теме
(52)
Вот пример ниже.

1. копируем таблицу public.config в файл c:\backup\config :

--command "COPY public.config TO 'c:\\backup\\config' WITH BINARY;"

2. восстанавливаем таблицу public.config из файла c:\backup\config :

--command "\COPY public.config FROM 'c:\\backup\\config' WITH BINARY;"
54. tolkit 09.04.19 12:02 Сейчас в теме
Спасибо за решение.

Ограничение Postgres в 1Гб также не дает обновить конфигурацию, которая находится на поддержке, из-за размера таблицы config.

Я не силен во внутреннем устройстве 1С, но получается, что можно снять с поддержки, обновиться, поставить на поддержку и загрузить изменения конфигурации как-то. Я сейчас на уровне проектирования решения. Вообще не уверен, что можно как-то объединить config до обновления и после.

Как вы обходите это? Или конфигурация на поддержке несовместима с Postgres, если размер больше 1ГБ?
55. vsasav 464 09.04.19 19:55 Сейчас в теме
Обошел просто. Перестал обновлять одну из конфигураций (от 1С), т.к. конфигурация с модулем от БИТ.ФИНАНС при обновлении вносила нужные изменения, хотя и с задержкой для пользователей. С поддержки 1С при этом не снимал.

В крайнем случае, можно попробовать накатить ваши изменения заново на свежий полный релиз от 1С, минимально снимая объекты с замка ("Поддержка с возможностью изменений"). Результат не гарантирован. Если полученный после объединения cf загрузить в рабочую базу, то объекты, случайно снятые с замка в рабочей базе встанут обратно на замок. А те, которые были в статусе "Поддержка с возможностью изменений" будут минимизированы.
57. gost370 27.06.19 23:30 Сейчас в теме
День добрый. Помогите, пожалуйста, разобраться с моей проблемой. По ошибке на шаге 1 вместо --exclude-table-data использовался ключ --exclude-table.
Скорее всего из за этого на шаге 2 (копировании таблицы public.config из файла) получаю ошибку psql "ERROR: relation "public.config" does not exist".
Что то с этим можно сделать? Оригинал базы потерян из за сбоя((
59. vsasav 464 28.06.19 10:31 Сейчас в теме
(57) Попробуйте выгрузить схему таблицы из какого-нибудь ближайшего старого архива и загрузить ее отдельно. Если архива нет, то из аналогичного релиза конфигурации - но это уже "как повезет" - потом возможны ошибки.
58. vsasav 464 28.06.19 10:29 Сейчас в теме
60. 2tvad 62 29.08.19 01:35 Сейчас в теме
База поднялась из дампа кастом с опцией create. Размер базы 7 гигов конфигурация кастомная - небольшая. Появилась вот такая ошибка (точнее их море). После восстановления база работает.

pg_restore: создаётся INDEX "public._task106_37"
pg_restore: [архиватор (БД)] Ошибка из записи оглавления 4933; 1259 6986533 INDEX _task106_37 postgres
pg_restore: [архиватор (БД)] could not execute query: ERROR: relation "_task106_37" already exists
Выполнялась команда: CREATE UNIQUE INDEX _task106_37 ON public._task106 USING btree (_fld883, _idrref);

Куда копать?
61. vsasav 464 29.08.19 17:29 Сейчас в теме
Если конфигуратор запускается, то тестирование и исправление - реиндексация, а лучше все тесты прогнать, если время позволяет
63. mangazone 15.10.19 15:55 Сейчас в теме
Здравствуйте.
У нас используется Postgres 9.6.7-1C
Попытался сделать резервное копирование с помощью pg_dumpall.
У нас более разных 10 баз, поэтому довольно удобно.
для проверки восстановления сделали сервер такой же версии на другом компьютере.
Средствами 1С базы на нем создаются в кодировке ru_Ru.UTF8
Но при попытке восстановить базы из архива восстанавливает в кодировке SQL_ASQII.
Подскажите, пожалуйста, можно ли вообще выполнять архивирование баз 1С с помощью pg_dumpall, если можно, то как архивировать-восстанавливать в правильной кодировке?
65. vsasav 464 16.10.19 09:33 Сейчас в теме
(63) https://postgrespro.ru/docs/postgrespro/9.6/app-psql - копать надо в сторону параметра encoding, сам не пробовал использовать
psql -f файл_дампа postgres
64. vsasav 464 16.10.19 09:30 Сейчас в теме
66. MasterGlob 19.10.19 17:07 Сейчас в теме
Как победить ошибку при попытке выгрузить таблицу config (Второй шаг) ?

c:\Program Files\pgAdmin 4\v4\runtime>psql.exe --host "192.168.0.52" --port "5432" --username "postgres" --no-password --command "COPY ublic.config TO 'E:\000\config' WITH BINARY;" --dbname="1C_CustomMade"
ERROR:  invalid byte sequence for encoding "UTF8": 0x00
67. vsasav 464 21.10.19 08:39 Сейчас в теме
(66)
invalid byte sequence for encoding "UTF8"


Установите значение параметра standard_conforming_strings в конфигурационном файле postgresql.conf в значение off
68. vsasav 464 21.10.19 09:52 Сейчас в теме
(66) https://infostart.ru/public/554213/ - про настройки postgresql.conf можно прочитать здесь
Оставьте свое сообщение

См. также

Еще один тест 1C: Postgres SQL 11 Pro Enterpise против MSSQL 14 под Windows 2012 Server R2 Промо

Производительность и оптимизация (HighLoad) v8 Абонемент ($m)

Проработав 15 лет с MSSQL в 2017 начал активно СУБД Postgres SQL. За два года успел поработать в 9 версии Postgres и в 10-ой. И пришел к выводу, что существуют реальное замедление работы баз после перехода на Postgres. Недавно вышла 11 версия Postgres Pro Enterpise, которая обещает почти 2-х кратное ускорение над 11 Pro Standart и 10-ой версией. Закупив лицензию Postgres 11 Pro Enterpise Это я и решил проверить на 1С.

1 стартмани

05.09.2019    11952    39    Indgo    106    

Zabbix: Мониторинг рабочих процессов

Zabbix v8 1cv8.cf Абонемент ($m)

Мониторинг памяти, потребляемой рабочими процессами, средствами Zabbix. Создание пользовательских LLD правил с помощью One Script

1 стартмани

07.02.2020    3174    0    EShchavleva    6    

Исправление ошибки "Для одного ссылочного кода существует более одной таблицы в базе данных" в БД SQL

Тестирование и исправление v8 v8::УФ 1cv8.cf Абонемент ($m)

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

3 стартмани

23.01.2020    5205    93    rokhin    49    

Транслятор запросов 1С в SQL

Производительность и оптимизация (HighLoad) Администрирование СУБД v8 1cv8.cf Абонемент ($m)

Инструмент для трансляции запросов платформы 1С в SQL, а также их диагностики.

10 стартмани

07.01.2020    9338    71    YPermitin    89    

[x1c.ru] 1CDBin: Работа с файлами *.1CD на низком уровне средствами языка 1С с возможностью чтения таблиц (поддерживается формат 8.3.8.0) Промо

Тестирование и исправление Инструментарий разработчика v8 1cv8.cf Абонемент ($m)

Обработка позволяет просматривать файловые базы 1CD на низком уровне средствами встроенного языка. Реализована часть функциональности Tool_1CD, но на языке 1С Предприятия. Показываются таблицы, параметры таблиц, поля таблиц, записи таблиц, значения полей BLOB, есть 16-ричный просмотр страниц базы и консоль кода. Можно использовать для изучения структуры файлов 1CD, просмотра баз 1CD для выявления повреждений, создания своих обработок для выгрузки данных без открытия исследуемой базы в 1С:Предприятии.

1 стартмани

07.10.2014    48190    197    GusevNA    75    

Тест серверного оборудования на допустимое количество пользователей: как это использовать?

Администрирование СУБД Нагрузочное тестирование Сервера v8 1cv8.cf Абонемент ($m)

Выполнил 3 разных теста для проверки серверного оборудования (тест 1С, тесты gilev) на возможное число 1С онлайн-пользователей одновременно работающих на нем и интерпретировал результаты тестов через легких, средних и тяжелых пользователей с помощью таблицы с профилями реальных пользователей.

3 стартмани

17.12.2019    9122    10    sapervodichka    3    

Исправление ошибки платформы 8.3.16 - разворота группы подписей в формах документов. ЗУП 3.1

Тестирование и исправление v8 v8::СПР ЗУП3.x БУ Абонемент ($m)

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

1 стартмани

02.12.2019    9212    11    skudnovv    10    

Работа с базами данных 1С в SQL Server Management Studio (Расширение для SSMS)

Администрирование СУБД Производительность и оптимизация (HighLoad) Администрирование данных 1С Структура метаданных v8 Абонемент ($m)

Расширение позволяет просматривать связи объектов метаданных и таблиц БД, сгруппированные данные (по группам метаданных) об используемом дисковом пространстве и выполнять трансляцию SQL текста запроса в термины 1С. И бонусом - при наведении курсора мыши на таблицу или поле показывает назначение объекта в терминах 1С.

10 стартмани

27.11.2019    9213    36    akpaevj    46    

Многопоточная обработка данных Промо

Производительность и оптимизация (HighLoad) Администрирование данных 1С v8 v8::УФ 1cv8.cf Абонемент ($m)

Конфигурация "Универсальные механизмы: пакеты данных". Набор инструментов для быстрой организации отказоустойчивой многопоточной обработки данных.

1 стартмани

23.11.2018    17030    50    _ASZ_    15    

Мониторинг количества использованных программных лицензий, выданных выделенным сервером лицензирования

Zabbix v8 Абонемент ($m)

Следим за утилизацией программных клиентских лицензий на выделенном сервере лицензирования в разрезе кластеров 1С Предприятия, в состав которых включен данный сервер лицензирования

1 стартмани

22.11.2019    2924    2    Sloth    4    

Быстрая реструктуризация базы данных

Производительность и оптимизация (HighLoad) Конфигурирование 1С v8 v8::УФ 1cv8.cf Россия Абонемент ($m)

Внешняя обработка для быстрой реструктуризации клиент-серверной базы данных. Способ ускорения реструктуризации - замена таблиц большого объема пустыми копиями перед проведением обновления БД и возврат к исходным таблицам после обновления с предварительной корректировкой их структуры. Полностью автоматизировано создание и выполнение всех требуемых скриптов SQL. Представлены версии обработки для обычных форм (1С:Предприятие 8.2 (8.2.19.130)) и управляемого приложения (1С:Предприятие 8.3 (8.3.9.1818)).

1 стартмани

05.11.2019    11006    40    dmitrydemenew    35    

Должно быть NULL в регистре бухгалтерии Хозрасчетный

Тестирование и исправление Инструментарий разработчика v8 1cv8.cf Абонемент ($m)

Обработка проверяет наличие и решает проблему с ошибкой развернутого сальдо в Оборотно-сальдовой ведомости (регистр бухгалтерии Хозрасчетный) из-за ошибки Универсального редактора реквизитов или кода программиста, устанавливающего пустые ссылки в значениях Валюты, Подразделения, Направления деятельности не равными NULL. И пересчёт итогов тут точно не поможет...

2 стартмани

21.10.2019    8859    22    sapervodichka    33    

Восстановление битой ссылки на раз-два Промо

Тестирование и исправление v8 1cv8.cf Абонемент ($m)

Простой способ восстановить битую ссылку типа " (20:94b81c6f65428d5911e2a8bebc48d793)".

1 стартмани

26.04.2013    30587    216    Vin_Tik    36    

Кто круче: "ИЛИ" или "ОБЪЕДИНИТЬ ВСЕ" в запросе?

Производительность и оптимизация (HighLoad) v8 v8::СПР v8::Запросы ЗУП2.5 Абонемент ($m)

Реальный пример оптимизации запроса. Статья будет полезна людям, изучающим вопросы оптимизации запросов в 1С и для подготовки к экзамену "1С: Эксперт по технологическим вопросам", поскольку в статье описывается один их методов расследования причин неоптимальных запросов. UPD. Коллеги в комментариях заметили ошибку, она была исправлена и сейчас выложены данные с корректным решением.

1 стартмани

14.09.2019    4789    0    azazana    27    

Менеджер потоков: реализация "любой" задачи в потоках

Производительность и оптимизация (HighLoad) Инструментарий разработчика v8 Абонемент ($m)

Менеджер потоков – один их новых инструментов, который упрощает работу разработчиков. Насколько легко с ним, на конференции Infostart Event 2018 Education показал начальник отдела автоматизации 1С Иван Филимонов компании «Трансстроймеханизация».

01.08.2019    8347    0    DarkAn    6    

Проверка работы расширений после обновлений

Тестирование и исправление v8 1cv8.cf Абонемент ($m)

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

3 стартмани

19.07.2019    7928    15    77dream77    3    

Многопоточность. Универсальный «Менеджер потоков» (фреймворк) с отслеживанием зависимости объектов Промо

Практика программирования Математика и алгоритмы Универсальные функции Производительность и оптимизация (HighLoad) v8 1cv8.cf Россия Абонемент ($m)

Восстановление партий, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

26.05.2017    46151    15    DarkAn    86    

Ловец дедлоков СУБД

Производительность и оптимизация (HighLoad) Практика программирования Разработка v8 Россия Абонемент ($m)

Анализ простейшего дедлока СУБД в рабочей базе с использованием ЦУП (центра управления производительностью) и profiler MS SQL (Microsoft SQL Server). Эта статья будет полезна людям, изучающим вопросы оптимизации работы 1С, или тем, у кого возникают дедлоки в рабочей базе. UPD 09.07.2019 добавлено воспроизведение блокировки в случае установки управляемой блокировки перед чтением набора записей регистра сведений. UPD 10.07.2019 добавлена тестовая база с примером.

1 стартмани

08.07.2019    9772    2    azazana    79    

Мониторинг производительности и искусственный интеллект

Производительность и оптимизация (HighLoad) Практика программирования Разработка v8 Абонемент ($m)

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

1 стартмани

01.07.2019    8277    12    ivanov660    28    

Исправление ошибки "Записи регистра сведений стали не уникальными"

Тестирование и исправление v8 1cv8.cf Россия Абонемент ($m)

Обработка исправления ошибки "Записи регистра сведений стали не уникальными"

1 стартмани

02.06.2019    5827    61    Sholl    0    

Поиск, восстановление битой ссылки, 8.3, v 0.2 Промо

Поиск данных Тестирование и исправление v8 1cv8.cf Абонемент ($m)

Обработка для работы с битой ссылкой, 8.3, v 0.1 Позволяет быстро найти и восстановить битую ссылку.

1 стартмани

24.10.2014    34001    271    infostart user    13    

Методика оптимизации программного кода 1С: проведение документов

Обработка документов Производительность и оптимизация (HighLoad) Инструментарий разработчика v8 v8::УФ Абонемент ($m)

Описание простого метода анализа производительности программного кода 1С, способов его оптимизации и оценки результатов в виде числовых показателей прироста производительности. Не требует сторонних программных продуктов, используются только типовые возможности платформ 1С. Методика проверена на линейке платформ начиная с 1С:Предприятие 8.2 (обычные формы, управляемые формы). Позволяет ускорить проведение проблемных документов в 3 и более раз, провести проверку корректности формирования проводок оптимизированным кодом и подтвердить результаты оптимизации реальными замерами производительности в режиме предприятия. К публикации приложены демонстрационные базы для режимов обычного и управляемого приложения на платформе 1С:Предприятие 8.3 (8.3.9.2033).

1 стартмани

19.03.2019    20962    16    dmitrydemenew    83    

Восстановление структуры DBSchema

Тестирование и исправление v8 БП3.0 Абонемент ($m)

Обработка для анализа ошибок в структуре DBShema, восстановление структуры объектов, перенос данных из выгруженных в XML таблиц базы, при помощи "Tool 1CD".

10 стартмани

11.03.2019    7933    49    spawn_a    20    

Лекарство на случай, если перестала работать форма списка для сделок. (ERP). Промо

Тестирование и исправление v8 ERP2 Абонемент ($m)

Форма списка справочник сделки стала выпадать с ошибкой?  Или все еще в порядке, но хочется спокойно съездить в отпуск, без паники, что менеджеры устроят бунт.

1 стартмани

28.07.2016    19987    0    milkers    2    

Баг или фича? Неожиданное поведение платформы

Практика программирования Тестирование и исправление Разработка v8 1cv8.cf Абонемент ($m)

Рассмотрим несколько случаев неожиданного поведения платформы 1С, а также что с этим можно cделать.

18.02.2019    20149    0    YPermitin    89    

Ошибки, предупреждения и прочее из журнала регистрации на почту и в Telegram автоматически (БП 3, ЗУП 3.1, УТ 11.4, ERP 2.4, Розница 2.2)

Журнал регистрации Поиск данных Тестирование и исправление Email v8 Розница УНФ ERP2 ЗКГУ3.0 БП3.0 УТ11 ЗУП3.x Абонемент ($m)

Данная обработка позволяет анализировать журнал регистрации с пользовательским отбором (4 критерия отбора) и высылать отчет пользователю с заданной периодичностью на электронную почту или в Телеграм. Возможно использовать как регламентное задание (автоматическая отправка отчетов по времени), непосредственно запускать из клиента, а также выгружать в форму обработки отфильтрованные данные из журнала регистрации без отправки.

2 стартмани

28.01.2019    7828    31    Redinternational    3    

Многопоточное тестирование производительности по методике APDEX (управляемые формы)

Производительность и оптимизация (HighLoad) v8 1cv8.cf Абонемент ($m)

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

10 стартмани

09.01.2019    7212    11    capitan    24    

Версионирование объектов. Сжатие регистра "ВерсииОбъектов" Промо

Производительность и оптимизация (HighLoad) v8 1cv8.cf Абонемент ($m)

Cжимаем версии объектов в регистре сведений "ВерсииОбъектов". Экономия занимаемого версиями объектов объема более 50% !!!

1 стартмани

30.12.2014    26299    24    ZLENKO    14    

Решение проблемы быстродействия в ERP на рабочем примере

Производительность и оптимизация (HighLoad) v8 ERP2 Абонемент ($m)

Рассмотрим практический пример оптимизации, определим последовательность действий и воспользуемся специализированными инструментами.

3 стартмани

18.12.2018    14498    97    ivanov660    15    

Скорость работы 1С8 файловой по сети

Производительность и оптимизация (HighLoad) v8 1cv8.cf Абонемент ($m)

Как я увеличил скорость работы файловой 1С8 по сети, изменив формат БД и размер страницы.

1 стартмани

01.11.2018    25111    15    Vlx    55    

Нестандартные подсистемы: Живая вода

Поиск данных Тестирование и исправление v8 1cv8.cf Абонемент ($m)

В БСП есть все, чтобы справиться с проблемой «Битых ссылок», но почему-то так и не реализовали возможность сохранять версию объекта перед удалением. Решил исправить эту досадную несправедливость и создать подсистему с кодовым названием «Живая вода».

1 стартмани

11.10.2018    9398    2    dsdred    14    

Многопоточное тестирование производительности сервера 1С - СУБД Промо

Сервисные утилиты Статистика базы данных Производительность и оптимизация (HighLoad) v8 1cv8.cf Абонемент ($m)

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

1 стартмани

12.02.2013    80572    274    Fragster    179    

Мониторинг показателей систем 1С 8.3 с помощью Zabbix

Внешние источники данных Zabbix v8 1cv8.cf Абонемент ($m)

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

1 стартмани

05.10.2018    33201    47    akimych    48    

Очистка и обновление индекса полнотекстового поиска (регламентное задание)

Производительность и оптимизация (HighLoad) v8 УНФ ДО БП3.0 УТ11 УХ ЗУП3.x Россия Абонемент ($m)

Обработка-регламентное задание позволяет в автоматическом режиме очищать и обновлять индекс полнотекстового поиска. Это необходимо делать для устранения проблем производительности на крупных базах. Подключаем в доп.обработках, задаем расписание выполнения на выходные и радуемся :)

2 стартмани

14.09.2018    18329    72    Kyrales    6    

Пересечение транзакций. Примеры

Производительность и оптимизация (HighLoad) v8 Абонемент ($m)

Рассматривается пересечение транзакций типа чтение-запись над одним элементом справочника при разных уровнях изоляции.

3 стартмани

03.09.2018    10081    0    vasilev2015    5    

Замена конфигурации в правилах переноса данных. Промо

Тестирование и исправление Обмен через XML Перенос данных из 1C8 в 1C8 v8 КД Абонемент ($m)

Те, кто часто занимается созданием правил конвертации данных в конфигурации «Конвертация данных” (речь о редакции 2.1 (2.1.5.1)), знают, что после замены в правилах конвертации одной конфигурации (приемник или источник) все правила конвертации свойств и объектов закрашиваются красным цветом и требуют утомительной ручной правки.

1 стартмани

24.01.2012    41781    161    milkers    66    

Монитор блокировок пользователей

Производительность и оптимизация (HighLoad) v8 v8::blocking 1cv8.cf Россия Абонемент ($m)

Анализ и автоматическое удаление блокировок

1 стартмани

17.08.2018    6113    13    Re:аниматор    7    

Поиск и восстановление битых ссылок (Объект не найден)

Поиск данных Тестирование и исправление v8 v8::УФ 1cv8.cf Абонемент ($m)

Групповая обработка ссылок вида Объект не найден (502:37855254002e11eb11e73b8f36150d9e) заполняется максимально просто копированием и вставкой из буфера: 1) Выделяет уникальные идентификаторы (далее УИ); 2) Ищет ссылки на объекты базы по УИ; 3) Создаёт пустые объекты с указанным УИ; 4) Регистрирует найденные ссылки для обмена данными. Работает на любых продуктах 8.3. Проверялась на 1С:ERP Управление предприятием 2 (2.4.3.167)

1 стартмани

17.08.2018    10509    83    sapervodichka    2    

Запуск и контроль выполнения автоматизированных тестов из 1С – Jenkins Skin

Тестирование и исправление v8 Абонемент ($m)

Мы рассмотрим пример создания заданий выполнения автоматизированных тестов из 1С с использованием различных Фреймворков (xUnit1C, Тестирование 3.0): запуск, ожидание завершения, загрузка результатов и выполнение полного цикла тестирования продукта. Убедимся, что все действия можно выполнить в пару кликов в дружественном интерфейсе.

1 стартмани

09.07.2018    13701    13    ivanov660    5    

Многопоточный МикроСервер для файловой базы управляемого приложения 1c Промо

Сервисные утилиты Производительность и оптимизация (HighLoad) v8 1cv8.cf Абонемент ($m)

МикроСервер УПФ - это промежуточный сервер, который принимает запросы от тонких клиентов и веб-клиентов управляемого приложения 1с и распределяет их между автоматически созданными процессами веб-сервера. Решение позволяет решить проблему однопоточности файловой компоненты модуля веб-сервера 1с и повысить скорость многопользовательской работы.

1 стартмани

19.12.2013    36523    46    Chai Nic    57    

Нагрузочное тестирование. В дни проведения ЧМ по футболу.

Производительность и оптимизация (HighLoad) v8 Абонемент ($m)

Нагрузочное тестирование. Подготовка к экзамену 1С:Эксперт. По мотивам доклада Виктора Богачева Инфостарт Event 2014. В дни проведения ЧМ по футболу.

1 стартмани

24.06.2018    9900    4    vasilev2015    9    

Тестирование: Просмотр результатов тестов в предприятии 1С – Allure Skin

Инструментарий разработчика Тестирование и исправление v8 1cv8.cf Абонемент ($m)

В данной статье мы расскажем об инструменте, который позволяет просматривать результаты тестирования в удобном и наглядном формате: общий обзор, с историей выполнения, с полной детализацией; в разрезе тестируемого приложения и номера проверки.

1 стартмани

10.05.2018    19540    6    ivanov660    18    

Техническое тестирование

Тестирование и исправление Инструментарий разработчика v8 v8::УФ 1cv8.cf Россия Абонемент ($m)

Обработка для тестирования на предмет ошибок: - открытия форм (список, новых элементов - всех существующих в конфигурации) - открытия форм объектов - записи/проведения объектов из форм

1 стартмани

19.03.2018    8530    15    Mopo3    7    

Методика упрощения поддержки конфигураций. Переопределение и вызов обработчиков событий для УФ 1С 8.2-8.3 Промо

Производительность и оптимизация (HighLoad) Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

10.02.2013    52575    27    pbazeliuk    40    

Бухгалтеру: что у меня сейчас "уедет" и "поползёт"?

Тестирование и исправление v8 v8::БУ БП3.0 Россия БУ Абонемент ($m)

Собираемся править документ в бух.базе или грузить из другой базы. Что сейчас изменится в данных? Понять за миг до катастрофы

1 стартмани

18.02.2018    9686    4    Yashazz    4    

Обновление конфигураций на БСП, у которых в расширениях есть собственные объекты с данными

Практика программирования Тестирование и исправление v8 v8::УФ 1cv8.cf Абонемент ($m)

Показан способ обновления конфигураций, основанных на БСП, в тех случаях, когда в расширениях имеются собственные объекты данных (Справочники, Документы, Регистры сведений, Планы обмена).

1 стартмани

12.02.2018    19995    58    t.v.s.    41    

Графический план выполнения запроса 1С

Производительность и оптимизация (HighLoad) Инструментарий разработчика Универсальные обработки v8 1cv8.cf Абонемент ($m)

Просмотр графического отображения плана выполнения для запросов 1С. Для информационных баз на MS SQL Server.

1 стартмани

24.06.2017    14257    55    berezdetsky    28    

Заметочки про 1С:Предприятие 8 (редакция 22.06.2012) Промо

Производительность и оптимизация (HighLoad) Практика программирования v8 1cv8.cf Россия Абонемент ($m)

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

1 стартмани

01.06.2010    175221    46    alexk-is    413    

Ошибка: Попытка вставки неуникального значения в уникальный индекс: Microsoft SQL Server. При переходе с Бух ПРОФ на КОРП и не только

Тестирование и исправление v8 v8::БУ БП3.0 Россия БУ Абонемент ($m)

Пример текста ошибки: Попытка вставки неуникального значения в уникальный индекс: Microsoft SQL Server Native Client 11.0: Выполнение инструкции CREATE UNIQUE INDEX прервано, поскольку обнаружен повторяющийся ключ для объекта с именем "dbo._InfoRg22530" и индекса с именем "_InfoRg22530_ByPeriod". Повторяющееся значение ключа: (0, 3900-01-01 00:00:00, 0x9100fa815581b9604de110ca98afc344, 0x00000000000000000000000000000000). HRESULT=80040E2F, SQLSrvr: SQLSTATE=23000, state=1, Severity=10, native=1505, line=1

1 стартмани

16.06.2017    26981    99    N0D    17    

Решение проблем с обновлением кастомизированных конфигураций на БСП

Тестирование и исправление v8 1cv8.cf Россия Абонемент ($m)

В данной статье рассматриваются действия, необходимые для удаления невыполненных дополнительных процедур обработки данных предыдущих обновлений.

1 стартмани

22.05.2017    16677    18    biz-intel    4    

Преобразование GUID, "битой" ссылки и системного строкового представления в ссылку (и обратно). Обычная и управляемая формы

Сервисные утилиты Тестирование и исправление v8 v8::УФ 1cv8.cf Абонемент ($m)

Поиск ссылки по GUID, получение GUID из ссылки. Получение GUID из "Объект не найден", создание объекта из "Объект не найден", создание произвольного объекта из указанного GUID. Получение ссылки по системному строковому представлению, получение системного строкового представления из ссылки. Обычная и управляемая формы.

1 стартмани

27.04.2017    12637    73    Lovish    6    

График времени выполнения ключевой операции

Статистика базы данных Производительность и оптимизация (HighLoad) v8 v8::УФ Розница ДО ERP2 БП3.0 УТ11 ЗУП3.x Абонемент ($m)

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

1 стартмани

09.04.2017    12799    15    info1i    0