Что могут сделать СИФТы, если за ними не следить

Сифты (SIFT — Sum Index Field Technology) — это столь любимые всеми и рекламируемые заказчикам флоуфилды. На сервере они хранятся в виде отдельных таблиц с названиями вида Фирма$10019100. В них рассчитаны все результаты группировок суммируемых полей таблицы по полям связанного с ними ключа. Заполнение и пересчет данных в этих таблицах висят на SQL-триггерах. Это важно — контроль сифтов выведен на уровень SQL Server’а. В противном случае любые манипуляции с данными НЕ ЧЕРЕЗ ИНТЕРФЕЙC NAV привели бы к нарушению целостности базы и летальному исходу. (в этот момент полезно открыть Enterprise manager и лично посмотреть тексты нескольких триггеров :-) Текст триггера формируется системой автоматически.

А теперь о главном. Каждый добавляемый вами в Navision ключ с привязанным полем для пересчета – увеличивает базу и замедляет процедуры вставки/измененения/удаления записей. Ведь агрегатные показатели пересчитываются для всех комбинаций полей, входящих в ключ. Я видел таблицы с 20 ключами, на 8 из которых висели сифты… Простая вставка занимала около 10 секунд :-( Разумеется, это крайний случай.

Как же этого избежать? Как сочетать мощь (!) использования сифтов и не допустить при этом распухания базы и замедления операций по вставке и удалению записей?

Работать надо в нескольких направлениях:

1. Самое важное :-) В свойствах ключа навижн есть замечательное свойство — SIFTLevelsToMaintain. В нем вы можете самостоятельно выбрать комбинации полей, для которых должны быть рассчитаны агрегаты. Простановка нужных галок позволяет сильно уменьшить размеры базы и ускорить работу. Иногда ускорение достигает нескольких десятков процентов.

2. Провести ревизию ключей и удалить неиспользуемую часть. Очень часто разработчики хотят побыстрее доделать задачу и лепят новые ключи, как горячие пирожки. А это, судари мои, надо делать с осторожностью (см. выше). Как определить, какие ключи взаимозаменяемы, от каких отказаться, какие откровенно атавизмы? Для этого есть очень хорошая вещь – Microsoft Business Solutions Developers’ Toolkit. Он позволяет отследить ВСЕ вхождения ключей в код. Ну а выводы делайте сами.

Автор:

В области Navision - с 2003 года. Профессиональные интересы: NAV, MS SQL, .NET, BPMN, IT-менеджмент. Предметная область: логистика, финансы, склады, 3PL.

Количество статей, опубликованных автором: 86.

Добавить комментарий