AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Blogs
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.06.2012, 22:11   #1  
Blog bot is offline
Blog bot
Участник
 
25,626 / 848 (80) +++++++
Регистрация: 28.10.2006
axforum blogs: Параметр TotalRecordCount и проблемы производительности. Как отключить подсчет количества записей в представлении
Источник: http://axforum.info/forums/blog.php?b=341
==============

Как вы, наверно, знаете CRM 2011 внесла инновацию, которую просили многие пользователи: системный счетчик записей в представлении:



Инновация работает и с SDK методами. При построении Fetch и QueryExpression запросов мы можем указать в параметрах PagingInfo, что мы хотим получить не только страницу записей и ключ MoreRecords, но и полное количество записей. Для QueryExpression код может выглядеть так:
X++:
PagingInfo p = new PagingInfo();p.ReturnTotalRecordCount = true;QueryExpression q = new QueryExpression();q.PageInfo = p;
Аналогичный параметр можно использовать и в Fetch запросе, что по умолчанию и делают все системные представления.

Существует так же глобальная настройка развертывания CRM доступная через параметры ConfigDB в Deployment Service: AggregateQueryRecordLimit. По умолчанию она равна 5000 записей. Столько записей по умолчанию разрешено для использования в агрегирующих запросах, в том числе COUNT. В нашем примере, если в таблице больше 5000 записей, система не покажет полное количество, а

покажет "5000+".

Почему вводится это ограничение? Дело в том что цена использования ReturnTotalRecordCount (равно как и любой другой агрегации) может быть достаточно высока: подсчет количества записей осуществляется с учетом прав доступа! Иными словами, для того чтобы отобразить в списке 50 записей, система проверяет доступ к 5000 записей, если они есть в базе! В случае со сложной моделью безопасности, при использовании Групп (Team) и предоставления доступа (Share) подобные визуальные излишества могут завалить SQL сервер любой мощности. Что и случилось на моем проекте.

К счастью, CRM 2011 Update Rollup 6 вносит дополнения функционала, которые могут спасти ситуацию. В загадочную таблицу OrgDBOrgSettings добавлен параметр SkipGettingRecordCountForPaging который позволяет отключить вызов инструкии
Код:
select COUNT(*) as [#TotalRecordCount]
при каждом обновлении представления.

Для его изменения, вероятно, можно использовать DeploymentService, однако я не смог найти нужную настройку в SDK. Статья базы знаний по Update Rollup 6 советует использовать утилиту OrgDBOrgSettings Tool, которая теперь поставляется вместе с пакетами обновлений. На текущий момент, утилита доступна только для английского языка, так что если вы качаете обновления только для русской версии CRM, вы легко могли упустить факт ее появления в английском пакете обновления.

Утилита представлена консольным приложением с двумя единственными командами: чтение настроек организации и изменение конкретного параметра. Корректно настроив конфиг программы (не так и просто - читайте мануал!) и выполнив команду
X++:
OrgDBOrgSettingsTool.exe Update /u SkipGettingRecordCountForPaging True
Мы отключим выполнение счетчика записей:



Производительности вашей системы больше не угрожает ничего, кроме кривого кода. Удачи!


Источник: http://axforum.info/forums/blog.php?b=341
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
DynamicsAxSCM: Visualizing Security in Microsoft Dynamics AX 2012 Blog bot DAX Blogs 0 29.08.2011 13:11
dynamicsaxbi: Screenshots of Dynamics AX 2009 Role Centers Blog bot DAX Blogs 0 18.03.2011 20:11
DynamicsAxSCM: Personalization of Role Centers in Dynamics AX 2009 Blog bot DAX Blogs 0 21.06.2010 16:05
вывод количества записей в таблице на web форме и указание текущей страницы таблицы bambuk1960 DAX: Программирование 1 06.07.2006 13:27

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 01:13.