1С и СУБД Tantor: история одного внедрения

10.07.24

База данных - HighLoad оптимизация

Временные таблицы без статистики и поиск причин медленного выполнения запросов.

 

Меня зовут Александр Симонов, я руководитель направления развития и поддержки 1С в компании "Тантор Лабс".

В рамках клиентских пилотов по миграции на СУБД Tantor Special Edition 1C мы сопровождаем процесс приемо-сдаточных работ и оказываем поддержку в ходе тестирования.

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

 

Постановка задачи

Тестовый стенд

Название

ОС

ПО

Конфигурация

Сервер приложений
MS Windows Server 2012
Платформа "1С" 8.3.24.1368
CPU 16, 256 Gb RAM
Сервер СУБД (Tantor)
Astra Linux 1.7.4
"Tantor SE 1C" 15.4
CPU 8, 48 Gb RAM, СХД "Аэродиск"
Сервер СУБД (MSSQL)
MS Windows Server 2012
MS SQL Server 2016
CPU 20, 256 Gb RAM, СХД Huawei

 

Оба сервера СУБД виртуализированы. Они сильно различаются по характеристикам, но организовать равноценные стенды у заказчика не было возможности.

Тестируемые операции:

  1. Заполнение документа "Резервы по оплате труда" в базе ЗУП.
  2. Расчет себестоимости за период в базе УХ.
  3. Перепроведение документов в базе УХ.

Каждая из них сначала выполняется на MS SQL, а затем – на Tantor.

 

Заполнение документа "Резервы по оплате труда" в базе ЗУП

Описание проблемы

Были получены следующие результаты:

MS SQL – 478, Tantor – 855 сек.

Созвонившись с заказчиком, выясняем, что настройки Tantor у него дефолтные. Настраиваем систему в соответствии с нашими рекомендациями и получаем результат 697 сек.

Разница более 200 секунд, это плохой результат, поэтому начинаем разбираться в причинах. Заказчик собрал технологический журнал и логи СУБД. Проанализировав его, видим, что у нас есть топ запросов, которые долго выполняются.

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

Находим проблемный запрос в логе СУБД, получаем план и видим причину: дело в том, что планировщик неправильно оценил количество строк во временной таблице:

 

Но почему планировщик может так ошибаться? Ведь для таблицы должна рассчитываться статистика, т.к. при ее создании платформа 1С сама вызывает команду ANALYZE. Ситуация выглядит странно.

После этого мы развернули пустую конфигурацию ЗУП и нашли запросы по проблемному контексту:

 

Документ.РезервыПоОплатеТруда.Форма.ФормаДокумента.Форма : 2403 : Результат = ДлительныеОперации.ЗапуститьВыполнениеВФоне(
    ОбщийМодуль.ДлительныеОперации.Модуль : 989 : ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяЭкспортнойПроцедуры, ПараметрыЭкспортнойПроцедуры);
        ...
            ОбщийМодуль.ОтражениеЗарплатыВБухучетеРасширенный.Модуль : 91 : ПолучитьБухучетНачисленийБезДоговоровСоздатьВТ(ИсходныеДанные, "ВТБухучетНачисленияБезДоговоровГПХ");
                ОбщийМодуль.ОтражениеЗарплатыВБухучетеРасширенный.Модуль : 11217 : СоздатьВТБухучетНачисленийПоБазовымРасчетам(Запрос, ИмяВТНачисленияИсходная,
                    ОбщийМодуль.ОтражениеЗарплатыВБухучетеРасширенный.Модуль : 721 : Запрос.Выполнить();'

 

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

Полученную базу мы развернули на своем стенде:

Назначение

ОС

ПО

Конфигурация

Сервер приложений Astra Linux 1.7.5 Платформа "1С" 8.3.23.1997 CPU 6, 16 Gb RAM
Сервер СУБД Astra Linux 1.7.5 "Tantor SE 1C" 15.4 CPU 4, 16 Gb RAM

 

 

 

Проблемные запросы у нас выполнялись так же долго, и мы cобрали лог технологического журнала (ТЖ) по событию DBPOSTGRS без фильтра по длительности, и из такого лога причина стала понятна: по временной таблице не была рассчитана статистика. Поговорим немного о ней.

 

Как планировщик делает оценку по таблицам без статистики

Каким образом планировщик получил оценку в 5 строк (метка 1 на рисунке ниже), если по таблице нет статистики?

 

В подобных случаях планировщик оценивает количество строк, исходя из размера файла с таблицей и ширины строки (метка 2 на рисунке).

Оценка в 5 строк учитывает наложенные отборы из поля Filter (метка 3 на рисунке). Для колонок, по которым нет статистики, планировщик использует фиксированную оценку – 0.5% от количества строк. У нас отбор накладывается на 2 колонки, и эту оценку планировщик дает для каждой из них. В итоге мы можем получить формулу:

Количество строк в таблице * 0.005 * 0.005 = 5.

Давайте вспомним базовые уроки алгебры и вычислим, сколько, по мнению планировщика, в данной таблице строк (до наложения отборов): 5/(0.005*0.005) = 200 000

Получается, исходя из ширины одной строки и размера файла, планировщик подумал, что в таблице tt268 примерно 200 тысяч строк. После наложения фильтра по указанной выше формуле получается оценка – 5 строк. 

 

Как работает платформа с временными таблицами, создаваемыми из таблицы значений

Давайте вернемся к нашей проблеме и посмотрим какие команды выполняются при создании временной таблицы из таблицы значений.

Такая временная таблица создается конструкцией "COPY pg_temp.tt FROM STDIN BINARY" вместо привычной конструкции "INSERT INTO pg_temp.tt (список колонок) SELECT ... FROM ...", которая используется при создании временной таблицы выборкой из результата запроса.

 

Создание временной таблицы без индексов

 

Запрос 1С:

 

ВЫБРАТЬ
    ТЗ.Поле1 КАК Поле1
ПОМЕСТИТЬ ВТ
ИЗ
    &ТЗ КАК ТЗ

 

 

В этом случае на СУБД будут выполнены две команды, согласно данным ТЖ событий DBPOSTGRS:

 

1. Создание временной таблицы tt1
Sql='drop table if exists tt1 cascade;create temporary table tt1 (_Q_000_F_000 numeric(12, 2) ) without oids ',RowsAffected=0
// 2. Заполнение временной таблицы tt1 данными, переданными в запрос как таблица значений
Sql=COPY pg_temp.tt1 FROM STDIN BINARY,RowsAffected=4

 

 

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

 

Создание временной таблицы с индексом

 

Если при создании временной таблицы сразу создать в ней индекс, получится следующее:

Запрос 1С:

 

ВЫБРАТЬ
    ТЗ.Поле1 КАК Поле1
ПОМЕСТИТЬ ВТ
ИЗ
    &ТЗ КАК ТЗ
 
ИНДЕКСИРОВАТЬ ПО
    Поле1

 

 

 В этом случае, по данным ТЖ событий DBPOSTGRS, на СУБД будут выполнены следующие команды:

 

// 1. Создание временной таблицы tt1
Sql='drop table if exists tt1 cascade;create temporary table tt1 (_Q_000_F_000 numeric(12, 2) ) without oids ',RowsAffected=0
// 2. Заполнение ВТ tt1 данными, переданными в запрос как таблица значений
Sql=COPY pg_temp.tt1 FROM STDIN BINARY,RowsAffected=4
// 3. Создание временной таблицы tt2 с такой же структурой колонок как и у tt1
Sql='drop table if exists tt2 cascade;create temporary table tt2 (_Q_000_F_000 numeric(12, 2) ) without oids ',RowsAffected=0
// 4. Если существует индекс tmpind_0, удалим его и создадим новый индекс tmpind_0 на временной таблице tt2
Sql=drop index if exists tmpind_0,RowsAffected=0
Sql=create index tmpind_0 on pg_temp.tt2(_Q_000_F_000),RowsAffected=0
// 5. Вставляем во временную таблицу tt2 все записи из tt1
Sql='INSERT INTO pg_temp.tt2 (_Q_000_F_000) SELECT
T1._Q_000_F_000
FROM pg_temp.tt1 T1',RowsAffected=4
// 6. Вызываем расчет статистики на временной таблице tt2
Sql=ANALYZE pg_temp.tt2,RowsAffected=0
// 7. Очищаем временную таблицу tt1
Sql="SELECT FASTTRUNCATE ('pg_temp.tt1')",RowsAffected=1

 

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

Возникшую проблему отсутствия статистики на временной таблице можно было бы решить двумя способами:

  1. При создании ВТ создать индекс.
  2. Из созданной ВТ переложить данные в новую ВТ, которую далее и использовать.

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

 

Вступайте в нашу телеграмм-группу Инфостарт

Tantor SE1C Special edition postgres временные таблицы статистика predicate pushdown технологический журнал COPY FROM BINARY платформа online_analyze DBPOSTGRS RowsAffected

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

HighLoad оптимизация Программист 1С 8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Использование оператора «В» для полей или данных составного типа (например, Регистратор) может приводить к неочевидным проблемам.

10.11.2025    13653    ivanov660    48    

56

HighLoad оптимизация Программист 1С:Предприятие 8 1C:ERP Бесплатно (free)

Приведем примеры использования различных в динамических списках и посмотрим, почему это плохо.

18.02.2025    14748    ivanov660    39    

62

HighLoad оптимизация Программист Россия Бесплатно (free)

А вы знали, что сервер 1С при соединении с базой на сервере PostgreSQL самостоятельно устанавливает некоторые параметры? Это важно знать при настройке сервера и отладке долгих запросов. Предлагаю разобраться.

27.08.2024    8848    soulner    10    

41

HighLoad оптимизация Технологический журнал Системный администратор Программист Бесплатно (free)

Обсудим поиск и разбор причин длительных серверных вызовов CALL, SCALL.

24.06.2024    17266    ivanov660    13    

64

HighLoad оптимизация Программист 1С:Предприятие 8 Бесплатно (free)

Метод очень медленно работает, когда параметр приемник содержит намного меньше свойств, чем источник.

06.06.2024    23334    Evg-Lylyk    73    

46

HighLoad оптимизация Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Анализ простого плана запроса. Оптимизация нагрузки на ЦП сервера СУБД используя типовые индексы.

13.03.2024    13144    spyke    29    

54
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. BigBee 10.07.24 11:39 Сейчас в теме
Tantor, PostgresPro - обе клоны Postgres .
не практичнее ли для страны объединить конторы и единым продуктом конкурировать с MS SQL ?
а то скоро будет как с Линукс: " ... 23 ОС в реестре отечественного ПО..... !"

или как в 90-е - "...это моя точка....."
ubnkfl; ZOMI; jawakharlal; +3 Ответить
2. Tantor 210 10.07.24 12:18 Сейчас в теме
(1)Tantor и другие вендора - коммерческие компании каждый со своим видением развития продуктов, командой и технической поддержкой. Для того, чтобы как вы пишите "конкурировать с MSSQL" мы и создали свой ЦК 1С, в котором работают специалисты понимающие в чем разница между Postgres и MSSQL в части специфики запросов 1С. Мы работаем в этом направлении
Jimbo; neyasytyf; bayselonarrend; +3 Ответить
16. ubnkfl 11.07.24 13:20 Сейчас в теме
(1) Всё будет, как с заменой Ютуба в России. Сделаны 3 калеки (Рутуб, ВК и Дзен), и еще 4-го делает кто-то. В итоге все, кто может, сидят на Ютубе, и если уж совсем припечет - пользуется кем-то из трёх инвалидов.
TimkoNzt; VladC#; +2 Ответить
40. mefalcon 40 29.07.24 18:06 Сейчас в теме
(16) Присоединяйтесь к команде ЦК 1с в тантор, внесите свой вклад, чтобы такого не было. :)))))
Чем больше людей на проекте развития задействовано , тем выше вероятность сделать конкурентный продукт.
Ну или хотябы купите для своей компании дистрибутив - поддержите производителя=)
Если серьезно, оба топовых российских продукта СУБД, вполне себе удобны, просто нужно знать особенности эксплуатации, научиться можно довольно быстро
41. anosin 29 01.08.24 16:17 Сейчас в теме
(16) сравнили мягкое с теплым, ютуб он же очень "важен" для бизнеса и бухгалтерии
19. bayselonarrend 3209 11.07.24 14:15 Сейчас в теме
(1) Легко делать такие предложения, когда сам ничем не управляешь. Даже представить трудно, каким популизмом это звучит от лица какого-нибудь владельца бизнеса - который влазил в долги, рисковал, строил свое дело и участвовал в конкурентной борьбе и куче сложных экономических взаимоотношений, а теперь просто "ну вы просто станьте вот с конкурентом одной компанией это же вот вы тогда в два раза круче станете, ну что сложно что ли"
AlekseyBelyy; neyasytyf; Tantor; +3 Ответить
21. BigBee 12.07.24 12:07 Сейчас в теме
(19) ....который влазил в долги, рисковал, строил свое дело и участвовал в конкурентной борьбе и куче сложных экономических взаимоотношений ...

ежику понятно, что ни в какие долги никто не "влазил" - посмотрели на PostgresPro. Удивились: "А что? так можно было?". Взяли исходники , обозвали по своему. Затем "волосатая лапка" пропихнула в реестр отечественного ПО (с помощью ...кучи сложных экономических взаимоотношений ...) и тут же "....ГК "Астра" приобрела 75% долей ООО "Тантор Лабс" ..."

но если Postgres бесплатен, то за это "отечественное" дерут деньги сравнимые со стоимостью MS SQL..
с Postgres я примерно в 2020 сталкивался - в запрос , в параметр ,по недосмотру попал список из примерно 1000 значений Неопределено. Через 10 мин исполнения запроса прибежал главный админ с вопросом , а что это вы такое делаете , что все!! дисковое пространство закончилось?
Попробуйте сейчас такой финт на Postgres, желательно на продуктовой базе )
4 года прошло как никак - должно корректно отработать .


давайте честно - идиотизм с изоляцией РФ закончится через год, два - снова будет мир-жвачка с Microsoft. Кому будут нужны платные клоны Postgres? Только монстрам , у кого сервера на Эльбрусах (которые как суслики ...). И то - один вариант, не несколько.

вообще вся вакханалия с псевдо-отечественным ПО направлена на рубку денежных знаков, ни в коем случае не на развитие. И грустно, но естественно - ни дирекция, ни собственники свою "поляну" не отдадут, насмерть стоять будут. Я уже писал выше: живут по принципу "это моя точка"!!!. Поэтому косим здесь и сейчас.
А на будущее , где придется конкурировать с MS SQL на равных плевать...

в целом "отечественное по" напоминает эпизод из романа "Унесенные ветром" - после разгрома южан Эшли собрал брошенные на землю при бегстве лопаты, кирки, мотыги, тачки и прочий хлам. Открыл магазин и более-менее перебивался торговлей собранного. Ничего не скажешь - уважаемый был человек, при деле...

P.S. упс, похоже, что ключевые слова и в книге и в нашей жизни: ".. после разгрома..."
sashocq; VladC#; +2 1 Ответить
22. bayselonarrend 3209 12.07.24 12:48 Сейчас в теме
(21) Ай, ну что за демагогия.

Я говорю про компанию без привязки к их продуктам: чтобы они там ни делали, там есть штат, которому надо платить деньги, этот штат сидит в здании, которое необходимо снимать, есть заказчики с которыми заключаются договора, обсуждаются условия, издержки, гарантии и прочее, происходит денежный обмен. И все это было кем-то начато, за какие-то деньги сделано и кто-то несет за это ответственность. Вне зависимости от того, чем они занимаются - подставьте сюда Хлебзавод №1 и Хлебзавод №2, смысл не поменяется. Все равно это чей то комплексный организаторский проект (приносящий, раз не развалился, деньги) под который вы подставляете свой "простое" интересное решение "взять все и объединить".

Найдите человека с рамой, и человека с двумя колесами - и попробуйте убедить их собрать один велосипед на двоих. Я очень сильно не уверен, что у вас это получиться, что говорить о двух компаниях, которые еще и самодостаточные конкуренты - речь была только об этом

ежику понятно, что ни в какие долги никто не "влазил" - посмотрели на PostgresPro. Удивились: "А что? так можно было?". Взяли исходники , обозвали по своему. Затем "волосатая лапка" пропихнула в реестр отечественного ПО (с помощью ...кучи сложных экономических взаимоотношений ...) и тут же "....ГК "Астра" приобрела 75% долей ООО "Тантор Лабс" ..."


У некоторых все так невероятно просто и понятно всегда. Сходите в самый примитивный ларек с шаурмой под домом и спросите про все бизнес-процессы и взаимодействия, которые там происходят для его существования. Узнаете много нового, не факт только, что все запомните за раз
23. BigBee 12.07.24 13:35 Сейчас в теме
(22) ...есть штат, которому надо платить деньги, этот штат сидит в здании, которое необходимо снимать, есть заказчики ...

да, заказчики - и это ключевое различие и боль . В РФ весь "банкет" оплачивает бюджет - государственные и около государственные организации, MS SQL (его прототип microsoft купила ) - весь мир.
ну а раз в РФ платит бюджет, то очень хочется чтобы траты были осмысленны - не нужно уже 5 клонов Postgres - достаточно одного, и конкурентом (эталоном) будет MS SQL. Тогда на школы и больницы больше будет оставаться.

...Найдите человека с рамой, и человека с двумя колесами - и попробуйте убедить их собрать один велосипед на двоих....
если я единственный заказчик, как бюджет РФ для "отечественного по" - то не только соберут, но еще и цирковое представление на нем покажут (иначе как придурки останутся с неликвидами). Т.к. найдутся люди с сиденьем и рулем, готовые собрать велосипед .
Но если тот, кто сидит на бюджетных распределениях получит * и с колес и с рамы, то будет 2 оплаченных бюджетом не взаимозаменяемых велосипеда. А тот, который на бюджете сидит, только один зад имеет, и ездить будет по очереди то на одном, то на втором. Т.е. один велик явно лишний, но оплаченный...

======
в общем я пытаюсь донести мысль что при наличии очень серьезного конкурента в виде MS SQL объединение разработчиков Postgres - это всегда благо.
А конкуренция за одного заказчика, бесконтрольно тратящего деньги ему не принадлежащие (вы же не думаете , что бюджет это собственность чиновников) - это 100% коррупция..
если одним к корыту припадать можно, то почему другим нельзя?
что мы и видим - 25 вариантов ос линкус в реестре отечественного по и 5 вариантов postgres
количество же специалистов, которые занятны в этих вариантах явно избыточно - и их зарплаты оплачиваем мы с вами...

P.S. И очень плохо, что начинает формироваться самоподдерживающая система: всем этим разработчикам, автопроизводителям, самолетостроителям, и т.д. не способным конкурировать на мировом уровне без бюджетной поддержки крайне важен режим "осажденной крепости".
До последней копейки имеющейся в бюджете...
24. bayselonarrend 3209 12.07.24 14:28 Сейчас в теме
(23) Я просто рассматриваю это со стороны производителя, а не со стороны продукта или заказчика: принять даже, если все на 100% как вы говорите - я вот, лично, будучи управляющим такой компанией, которой все оплачивает государство-заказчик, в последнюю очередь бы был заинтересован с кем-то объединятся. Т.е. апеллировать к такой компании, заходя с позиции пользы для государства и морали - это агитировать пчел против меда. Вы же все равно в их сторону предлагаете, правильно?

Хотя в целом, на мой взгляд, странно думать, будто если оставить во всем сегменте лишь одну компанию без конкуренции, то все зацветет - по-моему монополии как раз обычно и приводят к тому, о чем вы пишите, только еще в большей мере
31. s22 23 16.07.24 11:52 Сейчас в теме
(21) мсскл уходит на всегда.
В том же Китае у Хуавей есть клон(ну как клон, синтаксис внешний постре) постгрес opengauss и мсскл убирают просто по черному.
От мсскл отказывается в гос Бразилия и фактически ввела запрет Индия.

Поэтому мелкософт лоббирует отмену ограничений для России на свою продукцию
Jimbo; Tantor; +2 Ответить
32. d4rkmesa 16.07.24 20:30 Сейчас в теме
(21) "давайте честно - идиотизм с изоляцией РФ закончится через год, два - снова будет мир-жвачка с Microsoft"

Похоже на какую-то вынужденную логику и выдачу желаемого за действительное. MS довольно редко меняет свою политику "взад", вспомним ту же отмену региональных цен в их магазинах и ценники в $ как итог, и это было задолго до последних двух лет. А так, рыночек порешает со всеми этими сборками postgres.
36. azxasd 19.07.24 13:53 Сейчас в теме
(19) который влазил в долги, рисковал, строил свое дело и участвовал в конкурентной борьбе
Читается как Заказал логотипчик, нашёл студента который пересобрал ПО с его логотипом. Далее прошёлся по кабинетам, занёс, забрал тендер... А ну да, ещё проплатил аутсорс по занесению в реестр...
37. bayselonarrend 3209 19.07.24 14:02 Сейчас в теме
(36) Вау, а я и не знал - все оказывается так просто? А давайте вы сейчас просто тоже самое пойдете сделаете - это же как два пальца об асфальт. Ну и получите кучу-кучу денег - вы же можете нанять студента ради кучи кучи денег? Логотип я вам нарисую. Пол дня работы и можно больше не работать, просто лежать на куче бабла. Странно, на самом деле, что вы вместо того, чтобы пойти по кабинетам и получить кучку-кучу денег пришли сюда - не боитесь что теперь все узнают этот страшный секрет, разбогатеют за день, а вы не успеете?
38. azxasd 19.07.24 16:24 Сейчас в теме
(37) "это же как два пальца об асфальт" - я этого не имел в виду, Вы сами додумали...
Вы или не понимаете процесса либо умышленно передёргиваете...
"прошёлся по кабинетам" это фигура речи такая - суть в том для того что-бы это выполнить надо:
1) Иметь доступ в здание где находится этот кабинет
2) Иметь доступ в приёмную этого кабинета
3) Иметь неформальный* доступ к лицу, сидящему в этом кабинете
4) Решения принимаемые в этом кабинете должны иметь управляющий характер
* не забываем про бдительного "товарища капитана"
По факту такое количество клонов вряд-ли вызвано реализацией именно этой "схемы", по факту скорее всего причин гораздо больше, и основная их масса не является схематозом...
39. bayselonarrend 3209 19.07.24 16:29 Сейчас в теме
(38)

Заказал логотипчик, нашёл студента который пересобрал ПО с его логотипом. Далее прошёлся по кабинетам, занёс, забрал тендер...


Похоже сам додумал, действительно
3. Tahallus 441 10.07.24 16:47 Сейчас в теме
Интересно, есть ли сравнение различных версий Postgres при равных условиях и +- одинаково настроенных параметрах.
Из https://v8.1c.ru/tekhnologii/systemnye-trebovaniya-1s-predpriyatiya-8/subd/ можно для тестов взять
1. Tantor SE
2. Postgres Pro
3. Pangolin
4. PostgreSQL от 1С
5. Jatoba
d4rkmesa; PowerBoy; triviumfan; +3 Ответить
27. artemusII 104 14.07.24 13:25 Сейчас в теме
(3) Есть (кроме PostgreSQL от 1С). Мы подробно сравнивали "конкурентов":). Чтобы "не обидеть" никого, обезличил конкретные СУБД через "СУБД на базе Postgres ..."
Прикрепленные файлы:
28. Tahallus 441 14.07.24 18:11 Сейчас в теме
(27) По текущему тесту MS SQL проигрывает всем сборкам на Postgres, вот какие-то сомнительные результаты.
33. s22 23 17.07.24 14:57 Сейчас в теме
(28) я делал тесты.
Если сервер бд и сервер 1с разнесены, то в большинстве запросов постгре выигрывает при нормальной настройке
42. alx1c 03.08.24 00:38 Сейчас в теме
(27) Любопытные результаты.
А какой был размер базы, на которой тестировали? И какая версия MSSQL была?
4. siamagic 10.07.24 18:15 Сейчас в теме
Отличное чтиво! Но, будьте добры убрать слово "кейс" - создается ощущение что для дурачков на бесполезной конференции вещаете.
ubnkfl; ZOMI; jawakharlal; skif-m; +4 3 Ответить
5. triviumfan 102 10.07.24 21:39 Сейчас в теме
Интересно. Спасибо за труды.
6. user2095934 10.07.24 23:12 Сейчас в теме
для хорошей работы 1С нужно насыпать полмиллиона кубитов, и не размениваться по мелочам 700 секунд плохо а вот 400 секунд хорошо. Без альтернативное один эс царство. :)
9. starik-2005 3301 11.07.24 10:44 Сейчас в теме
(6) Для хорошей работы CRUD нужно отказаться от 1С. В1С выгружать только итоговые обработанные данные, чтобы сдавать отчетность. Но это долго и дорого, поэтому 1С.
7. 3vs 11.07.24 06:38 Сейчас в теме
Как-то написал Петру Зайцеву, мол, не могли бы вы свою Percona for PostgreSQL подогнать под требования
1С? Вроде как у них продукты корпоративного уровня, бесплатные, платная поддержка.
Было бы неплохо иметь ещё один PostgreSQL, совместимый с 1С, с учётом внедрения решений 1С уже не только в России.

В общем послали на ..., одним словом им это не интересно.
А жаль!

А по теме, а ежели поменять местами конфигурации серверов СУБД?
А то как-то получается, ресурсы довольно существенно различаются!
10. Tantor 210 11.07.24 11:13 Сейчас в теме
(7) У заказчика не было возможности организовать одинаковые стенды либо поменять СУБД местами.
8. starik-2005 3301 11.07.24 10:41 Сейчас в теме
Отличная статья.

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

Лучшее, что я читал про постгрес, была статья вроде бы от яндыкса, в которой авторы помимо лога от сторонней системы собирали еще и профайл с самого постгреса, выявляя проблемы именно в вызываемых функциях. В некотором приближении писали ребята из Магнита, которые тоже правили исходники для выбора соединения по хеш-таблицам вместо цикла.

Но все-равно, читать подобные статьи - удовольствие. Но, конечно, не для всех.
Jimbo; d4rkmesa; sashocq; Tantor; Armando; +5 Ответить
11. Tantor 210 11.07.24 11:15 Сейчас в теме
(8) эх, Магнит)
В одной из следующих статей хотели бы рассказать как 1С работает с временными таблицами на стороне СУБД и как мы это использовали для оптимизации функции SELECT FASTTRUNCATE
34. s22 23 17.07.24 16:20 Сейчас в теме
(11) в 26 вроде переделали...
И просьба указывать версии 1с и постгре в каждом случае
35. Tantor 210 17.07.24 23:22 Сейчас в теме
(34) В 8.3.25 переделали, этот вопрос тоже хотел рассмотреть.
А где у нас версия 1С или Tantor не указана? Я в начале статьи всю информацию приводил
12. mitia.mackarevich 96 11.07.24 12:09 Сейчас в теме
первый кейс. получается теперь в некоторых случаях после включения расширения online_analyze временные таблицы стали два раза Analyze. Верно? Понятно что 1 раз для ВТ переданных как параметр, но для остальных и так платформа сама делает его + расширение добавить "своей" паразитной нагрузки?
13. Tantor 210 11.07.24 12:29 Сейчас в теме
(12) нет, плагин online_analyze понимает, что по временной таблице рассчитана статистика (вызовом из платформы 1С) и второй раз ее не рассчитывает.
Я это проверял анализируя логи СУБД
14. mitia.mackarevich 96 11.07.24 12:31 Сейчас в теме
(13) Это поведение именно вашего доработанного плагина? Или "обычного"?
15. Tantor 210 11.07.24 13:09 Сейчас в теме
(14) Обычного. Т.е. если вы включите плагин online_analyze с типом таблиц "temporary", то статистика по временной таблице дважды считаться не будет. Но в этом смысла нет, т.к. платформа 1С с версии 8.3.13 сама считает статистику при создании временной таблицы, кроме случая описанного в п.1. Этот случай учтен именно в нашем плагине online_analyze, а также будет учтен в самой платформе 1С в релизах, которые выйдут в этом месяце.
Jimbo; mitia.mackarevich; +2 Ответить
20. mitia.mackarevich 96 11.07.24 14:34 Сейчас в теме
(15) Спасибо, я в курсе по поведение платформы. Сейчас проверил сам - действительно analyze выполняется один раз. Все верно.
Jimbo; Tantor; +2 Ответить
17. smit1c 107 11.07.24 13:28 Сейчас в теме
А клиент эти поиски/доработки оплатил ? Сколько часов ушло на всё это ?
18. Tantor 210 11.07.24 13:56 Сейчас в теме
Работы проводились по наличию сертификата технической поддержки у клиента. Вся исследовательская деятельность велась в рамках него.
(17)
25. gzharkoj 596 12.07.24 20:05 Сейчас в теме
Очень приятный контент, есть еще?
А в бэклоге у вас есть задача, связанная с проработкой merge join, который отключается платформой?
26. Tantor 210 13.07.24 14:13 Сейчас в теме
(25) С Merge Join нет. И без него есть способы, чтобы улучшить выполнение запросов, характерных для 1С. Также помимо самой СУБД разрабатываем инструменты "рядом" с ней, например, анонимизацию баз 1С. Одна из следующих статей будет этому посвящена.
29. sashocq 195 15.07.24 09:11 Сейчас в теме
Спасибо, статья очень понравилась, взял себе на заметку несколько моментов.

Но смутило 2 момента:
1. Скриншоты с деревом плана запроса вообще не разобрать. Можно их заменить на читаемые?
2. Прям сильно бросился в глаза скрипт на PowerShell, который собирает текст скрипта для ping :-) Чем не угодил Test-Connection -BufferSize 65500?
30. Tantor 210 15.07.24 15:05 Сейчас в теме
(29)
1. Перед скриншотами с планами запросов идет ссылка на них. По ним можно в деталях рассмотреть планы запросов.

2. Подобные задачи по поиску причин в инфраструктуре не являются характерными для нас, поэтому искали способ решения в контексте 1С и тут пришло на память именно видео Виктора, поэтому взяли его скрипт.
Jimbo; sashocq; +2 Ответить
Для отправки сообщения требуется регистрация/авторизация