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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.06.2013, 14:17   #1  
mazzy is offline
mazzy
Administrator
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
28,932 / 3829 (185) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
axutil.exe optimize. Что именно делает эта команда?
ax2012
Что именно делает команда "axutil.exe optimize"?
В хелпе сказано:

Цитата:
optimize - Optimize the model store for runtime performance.
при запуске говорится

Цитата:
AXUtil 6.2 - Microsoft Dynamics AX Admin Utility (6.2.158.0)
(c) Copyright, Microsoft Corporation, 2011. All rights reserved.

The AXUtil command was started in the mode: optimize.
Working against model store AX2012R2A/MicrosoftDynamicsAX_model.
Reorganizing Model Store. You can continue with other tasks.
после запуска команды размер базы в виртуалке ax2012r2 v2 уменьшился на полгига (было 5446Мб, стало 4998Мб)

===============
понятно, что можно оттрасировать и промониторить...
но может кто уже разбирался?

стоит ли ее использовать в виртуальной машине? с учетом, что в виртуалке установлен CU?
Как ускорить работу виртуальной машины ax2012r2
Старый 07.06.2013, 14:29   #2  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,520 / 1339 (50) ++++++++
Регистрация: 28.11.2005
Адрес: Московская область
Записей в блоге: 1
Я как-то смотрел поверхностно и, насколько я помню, делаются как минимум shrinkdatabase и реиндексация.
__________________
С уважением,
Олег.
Старый 07.06.2013, 14:39   #3  
mazzy is offline
mazzy
Administrator
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
28,932 / 3829 (185) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от oip Посмотреть сообщение
Я как-то смотрел поверхностно и, насколько я помню, делаются как минимум shrinkdatabase и реиндексация.
а с данными что-нибудь делается?
Старый 07.06.2013, 14:50   #4  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,520 / 1339 (50) ++++++++
Регистрация: 28.11.2005
Адрес: Московская область
Записей в блоге: 1
Не знаю, смотрел совсем поверхностно. Так что я тоже хочу узнать ответ на твой вопрос.

Но мне кажется вряд ли там какое-то шаманство есть, раз команда итак всегда по умочанию выполняется при установке новой модели.

Upd. А для Ax2012 (без R2) официальная рекомендация - не использовать эту оптимизацию, а просто настроить план обслуживания.
__________________
С уважением,
Олег.

Последний раз редактировалось oip; 07.06.2013 в 14:57. Причина: Update
За это сообщение автора поблагодарили: mazzy (2), Logger (1).
Старый 04.07.2018, 17:15   #5  
online
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,181 / 1934 (71) ++++++++
Регистрация: 12.10.2004
Записей в блоге: 2
Оставлю чтобы было.

Запускает 2 метода (текст ниже).
1-й с параметром RebuildIndexAll.
т.е. в базе модели запускаются хранимки
"exec [dbo].XU_Reindex"
"exec [dbo].XU_Shrink"
"exec [dbo].[XU_ResetHandleIdentity]"

X++:
// Microsoft.Dynamics.AX.Framework.Tools.ModelManagement.ModelStore
internal static void Optimize(SqlConnection connection, AxUtilContext context, OptimizeOption option)
{
	using (SqlCommand sqlCommand = ModelStore.CreateCommand(connection))
	{
		switch (option)
		{
		case OptimizeOption.DisableIndex:
			try
			{
				sqlCommand.CommandType = CommandType.StoredProcedure;
				sqlCommand.CommandText = string.Format(CultureInfo.InvariantCulture, "[dbo].XU_DisableEnableNonClusteredIndexes", new object[0]);
				sqlCommand.Parameters.Add(new SqlParameter("@dbName", connection.Database));
				sqlCommand.Parameters.Add(new SqlParameter("@changeRecoveryModel", 'N'));
				sqlCommand.Parameters.Add(new SqlParameter("@mode", '1'));
				sqlCommand.ExecuteNonQuery();
				goto IL_246;
			}
			catch (SqlException ex)
			{
				context.ReportWarning(ex.Message);
				context.DisplayResult(string.Format(CultureInfo.CurrentCulture, Resources.DisableIndexFailure, new object[0]));
				goto IL_246;
			}
			break;
		case OptimizeOption.RebuildIndex:
			break;
		case OptimizeOption.RebuildIndexAll:
			goto IL_184;
		default:
			goto IL_184;
		}
		try
		{
			sqlCommand.CommandType = CommandType.StoredProcedure;
			sqlCommand.CommandText = string.Format(CultureInfo.InvariantCulture, "[dbo].XU_DisableEnableNonClusteredIndexes", new object[0]);
			sqlCommand.Parameters.Add(new SqlParameter("@dbName", connection.Database));
			sqlCommand.Parameters.Add(new SqlParameter("@changeRecoveryModel", 'Y'));
			sqlCommand.Parameters.Add(new SqlParameter("@mode", '2'));
			sqlCommand.ExecuteNonQuery();
			goto IL_246;
		}
		catch (SqlException ex2)
		{
			context.ReportWarning(ex2.Message);
			context.DisplayResult(string.Format(CultureInfo.CurrentCulture, Resources.EnableIndexFailure, new object[0]));
			goto IL_246;
		}
		IL_184:
		context.DisplayResult(string.Format(CultureInfo.CurrentCulture, Resources.Reorganizing, new object[0]));
		try
		{
			sqlCommand.CommandText = string.Format(CultureInfo.InvariantCulture, "exec [dbo].XU_Reindex", new object[0]);
			sqlCommand.ExecuteNonQuery();
		}
		catch (SqlException ex3)
		{
			context.ReportWarning(ex3.Message);
			context.DisplayResult(string.Format(CultureInfo.CurrentCulture, Resources.ReindexFailure, new object[0]));
		}
		if (connection.State == ConnectionState.Open)
		{
			try
			{
				sqlCommand.CommandText = string.Format(CultureInfo.InvariantCulture, "exec [dbo].XU_Shrink", new object[0]);
				sqlCommand.ExecuteNonQuery();
			}
			catch (SqlException ex4)
			{
				context.ReportWarning(ex4.Message);
				context.DisplayResult(string.Format(CultureInfo.CurrentCulture, Resources.ShrinkFailed, new object[0]));
			}
		}
		IL_246:;
	}
}
X++:
// Microsoft.Dynamics.AX.Framework.Tools.ModelManagement.ModelStore
internal static void ResetHandleIdentity(SqlConnection connection)
{
	using (SqlCommand sqlCommand = ModelStore.CreateCommand(connection))
	{
		sqlCommand.CommandType = CommandType.StoredProcedure;
		sqlCommand.CommandText = "[dbo].[XU_ResetHandleIdentity]";
		sqlCommand.ExecuteNonQuery();
	}
}

Последний раз редактировалось Logger; 04.07.2018 в 17:18.
За это сообщение автора поблагодарили: gl00mie (5), vmoskalenko (1), AlGol (3).
Теги
ax2012, axutil, optimize, производительность

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
sjakalax: AxUtil and the application log Blog bot DAX Blogs 0 25.01.2012 23:11
Faulting application Ax32Serv.exe, version 5.0.1500.2985 Poleax DAX: Администрирование 10 30.11.2010 14:53
emeadaxsupport: AxUpdatePortal.exe does not update Enterprise Portal when not running from an elevated command prompt Blog bot DAX Blogs 0 26.07.2009 15:07
mazzy: Команда autoRun Blog bot DAX Blogs 6 05.01.2009 04:27
Вопрос по поводу "Модификации были отменены". Что можно сделать? Hans DAX: Программирование 23 22.12.2005 16:34
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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