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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.08.2004, 19:19   #1  
Yaroslav Batozskiy is offline
Yaroslav Batozskiy
Участник
 
15 / 10 (1) +
Регистрация: 19.01.2002
Адрес: Moskow
Наш скрипт написан целиком на T-SQL, поэтому работает быстро (2 ГБ базы пересчитывается меньше, чем за полчаса на четырехпроцессорном XEON).
Скрипт большой, состоит из шести фаз: четыре основных и нулевая--очистка ненужных таблиц и пятая--удаление следов (индексы etc)
Скрипт исправляет все ошибки целостности ссылок, которые я мог придумать
Создает логи, можно посмотреть все ошибки и додумать причины
Скрипт содержит "интеллектуальные" вещи, т.е. он может _подбирать_ и советовать в таблице правил, какое правило лучшее

Небольшое описание здесь http://www.crm.columbus.ru/ep/yarb/CITP_RecIdDefrag.doc
Старый 10.04.2006, 21:15   #2  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
На прошлых выходных развлекался попытками разогнать (в смысле, ускорить) стандартную процедуру на MS SQL (путем изнасилования кода процедуры). Заодно прочитал сначала данную ветку. Очень интересно.
Цитата:
Сообщение от Yaroslav Batozskiy
...
Наш скрипт написан целиком на T-SQL
...
А стандартная процедура пересчета RecId не далека от этого состояния.
Цитата:
Сообщение от Yaroslav Batozskiy
...
поэтому работает быстро (2 ГБ базы пересчитывается меньше, чем за полчаса на четырехпроцессорном XEON).
...
В моем случае на базе в 5 Gb с хвостиком (правда данных всего 2.5 Gb и столько же под индексами) удалось выйти на результат около 1:40. На однопроцессорном лаптопе (правда, база и лог были на внешнем диске: один, обычный IDEшный, подключенный по USB-интерфейсу). Память под MS SQL Server была ограничена до 300 Mb. Т.о. цифра далеко не предельная. В ходе опыта явно видно, что для дальнейшего ускорения процедуры нужно наращивать дисковую подсистему и/или память SQL Server.

Так что в плане скорости вышеупомянутый скрипт, IMHO, не является панацеей.
Цитата:
Сообщение от Yaroslav Batozskiy
...
Ув. glibs. Я просто дал совет. Хотите-разберитесь, хотите-проигнорируйте.
...
Поглядев на код и поэкспериментировав неприязнь к штатному алгоритму не разделяю. Скорее наоборот я бы отдал предпочтение стандартному алгоритму, нежели алгоритму, который не использует данные из АОТа и работает исключительно на базе эвристического анализа с элементами теории вероятности.

Хотя использовать его для обнаружения незадокументированных должным образом в АОТе связей по RecId можно попробовать. А много вышеупомянутый скрипт нашел таких связей (если вдруг Yaroslav Batozskiy не ответит на данный вопрос, может кто-то имел возможность скриптом попользоваться на законных основаниях и может прокомментировать)?
__________________
С уважением,
glibs®
Теги
ax3.0, faq, recid, дефрагментирование recid

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
if (record) vs if (record.RecId) kashperuk DAX: Программирование 18 27.11.2008 18:53
поля, содержащие RecId somebody DAX: Программирование 15 16.05.2008 17:50
aEremenko: Дефрагментация RecID Blog bot DAX Blogs 2 06.03.2007 22:25
Два RecId у одной записи таблицы sparur DAX: Программирование 33 18.12.2006 15:56
Форма InventOnhandItem, Почему RecID у InventSum в этой форме всегда 0? Кирилл DAX: Программирование 2 25.05.2004 18:15

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 01:39.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.