Отправляет email-рассылки с помощью сервиса Sendsay

Navision - советы и секреты

  Все выпуски  

Что могут сделать сифты (SIFT), если за ними не следить.


Добрый день!

На статью про репликацию из прошлого выпуска рассылки начали приходить отклики. Вот что пишет Дмитрий Катсон:

Добрый день. Хотелось бы добавить по пункту 2 - когда репликация идет по заполнению буфферной таблицы.
Для версии навижена SQL есть специальная утилитка, которая позволяет настраивать таблицы, которые нужно реплицировать,
а затем позволяет заполнять буфферную таблицу уже подготовленными командами при вставке, удалении, переименовании или модифицировании таблицы.
Затем запускается "учет" буфферной таблицы и все данные перетекают в соответствующую таблицу на SQl в другой базе.
Утилитку бесплатно можно скачать с сайта http://mibuso.com/dlinfo.asp?FileID=883
Также есть возможность настроить репликацию в SQL Management studio.

Спасибо Дмитрию за ценное дополнение, ждем от него комментариев и дальше :)

А тема сегодняшнего выпуска - что могут сделать сифты, если за ними не следить :)

Navision: Sum Index Fields Technology

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

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

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

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

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

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

Да, кстати, если Вам пригодились наши советы из предыдущих выпусков, и Вы даже применили их на практике - пишите на likeart@mail.ru! Рассылке не хватает вашей обратной связи :-)


P.S. Хотите поделиться своими знаниями? Всегда Welcome! Любые статьи, Q & A, FAQ, советы - все опубликуем, обязательно укажем автора и дадим линк на сайт :-)

С наилучшими пожеланиями,
Андрей Стрельников.

Группа «Technologies like Art».
Разработки в сфере Navision. Скоростные оптимизации, системная интеграция. Технологические решения.
e-mail: likeart@mail.ru.

Технологии как искусство.
----
Что такое главное?


В избранное