Показать сообщение отдельно
Старый 01.04.2011, 05:56   #12  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Zabr Посмотреть сообщение
Первый InventDim проверяет уже 4 минуты. При нашем объеме - это примерно 80 лет чистого времени на проверку всей таблицы. Я не доживу.
э-э-э... рискну спросить.
вы джобик на клиенте запускали или на сервере?
чтобы запустить джобик на сервере, нужно создать menuItem, в нем указать ссылку на джобик и свойство RunOn = Server.

Цитата:
Сообщение от someOne Посмотреть сообщение
Пробовал. Это никуда не годится. Только для малых объемов работоспособно.
Вы ошибаетесь

Цитата:
Сообщение от someOne Посмотреть сообщение
Класс InventUnusedDimCleanUp - похоже, то что надо. По уму сделано.
Только у меня меню называется "Очистка складских аналитик", а не "Очистить не используемые складские аналитики"
Да, спасибо. Пополнил FAQ.

принципиальное отличие класса InventUnusedDimCleanUp от джобика:
= для каждого тестируемого поля в каждой тестируемой таблице класс делает один запрос по всем записям InventDim;
= для каждого тестируемого поля в каждой тестируемой таблице джобик делает запросы по каждому InventDim.

другие отличия скорее технологического характера:
= в классе отдельный connection - круто
= в классе используется более быстрый exist join, а в джобике count

есть и спорные "усовершенствования":
= в классе очень агрессивно делаются четыре skip'а (метод deleteUnusedInventDimIds). Я побоялся вставлять такие skip'ы в публичный ФАК - мало ли что у людей случится. Я думал, что знающие люди догадаются их вставить по месту и в зависимости от того, как у них накастомизировано. А незнающим - отсутствие skip'ов не навредит (а всего лишь замедлит работу).
= класс сейчас невозможно запустить "частями" и параллельно с работой остальных пользователей. Сейчас, в эпоху отсутствия блокировок на чтение это кажется полной фигней. Тогда, когда создавался джобик было важно не блокировать на чтение на слишком долго. Поэтому типичная доработка джобика выглядела так: цикл по InventDim прекращался, если было удалено 10, 20, 50, 100 inventDim'ов. а сам джобик вешался в пакетное задание и выполнял постоянный мониторинг и чистку (обычно вместе с чисткой InventSum(!)). при этом джобик не сильно нагружал систему.

Цитата:
Сообщение от someOne Посмотреть сообщение
Вся нагрузка на сервере БД происходила...
ну, и конечно, джобики по-умолчанию запускаются на клиенте.
чтобы джобик запустился на сервере, его нужно запускать через menuItem

думал, что очевидная вещь. оказывается, ошибался.
Спасибо, дополнил ФАК.
__________________
полезное на axForum, github, vk, coub.