Алгоритм формирования CDX

Автор alyuev, 10 августа 2026, 14:15

« назад - далее »

alyuev

Всем привет. Всё в отпусках? Никто ничего не пишет.... :-)

Такой вопрос - есть ли где-то расписанный алгоритм, как 1С формирует индексы при переиндексации?
Есть возможность ускорить процесс в 10 раз за счет распараллеливания процесса. Вместо 30минут будет делать 3.
Но при анализе разбор всё время натыкался на разные нюансы.

Сначала ИИ пытался проанализировать некоторые базы и CDX, которые я ему давал. Он что-то распарсил, сделал сверщик. Но потом я подумал и дал ему определения функций, которые есть в 1С-ных родных DLL и там он нашел в двух файлах dbeng32.h и bkend.h (из 1CHEADERS) полезное - нашел там таблицы кодировок, подключился к библиотекам, выгрузил их все, определил, что есть файл 1CV7.ORD - там 2 таблицы символов для правил сортировки. У нас в конфигураторе стоит кодировка базы как CUSTOM - но как оказалось, сверщик всё равно после переиндексции находил расхождения с оригинальными CDX при использовании этих таблиц. И всё равно пришлось ему допиливать алгоритм построения индекса, чтобы не было расхождений. И это завязка только на текущую базу. На другой - надо будет опять искать алгоритм сортировки.

Вот и хотелось бы узнать, может кто уже ковырял в этом направлении?

alyuev

Кое-что вот тут обсуждалось:
https://www.1cpp.ru/forum/YaBB.pl?num=1241013307/0#0 - " Кодировка и Порядок сортировки в 1С ДБФ"
https://www.1cpp.ru/forum/YaBB.pl?num=1240102224/all - "Индексы при вставке записей"

Из тещих результатов:

ЧАСТЬ 7. Измеренные показатели
[th] Показатель [/th]
[th] Значение [/th]


 Таблиц  344 
 Объём DBF  31,14 ГБ 
 Объём CDX  ~4 ГБ 
 Записей  218 460 937 
 Ключей  ~405 800 000 
 Скорость сборки  1,46 с на миллион ключей на ядро 
 Штатная переиндексация 1С  ~1800 с 
 Наша, 8 потоков  151 с 
 Ускорение  12x 


Узкое место — чтение диска: 211 МБ/с при восьми потоках против 364 МБ/с в
один поток. Самая долгая таблица
SC8135
(22 тега, 45,9 млн ключей) занимает
102 с и задаёт нижнюю границу, пока распараллеливание идёт по таблицам.


Но самое главное - пока это больше эвристика, нежели четкий алгоритм. Т.е. ИИ вывел алгоритм эмпирически по существующим данным + кое-что с форумов + файлы заголовков, как писал выше. Тестирую. Индексы создаются, в 1С заходит, не ругается; справочники, журналы - открываются без вопросов. Отборы работают. Но еще нужны тесты...