06.06.2011, 13:54 | #1 |
Участник
|
Оптимизация апгрейда больших баз
Коллеги,
кто-либо сталкивался с оптимизацией апгрейда очень больших баз? У нас база почти 1ТБ, апгрейд 4.0 - 2009 на слабоватом сервачке. Подозреваю, что процесс займет очень большое время или вообще зависнет. Ненужные таблицы почистим, само собой (SalesParm*, SysDatabaseLog, SalesTable/Line). Может быть, можно переписать некоторые из скриптов, или удалить какието из таблиц, итп. Заранее благодарю за ответ.
__________________
-- regards, Oleksandr |
|
06.06.2011, 14:44 | #2 |
Участник
|
Кое что обсуждалось тут Переход с Axapta 3.0 на AX 2009 - критика утилиты конвертации БД и скриптов обновления
|
|
|
За это сообщение автора поблагодарили: Oleksandr (1). |
06.06.2011, 17:10 | #3 |
Участник
|
А вы переходить собираетесь со всеми данными? Как вариант можно перейти с переносом в новую систему начальных остатков. Тогда при конвертации вас будут интересовать только "справочники". И перед конвертацией можно ещё почистить InventTrans, SalesLine и др. таблицы.
|
|
07.06.2011, 10:32 | #4 |
Участник
|
Цитата:
Сообщение от someOne
Кое что обсуждалось тут Переход с Axapta 3.0 на AX 2009 - критика утилиты конвертации БД и скриптов обновления
__________________
-- regards, Oleksandr |
|
07.06.2011, 10:35 | #5 |
Участник
|
Цитата:
На конверженсе в прошлом году кстати презентовали систему архивирования, штатную от МС. Старые данные остаются в старой базе, а остатки переносяться. Не помню, к сожалению, как называется, над поискать.
__________________
-- regards, Oleksandr |
|
22.06.2011, 20:49 | #6 |
Британский учённый
|
Жадный какой )
Не знаю, что вы там собираетесь оптимизировать, вы за выходные собираетесь проапгрейдить такую базу? Intelligent Data Management Framework называется, мы собираемся заюзать, если успеем... |
|
22.06.2011, 23:59 | #7 |
Участник
|
Цитата:
А на счет "что там собираетесь оптимизировать" - применительно к скриптам конвертации список может быть очень длинным. Большую их часть писали какие-то "студенты" и тестировали их явно на базёнке в 10 Гб с 3-мя компаниями |
|
23.06.2011, 08:30 | #8 |
Участник
|
Цитата:
Сообщение от Oleksandr
У нас база почти 1ТБ, апгрейд 4.0 - 2009 на слабоватом сервачке.
Подозреваю, что процесс займет очень большое время или вообще зависнет. Ненужные таблицы почистим, само собой (SalesParm*, SysDatabaseLog, SalesTable/Line). Может быть, можно переписать некоторые из скриптов, или удалить какието из таблиц, итп. ============ Террабайные я не конвертировал. Несколькосотмегабайные были. Скрипты обсуждались в отдельной ветке. что касается самой конвертации. надо помнить, как Аксапта может делать Alter Table: В некоторых случаях Аксапта вместо Alter Table создает новую таблицу, копирует туда преобразованные данные, удаляет старую таблицу, переименовывает новую. Я не знаю условий, когда она вместо Alter Table решает применить пересоздание, но на больших таблицах это частенько происходит.Причем часто делает копирование через tempdb. Поэтому важно сразу увеличить размер базы данных, чтобы при пересоздании таблиц sql не тратил время на расширение/сжатие файла с данными. Понимаю, что для террабайта рекомендация звучит по-дебильному... Но... Просто учитывайте как Акапта вносит изменения в таблицы. И обязательно отследите, не происходит ли копирование через tempdb. Если через tempdb, то тоже выделите ему место сразу и желательно на отдельный диск. tempdb может задействоваться, если происходит изменение данных в новой таблице. Например, при смене выравнивания с правого на левое. И конечно смените выравнивание в ax3.0 отдельной процедурой ДО собственно самой конвертации, как говорится в рекомендациях. В ax2009 по-умолчанию выравнивание влево. В ax3.0 очень часто установлено выравнивание вправо. ================== По поводу данных. дополенение к http://axapta.mazzy.ru/lib/dbgrowthsolution/ Смотрите в SQL по самым большим таблицам. Я не знаю реального положения дел, но подозреваю, что у вас самыми большими таблицами являются inventSettlement и LedgerTrans. Далее пойдут очень опасные советы. И нужно смотреть в ваши модификации. Советы безопасны только для стандартной версии. inventSettlement. Скорее всего, в inventSettlement большую часть составляют записи, у которых поле cancelled == NoYes::Yes. Это отмененные сопоставления. В стандартной версии такие записи можно безболезненно удалить (внимание! могут быть модификации, в которых удалять нельзя!!!!) Если вы раньше не удаляли отмененные, то отмененных может накопится до 80-90% записей в inventSettlement. Удалив сильно облегчите себе апгрейд. Но если у вас метод списания "по среднему", то даже без cancelled записей эта таблица может быть самой большой Ну, и конечно может помочь группировка inventSettlement, как описано в статье. Но группировку опасно делать даже в стандартной версии - не все комбинации настроек могут правильно работать с группировкой. Обязательно обсудите возможность группировки с вашими консультантами. ------------------------- LedgerTrans. Снова очень опасный совет, если есть модификации. Будьте внимательны. Если у вас несколько финансовых периодов, то у вас есть открывающие проводки в каждом финансовом году. LedgerTrans.PeriodCode == PeriodCode::Opening В стандартной версии такие проводки рассчитываются и перерассчитываются автоматом. Если у вас нет модфикаций, которые работают с такими записями, то открывающие проводки можно удалить. И пересоздать уже в новой версии Главная книга \ Периодические операции \ Закрытие финансового года \ Открывающие проводки. ЕСЛИ у вы активно используете финансовые аналитики, у вас больше трех финансовых аналитик И вы НЕ сворачиваете финансовые аналитики при переходе в другой период, ТО таких проводок в открывающих периодов может быть много (до 10-20% от всех записей в LedgerTrans) ------------------------- также очень опасный совет в ax2009 изменена работа с промежуточными итогами по финансовым проводкам. В ax3.0 это таблицы LedgerBalancesTrans LedgerBalancesDimTrans В ax2009 им соответствуют LedgerBalancesTrans LedgerBalancesDimTrans LedgerBalancesTransDelta (!!!!! поищите на форуме по этому ключевому слову. Особенно сообщения от fed - Дениса Федотенко) если у вас много финансовых аналитик, то скорее всего эти таблицы достаточно большие. поскольку здесь произошли изменения в логике, то скрипты могут потратить существенное время на преобразование этих таблиц. Если у вас нет модификаций, которые вмешиваются в работу этих таблиц, то перед конвертацией очистите их. А после конвертации пересчитайте периоды Главная книга \ Периодические операции \ Пересчитать сальдо по периодам - записи будут пересозданы уже в новой версии по новым правилам. ====================== Примерно так. Если приведете строки из отчета Disk Usage by Top Table, то может быть, еще можно будет что-нибудь посоветовать. |
|
|
За это сообщение автора поблагодарили: Poleax (1), alex55 (3). |
23.06.2011, 10:48 | #9 |
Британский учённый
|
Цитата:
Сообщение от gl00mie
Если за выходные считать еще вечер пятницы и утро понедельника, то терабайтную базу 4.0 на хорошем железе вполне себе реально конвертнуть. На самом деле, при отлаженном процессе большую часть времени займут уже не столько скрипты конвертации, сколько перестройка индексов в ходе синхронизации.
Цитата:
Мой вопрос был по существу, какие ключевые моменты оптимизации планируются для такой большой базы. Все скрипты не перепишешь, очень много времени нужно, разве что самые тяжелые, да и для этого нужно много времени, а кастомеры они очень жадные и лишних денег платить не будут. |
|
23.06.2011, 11:27 | #10 |
Участник
|
Если по существу, то ниже приведена кое-какая информация (применимая к 4.0 и шведскому функционалу) из того, что я делал для оптимизации работы скриптов обновления данных. После тестовой конвертации базы были выявлены самые "долгоиграющие" скрипты и они оптимизировались в первую очередь. Некоторые замечания по приведенным данным:
Код: Название метода класса обновления данных Длит., мин. Что сделано До После Gain 41_Cust.updateCustTransIdRef 2010 40 1970 добавлен альтернативный метод для случая, когда таблица CustTransIdRef исходно пуста 41_Basic.updateTimeZoneDataUpgrade 1450 40 1410 конвертация выполняется на лету, скрипты обновления отключаются через их настроечную таблицу 401_Vend.createDimHistory_PurchInvoice_DSQL 656 66 590 Переписан ReleaseUpdateDB401_Vend.createDimHistorySprocs для формирования распараллеливаемых запросов с литералами 401_Vend.createDimHistory_PurchPackingSlip_DSQL 60 Переписан ReleaseUpdateDB401_Vend.createDimHistorySprocs для формирования распараллеливаемых запросов с литералами 41_Cust.updateCustTable_W 20 0 20 значение MandatoryCreditLimit перебивается на лету, скрипт отрублен 41_Cust.updateCustInvoiceJour_HU 10 0 10 добавлена привязка к конфигурационному ключу CRSEHungary 41_Cust.updateCustInterestValues_PL 10 0 10 добавлена привязка к конфигурационному ключу CustInterest 401_Asset.updateCategorizationTrans_CZ 10 0 10 добавлена привязка к конфигурационному ключу PreAcquisition_W 401_Vend.updateVatNum_PL 10 0 10 добавлена привязка к конфигурационному ключу CRSEPoland 401_Vend.updateVendRegNum_W 10 0 10 добавлена привязка к конфигурационному ключу CRSEEstonia |
|
|
За это сообщение автора поблагодарили: Logger (3). |
23.06.2011, 11:29 | #11 |
Участник
|
а давайте про скрипты все-таки в отдельной ветке
Переход с Axapta 3.0 на AX 2009 - критика утилиты конвертации БД и скриптов обновления |
|
24.06.2011, 14:38 | #12 |
Британский учённый
|
Цитата:
Сообщение от gl00mie
Если по существу, то ниже приведена кое-какая информация (применимая к 4.0 и шведскому функционалу) из того, что я делал для оптимизации работы скриптов обновления данных. После тестовой конвертации базы были выявлены самые "долгоиграющие" скрипты и они оптимизировались в первую очередь.
У меня база в 400Гб, апгрейд с 4ки на 2009. Тестовый апгрейд выполняется на одном сервере, с виртуализацией под VMWare, ОС Win 2008R2 SP1x64, SQL 2008 SP2 + KB979065. Апгрейд боевой базы, будет проводиться на нескольких серверах, но тоже с виртуализацией. Фаза синхронизации проходит за 12 часов на тестовом сервере. Сейчас выполняется постсинхронизация и очень похоже, что тоже придется оптимизировать скрипты. |
|
24.06.2011, 21:12 | #13 |
Участник
|
В моем случае конвертировалась база 3.0 размером чуть больше 600 Гб, происходило все на Оракле. Отличие от конвертации базы 4.0 тут в том, что для 2009-й создается новая база, в которую переливаются данные с одновременной конвертацией в Unicode, а уже потом по этой новой базе работают скрипты конвертации. Опять же, в моем случае под 2009-ю был разведен новый комплекс СУБД (хранилище данных и сервера БД), поэтому одним из этапов конвертации было создание "слепка" базы 3.0 на этом новом комплексе: оказалось быстрее сперва перелить данные по сети средствами СУБД и потом уже в рамках одного физического хранилища переливать данные из этого слепка в базу 2009-й, нежели напрямую из старого комплекса переливать их в базу 2009-й по сети. Ниже приводится хронология событий, восстановленная по информации, которую я публиковал для заинтересованных лиц по ходу конвертации.
|
|
|
За это сообщение автора поблагодарили: Link (1), oip (5). |
24.06.2011, 21:28 | #14 |
Участник
|
В моем случае самый первый тестовый прогон конвертации (со стандартными скриптами) занял полторы недели Правда, надо признать, и настройка СУБД тогда была, мягко говоря, неоптимальной...
|
|
01.07.2011, 16:13 | #15 |
Британский учённый
|
Спасибо, за столь подробный пост.
Похоже что на MSSQL все выглядит гораздо лучше, без оптимизаций. Постсинхронизация проходит за 6 часов, правда на 2008 сервере под VMWare съедает всю доступную память - 15 ГБ. Пробовал экспортировать в сиквел процесс синхронизации, как указанно в мануале, это может дать улучшение производительности при параллельном запуске на нескольких клиентах. Сразу насторожило предупреждение, что все на свой страх и риск. А потом когда выгрузил в сиквел, и увидел сколько там ошибок, от этой идеи отказался. Мы подумываем воспользоваться зеркалом базы для апгрейда, дабы сэкономить время на копирование или восстановление. Интересно, вы данные через кубы проверяли. У меня простой джоб все в ексель выкладывает. В чем было преимущество делать через кубы? А мультисайт сразу активировали? Кто то говорил, что лучше через неделю после успешной работы на новой версии. Гайд по этом поводу предательски молчит. |
|
01.07.2011, 16:35 | #16 |
Участник
|
Цитата:
Цитата:
Цитата:
|
|
16.01.2018, 18:07 | #17 |
MCTS
|
Цитата:
Сообщение от mazzy
что касается самой конвертации.
надо помнить, как Аксапта может делать Alter Table: В некоторых случаях Аксапта вместо Alter Table создает новую таблицу, копирует туда преобразованные данные, удаляет старую таблицу, переименовывает новую. Я не знаю условий, когда она вместо Alter Table решает применить пересоздание, но на больших таблицах это частенько происходит.Причем часто делает копирование через tempdb. |
|
16.01.2018, 19:31 | #18 |
Moderator
|
Например - пересоздание таблицы происходит при урезании строчных полей. Типа было поле 50 символов, а стало - 40. Насколько я помню, ALTER TABLE такие операции просто не поддерживает, поэтому таблица пересоздается.
|
|
|
За это сообщение автора поблагодарили: alex55 (1), vmoskalenko (1). |
17.01.2018, 19:31 | #19 |
Участник
|
Ох старая тема однако... Ну ладно, тогда я расскажу из своей практике об одном старом проекте. Года 4 было назад, надо было проапгрейдить Аксапту AX 4.0 - AX2012RTM
Размер БД, примерно 2-3ТБ. После апгрейда размер БД вырос на 20%. Multicompany. Все цифры примерные, простите уже не помню точно. Готовились к мигарции данных примерно год. Процедура непосредственно апгрейда длилась несколько месяцев. И ПРОД не останавливался. У нас было две DELTA. Последняя процедура длилась 2-3 дня. Потом еще 4 дня ушло на разборки среди менеджеров. Всё успешно. |
|
|
За это сообщение автора поблагодарили: Logger (3). |
Теги |
ax2009, ax4.0, upgrade, производительность |
|
Похожие темы | ||||
Тема | Ответов | |||
Оптимизация класса Tax | 43 | |||
оптимизация запроса статистики по клиенту | 2 | |||
Оптимизация SQL сервера под Аксапту. | 23 | |||
Оптимизация кода с LedgerTrans | 18 | |||
Оптимизация производственного планирования | 19 |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|