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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.06.2013, 14:17   #1  
mazzy is offline
mazzy
Administrator
Аватар для mazzy
Most Valuable Professional
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
28,848 / 3764 (183) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
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,517 / 1331 (50) ++++++++
Регистрация: 28.11.2005
Адрес: Московская область
Я как-то смотрел поверхностно и, насколько я помню, делаются как минимум shrinkdatabase и реиндексация.
__________________
С уважением,
Олег.
Старый 07.06.2013, 14:39   #3  
mazzy is offline
mazzy
Administrator
Аватар для mazzy
Most Valuable Professional
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
28,848 / 3764 (183) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Цитата:
Сообщение от oip Посмотреть сообщение
Я как-то смотрел поверхностно и, насколько я помню, делаются как минимум shrinkdatabase и реиндексация.
а с данными что-нибудь делается?
Старый 07.06.2013, 14:50   #4  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,517 / 1331 (50) ++++++++
Регистрация: 28.11.2005
Адрес: Московская область
Не знаю, смотрел совсем поверхностно. Так что я тоже хочу узнать ответ на твой вопрос.

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

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,091 / 1807 (67) ++++++++
Регистрация: 12.10.2004
Оставлю чтобы было.

Запускает 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, время: 11:36.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.