8.х Запросы в цикле

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Itsys, 29 июл 2010.

  1. TopicStarter Overlay
    Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Добрый день,

    Диагноз: база БП 1.6, сервер приложений отдельный, сервер SQL 2005 отдельный, клиентская часть на терминальном сервере. В базе заведено 110000 ОС. Амортизация по БУ в течение 3-х часов начисляется, амортизация по НУ не начисляется, вылетает рабочий процесс в процедуре расчета разниц по амортизации после получения в результате запроса 128 миллионов строк с нехваткой памяти.

    Лечение: запросом выбираем ОС, по которым надо начислять амортизацию и в цикле производим расчет амортизации по каждому объекту. Получается в цикле по запросу еще три нехилых запроса.
    Осложнения:
    1. Одно основное средство рассчитывается в течение 20 сек, по прикидкам для проведения амортизации надо порядка 25 суток. Замеры времени производились днем в момент максимальной нагрузки на сервера, возможно ночью процесс ускорится.
    2. Ночью не получилось замерить производительность из-за переполнения tempdb.log. за 2 часа проведения документа размер лога транзакций вырастает на 25Гб. Я так понимаю это из-за многочисленных запросов в цикле выборки из другого запроса плюс работы в транзакции проведения документа.

    Может чего еще посоветуете?
    Поможет ли выгрузка запроса с выборкой ОС в ТЗ и дальнейший ее перебор?
  2. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    1. Сервера какой разрядности?
    2. База типовая?
    3. Вообще странно.. У нас 350 000 ОСов и расчет идет достаточно быстро...

    ЗЫ. Я пропал на две недели, так что если и отвечу - то не скоро :)
  3. TopicStarter Overlay
    Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    1. 32
    2. нет изменения коснулись и блока ОС - добавлен количественный учет и учет по серийным номерам (к одному ос привязано несколько серийных номеров) - реализовано добавкой нового измерения во все регистры и как субконто на счета учета.
  4. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Itsys для себя хотел бы поинтересоваться, почему добавляли как "Измерение", а не как "Реквизит"?
  5. TopicStarter Overlay
    Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    потому что по одному ОС и каждому номеру могут быть свои счета учета, места расположения и т.д. да и при чем здесь реквизит вообще? Как с помошью реквизита можно организовать учет нескольких серийников на одной карточке ОС?
  6. TopicStarter Overlay
    Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Изменил логику, теперь запросы отправляется не на 1 ОС, а на 1000. Ускорение большое, 1000 шт рассчитывается за 2-3 минуты, темплог растет но умеренными темпами. Но надежда умирает последней. На 79000 вылезла новая ошибка.

    Вложения:

Поделиться этой страницей