| 
    
            
         
         | 
    
  | 
Как записать 1000 документов за 1 сек. | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        shaman_kz    
     28.12.17 
            ✎
    19:22 
 | 
         
        Возникла потребность проведения большого объема данных.
 
        При проведении система не загружена. Тесты по железу сети показывают 10-15%. Почему документы не записываются в 1 сек.  | 
|||
| 
    1
    
        nordbox    
     28.12.17 
            ✎
    19:30 
 | 
         
        о как, я а то балда думал что Записать и Провести это разные весчи )))))     
         | 
|||
| 
    2
    
        nordbox    
     28.12.17 
            ✎
    19:36 
 | 
         
        (0) с тобой все нормально? ))) Стаж: 13 лет 16 дней     
         | 
|||
| 
    3
    
        rs_trade    
     28.12.17 
            ✎
    19:53 
 | 
         
        отключить итоги на время проведения     
         | 
|||
| 
    4
    
        mingw    
     28.12.17 
            ✎
    20:09 
 | 
         
        Вот интересно. Слово транзакция много программистов знает?
 
        А понимает что это?  | 
|||
| 
    5
    
        ПросТак    
     28.12.17 
            ✎
    20:18 
 | 
         
        (2) зарегился во времена 7.7 и ушел в спячку)     
         | 
|||
| 
    6
    
        lubitelxml    
     28.12.17 
            ✎
    20:56 
 | 
         
        (5) я регился в 2004, ушел в спячку на пару лет - удалили акк ))     
         | 
|||
| 
    7
    
        Мимохожий Однако    
     28.12.17 
            ✎
    21:13 
 | 
         
        (0) Ждёшь новогоднего чуда? ))     
         | 
|||
| 
    8
    
        Лефмихалыч    
     28.12.17 
            ✎
    21:15 
 | 
         
        (0) надо позвать 1сника, дать ему денег за то, чтобы он разобрался, объяснил происходящее и предложил варианты решения.
 
        Ну, или - подождать. Тупо.  | 
|||
| 
    9
    
        shaman_kz    
     28.12.17 
            ✎
    21:33 
 | 
         
        Транзакции не помогут. Либо через фоновые задания разделять на потоки либо запускать дополнительные сеансы.     
         | 
|||
| 
    10
    
        shaman_kz    
     28.12.17 
            ✎
    21:34 
 | 
         
        Задача стоит нагрузить систему одним сеансом.     
         | 
|||
| 
    11
    
        shaman_kz    
     28.12.17 
            ✎
    21:35 
 | 
         
        система клиент серверная. железо и сеть не загружены.     
         | 
|||
| 
    12
    
        shaman_kz    
     28.12.17 
            ✎
    21:36 
 | 
         
        при оптимизации кода прирост небольшой есть, но задача не код до бесконечности оптимизировать а загрузить железо хотя бы на 50-60%     
         | 
|||
| 
    13
    
        H A D G E H O G s    
     28.12.17 
            ✎
    21:39 
 | 
         
        (12) Вариант Н
 
        н - никак. p.s. Железо у вас загружено максимально.  | 
|||
| 
    14
    
        shaman_kz    
     28.12.17 
            ✎
    21:43 
 | 
         
        (13) Все тесты показывать что не загружено. Тесты специализованые админские. Тестит спец контора.     
         | 
|||
| 
    15
    
        shaman_kz    
     28.12.17 
            ✎
    21:44 
 | 
         
        При регламентных работах все загружено. При проведении нет.     
         | 
|||
| 
    16
    
        mikecool    
     28.12.17 
            ✎
    21:45 
 | 
         
        (14) слово Ежова - последнее. точка.     
         | 
|||
| 
    17
    
        shaman_kz    
     28.12.17 
            ✎
    22:08 
 | 
         
        100% не последнее. Вариантов куча.     
         | 
|||
| 
    18
    
        shaman_kz    
     28.12.17 
            ✎
    22:10 
 | 
         
        Оптимизаторов звать не охота, дорого стоят. Может тут какой вариант высветится.     
         | 
|||
| 
    19
    
        Fragster    
     гуру 
    28.12.17 
            ✎
    22:21 
 | 
         
        разделить на неблокирующие очереди и поручить кратный прирост (примерный эффект можно оценить с помощью http://catalog.mista.ru/public/173394/ )     
         | 
|||
| 
    20
    
        MrStomak    
     28.12.17 
            ✎
    23:17 
 | 
         
        (10) Ты уж определись - либо одним сеансом, либо максимально загрузить железо. Как ты хочешь, чтобы 1с выполняла последовательный код проведения документов одного сеанса сразу на всех ядрах?     
         | 
|||
| 
    21
    
        vde69    
     28.12.17 
            ✎
    23:19 
 | 
         
        в типовых практически не возможно добится сабжа...
 
        в самописках это вполне реально...  | 
|||
| 
    22
    
        MrStomak    
     28.12.17 
            ✎
    23:27 
 | 
         
        (21) Проведение документа за 0.001с вполне реально? Это в каких самописках такое? На голой платформе с базой из 1 документа с датой и номером и без движений - и то медленнее будет     
         | 
|||
| 
    23
    
        Aleksey    
     28.12.17 
            ✎
    23:31 
 | 
         
        (22) у меня модель проведения в 7.7 отрабатывает за такое время. Другое дело дальше идут накладные расходы на запись самого документа.     
         | 
|||
| 
    24
    
        Aleksey    
     28.12.17 
            ✎
    23:34 
 | 
         
        Кстати ТС, а с чего ты взял что железо не загружено? При условии что 1С - однопоточное приложение, ты ожидал загрузки всех ядер?     
         | 
|||
| 
    25
    
        MrStomak    
     28.12.17 
            ✎
    23:41 
 | 
         
        (23)
 
        Запись документа и запись движений - это уже нормальные такие расходы. Модуль проведения тут не причем. Затестил для примера - в пустой базе без всего с 1 документом без реквизитов, без ТЧ, без движений в файловой базе на ssd с ядром 4.5 Ггц время проведения 1000 документов (точнее 1 документа 1000 раз) - 690 мс, т.е. 0.00069. Можно даже не мечтать в продакшене с существующей логикой проведения приблизиться к 0.001.  | 
|||
| 
    26
    
        Aleksey    
     29.12.17 
            ✎
    00:02 
 | 
         
        (25) на моем 2600к (3,4ГГц) - 790 мс     
         | 
|||
| 
    27
    
        Tateossian    
     29.12.17 
            ✎
    00:50 
 | 
         
        (0) Если документы независимы, можно разбить на 8-10 сеансов и провести, но, думаю, отвалится на блокировках система. 
 
        (4) При больших объемах транзакции - зло. Скорость постепенно падает в геометрической прогрессии, лог разрастается так же, в геометрической. При 100 документах в транзакции в УПП лог вырастал до 8 Гб с 2 за несколько минут.  | 
|||
| 
    28
    
        Tateossian    
     29.12.17 
            ✎
    00:55 
 | 
         
        (27) Дополню: можно попробовать параметр /Z. Если конфа не в режиме совместимости, можно сдвинуть максимально вперед минимальную границу рассчитанных итогов (если известна минимальная дата проведения документов), или, если нет при проведении запросов к остаткам/оборотам - отключить использование итогов.     
         | 
|||
| 
    29
    
        H A D G E H O G s    
     29.12.17 
            ✎
    01:05 
 | 
         
        (27) Я сталкивался с обратным
 
        При фиксации транзакции по каждому чиху - SQL начинал грузить SSD на 100% и все упиралось в него (SSD). При заключении чихов в большую транзакцию - SSD жил околонулевой нагрузкой и все заметно ускорялось, упираясь в производительность процессора сервером 1С.  | 
|||
| 
    30
    
        Tateossian    
     29.12.17 
            ✎
    01:46 
 | 
         
        (29) Тут все не очень очевидно: это идет работа буфера MSSQL. Он не сразу пишет на диск, а предварительно пушит в буфер. Видимо, при завершении транзакции запись из буфера идет на диск: в первом случае активно работает диск, во втором - оперативная память. Тут надо анализировать показатели PAGEIOLATCH и BUFFER MANAGER.     
         | 
|||
| 
    31
    
        Tateossian    
     29.12.17 
            ✎
    01:50 
 | 
         
        (29) Есть относительно "безопасный" способ оптимизации вот именно этого вопроса: если есть RAM диск (а в 2018 такой диск грех не иметь), можно туда вынести все TEMPDB и логи (при условии, что база находится в простой или разностной модели восстановления).     
         | 
|||
| 
    32
    
        Feanor    
     29.12.17 
            ✎
    08:59 
 | 
         
        (31) "разностная модель восстановления" - что за зверь? О.о     
         | 
|||
| 
    33
    
        Владимир1С    
     29.12.17 
            ✎
    09:14 
 | 
         
        (0) Нужны подробности: Проведение уже существующих доков, или создание и проведение новых. Что это за сеанс: ручной для запуска обработки или СерверныйРоботПроведения(для устранения конкурентного доступа к регистрам оборотов-остатков-сведений).  Если это проведение существующих доков, возможно прочитать остатки на начало дня, поднять все необходимые данные в таблицу значений, в ней всё пересчитать за день, и из ТЗ просто последовательно записывать в документы подокументные порции информации. 
 
        Подробности задачи в студию, тогда можно будет предложить более конкретные способы решения. Можно?  | 
|||
| 
    34
    
        rs_trade    
     29.12.17 
            ✎
    09:18 
 | 
         
        (29) при фиксации транзакции идет запись в журнал это как минимум.
 
        Кстати, если отключить синхронный коммит, скорость должна значительно прибавится.  | 
|||
| 
    35
    
        shamashs    
     29.12.17 
            ✎
    10:02 
 | 
         
        (0) Озвучте задачу, которая перед вами стоит, как часто у вас будут пачки по 1000 документов, чего хотите добится в итоге     
         | 
|||
| 
    36
    
        Segate    
     29.12.17 
            ✎
    10:03 
 | 
         
        (14)
 
        в (13) дело говорят. если скорость именно такая, значит где-то железо загружено максимально. Специальные "админские тесты" судя по всему не включали в себя анализ ожиданий на блокировках, анализ очереди загруженности диска, очередь к ядрам, использование нума каналов. Если все это было оценено и вы так и не выяснили, где же затык, то скорее всего в коде стоит Обработчик ожидания. Это единственный вариант.  | 
|||
| 
    37
    
        vde69    
     29.12.17 
            ✎
    10:09 
 | 
         
        (22) автор имеет в виду 1документ = 1 секунда     
         | 
|||
| 
    38
    
        D_E_S_131    
     29.12.17 
            ✎
    10:15 
 | 
         
        Ну записать документы в несколько потоков это еще куда ни шло, но проводить-то все равно придется последовательно.     
         | 
|||
| 
    39
    
        spiller26    
     29.12.17 
            ✎
    10:20 
 | 
         
        (0) Проведение документов во многом зависит:
 
        1. от количества движений документа, возможны пересчеты, проверки и т.д. 2. транзакции 3. железо 4. объем базы Короче много факторов  | 
|||
| 
    40
    
        Вафель    
     29.12.17 
            ✎
    10:21 
 | 
         
        (0) Скорее всего 1 ядро загружено на 100%, а тк их много, то кажется что загрузки никакой нет     
         | 
|||
| 
    41
    
        Бубр    
     29.12.17 
            ✎
    10:23 
 | 
         
        предновогодняя ветка.  чтобы у всех  документы  в новом году у всех  так быстро  проводились! :)     
         | 
|||
| 
    42
    
        hhhh    
     29.12.17 
            ✎
    10:28 
 | 
         
        (38) проводить тоже параллельно можно. Кроме БП конечно. Там 90% проведения - это регистр бухгалтерии, особо не распараллелишь.     
         | 
|||
| 
    44
    
        D_E_S_131    
     29.12.17 
            ✎
    10:47 
 | 
         
        (42) ТС конечно же не указал, что это за документы такие, но если это связано с "Расходом", то параллельно вряд ли получится - нужно же остаток актуальный знать.     
         | 
|||
| 
    45
    
        Fish    
     гуру 
    29.12.17 
            ✎
    10:50 
 | 
         
        (37) В топике написано, что 1000 документов за 1 секунду, т.е. на один документ 0,001 сек. :)     
         | 
|||
| 
    46
    
        mistеr    
     29.12.17 
            ✎
    10:53 
 | 
         
        ТС же сказал прямым текстом: жалко денег на оптимизацию кривой системы. А так он все понимает. Он пришел сюда не за советами, это просто крик души.     
         | 
|||
| 
    47
    
        mistеr    
     29.12.17 
            ✎
    10:55 
 | 
         
        (45) Это как посчитать. Если распараллелить на 1000 потоков, да без накладных расходов, то как раз выйдет 1 документ за секунду. :)     
         | 
|||
| 
    48
    
        rs_trade    
     29.12.17 
            ✎
    10:59 
 | 
         
        (47) только потоки дольше будут создаваться.
 
        за 1 сек вообще никак не сделать.  | 
|||
| 
    49
    
        мистер игрек    
     29.12.17 
            ✎
    11:01 
 | 
         
        (0) Ты с Казахстана?     
         | 
|||
| 
    50
    
        1Сергей    
     29.12.17 
            ✎
    11:03 
 | 
         
        (47) 1000 видов документов, 1000 серверов и нет ничего невозможного :)     
         | 
|||
| 
    51
    
        Flover    
     29.12.17 
            ✎
    11:04 
 | 
         
        (0) Как глобальный вариант:
 
        Проводить порциями сразу скажем в 12-ти базах интервалами в месяц. Через Обмен сливать в 13-ю общую базу движения с кажой базы. Т.е. некий аналог "Биг Дата" построить.  | 
|||
| 
    52
    
        Fragster    
     гуру 
    29.12.17 
            ✎
    11:33 
 | 
         
        да ладно вам, вот http://fragster.ru/perfomanceTest/result.php?guid=a151f734-e48f-11e7-8062-50e549ef447d - в один поток 1600 документов с движениями по одному регистру.     
         | 
|||
| 
    53
    
        rs_trade    
     29.12.17 
            ✎
    11:41 
 | 
         
        (52) версия сикела не указана. а это важно.     
         | 
|||
| 
    54
    
        Fragster    
     гуру 
    29.12.17 
            ✎
    12:24 
 | 
         
        (53) да там вообще первые 15 страниц http://fragster.ru/perfomanceTest/results.php?sort=sum1&direction=desc имеют скорость больше 1000 в секунду... повторюсь, речь про документ с одним набором записей и без всяких контролей     
         | 
|||
| 
    55
    
        4St    
     29.12.17 
            ✎
    13:53 
 | 
         
        Был доклад на тусовке Инфостарта в 2015 году:
 
        https://event.infostart.ru/2015/speakers/index.php?ELEMENT_ID=378326 Вкратце - SQL в режиме In-Memory, 2000 документов в секунду.  | 
|||
| 
    56
    
        Elf_80_lvl    
     29.12.17 
            ✎
    13:58 
 | 
         
        А ведь когда то само название 1С означало, что можно сформировать любой отчет за 1 секунду. Жаль что об этой идее быстро забыли....     
         | 
|||
| 
    57
    
        nordbox    
     29.12.17 
            ✎
    14:11 
 | 
         
        (56) а ты вот скажи, какая нафиг половая разница между отчетом за 1 сек или за 10 сек ? )))     
         | 
|||
| 
    58
    
        Вафель    
     29.12.17 
            ✎
    14:18 
 | 
         
        (57) есть разница     
         | 
|||
| 
    59
    
        H A D G E H O G s    
     29.12.17 
            ✎
    14:19 
 | 
         
        (57) Отчет в 10 секунд забьет кэш SQL и сервера 1С тупыми данными. Отчет в 1 секунду - нет     
         | 
|||
| 
    60
    
        Вафель    
     29.12.17 
            ✎
    14:19 
 | 
         
        ты еще скажи что нет разницы если документ будет открываться 10с вместо 1с     
         | 
|||
| 
    61
    
        organizm    
     29.12.17 
            ✎
    14:29 
 | 
         
        а как можно ускорить запись огромного движения регистра  ?     
         | 
|||
| 
    62
    
        Новиков    
     29.12.17 
            ✎
    15:37 
 | 
         
        (0) Возьми в руки трейсер, напиши свой код на 1С по записи твоих тыщи доков. Поймай по трассе его. Потом откати базу, где нет этих тыщей доков. И просто запусти в на скуле как выполнение запроса твоего текстового. Посмотри - он отработает на 1 сек? Если да - тогда, наверное, можно - если ты научишься генерить как платформа такие портянки и как-то быстро прокидывать его на выполнение через дмо, адо или как желает музыка в твоей голове. Если нет - значит нет.
 
        Но если ты не полконник мусье Мазохи, то надо искать какое-то другое решение, вплоть до скидывания тысячи записей в какую-то простую таблицу и потом в фоне генерация и запись нужных доков.  | 
|||
| 
    63
    
        Вафель    
     29.12.17 
            ✎
    15:41 
 | 
         
        (62) один документ - это 100500 запросов на скуль     
         | 
|||
| 
    64
    
        Новиков    
     29.12.17 
            ✎
    15:43 
 | 
         
        (63) тебе жалко?     
         | 
|||
| 
    65
    
        Вафель    
     29.12.17 
            ✎
    15:44 
 | 
         
        (64) Просто ты предлагаешь потом запустить этот запрос.
 
        Но это не реально  | 
|||
| 
    66
    
        Новиков    
     29.12.17 
            ✎
    15:49 
 | 
         
        (65) Если бы это не было не реально - тогда не было бы прямой генерации доков на скуле. Ну - ее никто бы никогда не сделал, т.к. это тупо не реально. Однако? Ты что-нибудь слышал когда-нибудь про обмены, которые написаны не на конвертахе, а на прямых запросах к скулю?     
         | 
|||
| 
    67
    
        ИТ директор    
     29.12.17 
            ✎
    16:14 
 | 
         
        (55) Посмотрел, какой-то невнятный доклад и ответы на вопросы невнятные.
 
        (66) я не слышал, можно ссылку?  | 
|||
| 
    68
    
        Новиков    
     29.12.17 
            ✎
    17:13 
 | 
         
        (67) наверное рыть ИСу? :) Как думаешь? Я сам такие велосипеды писал, но сам понимаешь - это очень кастомное дерьмо. Суть кароче заключается вот в чем - делаешь нормальные вьюшки русские, чтобы можно было "аля язык запросов 1С" иметь на Т-SQL. Затем в качестве полей синхронизации по ссылке юзаешь ее гуид. И соотв. сам обмен представляет из себя поиск по каким-то полям, и если ничего не найдено - инсерт. Если найдено - апдейт. Написать это - не сложно. Но если в конвертахе просто сделать "создавай все, что не нашла", то на прямом обмене - тебе, если такое нужно, надо проанализировать последовательность таких инсертов, чтобы не попасть. И это самый гемор, когда тебе надо перетащить док в любом случае, и все ссылки в нем сначала проверить - если оные. Т.е. там кода столько под капотом, чтобы такие решения адски тяжело потом поддерживать. Прошла реструктуризация, все вьюхи завалились, у тебя все поломалось. Это первое. Но вьюхи можно пересоздать в клик. Второе - это ответ на вопросы, а почему вот этот, предположим какой-нибудь банк в р.с. контрагента, задублился? И тебе нужно протащить всю трассу в тестовую среду, чтобы разобраться - где косяк. Т.е. это не интересно все, долго, нудно. Но зато по скорости такое, что со второй конвертахой не снилось.     
         | 
|||
| 
    69
    
        Новиков    
     29.12.17 
            ✎
    17:16 
 | 
         
        Поэтому чуваку протащить тыщу доков - просто запись за секунду - скорее всего можно, если у него прямой запрос (запросы) за такое время пройдут. Вопрос в том, что скорее всего, не нужно так делать и он так, даже если захочет, не сделает - нужно сильно страдать, чтоб пойти на такой шаг. Т.е. должна быть очень критичная попа-боль. Полагаю у тс не так все, я бы сказал, драматично.     
         | 
|||
| 
    70
    
        MaxS    
     29.12.17 
            ✎
    17:16 
 | 
         
        Записать данные по документам в XML файл за 1 секунду и потом в фоновом задании обменом загружать их в базу 1С.     
         | 
|||
| 
    71
    
        ИТ директор    
     29.12.17 
            ✎
    17:20 
 | 
         
        (68) 1. Обмены и проведение это какбэ разные вещи, не находишь?
 
        2. Твои костыли не имеют никакой гарантии что ничего в базе не поломается. 3. Если нужна скорость, этот вопрос решается на уровне железа и оптимизации штатных механизмов, на крайняк открывается проект ЦКТП и 1С допиливает в узких местах платформу. И уж никак не твоими кривыми руками.  | 
|||
| 
    72
    
        ИТ директор    
     29.12.17 
            ✎
    17:21 
 | 
         
        Короче всё что в этой ветке понаписали дичь дикая, а ТС тупой, жадный и ленивый.     
         | 
|||
| 
    73
    
        Новиков    
     29.12.17 
            ✎
    17:28 
 | 
         
        (71) >>Обмены и проведение это какбэ разные вещи, не находишь? 
 
        Ты не внимательно читаешь. Я где-то писал про проведение документа? В сабже написано: Как записать 1000 документов за 1 сек. Ну? >>2. Твои костыли не имеют никакой гарантии что ничего в базе не поломается. Не фантазируй, платформа при записи делает ровно тоже самое все. Ты генеришь код за нее. В части записи элементов справочника и документа - это не сложно. >>3.на крайняк открывается проект ЦКТП и 1С допиливает в узких местах платформу. И уж никак не твоими кривыми руками. Я не знаю, как твой ник коррелирует с твоим мозгом. Убейся об стену сам, будь мужиком :)  | 
|||
| 
    74
    
        ИТ директор    
     29.12.17 
            ✎
    17:37 
 | 
         
        (73) Ты дебил? Читай сабж внематочно: "Возникла потребность проведения большого объема данных. "
 
        Платформа при записи делает много чего, в т.ч. на сервере 1С. Мой ник кореллирует с моим опытом, а твой ник кореллирует со старческим маразмом.  | 
|||
| 
    75
    
        Новиков    
     29.12.17 
            ✎
    17:44 
 | 
         
        (74) ты точно препараты в нужной дозировке принимаешь? :)     
         | 
|||
| 
    76
    
        Дык ё    
     29.12.17 
            ✎
    18:31 
 | 
         
        (74) (75) парни, с новым годом! :)     
         | 
|||
| 
    77
    
        Новиков    
     29.12.17 
            ✎
    18:37 
 | 
         
        (76) Спасибо, взаимно! :)     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |